Marloコンペ用の強化学習環境をサーバーに立てた話(おまけ:Google ColabでDQN)
はじめに
こんにちは、syuntoku14です。現在カリフォルニアでスマブラしてます。イカちゃん強いね。
スマブラのせいで時間がなくなってしまったので、本記事ではDavisで作成した無についてしゃべります。
皆さんMarloコンペというのをご存知ですか?OpenAIが主催しているMinecraft環境での強化学習の大会で、入賞するとカナダに行けたりするすごいやつです(もう終わっちゃいましたが、来年もあると思います)。
MarloコンペのチームにDavisで参加し、私は環境構築を担当したわけなんですが、この環境構築が鬼めんどくさかったのでスクリプト化しました。
一応公式ページにインストール方法などは書いてあるんですが、Minecraft環境非常に不親切で、ウィンドウがある環境でないと動きません。このままではGoogle Cloudなどクラウド上で学習させることが出来ません。困りましたね。
やったこと
xvfbを使って仮想ウィンドウを作成し、Marloを走らせました。が、これだけではなぜか動かなかったので(OpenGL周りが原因?)、最終的に公式が配布しているDockerファイルを弄くり、中にあるlaunchClient.shをxvfb付きで実行したら動きました。
最終的に出来上がったDocker imageがこれです:
以下のコマンドで任意のポートにつなげて実行できます。
“`
docker run -it –rm -p [number of port]:10000 syuntoku/marlo_client
“`
ここまで自力で頑張ったあとで、これDocker Hubに既に存在していることに気がついてしまいました。圧倒的車輪の再発明だったんですね(悲しいね)。まあDockerについての知識が微妙についたので良いんじゃないでしょうか。
あとはこれをdocker-composeと–scaleオプションで並列化させて実行するだけです。(スクリプトにしました)
クラウド上で利用するにはDockerやCUDA、Anacondaのインストールもやらないといけないので、これもスクリプトにしました。
できたもの
Github:
https://github.com/syuntoku14/marlo_headless
使い方は一応READMEに書いてあります。
手順:
1. AWSでもGoogle Cloudでも何でも良いが、Ubuntu18.04環境を立ちあげる。
2. Jupyterの設定も勝手にしするので(ポート5000)、各クラウドのブラウザから5000番ポートを開けとく
2. 中でgit clone https://github.com/syuntoku14/marlo_headless.git
3. . ./marlo_headless/install/gcp/install.bash
4. . ./marlo_headless/docker/launch_multi_client.sh [number of environment]
私はVimmerなので、Jupyter-notebookのvim extensionをセットアップするスクリプトなども別でついてます。
肝心の学習ですが、まだやっていないです(無能)。学習させたらまた記事を書きます。おちまい。
おまけ
Courseraの課題でDQNを実装してGoogle Colab上で動かしました。
Gist:
先ほど紹介したMarlo用のスクリプトはついでにgym環境もインストールするので、上記のgistを参考にして適当にやればGoogle Cloudで簡単にAtariの学習も出来ます。やったね。
Posted on: 2018年12月24日, by : 北村俊徳