본문 바로가기
카테고리 없음

[강화학습] 윈도우에서 WSL로 OpenAI Gym 돌리기

by 붕붕=33 2024. 5. 12.
728x90

강화학습을 위한 환경 구축을 위해 Open AI Gym 라이브러리를 실습해보기 위해서는 당연히 설치 및 세팅이 필요하다. 가난한 한국인 학생에게는 Windows 11이 깔린 노트북 밖에 없다. 윈도우에 WSL을 설치하여 리눅스 환경에서 OpenAI Gym (이하 Gym)을 설치하고 스크린으로 강화학습 테스트를 모니터링하는 것까지에 대해 기록한다.

 

계정만 만들면 무료로 사용이 가능한 챗지피티 3.5 버전에게 윈도우에 WSL로 Gym을 돌릴 수 있는지 물어보았다. 답변은 아래와 같다:

  1. Install Windows Subsystem for Linux (WSL) - 윈도우에서 리눅스를 서브시스템으로 사용하기 위해 WSL 설치
  2. Update and Upgrade - 업데이트 및 업그레이드
  3. Install Required Dependencies - 의존성 패키지 설치
  4. Install Gym - Gym 설치
  5. Install Additional Dependencies (optional) - 추가적인 의존성 패키지 설치 (선택)
  6. Running Gym Environments - 강화학습을 위한 Gym 환경 생성 및 실행

위 답변이 정확한지 직접 시도해보자.

 

 


 

1. 윈도우에서 리눅스를 서브시스템으로 사용하기 위해 WSL 설치

윈도우에서 리눅스를 사용하기 위해 WSL을 설치한다. 설치 방법은 아래 포스팅에서 이미 시도되었다:

 

Windows WSL 및 Anaconda 3 설치

Microsoft에서 제공하는 공식 문서를 참조하여 Windows에 WSL2 설치 후 우분투에 Anaconda 3 설치를 진행한다. WSL 설치 wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE

ricespoon.tistory.com

 

위 글에서는 Windows 11에 WSL 2를 설치하고 Anaconda 3까지 설치하는 과정을 담고 있다. 위의 챗지피티 답변에는 없지만, 아래의 단계에서는 Anaconda 가상환경에서 Gym 라이브러리 설치를 진행할 것이기 때문에 Anaconda 설치까지 진행하는 것을 추천한다.

 

2. 업데이트 및 업그레이드

여기서는 실행하지 않았지만, 패키지 리스트를 업데이트하고 설치된 패키지를 업그레이드하려면 다음 명령어를 터미널에 입력하여 실행한다:

sudo apt update
sudo apt upgrade

 

3. 의존성 패키지 설치

Gym을 사용하기 위해 필요한 몇 가지 의존성 패키지들이 있다. 아래의 명령어를 실행하여 해당 패키지들을 설치한다:

sudo apt install python3-dev python3-pip python3-tk

 

4. Anaconda 환경 생성 및 Gym 설치

WSL 설치단계에서도 언급했듯이 챗지피티의 답변에는 없지만 Anaconda 가상환경에서 Gym을 설치하는 것이 더 낫다고 판단하여, Anaconda 환경을 먼저 새로 생성 및 활성화해주었다:

conda create -n rl-gym
conda activate rl-gym

 

그리고 해당 가상환경에 Gym 라이브러리를 설치한다:

pip install gym
pip install gym[atari]
pip install autorom[accept-rom-license]

 

5. 추가적인 의존성 패키지 설치 (선택)

Atari 등의 환경을 사용하기 위한 의존 패키지들이 필요할 수 있다. 아래의 파이썬 스크립트에 사용될 예시환경 또한 Atari 게임의 일환이므로 다음 명령어를 실행하여 추가적인 의존 패키지들을 설치하도록 한다:

sudo apt-get install cmake zlib1g-dev xorg-dev libgtk2.0-0 python3-matplotlib swig python3-opengl xvfb

 

6. 강화학습을 위한 Gym 환경 생성 및 실행

설치가 잘 되었는지 확인하기 위하여 Gym 라이브러리를 import 하거나 interactive session을 생성해볼 수 있다. 참고로 챗지피티 3.5는 2022년 1월까지의 정보만 포함하기 때문에 약간의 수정사항이 필요하다. 다음과 같이 'MsPacman-v4' 환경에서 랜덤 액션을 취하는 파이썬 스크립트를 작성해보자:

import time
import gym

env = gym.make('MsPacman-v4', render_mode='human')

num_episodes = 20
for i in range(num_episodes):
    observation, _ = env.reset()  # env.reset() returns 'observation'(or 'state') and 'info'
    sum_rewards = 0

    for _ in range(1000):
        env.render()

        # take a random action
        action = env.action_space.sample()  # take a random action
        observation, reward, termination, truncation, info = env.step(action)

        time.sleep(0.1)
        sum_rewards += reward

    print('Episode', i,', Total reward:', sum_rewards)

env.close()

 

위 코드를 실행하여 모니터링 하기 위해서는 GUI 사용이 요구된다. WSL 2에서 그래픽 결과를 확인하기 위해 터미널에 다음 환경변수를 설정한다:

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6

 

이제 터미널에서 작성한 파이썬 스크립트를 실행하면 아래 그림과 같은 팩맨 게임이 실행되고 있는 것을 볼 수 있다. (처음 시작까지 다소 시간이 걸릴 수 있다.)

 

 

* References

728x90

댓글