[python][pymc]Pymc5でnumpyroやnutpieなどのsampling libraryが使用できないエラー

woman using a laptop python
Photo by cottonbro studio on Pexels.com

経緯

WindowsでもMacでも、最新のPymcAnacondaを用いたインストールが推奨されている。個人的にAnacondaは環境維持が難しいと思っているので、積極的には使いたくなかったのが・・・。これまでPymcはpipでインストールしていたのだが、どうもその場合、nutpieやnumpyro、あるいはblackjacksとの相性が良くない。

Installation — PyMC 5.21.1 documentation

以下のエラーが出て、せっかくの高速サンプリングライブラリを使用出来ない。

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を作成する方法

コメント

タイトルとURLをコピーしました