ColabでVNCをつかってMineRL(旧ブログからの再掲)
MineRLをやりたくてとりあえずColabで実行できる環境を作った時の記事。
若干修正した。
MineRL(MinecraftのシミュレーターとしてMalmoを使った強化学習プラットフォーム)をColabから操作したいという需要があって、 ちょうどColabでVNCを使ういい機会と思ったのでやって見た。 前提として、Colabでgymのrenderをするときは仮想ディスプレイを使ってやることが多いんだけど(参考:ChainerRL を Colaboratory で動かす)MineRLはそれではうまくうごかなかったのでちょっと骨が折れた。
いくつか参考にしたものを先に上げておくと
- ChainerRLをつかって、Minecraftで深層強化学習 ハンズオン
- Google Colaboratory でVNCサーバーを動かして、OpenAI Gym を動かしてみる
- AIcrowd など
GitHubに試すのに必要なものはおいたので、そちらからnotebookかColabをみてもらえばわかると思う。 github.com
手順的には
うまく起動できれば、以下の様に(初回は2分くらいかかる)なって、VNCの画面にマインクラフトが立ち上がって、指定した環境が始まる。(動いている感じはGitHubに)
- MineRLのインストール
普通にドキュメント通りにやればいい
bash pip3 install --upgrade minerl
- Javaのインストール
Colabでやるので、MineRLのインストール後にランタイムの再起動が必要(Dependanciesのバージョンが異なるため)。そのため、ランタイムの再起動後にJavaのインストールをする。
さらに、以下の様に環境変数を突っ込んでおく(そうしないとColab側から認識しない)
python os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
VNCの設定
これは詳細を省くけどnovncを使う。そのインストールにはこれを使う。 参考にしたものからいくつか余分なものを除いて、apt-get内にx11-xserver-utilsを加えた。これがないとMineRL側からはXを認識しないのでずっと画面がないよっていうエラーが吐かれてだいぶハマった。
python get_ipython().system_raw('DISPLAY=:99 xterm &')
としているところは、VNC側でちょっと触りたいときに便利なので加えているだけで、本質的には不要。MineRLの実行
あとは煮るなり焼くなり自由にどうぞ。Colabで実際にagentが動いている様子は以下。