くろたんくブログ

Practice Makes Permanent

このエントリーをはてなブックマークに追加

2019年 9月 22日 日曜日 13:59:22 JST(modified: 2019年 9月 22日 日曜日 14:10:58 JST)
views: 708, keywords: Tech, Colab, MineRL, Minecraft, gym

ColabでVNCをつかってMineRL

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

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

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

手順的には

  • MineRLのインストール
  • Javaのインストール
  • VNCの設定
    * MineRLの実行(普通にgymを扱う様なイメージ)

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

result

  • MineRLのインストール

普通にドキュメント通りにやればいい

pip3 install --upgrade minerl
  • Javaのインストール

Colabでやるので、MineRLのインストール後にランタイムの再起動が必要(Dependanciesのバージョンが異なるため)。そのため、ランタイムの再起動後にJavaのインストールをする。
さらに、以下の様に環境変数を突っ込んでおく(そうしないとColab側から認識しない)

os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
  • VNCの設定

これは詳細を省くけどnovncを使う。そのインストールにはこれを使う。
参考にしたものからいくつか余分なものを除いて、apt-get内にx11-xserver-utilsを加えた。これがないとMineRL側からはXを認識しないのでずっと画面がないよっていうエラーが吐かれてだいぶハマった。

get_ipython().system_raw('DISPLAY=:99 xterm &')

としているところは、VNC側でちょっと触りたいときに便利なので加えているだけで、本質的には不要。

  • MineRLの実行

あとは煮るなり焼くなり自由にどうぞ。動いている環境がColabなのでそれなりに動いている。

result

prev:ColabでTensorBoardをセル内に出力する(Pytorch) next:レオちゃん用のカメラ購入