LIS ver.2を入れて使ってみる
この情報は古いので、現状のLIS ver.2には適合しない可能性があります。
環境
GPU GTX1070
ubuntu 14.04
chainer 1.14.0
など
はじめに
過去12回でパソコンを自作した後に、Ubuntu14.04、CUDA、cuDNN、chainer、dqn、LIS、Tensorflow、OpenAIGymを順次インストールし、いくつかモデルを走らせた。特に前回はModel-Free Episodic Controlを学習させた。
http://qiita.com/masataka46/items/a87110e8665f29f751f5
今回はドワンゴさんのLISのヴァージョン2をインストールし、使ってみる。コードはこちらのpull requestにある。
https://github.com/wbap/lis/pull/16
LIS ver.2をインストールする
ver.2のpull requestがmergeされてないようなので、fetchで持ってくる。
LISのver.2はこちらにある。
https://github.com/stssg526/lis/tree/lisver2
適当なディレクトリにgit cloneする。
git clone https://github.com/stssg526/lis.git
しかしなぜかgym_clientがない。ver1なのか?よって、zipファイルから行う。
unzip lis-lisver2
本来ここでpython modulesをinstallする必要がある。
pip install -r python-agent/requirements.txt
これを怠ったことが後のエラーに繋がったか?
次にdataをfetchする。
./fetch.sh
ver2はUnityがサーバーになったので、先に起動する。
cd PATH_TO_UNITY_EDITOR
./Unity
次にクライアントのagent側を起動する。
cd gym_client/examples/agents
PYTHONPATH=../../ python Lis_dqn.py
本来これで学習が開始される。
エラーの対応
学習を開始すると以下のエラーが表示された。
ImportError: No module named websocket
とりあえずpipで入れてみる。
sudo pip install websocket
これで再度実行すると、すると以下のエラーが表示された。
File "/media/ohmasa/several data/home/ohmasa/lisV2/lis-lisver2/gym_client/gym/envs/unity/gym_unity_env.py", line 62, in close
self.ws.close() # コネクション終了
AttributeError: 'GymUnityEnv' object has no attribute 'ws'
gym_unity_env.pyの16行目には以下のように書かれている。
self.ws = websocket.create_connection("ws://localhost:4649/CommunicationGym")
wsというインスタンス変数はあるが、これにwebsocketどうたらを代入しているのが気になる。先ほどインストールしたwebsocketに問題あるのだろうか?
READMEの下方Module Referencesにwebsocket-sharpとかwebsocket-clientとかある。これは先ほど入れたwebsocketとは別物なのだろうか?とりあえずwebsocket-clientを入れてみる。
sudo pip install websocket-client
再度実行すると、ようやく学習が始まった。しかししばらくすると
msgpack.exceptions.UnpackValueError: Unpack failed: error = 0
となって止まった。Referencesにmsg-packどうたらこうたら書いているが、これが問題だろうか。そこで
sudo easy_install msgpack-python
として再度実行。しかしやっぱり同じエラーが出る。そこでネットで調べたところ、このサイト
http://qiita.com/snaka/items/8da9f89deeef17b1923a
など読むと、msgpack-unityというものが別にあるらしい。
確かにREADMEにはmsgpack-unityと書かれていた。そこでGitHubのここ
https://github.com/masharada/msgpack-unity
を利用する。
git clone https://github.com/masharada/msgpack-unity.git
このsrcフォルダを対応するunityのプロジェクトのAssetsフォルダ内にコピーした。再度実行すると、Unityを立ち上げた際にウインドウ下部に以下のエラーが表示され、ゲームの進行が出来なかった。
Assets/Packages/mspack-unity/src/BoxingPacker.cs(25,22):error CS0101:The namespace 'MsgPack' already contains a difinition for 'BoxingPacker'
問題は自己解決した。LIS ver2の最新版をzip経由で入れた上で、READMEに従って進めると、問題なく学習が進んだ。これまでpython modulesをinstallしてなかったので、これが原因の可能性もある。fetch.shを実行する前に以下を実行する必要があるが忘れていた。
pip install -r python-agent/requirements.txt
学習結果のグラフを表示する
timestep-rewardのグラフを表示する。はじめにpandasをインストールする。
sudo pip install pandas
cd gym_client/examples/agents
python plot_reward_log.py
4万回くらいまで順調に増加してるけど、その後停滞してるね。13万回くらい学習するのにGPU使って6時間半。
Author And Source
この問題について(LIS ver.2を入れて使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/masataka46/items/977eba5010c1f000dc1d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .