前回の投稿で進化の実験ができる世界を作りたいと言いました。今回はその実現のためのソフトウェア環境について考察します。
将来的には深層学習を含めた複数エージェントの機械学習をすることになりますので、現時点で最適な言語は Python だと言えると思います。 OpenAI Gym などの機械学習のフレームワークが確立されている他、深層学習では強力なライブラリ群によってほぼ独壇場のシェアがあります。速度面でも Numpy や Numba をうまく使えば他の言語と遜色なく、フレキシブルに使える分 Python に利があるとも言えます。(Matlab と Julia でライフゲームの速度比較をしたのですが、Python も Julia もきちんと最適化をすればほぼ同等の性能が出ました。Matlabだけはどうしてもそこまで速度を上げることができませんでした。これらの実験の詳細は割愛します。もし興味がある方がいらっしゃれば、一報いただければ記事を書こうと思います。)
エディタは PyCharm を使うつもりです。VSCode も評価が高く、考慮はしたのですが、デバッグが PyCharm の方が簡単そうだったのでこちらにしました。 Vim も選択肢にはありましたが、実用的なレベルになるまでに必要なプラグインの数が多いこと(結果メンテナンスの量が増える)もあって、諦めました。無理してVimを使うよりは、PyCharm の Vim mode を使った方が短期的には楽になる気がしたので。このあたりは様子を見ながら色々試してみたいと思っています。
今回は OpenAI Gym に自作の環境(世界)を登録して、既存の深層学習ライブラリと組み合わせて計算することを試みます。やや古い Intel Mac を使っているので、PlaidML + Keras を使って Intel CPU のグラフィック機能を計算資源にできないかと思ったのですが、強化学習のフレームワークと相性が悪く、直す方法もわからなかったので大人しく CPU で計算することにしました。(こちらでとりあげられている問題が発生し、PlaidML側の反応としては、Kerasの方が何とかならないと難しい、とのことでした。PlaidMLのベンチマーク自体は走らせることができました。)
将来的には GPU を積んだ手頃な計算機を構築して、そちらで計算を回せるようにしたいところです。計算用のハードウェアの構成の考察も大変面白いので、別途記事にしますが、今は計算機を構築するのに最適な時期ではない気がするのでもう少し後に書こうと思います。少なくとも Apple Silicon Mac と、 AMD Ryzen 5000 シリーズの情報が出て来てから考えるべきだと思っています。
今回は特に紹介するコードもなく手短になりました。次回はおそらく手始めに OpenAI Gym に登録できる世界を作ってみることになると思います。お楽しみに。