1 minute read

PCGRL을 실습해보면서 문서를 작성해봅니다.

목차

1. 샘플
2. 샘플 코드 이해
3. 환경 세팅, 오류 수정 참고자료

1. 샘플

샘플 코드

import gym
from gym import envs
import gym_pcgrl

print([env.id for env in envs.registry.all() if "gym_pcgrl" in env.entry_point]) # PCGRL과 관련된 환경 이름 출력

env = gym.make('sokoban-narrow-v0') # 강화학습 환경을 불러온다.
obs = env.reset() # 환경을 초기화 한다.

for t in range(1000):
  action = env.action_space.sample() # 임의의 action을 선택한다.
  obs, reward, done, info = env.step(action)
  env.render('human') # 화면을 출력한다.
  if done:
    print("Episode finished after {} timesteps".format(t+1))

1.1 샘플 결과

image

샘플 코드 이해 각 representation.py 안에 get_action_space함수와 get_observation_space함수가 있다. (PCGRL에서 Representation과 Problem을 구분하면서 이렇게 구현해놓았다.)

우선 각 representation의 action_space와 observation_space의 역할에 대해 공부해야 할 것 같다.

observation과 같은 설명이 있다. 공식문서를 번역한 것 같은 문서

OpenAI Gym 공식 레퍼런스


2. 환경 세팅, 오류 수정

2.1 train.py 실행되지 않음.

image 위 이미지 부분라인에서 에러가 나길래 runs폴더를 만들어주는 방식으로 해결했다. 코드를 보면 mkdir로 폴더를 만들어주는 예외처리 코드가 되어있는 것 같은데, runs라는 부모폴더까진 만들어지지 않나보다. 어쨌든 runs 디렉토리가 있다는 가정하에 코드가 실행이되어서, 폴더만 만들어주면 해결되었다.

2.2 Python 버전

python 버전은 3.5.6으로 맞추어 주었다. 공식 깃허브에서 보았을 때, 3.6에서 안되는 것들이 있고 3.7로 이전작업을 하고 있다고 한다. 3.7에서 해보았을 때 여러 에러가 터지길래 python환경을 3.5.6으로 설정했다.

2.3 tensorflow 1.15, CUDA환경 설정

tensorflow 1.15를 설치하라고 하는데, 이 과정에서 gcrpio?였나 설치가 안되는 경우가 있었다. 이 때문에 tensorflow가 안깔리는 상황이 발생하여 pip upgrade, setuptools upgrade 하고 gcrpio를 강제 reinstall 했더니 해결되었다. (버전은 1.8.6이었나 그랬다. 에러를 보았을 때 >= 1.8.6이라고 되어있길래 최소버전이 1.8.6이 필요하구나 인지하고 저렇게 버전을 설치했다.) gcrpio를 설치한 후 다시 텐서플로우를 설치하니 아무 에러 메시지없이 말끔하게 설치되었다.

도움 된 링크

2.4 CPU에서만 돌아감

cuda환경설정 이걸 보고 따라했다. cudart100.dll 에러와 같은 것들은 링크에서 나오는대로 하니 성공적으로 dll 링킹이 되었다. -> 그래서 cuDNN설정까지 함.

2.5 그래픽카드는 잘 찾네

image

2.6 OOM 에러

image

이젠 진짜 되나 하고 기대했는데 OOM이 뜨네 진짜 너무하네 OOM을 회피하기 위한 방법은 배치 사이즈를 줄이는 것이 가장 일반적인데, 여기서 배치 사이즈를 어디서 설정하는지 찾아봐야겠다. 우선 python stacktrace를 통해서 어느 함수가 호출되었는지를 찾아보자.

참고자료

OpenAI Gym과 Markov decision process