OpenAI Baselinesをwindows(winpython)で試す。

  • 2
    いいね
  • 0
    コメント

OpenAIから強化学習をtensorflowで簡単にお試しできるソースコードが公開されたようなのでWindows環境(WinPython)で試してみました。(とりあえず殴り書き)

https://blog.openai.com/openai-baselines-dqn

WinPythonを以下からダウンロード

http://winpython.sourceforge.net/
以下、WinPython-64bit-3.5.3.1Qt5を利用した場合です。

GPU関連とtensorflowを以下を参考にインストール

https://www.tensorflow.org/install/install_windows

OpenAI Baselinesを以下を参考にインストール

https://github.com/openai/baselines
Winpythonのコンソールで

pip install baselines
pip install gym

CartPoleのトレーニング&テスト

Winpythonのコンソールで以下を実行するとcart pole(台車の棒が倒れないようにするゲーム)のトレーニングとテストができます。

python -m baselines.deepq.experiments.train_cartpole
python -m baselines.deepq.experiments.enjoy_cartpole

ここからが本題

ここまでは順調ですが、Pong(ポン)のサンプルを試そうと以下を実行するとエラーが出ます。

python -m baselines.deepq.experiments.train_pong

以下のようにatariを入れろとヒントがでるので、実行すると
pip install gym[atari]
→make がないので、エラーとなります。

以下のスレッドの途中あたりを参考にatariを頑張ってコンパイルします。(bash on ubuntu on windowsを使う方じゃないやつ)
https://github.com/openai/gym/issues/11

msys2を以下を参考にインストールして、makeできるようにします。
http://www.msys2.org/
msys2のコンソールで以下を打ってアップデートします。

pacman -Syu
コンソールを立ち上げなおして
pacman -Su
開発環境もインストールします
pacman -S base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake

msys2のコンソールで以下を実行するとmakeができるはずですが

pip install -U git+https://github.com/Kojoley/atari-py.git

pipがないというエラーが出ます。

winpythonにパスを通しておく必要があるので
windowsの環境変数のpathに以下を追加します。

C:\WinPython-64bit-3.5.3.1Qt5
C:\WinPython-64bit-3.5.3.1Qt5\python-3.5.3.amd64\Scripts
C:\WinPython-64bit-3.5.3.1Qt5\python-3.5.3.amd64

そのままだとmsysのコンソールにpathが引き継がれないようなので環境変数のMSYS2_PATH_TYPEにinheritを追加します。
http://chirimenmonster.github.io/2016/05/09/msys2-path.html

gitコマンドにもパスが通ってないといけないのでgit for windowsを入れておきます。
https://git-for-windows.github.io/

再度、msys2のコンソールで以下のコマンドを打ちます。

pip install -U git+https://github.com/Kojoley/atari-py.git

できたっぽい。

winpythonのコンソールでpip listを実行してatariがインストールされているのを確認します。

やっとこさで目的のサンプルを実行します。

python -m baselines.deepq.experiments.train_pong

v3がないというエラーがでるので

C:\WinPython-64bit-3.5.3.1Qt5\python-3.5.3.amd64\Lib\site-packages\baselines\deepq\experiments\train_pong.py
の"PongNoFrameskip-v3"を"PongNoFrameskip-v4"に変更します。

enjoy_pong.pyも同じくv4変更しておきます。

で、もう一回、以下のコマンドを実行します。

python -m baselines.deepq.experiments.train_pong

トレーニングが始まりました!が、まだ終わらないので、今日はここまで。(学習終わったら結果の画像を載せたい)

追記:
学習終わりました。上手くなってる!(右側がプレーヤー)

学習前

Pong 学習前 pic.twitter.com/0xAdAr1X7b

— tmizu23 (@tmizu23) 2017年5月26日

学習後

Pong 学習後 pic.twitter.com/EzmCrIv6lj

— tmizu23 (@tmizu23) 2017年5月26日