python3
強化学習
VcXsrv
WindowsSubsystemForLinux
OpenAIGym

WindowsのWSLにOpenAI gymとchainerrlをインストールした時のメモ

はじめに

この記事はWSL (Windows Subsystem for Linux) 上にOpenAIのgym(強化学習フレームワーク)の実行環境を構築した時のメモです。

インストールしたもの

  • python3.6
  • pip
  • 強化学習で使いそうなライブラリ
  • VcXsrv(XServerクライアント)

この記事には以下の内容は含まれません。

  • WSLはインストール済みであることが前提です。
  • 強化学習の説明はしませんので、別の記事をご参照ください。

インストールするもの

Linux側

WSL(ubuntu)のデフォルトはpython3.5が入っているので、Python3.6とpipを使えるようにする。
このページを参考にapt-getでインストールする。

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt install python3.6 python3-pip
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

python3 -Vでpython3.6が有効になっていればOK。

今回は仮想環境とかは作らずにWSL上に環境を作っていく。
pipでさしあたって使いそうなものをインストール。

pip3 install --user numpy tensorflow keras chainer chainerrl gym jupyter scipy

Windows側

XServerクライアントが必要になります。
Xmingが有名ですが、こちらでVcXsrvが勧められていたのでVcXsrvをインストールしてみました。

ダウンロード:SourceForge
インストール方法など:WindowsでリモートのLinuxのGUIアプリを表示させる-Xサーバ VcXsrv

インストールは特に難しいことはなく、インストーラを起動してボタンをクリックしていくだけ。
インストール後はデスクトップにあるXLaunchというのを起動して、タスクバーに"X"マークのロゴが出ればOK。

一応、ロゴをマウスオーバーしてディスプレイのポートが0.0であることを確認しておく。
("ホスト名:0.0 - 0 clients"となっているはず。)

WSL側の設定は.bashrcに以下の二行を追加。localhostの後ろの0.0はロゴのマウスオーバーで確認した値にしておく。
二行目は"failed to load driver: swrast wsl"というエラーメッセージを消すために入れているが、なくても動く。

export DISPLAY=localhost:0.0
export "LIBGL_ALWAYS_INDIRECT=1"

.bashrc変更後はsource ~/.bashrcするか、再起動する。

OpenGymのGUIが動くように以下をインストール。

sudo apt-get install python3.6-gdbm python-opengl

実際に試してみる

簡易確認

以下の内容でファイルを作ってコマンドラインから実行。テストなので、ランダムに行動させています。

最後の一行を入れないと終了時にエラーが出るみたいです。(2018/4/2時点)

import gym
env = gym.make('CartPole-v0')
observation = env.reset()
for _ in range(100):
  env.render()
  action = env.action_space.sample()
  observation, reward, done, info = env.step(action)
env.close()

自動でXwindowが最前面に来ないこともあるので、タスクバーを見ていないと見落とすかも。

jupyter + chainerrl

jupyterを起動すれば、ChainerRLのクイックスタートも実行できる。

jupyterはjupyter notebookで起動して、Windows側のブラウザから表示されたURLにアクセスすればOK.