이 글은 Deep RL Course를 학습하고 정리한 글입니다.
Deep Q-Learning과 Atari 게임 👾
이번 실습에서는 RL Baselines3 Zoo라는 훈련 프레임워크를 사용하여 Space Invaders를 플레이하는 Deep Q-Learning 에이전트를 훈련합니다. RL Baselines3 Zoo는 Stable-Baselines3를 기반으로 하며, 에이전트 훈련, 평가, 하이퍼파라미터 튜닝, 결과 시각화, 비디오 녹화 등의 스크립트를 제공합니다. 이번 실습에서는 기본 Deep Q-Learning을 사용합니다.
🎮 사용 환경
- SpacesInvaderNoFrameSkip-v4
📚 RL 라이브러리
- RL-Baselines3-Zoo
실습 목표 🏆
- RL Baselines3 Zoo의 작동 원리를 이해할 수 있습니다.
- 훈련된 에이전트와 코드를 Hugging Face Hub에 업로드하고 비디오 리플레이와 평가 점수를 확인할 수 있습니다.
GPU 설정 💪
에이전트의 훈련 속도를 가속화하기 위해 GPU를 사용합니다. 아래의 단계를 따라 Google Colab에서 GPU를 활성화하세요.
1️⃣ 런타임 설정 변경
1. 상단 메뉴에서 Runtime(런타임)을 클릭하세요.
2. Change runtime type(런타임 유형 변경)을 선택하세요.
2️⃣ 하드웨어 가속기 설정
1. Hardware Accelerator(하드웨어 가속기) 옵션에서 GPU를 선택하세요.
2. Save(저장) 버튼을 클릭하여 설정을 적용하세요.
RL-Baselines3 Zoo 및 의존성 설치 📚
아래 명령어로 RL-Baselines3 Zoo를 설치합니다. 버전 충돌 경고는 무시해도 됩니다.
pip install git+https://github.com/DLR-RM/rl-baselines3-zoo
apt-get install swig cmake ffmpeg
Atari 게임을 사용하려면 Gymnasium의 Atari 패키지를 설치하고 ROM 파일 다운로드 라이센스를 승인해야 합니다.
pip install gymnasium[atari]
pip install gymnasium[accept-rom-license]
가상 디스플레이 생성 🔽
비디오 리플레이를 생성하려면, 가상 디스플레이가 필요합니다. 아래 명령어를 실행해 환경을 설정합니다.
apt install python-opengl
apt install ffmpeg
apt install xvfb
pip3 install pyvirtualdisplay
from pyvirtualdisplay import Display
virtual_display = Display(visible=0, size=(1400, 900))
virtual_display.start()
Deep Q-Learning 에이전트 훈련 👾
1️⃣ 하이퍼파라미터 구성 파일 생성
하이퍼파라미터는 dqn.yml
파일에 정의됩니다.
SpaceInvadersNoFrameskip-v4:
env_wrapper:
- stable_baselines3.common.monitor.Monitor
- stable_baselines3.common.atari_wrappers.AtariWrapper
frame_stack: 4
policy: 'CnnPolicy'
n_timesteps: !!float 1e7
buffer_size: 100000
learning_rate: !!float 1e-4
batch_size: 32
learning_starts: 100000
target_update_interval: 1000
train_freq: 4
gradient_steps: 1
exploration_fraction: 0.1
exploration_final_eps: 0.01
optimize_memory_usage: False
💡Tip: 훈련 시간 단축
- 훈련 스텝 수: 1 million 스텝으로 줄이세요 (약 90분 소요, P100 GPU 기준)
- GPU 확인:
!nvidia-smi
를 사용해 사용할 GPU 모델을 확인합니다 - 10 million 스텝에서는 약 9시간이 소요되므로, 로컬 컴퓨터 또는 고성능 머신에서 실행을 권장합니다
2️⃣ 훈련 실행
아래 명령어를 사용해 모델을 훈련합니다.
python -m rl_zoo3.train --algo dqn --env SpaceInvadersNoFrameskip-v4 -f logs/ -c dqn.yml
에이전트 평가 👀
훈련된 에이전트를 평가하려면 아래 명령어를 실행합니다.
python -m rl_zoo3.enjoy --algo dqn --env SpaceInvadersNoFrameskip-v4 --no-render --n-timesteps 5000 --folder logs/
Hugging Face Hub에 모델 업로드 🚀
1️⃣ Hugging Face 계정 생성 및 토큰 발급
- Hugging Face 계정을 생성하세요.
- 설정 페이지에서 쓰기 권한(write role)이 있는 토큰을 생성하고 복사하세요.
2️⃣ 로그인
아래의 코드를 실행하고 복사한 토큰을 입력하세요.
notebook_login()
!git config --global credential.helper store
3️⃣ 모델 업로드
아래 명령어로 모델을 Hub에 업로드 합니다.
python -m rl_zoo3.push_to_hub --algo dqn --env SpaceInvadersNoFrameskip-v4 --repo-name dqn-SpaceInvadersNoFrameskip-v4 -orga YOUR_USERNAME -f logs/
Your model is pushed to the hub. You can view your model here:
https://huggingface.co/RangDev/dqn-SpaceInvadersNoFrameskip-v4
'강화학습' 카테고리의 다른 글
[Deep RL Course] 정책 기반 (Policy-based) 강화 학습 (1) | 2025.01.22 |
---|---|
[Deep RL Course] 하이퍼파라미터 최적화 - Optuna (0) | 2025.01.21 |
[Deep RL Course] Deep Q-Learning 알고리즘 (1) | 2025.01.16 |
[파이썬(Python)] Deep Q-Network (DQN) (0) | 2025.01.10 |
[Deep RL Course] Q-Learning에서 Deep Q-Learning으로 (0) | 2025.01.09 |