Creative-Chan

JupyterLab에서 OpenAI Gym, MuJoCo 화면 출력 본문

Machine Learning/Reinforcement Learning

JupyterLab에서 OpenAI Gym, MuJoCo 화면 출력

Creative.Chan 2022. 4. 20. 16:53

JupyterLab은 Interactive python 어플리케이션으로 웹 기반으로 동작합니다.

웹 기반에서 가상으로 작동되는 서버이므로, 디스플레이 개념이 없어 이미지 등의 렌더링이 불가능합니다.

OpenAI gym 환경이나 mujoco 환경을 JupyterLab에서 사용하고 잘 작동하는지 확인하기 위해서는 렌더링을 하기 위한 가상 디스플레이 설정이 필요합니다.

이러한 설정 없이 gym 환경을 rendering 한다면 다음과 같은 에러를 만날 수 있습니다.

GLFW error (code %d): %s 65544 b'X11: The DISPLAY environment variable is missing'

본 게시글에서는 JupyterLab에서 gym 환경을 렌더링 하는 법을 설명하고자 합니다.

IPython 라이브러리에서는 이러한 가상 디스플레이 환경을 설정하도록 지원하고 있기 때문에 간단한 코드 삽입 만으로 사용할 수 있습니다.

이 방식은 matplotlib의 figure plot을 활용하는 방식입니다.

그냥 plot을 사용하게 되면 매 step 마다 plot이 생성되어 끝없는 plot이 생성되는 것을 볼 수 있습니다.

import gym
from IPython import display # IPython 라이브러리에 있는 display 모듈을 사용합니다.
import matplotlib.pyplot as plt # plot을 활용.

env = gym.make('HalfCheetah-v3') # gym의 HalfCheetah 환경을 사용합니다.
observation = env.reset() # env.reset()을 통해 새로운 에피소드를 불러옵니다.

for _ in range(50):
    screen = env.render(mode='rgb_array') # 현재 환경을 'rgb_array'로 출력하여 screen 변수로 저장합니다.
    display.clear_output(wait=True) # display에 이미지를 지워줍니다. display하기 전에 하는 이유는 초기화하는 것으로 생각하면 됩니다.
    display.display(plt.gcf()) # 현재 figure의 정보를 display에 출력합니다.
    plt.imshow(screen) # screen 배열을 이미지로 출력합니다.
    env.step(env.action_space.sample()) # sample action을 통해 다음 step으로 진행합니다.
plt.close() # 종료 후 plot을 닫습니다.
env.close() # 종료 후 env를 닫습니다.

위의 코드를 jupyter에 구현한 결과는 다음과 같습니다.

'Machine Learning > Reinforcement Learning' 카테고리의 다른 글

MuJoCo 2.1.5 설치  (0) 2022.04.20
[RL] OpenAI Baselines 설치하기  (0) 2022.04.13
MuJoCo와 mujoco-py 설치  (0) 2022.04.13
Comments