
RL Baselines3 Zoo는 안정적인 기준선을 사용하여 강화 학습 (RL)을위한 훈련 프레임 워크입니다.
교육, 에이전트 평가, 하이퍼 파라미터 조정, 결과 플롯 및 비디오 녹화를위한 스크립트를 제공합니다.
또한 공통 환경 및 RL 알고리즘을위한 튜닝 된 하이퍼 파라미터 모음과 해당 설정으로 훈련 된 에이전트가 포함되어 있습니다.
우리는 컬렉션을 완성하기위한 기고자를 찾고 있습니다!
이 저장소의 목표 :
원래 SB2 RL-Zoo의 SB3 버전입니다.
참고 : SB3 및 RL 동물원은 Numpy> = 2.0과 호환되지만 Pybullet Envs에서 에이전트를 실행하려면 Numpy <2가 필요합니다 (문제 참조).
문서화는 온라인으로 제공됩니다 : https://rl-baselines3-zoo.readthedocs.io/
출처 :
pip install -e .
파이썬 패키지 :
pip install rl_zoo3
참고 : 모든 폴더에서 python -m rl_zoo3.train 수행 할 수 있으며 rl_zoo3 명령 rl_zoo3 train 인터페이스에 액세스 할 수 있습니다 python train.py
apt-get install swig cmake ffmpeg
pip install -r requirements.txt
pip install -e .[plots,tests]
안정적인 기준선 3 문서를 참조하십시오.
각 환경에 대한 하이퍼 파라미터는 hyperparameters/algo_name.yml 로 정의됩니다.
이 파일에 환경이 존재하는 경우 다음을 사용하여 에이전트를 훈련시킬 수 있습니다.
python train.py --algo algo_name --env env_id
평가를 위해 10 개의 에피소드를 사용하여 10000 단계마다 에이전트를 평가하십시오 (하나의 평가 ENT 사용) :
python train.py --algo sac --env HalfCheetahBulletEnv-v0 --eval-freq 10000 --eval-episodes 10 --n-eval-envs 1
더 많은 예제가 문서에서 제공됩니다.
RL 동물원은 실험 추적을위한 웨이트 및 바이어스와 같은 다른 라이브러리/서비스와 통합 된 모델을 저장/공유하기위한 얼굴을 포옹합니다. 문서의 전용 섹션에서 자세한 내용을 확인할 수 있습니다.
문서의 전용 섹션을 참조하십시오.
참고 : 훈련 된 에이전트와 함께 레포를 다운로드하려면 서브 모드를 복제하려면 git clone --recursive https://github.com/DLR-RM/rl-baselines3-zoo 사용해야합니다 .
훈련 된 대리인이 존재하면 다음을 사용하여 작동하는 것을 볼 수 있습니다.
python enjoy.py --algo algo_name --env env_id
예를 들어, 5000 타임 스텝 중에 브레이크 아웃시 A2C를 즐기십시오.
python enjoy.py --algo a2c --env BreakoutNoFrameskip-v4 --folder rl-trained-agents/ -n 5000
문서의 전용 섹션을 참조하십시오.
문서의 전용 섹션을 참조하십시오.
훈련 된 에이전트의 최종 성능은 benchmark.md 에서 찾을 수 있습니다. 그것들을 계산하려면 python -m rl_zoo3.benchmark 실행하십시오.
훈련 된 에이전트의 목록 및 비디오는 Huggingface 페이지에서 찾을 수 있습니다 : https://huggingface.co/sb3
참고 : 이것은 하나의 실행에만 해당하기 때문에 정량적 벤치 마크가 아닙니다 (CF 문제 #38). 이 벤치 마크는 알고리즘 (최대) 성능을 확인하고 잠재적 인 버그를 찾고 사용자가 사전 상환 에이전트에 액세스 할 수 있도록하기위한 것입니다.
OpenAI Benchmark (Noframeskip-V4 버전)의 Atari 게임.
| RL Algo | Beamrider | 브레이크 아웃 | 엔듀로 | Pong | Qbert | Seaquest | SpaceInvaders |
|---|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DQN | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| QR-DQN | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
추가 ATARI 게임 (완료) :
| RL Algo | mspacman | 소행성 | Roadrunner |
|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ |
| PPO | ✔️ | ✔️ | ✔️ |
| DQN | ✔️ | ✔️ | ✔️ |
| QR-DQN | ✔️ | ✔️ | ✔️ |
| RL Algo | CARTPOLE-V1 | MountainCar-V0 | Acrobot-V1 | 진자 V1 | MountainCarcontinuous-V0 |
|---|---|---|---|---|---|
| ARS | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DQN | ✔️ | ✔️ | ✔️ | N/A | N/A |
| QR-DQN | ✔️ | ✔️ | ✔️ | N/A | N/A |
| DDPG | N/A | N/A | N/A | ✔️ | ✔️ |
| 낭 | N/A | N/A | N/A | ✔️ | ✔️ |
| TD3 | N/A | N/A | N/A | ✔️ | ✔️ |
| TQC | N/A | N/A | N/A | ✔️ | ✔️ |
| TRPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| RL Algo | Bipedalwalker-v3 | LUNARLANDER-V2 | LUNARLANDERCONTINUUS-V2 | Bipedalwalkerhardcore-v3 | 캐러싱 -V0 |
|---|---|---|---|---|---|
| ARS | ✔️ | ✔️ | |||
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | |
| DQN | N/A | ✔️ | N/A | N/A | N/A |
| QR-DQN | N/A | ✔️ | N/A | N/A | N/A |
| DDPG | ✔️ | N/A | ✔️ | ||
| 낭 | ✔️ | N/A | ✔️ | ✔️ | |
| TD3 | ✔️ | N/A | ✔️ | ✔️ | |
| TQC | ✔️ | N/A | ✔️ | ✔️ | |
| TRPO | ✔️ | ✔️ |
https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/gym/pybullet_envs를 참조하십시오. Mujoco Envs와 유사하지만 a 무료 (Mujoco 2.1.0+는 이제 무료입니다!) Simulator : Pybullet을 쉽게 설치할 수 있습니다. BulletEnv-v0 버전을 사용하고 있습니다.
참고 : 이러한 환경은 Roboschool에서 파생되었으며 Mujoco 버전보다 어렵습니다 (Pybullet Issue 참조).
| RL Algo | Walker2d | 하프 체타 | 개미 | 도달자 | 홉 따는 기계 | 휴머노이드 |
|---|---|---|---|---|---|---|
| ARS | ||||||
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| DDPG | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| 낭 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| TD3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| TQC | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| TRPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Pybullet Envs (계속)
| RL Algo | 미니타 우 | Minitaurduck | 뒤집어 놓았다 | 반전 된 pendulumswingup |
|---|---|---|---|---|
| A2C | ||||
| PPO | ||||
| DDPG | ||||
| 낭 | ||||
| TD3 | ||||
| TQC |
| RL Algo | Walker2d | 하프 체타 | 개미 | 수영 선수 | 홉 따는 기계 | 휴머노이드 |
|---|---|---|---|---|---|---|
| ARS | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| DDPG | ||||||
| 낭 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TD3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TQC | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TRPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
https://gym.openai.com/envs/#robotics 및 #71을 참조하십시오
Mujoco 버전 : 1.50.1.0 체육관 버전 : 0.18.0
우리는 V1 환경을 사용했습니다.
| RL Algo | Fetchreach | FetchPickandPlace | 페치 푸시 | 페치 슬라이드 |
|---|---|---|---|---|
| 그녀의+tqc | ✔️ | ✔️ | ✔️ | ✔️ |
https://github.com/qgallouedec/panda-gym/을 참조하십시오.
Mujoco Robotics Envs와 유사하지만 a 무료 설치하기 쉬운 시뮬레이터 : PyBullet.
우리는 V1 환경을 사용했습니다.
| RL Algo | Pandareach | pandapickandplace | Pandapush | 판다 슬라이드 | Pandastack |
|---|---|---|---|---|---|
| 그녀의+tqc | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
https://github.com/farama-foundation/minigrid를 참조하십시오. 유명한 그리드 월드의 단순하고 가볍고 빠른 체육관 환경 구현.
| RL Algo | 빈 랜덤 -5x5 | 사포 방 | 도어키 -5x5 | 멀티 룸 -N4-S5 | 페치 -5x5-n2 | GOTODOOR-5X5 | 퍼니 니어 -6x6-n2 | redbluedoors-6x6 | 잠금 실 | keycorridors3r1 | 터놓다 | 장애물 -2dlh |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A2C | ||||||||||||
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DQN | ||||||||||||
| QR-DQN | ||||||||||||
| TRPO |
총 22 개의 환경 그룹 (각각의 변형)이 있습니다.
Colab 노트북을 사용하여 온라인 에이전트를 훈련시킬 수 있습니다.
동물원은 대화식 세션 (예 : Jupyter Notebooks, Ipython)에서 실행 될 수는 없지만 sys.argv 수정하고 원하는 주장을 추가하여 수행 할 수 있습니다.
예
import sys
from rl_zoo3 . train import train
sys . argv = [ "python" , "--algo" , "ppo" , "--env" , "MountainCar-v0" ]
train ()테스트를 실행하려면 먼저 Pytest를 설치하십시오.
make pytest
pytype로 확인하는 유형 확인에 대해서도 동일합니다.
make type
출판물 에서이 저장소를 인용하려면 :
@misc { rl-zoo3 ,
author = { Raffin, Antonin } ,
title = { RL Baselines3 Zoo } ,
year = { 2020 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/DLR-RM/rl-baselines3-zoo} } ,
}RL 동물원에없는 에이전트를 훈련 한 경우 풀 요청 (초 파리 미터 및 점수도 포함)을 제출하십시오.
@iandanforth, @tatsubori @shade5 @mcres, @ernestum, @qgallouedec에 감사드립니다.