HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

期待のPPL "PyMC4 on TensorFlow Probability" が開発中止決定

 

 

follow us in feedly

PyMC4開発中止

PPLとはProbabilisticProgramming Languageの略で、確率モデリング、推論を主眼においた(言語というより)ライブラリになります。 PPLに関して、1ヶ月半前にTFUGベイズ分科会にてトークをしました。

www.hellocybernetics.tech

上記ではTFUGであるので、TensorFlow Probabilityとその上に開発中のPyMC4の話題を交えながらも、普通に統計分析するならStanが固くて、Deepも含めてやるならPyroが今の所使いやすいというような話をしました。

なんだかTFPはまだまだ熟れていないところが沢山あり、TFUGでも好評という感じではなかったのですが、きっとユーザーフレンドリーなPyMC4の開発とともにTFPも少しずつ熟れてくるのだろうと想像していました。

ところが何と、昨日、PyMC4の開発を中断することが決定したのです。

PyMC4の前身であるPyMC3の開発はこれまでもずっと続いて来ており、更にバックエンドとなっているTheano(既に開発停止)の拡張の方も、実はPyMCリポジトリの中で行われてきました。そんな中、同時並行的にTheanoの代わりにTF及びTFPを使うという試みが行われてきたのですが、これはTFがEagerデフォルトになる前の構想でありました。TF2.Xに伴う大規模な仕様変更による問題をPyMC開発側で解決できそうにないという状況に陥ってしまっていたのです。

そんな中、颯爽と現れた Jax という自動微分ライブラリとその上で高速に動作するNumPyroの存在が後押しとなり、PyMC4の開発を停止して、PyMC3のバックエンドとしてJaxを構える形で開発を続行するという方針が固まったようです。Jaxは非常に優れた自動微分ライブラリで、NumPyのようにEagerでの計算を実施できる上、自動微分、ベクトル化、JITコンパイル等の機能をライブラリに備えており、次世代の深層学習ライブラリとしても密かに注目されています。

大きな方針はTheanoの資産を捨てること無く、Theanoの計算グラフをJaxの表現に翻訳してXLAを通してコンパイルする形を取るようで、既に、NumPyroのMCMCを流用してみたらちゃんと動くことが確認できている模様です(XLAを通して目標分布を評価する計算グラフがコンパイルされていれば、たしかに動きそうだけど、そういうもんなのか)。

なんだかPPLはJax上で動作するのがデフォルトになりそうな予感です。

というか普通に嬉しい。