CmdStanPyのインストール
MCMCのライブラリとして昔はPyMC3を使っていましたが、仕様がコロコロ変わったり、TensorFlowベースになる予定だったPyMC4を開発中止したりと、何かと悪い印象がありました。そんなわけで、半年前くらいからStanに切り替えました。RのStanかcolaboratory上からPyStanを使っています。「Stanは使いやすくていいな」なんて思いながらしばらく使っていましたが、最近CmdStanPyというのを見つけて、インストールしようとしました。CmdStanPyというのは下記のものです。
www.wenyanet.com
公式ドキュメントに沿ってインストールしたつもりですが、苦戦しました。
StanをPythonで呼び出そうとすると何かと苦労する印象です。そういえば、何年か前にMCMCの勉強会がありました。PythonユーザはPyStanを使おうと頑張りましたが、結局インストールできた人は居なかった気が・・・。Pythonユーザは諦めてreticulateでRのStanを呼び出していました。(その時は私はPyMC3を使っていました)
例に倣ってCmdStanPyのインストールもすんなり行きませんでした。いろいろ試行錯誤した結果よさそうな方法を模索したので、メモしておきます。
インストール
デスクトップにインストール
私のデスクトップ環境は下記のとおりです
- Windows11
- python 3.7.11
手順としては最初にcmdstanpyをインストールしてから、次にcmdstanをインストールするようです。
まずはターミナルからconda-forge
でCmdStanPyをインストールしました。というかconda-forge
からはインストール出来ますが、pip
からではインストールできませんでした。コマンドは下記のとおりです。
conda install -c conda-forge cmdstanpy
その次に、下記のようにCオプションを使ってCmdStanをインストールしました。
python -c 'import cmdstanpy; cmdstanpy.install_cmdstan()'
もしくは、
python -m cmdstanpy.install_cmdstan
これでなんとか行けました。
試したこと
すんなりインストール出来たわけではなく、色々と試行錯誤しました。
pip
からcmdstanpyをインストールすると、次段階のcmdstanがインストール出来ません。原因不明です。
なので、公式ドキュメントに書いてある、
pip install --upgrade cmdstanpy
とか
pip install --upgrade cmdstanpy[all]
からインストールすると、次段階のcmdstanをインストールする際に、「ファイルがありません」というようなエラーが出力されます。
下記も同じです。
install_cmdstan
同じくPythonから下記を呼び出してもダメでした。
import cmdstanpy cmdstanpy.install_cmdstan()
なぜ駄目なのかソースコードを見てみましたが、段々面倒になってきてやめました。
Dockerを利用してインストールする
('23/1/5追記)
Cmdstanpyを再インストールしたところ、ローカルの環境がぐちゃぐちゃになってしまいました・・・。こういうのに時間を取られるのが嫌なので、Docker上にインストールします。というかDocker上にインストールするのが一番楽だと思います。
巻末の参考3を参照してDockerfileを下記のように書いてインストールしました。参考元はubuntuのイメージを使っていますが、私はminicondaを使いました。
FROM continuumio/miniconda3 # conda create RUN conda create -n chemodel python==3.9 # install conda package RUN conda install -c conda-forge cmdstanpy=1.0.4 RUN conda install -c conda-forge cmdstan=2.30.0