Google ColabでPyStanがインポートできなくなってた件
1. PyStanがインポートできない
ちょうど今年の5月ごろ、こんな記事を書きました。
「何かと環境構築がダルいらしいPyStanだけど、Google Colaboratoryならわざわざinstallしなくてもpystanが使えちゃうよ」ってな記事だったのですが、その後異変が。
それは上記の記事のリリースから2ヶ月経った7月ごろ、久しぶりにpystanをいじろうと以下を実行したところ発生しました。
#pystanのインポート import pystan
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-1-3bed4a8a68f5> in <module> 1 #pystanのインポート ----> 2 import pystan ModuleNotFoundError: No module named 'pystan' --------------------------------------------------------------------------- NOTE: If your import is failing due to a missing package, you can manually install dependencies using either !pip or !apt. To view examples of installing some common dependencies, click the "Open Examples" button below. ---------------------------------------------------------------------------
いや、めちゃめちゃエラー出てるんだが。
2. で、ちょっと調べてみる
月並みに再インストールとかも試してみたのですが、状況は好転せず。調べてみると、twitterでも同様の現象にぶち当たっている人がちらほらいらっしゃるようでした。
不思議だったのが、こちらの記事。Kaggleのカーネルでも同時期に同じような現象が起きてるっぽい。つまり、Google Colabでなく、PyStan側の何某かに原因がありそう。
で、「まあバージョンの問題ならアップデートされるなり有識者の情報が出てくるなり、時が解決してくれるやろ」とか思いつつしばらく放置していたのですが、つい先日、Twitter上で運よくこんな情報をキャッチしました。
久しぶりにpystan使ったらメジャーアップデート入ってて死ぬかと思ったし、
— Рё (@2root7Gp) August 6, 2022
公式リファレンスも貧相すぎて笑った。
あとimportするライブラリ名まで変えるんじゃないよ。https://t.co/12JOfmJ56w
え、ライブラリ名が変わってんのマジで。
公式のドキュメントを見てみると、クイックスタートに以下のコードの記載がありました。
import stan schools_code = """ data { int<lower=0> J; // number of schools real y[J]; // estimated treatment effects real<lower=0> sigma[J]; // standard error of effect estimates } parameters { real mu; // population treatment effect real<lower=0> tau; // standard deviation in treatment effects vector[J] eta; // unscaled deviation from mu by school } transformed parameters { vector[J] theta = mu + tau * eta; // school treatment effects } model { target += normal_lpdf(eta | 0, 1); // prior log-density target += normal_lpdf(y | theta, sigma); // log-likelihood } """ schools_data = {"J": 8, "y": [28, 8, -3, 7, -1, 1, 18, 12], "sigma": [15, 10, 16, 11, 9, 11, 10, 18]} posterior = stan.build(schools_code, data=schools_data) fit = posterior.sample(num_chains=4, num_samples=1000) eta = fit["eta"] # array with shape (8, 4000) df = fit.to_frame() # pandas `DataFrame, requires pandas
※上記リンク先のクイックスタートの引用です
いや、めちゃめちゃライブラリ名変わってるんだが。いつの間に"stan"になっとるんや。
3. 試してみる。
ってことで、こちらをGoogle Colabで実行してみます。
#pystanのインポート import stan
はい、普通にエラーなく通りました。
モデリングまで試せてないですが、多分これでこれまで通り使えるんじゃないかと思います(ダメだったら記事更新します)。
4. おわりに
ってことで、PyStan突然使えなくなった問題を解消しました。
いやしかし、ライブラリ名って結構カジュアルに変わるもんなんですね、、、(それとも今回が特殊なパターンなのかな)