経緯
WindowsでもMacでも、最新のPymcはAnacondaを用いたインストールが推奨されている。個人的にAnacondaは環境維持が難しいと思っているので、積極的には使いたくなかったのが・・・。これまでPymcはpipでインストールしていたのだが、どうもその場合、nutpieやnumpyro、あるいはblackjacksとの相性が良くない。
以下のエラーが出て、せっかくの高速サンプリングライブラリを使用出来ない。
WARNING (pytensor.configdefaults): g++ not available, if using conda: conda install gxx
WARNING (pytensor.configdefaults): g++ not detected! PyTensor will be unable to compile C-implementations and will default to Python. Performance may be severely degraded. To remove this warning, set PyTensor flags cxx to an empty string.
解決方法
これはPythonとPymcのバージョンの齟齬に基づくエラーだった。四の五の言ってられないので、まずはAnacondaを導入。condaでPythonのバージョンを3.12.9に指定して仮想環境を作成。その仮想環境上で(つまり、Anaconda Promptで)Pymcを導入すればいい。この場合、Pymcのバージョンは特に指定しなくても大丈夫だった(最新バージョンのv5.21.0でも問題なかった)。
なお、nutpieをインストールする前に、mambaおよびnumbaもインストールする必要がある。こちらは公式サイトを見れば簡単。さらに、その際numpyのバージョンとぶつかることがあるので、numpyもダウングレードしておく。
conda activate pymc_env # 仮想環境のアクティベート
conda install -c conda-forge mamba # mambaをまずインストール
mamba install -c conda-forge numba nutpie # mamba経由でnumba (numpy互換性維持)をインストール
mamba install numpy=2.1 # numpyをダウングレード
感想
これだけのことであるが、解決するのにエライ時間が掛かってしまった・・・特にPymcのようなマイナー?なライブラリではChat GPTちゃんに聞いてもあまりいい答えが返って来ないことが多い。何故かStack overflowもPymc関連だと余り役に立たないことも多い・・・。nuts_samplerにnutpieを指定すると、これまでM3 Macで半日掛かっていた解析が20分で終了した・・・!流石RTX-4070と言ったところか・・・。
追記
scikit-learnを入れるとまたエラーが起きるように・・・。これはsklearnがAnaconda環境内でMicrosoft Visual Studioのコンパイラを探してしまうことが原因らしい。対策として、sklearnをインストールする際に、以下のようにVisual Studioへ依存しないようにする。
conda deactivate # まずdeactivate
conda remove -n pymc_env --all # 仮想環境を一度消去
conda create -n pymc_env python=3.11 pymc arviz numpy pandas matplotlib seaborn xarray h5netcdf h5py -c conda-forge
conda activate pymc_env
conda install -c conda-forge nutpie numba m2w64-toolchain libpython
pip install scikit-learn
また、Windowsのスマートアプリコントロールはoffにしておく。
関連記事
VSCode + MacでModuleNotFoundErrorが出る場合の対処方法
Apple M3 Maxのローカル環境で画像生成AIを作成する方法
コメント