くろたんく雑記帳

日常とか、わんちゃんとか、機械学習とか、競プロとか、

MENU

ColabでVNCをつかってMineRL(旧ブログからの再掲)

MineRLをやりたくてとりあえずColabで実行できる環境を作った時の記事。
若干修正した。


MineRL(MinecraftのシミュレーターとしてMalmoを使った強化学習プラットフォーム)をColabから操作したいという需要があって、 ちょうどColabでVNCを使ういい機会と思ったのでやって見た。 前提として、Colabでgymのrenderをするときは仮想ディスプレイを使ってやることが多いんだけど(参考:ChainerRL を Colaboratory で動かす)MineRLはそれではうまくうごかなかったのでちょっと骨が折れた。

いくつか参考にしたものを先に上げておくと

GitHubに試すのに必要なものはおいたので、そちらからnotebookかColabをみてもらえばわかると思う。 github.com

手順的には

  1. MineRLのインストール
  2. Javaのインストー
  3. VNCの設定
  4. MineRLの実行(普通にgymを扱う様なイメージ)

うまく起動できれば、以下の様に(初回は2分くらいかかる)なって、VNCの画面にマインクラフトが立ち上がって、指定した環境が始まる。(動いている感じはGitHubに)

  1. MineRLのインストール
    普通にドキュメント通りにやればいい
    bash pip3 install --upgrade minerl
  2. Javaのインストール Colabでやるので、MineRLのインストール後にランタイムの再起動が必要(Dependanciesのバージョンが異なるため)。そのため、ランタイムの再起動後にJavaのインストールをする。 さらに、以下の様に環境変数を突っ込んでおく(そうしないとColab側から認識しない)
    python os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
  3. VNCの設定
    これは詳細を省くけどnovncを使う。そのインストールにはこれを使う。 参考にしたものからいくつか余分なものを除いて、apt-get内にx11-xserver-utilsを加えた。これがないとMineRL側からはXを認識しないのでずっと画面がないよっていうエラーが吐かれてだいぶハマった。
    python get_ipython().system_raw('DISPLAY=:99 xterm &')
    としているところは、VNC側でちょっと触りたいときに便利なので加えているだけで、本質的には不要。

  4. MineRLの実行
    あとは煮るなり焼くなり自由にどうぞ。Colabで実際にagentが動いている様子は以下。

f:id:black_tank_top:20200716163741g:plain
MineRLでagentが動いている状態(実際にはもう少し解像度は良い)