Sunday, October 8, 2017

윈도우 서브시스템 리눅스에 openAI Gym 설치하기

윈도우에서 openAI Gym을 이용해서 슈퍼마리오 AI 플레이 만들기


1. 윈도우 서브시스템 리눅스에 openAI Gym 설치하기
지금 여기

2. openAI gym을 이용해서 슈퍼마리오 설치해서 자동 플레이 하기

3. 슈퍼마리오에 모두를 위한 RL 수업의 딥러닝 코드 붙이기
http://jinman190.blogspot.ca/2017/10/rl.html

4. 슈퍼마리오의 딥러닝 코드 효율적으로 고쳐보기










목표: 윈도우에서 openAI gym의 아타리 게임 플레이 하기



Sung Kim 교수님의 모두를 위한 RL 강좌를 보려고 openAI gym을 설치하다가 윈도우에서 잘 설치가 안된다는 것을 알고 시도했다.

그래서 윈도우10 스토어에 있는 우분투 앱을 깔아서 거기에 설치를 해보았는데 전부 다 잘 설치되고 실행도 잘 된다.

리눅스나 맥 없이 윈도우10만 쓰시는 분들은 시도해봐도 좋을 것 같다.

윈도우와 우분투 간에 파일이 공유되기 때문에 코딩은 전부 윈도우에서 하고 우분투에서는 실행만 해보는 것도 가능하다.


아래는 내가 따라한 인터넷 설치법 링크들


1. 윈도우용 우분투앱 설치
출처: http://prolite.tistory.com/830
---- 윈도우를 개발자 모드로 설정하라고 하는데 난 안하고 됐다.


제어판 - 프로그램 및 기능 에서 Windows 기능 켜기/끄기] 메뉴를 선택


윈도우 참가자 프로그램에서 active development 버전을 받음

위 창과 같이 Active development of Windows 옵션을 선택하면 Windows 업데이트에 새 업데이트가 있다고 뜨는데 그 업데이트를 받고 재부팅 하면 된다.

어떤 사이트는 참가자 프로그램을 하라고 하고 어떤 사이트는 개발자 모드를 하라고 하는데, 개발자 모드는 선택만 하면 되니까 그게 더 편할 것이다.



윈도우 앱스토어에 가서 우분투를 받음(안받아지면 위에서 한 설정을 다시)



이하는 일반 우분투에 설치하는 법과 같다



2. 우분투용 텐서플로 설치
출처: https://www.tensorflow.org/install/install_linux#InstallingVirtualenv
우분투 앱을 실행하고 그냥 일반 우분투용 텐서플로를 설치하면 된다.
$ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n
$ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
$ source ~/tensorflow/bin/activate
(tensorflow)~$ pip3 install --upgrade tensorflow     # for Python 3.n



(tensorflow)~$ sudo apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig
$ git clone https://github.com/openai/gym.git
$ cd gym
$ pip install -e '.[all]'    # 파이썬 3.5 설치

여기서 python 3.x 버전을 쓰는 사람은 python-XXX 라고 되어 있는 패키지들 몇개를 python3-XXX 라고 바꿔 써서 설치 하라는데 난 뭐뭐를 바꿔야 되는지 몰라서 그냥 다 깔았다.

python-numpy 라고 쳐서 한번 설치하고 python3-numpy 라고 쳐서 한번 설치하고...
어차피 없는 패키지는 알아서 넘어가니까.

그러니까 내 컴퓨터엔 지금 python2 버전과 python3 버전 용이 모두 깔려 있을 것이다.





4. 주의사항


여기까지 설치하고 일반 딥러닝 코드를 실행하면 잘되는데 게임 러닝을 시도하면 NoSuchDisplayException 에러가 난다

파이썬 코드 실행 전에 우분투에서
export DISPLAY=:0
를 실행해주고
윈도우10 에서 윈도우용 xming을 설치하고 실행시켜 주면 저 에러가 나지 않는다. (윈도우용임!)

또는 클라우드 서버에서 실행하는 등의 이유로 디스플레이가 아예 없는 경우에 NoSuchDisplayException 에러가 나는데 이 때는
export DISPLAY=:99
를 실행하고 코드를 실행하면 된다. (화면 출력을 아예 안함)





5. 윈도우에서 코드 쓰고 우분투에서 실행
윈도우 메모장 같은 데서 파이썬 코드를 작성한다

import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
    env.render()
    env.step(env.action_space.sample()) # take a random action



이 코드를 c:\abc\test.py에 저장했다고 치고

우분투 앱을 열어서 아래와 같이 입력하면 코드가 실행된다.

$ source ~/tensorflow/bin/activate
(tensorflow) $ export DISPLAY=:0
(tensorflow) $ cd /mnt/c/abc
(tensorflow) /mnt/c/abc $ python3 test.py












슈퍼마리오에 모두를 위한 RL 수업의 딥러닝 코드 붙이기

윈도우에서 openAI Gym을 이용해서 슈퍼마리오 AI 플레이 만들기 1. 윈도우 서브시스템 리눅스에 openAI Gym 설치하기 http://jinman190.blogspot.ca/2017/10/openai-gym.html 2. ope...