LIS ver.2를 넣어 사용해보기

이 정보는 오래되었으므로 현재 LIS ver.2에 적합하지 않을 수 있습니다.

환경



GPU GTX1070
우분투 14.04
chainer 1.14.0


소개



과거 12회로 PC를 자작한 후, Ubuntu 14.04, CUDA, cuDNN, chainer, dqn, LIS, Tensorflow, OpenAIGym을 순차적으로 인스톨 해, 몇개의 모델을 달렸다. 특히 전회는 Model-Free Episodic Control을 학습시켰다.
ぃ tp // 이 m / 설마 46 / ms / 87110 8665f29f751f5

이번은 도완고 씨의 LIS의 버젼 2를 인스톨 해, 사용해 본다. 코드는 이쪽의 pull request에 있다.
htps : // 기주 b. 코 m/w바 p/ぃs/푸 l/16

LIS ver.2 설치



ver.2의 pull request가 merge되지 않은 것 같기 때문에, fetch로 가져온다.
LIS의 ver.2는 이쪽에 있다.
htps : // 기주 b. 이 m/stsg526/ぃs/t레에/ぃsゔぇr2
적당한 디렉토리에 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

그런 다음 클라이언트의 에이전트 측을 시작합니다.
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

로 다시 실행. 그러나 역시 같은 에러가 나온다. 그래서 인터넷에서 조사한 결과,이 사이트
ぃ tp // 이 m / s 중 / ms / 8, 9f89, 예 f17b1923
등 읽으면, msgpack-unity라는 것이 따로 있는 것 같다.
확실히 README에는 msgpack-unity라고 적혀 있었다. 그래서 GitHub의 여기
htps : // 기주 b. 코 m / 마샤라다 / msg Pack-Uni ty
를 이용한다.
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에 따라 진행하면 문제없이 학습이 진행되었다. 지금까지 파이썬 모듈을 설치하지 않았기 때문에 이것이 원인 일 가능성도 있습니다. 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시간 반.

좋은 웹페이지 즐겨찾기