Playing Atari with Deep Reinforcement Learning
atari games
limetimeline.github.io
환경
|
알파고를 만든 구글의 딥마인드에서 게재한 DQN을 활용한 강화학습 논문이다.
고전 비디오 게임인 Atari2800 Games를 하나의 모델로 모두 클리어하는 것이 목표인 모델을 제작한다.
구현[2]
GitHub - limetimeline/Atari-DQN: Reinforcement Learning
Reinforcement Learning. Contribute to limetimeline/Atari-DQN development by creating an account on GitHub.
github.com
아나콘다로 'atari-test'라는 가상환경을 만들어준다. 파이썬 버전은 3.7.13으로 지정하였다.
conda create -n atari-test python=3.7.13
이제 생성한 가상환경을 활성화 시켜준다. (Activate)
conda activate atari-test
Spicy 라이브러리를 설치한다.
pip install spicy
Six 라이브러리를 설치한다.
pip install six
Piglet 라이브러리를 설치한다.
pip install piglet
Gym 라이브러리도 설치한다.
pip install gym
앞에서 라이브러리들이 잘 설치되었는지 확인해보는 코드를 작성해보자.
gym 라이브러리에 기본적으로 탑재되어 있는 CartPole게임을 실행해보자.
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample())
이렇게 CartPole 게임이 잘 나오는 것을 확인할 수 있다.
- 시스템 환경 변수 편집
- (시스템 변수) 변수 이름 : DISPLAY, 변수 값 : 0
- (시스템 변수) Path 변수 편집 – MSYS2 경로 추가
Atary-py 라이브러리를 설치한다.
pip install atary-py
Requirement.txt에 기록된 필수 라이브러리들이다.
특히 나중에 GPU(Graphic Card)를 쓰려면 Nvidia의 Cuda버전과 Tensorflow버전이 같아야 하므로 주의하자! 여기서는 2.1.0버전을 사용하였다.
필수 라이브러리들을 설치한다.
pip install -r requirement.txt
Github에 있는 Atari_roms 안에 있는 파일들을 다 복사한다.
그후 지금 사용하고 있는 아나콘다 가상환경인 atari-test 폴더의 Lib – site-packages – atari_py – atari_roms 안에 복사한 롬파일을 모두 넣자. (이제 아타리 게임들을 실행할 수 있다!)
- GPU 사용하기
텐서플로 버전이 2.1.0이다.
https://www.tensorflow.org/install/source_windows#tested_build_configurations
텐서플로 버전과 그에 상응하는 cuDNN과 CUDA버전을 파악하자. 여기서는 각각 7.6, 10.1버전이다.
https://developer.nvidia.com/cuda-toolkit-archive
CUDA버전 10.1을 다운받아 설치하자.
https://developer.nvidia.com/rdp/cudnn-archive
cuDNN을 다운받고 압축을 풀자.
설치된 CUDA 폴더에 다운받아 압축을 푼 cuDNN 안의 파일들을 다 복사하여 붙여넣자.
CMD를 열어 확인해보면 자동으로 환경변수가 등록이 되어있다.
위와 같이 나온다면 성공적으로 설치가 된 것이다.
nvcc --version
텐서플로 버전과 CUDA 설치 여부, GPU 지원(인식) 여부, GPU정보가 잘 나오는 것을 볼 수 있다.
import tensorflow as tf # 텐서플로 임포트
print(tf.__version__) # 텐서플로 버전
tf.test.is_built_with_cuda() # CUDA 설치 여부
tf.test.is_built_with_gpu_support() # GPU 인식 여부
tf.test.gpu_device_name() # GPU 정보
SpaceInvaders를 플레이하고 있는 모습이다.
atari-dqn모델은 웬만한 아타리 게임들에 적용이 가능하다.
원래 breakout으로 되어 있었는데 바꿨다.
학습하고 있는 모습이다.
breakout과 SpaceInvaders 외의 Atari game 들이 잘 되는 것을 볼 수 있다.