数学的にどうなのさ?

大学時代にちょっと長く数学を勉強した人の雑記。数学のこと(主に統計)や趣味、メモなどが多くなります

Windows上でAnaconda無しでpymc3は動くのか?

概要

Anacondaの従業員200名以上の企業利用が有償化してしばらく経ちます.
今までは普通のPythonでのらりくらりとやっていけていた.
しかしベイズ統計の勉強したくてpymc3を導入しようとするとすべてAnaconda前提でインストール方法が書かれている.
本体はpipでインストールせよとのことだったので普通のpythonでもいけるんじゃね?と思ったがダメそう?という感じ.
結論から言うとMinicondaとかWSL使うといけそうだということ.この辺りは後述.

環境

  • Windows 10
  • python 3.9
  • Anacondaを絶対に使わないという意思

やったこと

とりあえず下記を参考にpipでどこまでやれるかやってみた.

qiita.com

必要なパッケージとしてmkl-service,libpython,m2w64-toolchain,scipy,matplotlib,pandasがあるのだが,このなかでm2w64-toolchainだけがpipでのインストールができなかった.
とりあえずm2w64-toolchain以外をインストールして

pip install pymc3

を実行.インストールは一応できた.

しかし下記にあるサンプルコードは動かず.

www.salesanalytics.co.jp

具体的には

with pm.Model() as model:
    
    # 事前分布の定義
    theta = pm.Beta('theta', 1, 1) #ここでエラー
    
    # 尤度の定義
    data = pm.Bernoulli('data', theta, observed=tosses)
    
    # 事後分布からデータ生成
    trace = pm.sample(return_inferencedata=True)

の部分.エラー内容はCompilation failed (return status=1)~とか返ってきたので,pymc3実行時のコンパイル作業ができていないようだ.
じゃあコンパイラに認識させればいいのか?と思いmingw64をインストールしてパスを通してみたがエラーは解消されず.
解決策が見つかったら追記するかもしれないけど,たぶん無理かなぁ…

WSL上にUbuntu入れてやってみる

所謂Windows Subsystem for LinuxWindows上でもLinuxが簡単に使えるなんていい時代になったものだ.
導入は以下を参照.

forest.watch.impress.co.jp

デフォルトがubuntuだったからデフォルトで作ったけど,Almalinuxとかもいけますね.
後は一応pythonの仮想環境を立ち上げておく.がその前に

apt install python3.10-venv

で仮想環境を作るためのvenvをインストールしておく.後はWindows版と同じく適当に仮想環境用のディレクトリを作っておいて,その中で

python3 -m venv [仮想環境名]

とする.仮想環境の有効化は

source [仮想環境名]\bin\acticate

pipでmkl(いらないかも?)とlibpython(いらないかも?)入れて,最後にpymc3をインストール.
ついでにjupyterlabを入れてwindowsのブラウザから操作できるようにする.
jupyterlabにアクセスするときは,WSL環境上でjupyter labを起動後出てくる中で

     Or copy and paste one of these URLs:
        http://localhost:8888/lab?token=e367f4cfe4bff06729f8f560b472a193151cc064105a5187
     or http://127.0.0.1:8888/lab?token=e367f4cfe4bff06729f8f560b472a193151cc064105a5187

を探し出す.どちらのURLでもいいのでコピーしてWIndowsのブラウザでアクセスすると開ける.
そして上で使ったテストコードを実行するとなんと通った.
これが一番楽だと思います.(異論は認める)

Anaconda使わないの?

個人利用であれば問題ないんですが,本当は企業内で使いたい.しかし弊社ケチなのでこういうのは投資分回収できるのか問題が出てくる.
Anaconda使えない,pythonじゃ動かない,それじゃどうするのさ?

Miniconda + Conda-forgeで解決?

こちらの記事によると,どうやらAnacondaというよりAnacondaのパッケージを持ってくる先の問題のようだ.

qiita.com

とはいえ下手すると設定したつもりが有償機能使ってることになりかねないので使うのが怖かったんじゃ…個人でやるなら有だと思いますが,団体で使う場合は注意したほうがいいのではと.

まとめ

WSLって神機能では?と思いました.