先日、DockerでChainerの開発環境を作り、公式サイトのChainerCVのサンプル実行や有志の方のスクリプトのデモをしてみました。
続いて公式アドオンChainerMN/ChainerRLの何れかのサンプルを、と思い、どちらかと言えば、ChainerRLの方がとっつきやすそうということで公式ドキュメントからリンクのあったOpenAI GymのサンプルをJupyter Notebookで実行してみました。
ChainerRLは、Deep Reinforcement Learning Library/深層強化学習ライブラリ、OpenAI Gymは、ゲーム風のサンプルを多く含む強化学習(Reinforcement Learning)シミュレーションのツールキットです。
Pythonは3系(Python 3.6.6)を使いますが、自動で入った模様の2系は、2.7.15rc1です。
ちなみに今回、検証に使っているパソコンのGPUは、Intel HD Graphics 510というオンボードのもので主流らしきNVIDIA製ではないのでCPUで動かしてみている一方、Intel CPU アクセラレータiDeepは、まだ、試していません。
少なくとも現時点では、UbuntuやCentOSならEE/Enterprise版も使えるようですが、DebianやFedoraはCE版のみ、RHLに触れたり、Fedoraを使っていたこともある自身もOSを乗り換えるほどの熱量はなく、DebianにCE版をインストールしました。
CE版のインストールは、OS、プラットフォームごとに詳述されているので戸惑うこともありませんでした。
OpenAI Gymに倣い、インストールします。
ここでは、冒頭の開発環境においてgymも既にインストール済みなので、その次からということでcat /etc/os-releaseによれば、Ubuntuのバージョンは、18.04なので、このバージョンに必要なパッケージをインストール、敢えてapt-installのRUN行を分けてみました。
これまでpython3パッケージをインストールしていましたが、これを見るとpython3-devを入れたほうが良いようですね。
Dockerコンテナ(仮想OS)を起動しますが、こられが何をしているのかについて必要であれば、冒頭のChainer開発環境のリンク先を参照ください。
ホストはDebian(Linux)であり、GUIは、Dockerfileでの設定に加え、docker run前のxhostコマンド実行やdocker run時の-vオプション指定で起動可能なように設定してあることで起動するので、あとは試してみるだけです。
最初、端末でpython3として実行し、サンプルがことごとくTrueで終わってしまい、おや?と思い、あ、こんな時こそ、Jupyter...、いやいや、Jupyterを開くまでもなかったと気づいた次第。
当然でしょうが、ChainerRL Quickstart GuideのIn [1]〜IN [11]までを端末上でpython3とやって、全てコピペしていったところ、そのページの結果通りになりました。
jaimeps/docker-rl-gymのサンプルを実行するとブラウザの同一画面上(canvas)でブロック崩しが始まりました。
続いてインストール時のチュートリアルにあったサンプルを試してみたところ、追加で環境整備が必要そうなMujocoとRoboticsと結果がテキストであるToy text以外は、相応のポップアップが表示されました。
ただ、どれも静止画なのですが、これはこれでよいのかな...jaimeps/docker-rl-gymのサンプルのように書けば、動くんですかね?
そのうちの1つ、CartPole-v0のサンプルが、これです。
と思ったら、Jupyter Notebookを開くまでもなく、openai/gymをgit cloneしてexamples/agents/に移動、cem.pyやrandom_agent.pyを実行したところ、ポップアップ画面上で先のCartPole-v0サンプルが、keyboard_agent.pyを実行すると別のサンプルが動きました。
openai/gymを始めとする公式ライブラリをDockerコンテナ内でgit cloneすることで、その中の各種サンプル(examples)もいろいろ実行確認してみています。
ライブラリをgit cloneし始めるとキリがないのでDockerfileには、書かず、ホスト側に置いてdocker run時に-vオプションでマウントしています。