경고 :이 저장소는 더 이상 유지 관리되지 않습니다. RL-Baselines3 Zoo를 사용하여 최신 버전에 사용하십시오.

안정적인 기준선을 사용하여 조정 된 하이퍼 파라미터를 갖춘 훈련 된 강화 학습 (RL) 에이전트 모음.
우리는 컬렉션을 완성하기위한 기고자를 찾고 있습니다!
이 저장소의 목표 :
훈련 된 대리인이 존재하면 다음을 사용하여 작동하는 것을 볼 수 있습니다.
python enjoy.py --algo algo_name --env env_id
예를 들어, 5000 타임 스텝 중에 브레이크 아웃시 A2C를 즐기십시오.
python enjoy.py --algo a2c --env BreakoutNoFrameskip-v4 --folder trained_agents/ -n 5000
에이전트를 직접 훈련시킨 경우 다음을 수행해야합니다.
# exp-id 0 corresponds to the last experiment, otherwise, you can specify another ID
python enjoy.py --algo algo_name --env env_id -f logs/ --exp-id 0
최상의 모델을로드하려면 (평가 환경을 사용할 때) :
python enjoy.py --algo algo_name --env env_id -f logs/ --exp-id 1 --load-best
각 환경에 대한 하이퍼 파라미터는 hyperparameters/algo_name.yml 로 정의됩니다.
이 파일에 환경이 존재하는 경우 다음을 사용하여 에이전트를 훈련시킬 수 있습니다.
python train.py --algo algo_name --env env_id
예를 들어 (Tensorboard 지원) :
python train.py --algo ppo2 --env CartPole-v1 --tensorboard-log /tmp/stable-baselines/
평가를 위해 10 개의 에피소드를 사용하여 10000 단계마다 에이전트를 평가하십시오.
python train.py --algo sac --env HalfCheetahBulletEnv-v0 --eval-freq 10000 --eval-episodes 10
100000 단계마다 에이전트의 검문소를 저장하십시오.
python train.py --algo td3 --env HalfCheetahBulletEnv-v0 --save-freq 100000
계속 훈련 (여기서는 사전 상환 에이전트를로드하고 5000 단계를위한 교육을 계속하십시오) :
python train.py --algo a2c --env BreakoutNoFrameskip-v4 -i trained_agents/a2c/BreakoutNoFrameskip-v4.pkl -n 5000
참고 : TRPO를 훈련시킬 때는 mpirun 사용하여 멀티 프로세싱을 활성화해야합니다.
mpirun -n 16 python train.py --algo trpo --env BreakoutNoFrameskip-v4
우리는 초 파라미터를 최적화하기 위해 Optuna를 사용합니다.
참고 : Hyperparameters 검색은 현재 Acer 및 DQN에 대해 구현되지 않았습니다. confortiveHalvingPruner ( "Howving")를 사용하는 경우 --n-jobs > 1 지정해야합니다.
최대 50000 단계로 1000 개의 시험 예산 :
python train.py --algo ppo2 --env MountainCar-v0 -n 50000 -optimize --n-trials 1000 --n-jobs 2
--sampler tpe --pruner median
하이퍼 파라미터 구성에 하나 이상의 래퍼를 지정할 수 있습니다. 환경 주변에서 사용할 수 있습니다.
하나의 래퍼의 경우 :
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
다중의 경우 목록을 지정하십시오.
env_wrapper:
- utils.wrappers.DoneOnSuccessWrapper:
reward_offset: 1.0
- utils.wrappers.TimeFeatureWrapper
매개 변수도 쉽게 지정할 수 있습니다.
--env-kwargs 사용하여 명령 줄의 ENV 생성자로 전달할 키워드 인수를 지정할 수 있습니다.
python enjoy.py --algo ppo2 --env MountainCar-v0 --env-kwargs goal_velocity:10
--hyperparams 사용하여 명령 줄에서 하이퍼 파라미터를 쉽게 덮어 쓸 수 있습니다.
python train.py --algo a2c --env MountainCarContinuous-v0 --hyperparams learning_rate:0.001 policy_kwargs:"dict(net_arch=[64, 64])"
1000 단계 기록 :
python -m utils.record_video --algo ppo2 --env BipedalWalkerHardcore-v2 -n 1000
점수는 benchmark.md 에서 찾을 수 있습니다. 그것들을 계산하려면 python -m utils.benchmark 실행하십시오.
OpenAI Benchmark (Noframeskip-V4 버전)의 Atari 게임.
| RL Algo | Beamrider | 브레이크 아웃 | 엔듀로 | Pong | Qbert | Seaquest | SpaceInvaders |
|---|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 에이커 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| acktr | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DQN | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TRPO |
추가 ATARI 게임 (완료) :
| RL Algo | mspacman |
|---|---|
| A2C | ✔️ |
| 에이커 | ✔️ |
| acktr | ✔️ |
| PPO2 | ✔️ |
| DQN | ✔️ |
| RL Algo | CARTPOLE-V1 | MountainCar-V0 | Acrobot-V1 | 진자 V0 | MountainCarcontinuous-V0 |
|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 에이커 | ✔️ | ✔️ | ✔️ | N/A | N/A |
| acktr | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 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 | ✔️ | ✔️ |
| TRPO | ✔️ | ✔️ | ✔️ | ✔️ |
| RL Algo | Bipedalwalker-V2 | LUNARLANDER-V2 | LUNARLANDERCONTINUUS-V2 | Bipedalwalkerhardcore-V2 | 캐러싱 -V0 |
|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | |
| 에이커 | N/A | ✔️ | N/A | N/A | N/A |
| acktr | ✔️ | ✔️ | ✔️ | ✔️ | |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | |
| DQN | N/A | ✔️ | N/A | N/A | N/A |
| DDPG | ✔️ | N/A | ✔️ | ||
| 낭 | ✔️ | N/A | ✔️ | ✔️ | |
| TD3 | ✔️ | N/A | ✔️ | ||
| TRPO | ✔️ | ✔️ | ✔️ |
https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/gym/pybullet_envs를 참조하십시오. Mujoco Envs와 유사하지만 무료 시뮬레이터 : Pybullet. BulletEnv-v0 버전을 사용하고 있습니다.
참고 : 이러한 환경은 Roboschool에서 파생되었으며 Mujoco 버전보다 훨씬 어렵습니다 (Pybullet Issue 참조).
| RL Algo | Walker2d | 하프 체타 | 개미 | 도달자 | 홉 따는 기계 | 휴머노이드 |
|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ||
| acktr | ✔️ | |||||
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DDPG | ✔️ | ✔️ | ✔️ | |||
| 낭 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TD3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| TRPO | ✔️ | ✔️ | ✔️ | ✔️ |
Pybullet Envs (계속)
| RL Algo | 미니타 우 | Minitaurduck | 뒤집어 놓았다 | 반전 된 pendulumswingup |
|---|---|---|---|---|
| A2C | ||||
| acktr | ||||
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ |
| DDPG | ||||
| 낭 | ✔️ | ✔️ | ||
| TD3 | ✔️ | ✔️ | ||
| TRPO |
https://github.com/maximecb/gym-minigrid 유명한 그리드 월드의 간단하고 가볍고 빠른 체육관 환경 구현을 참조하십시오.
| RL Algo | 비어 있는 | 사포 방 | 도어키 | 멀티 룸 | 술책 |
|---|---|---|---|---|---|
| A2C | |||||
| PPO2 | ✔️ | ✔️ | |||
| DDPG | |||||
| 낭 | |||||
| TRPO |
총 19 개의 환경 그룹 (각각의 변형)이 있습니다.
표준 체육관 환경이 아니기 때문에 gym-packages gym_minigrid를 지정해야합니다.
pip install gym-minigrid
python train.py --algo ppo2 --env MiniGrid-DoorKey-5x5-v0 --gym-packages gym_minigrid
이것은 다음과 같은 일입니다.
import gym_minigrid또한, 미니 그 리드 환경에는 Dict Observation Space가 있으므로 현재 안정적인 바이즈 라인에 의해 지원되지 않으므로 하이퍼 파라미터로 체육관 환경 래퍼를 지정해야 할 수도 있습니다.
MiniGrid-DoorKey-5x5-v0:
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
Colab 노트북을 사용하여 온라인 에이전트를 훈련시킬 수 있습니다.
MIN 버전 : 안정적인 바이어 린 [MPI]> = 2.10.0
apt-get install swig cmake libopenmpi-dev zlib1g-dev ffmpeg
pip install -r requirements.txt
대안은 안정적인 기준 판독 readme을 참조하십시오.
도커 이미지 (CPU) 빌드 :
./scripts/build_docker.sh
GPU :
USE_GPU=True ./scripts/build_docker.sh
빌드 된 도커 이미지 (CPU)를 당기십시오 :
docker pull stablebaselines/rl-baselines-zoo-cpu
GPU 이미지 :
docker pull stablebaselines/rl-baselines-zoo
Docker 이미지에서 스크립트 실행 :
./scripts/run_docker_cpu.sh python train.py --algo ppo2 --env CartPole-v1
테스트를 실행하려면 먼저 Pytest를 설치하십시오.
python -m pytest -v tests/
출판물 에서이 저장소를 인용하려면 :
@misc { rl-zoo ,
author = { Raffin, Antonin } ,
title = { RL Baselines Zoo } ,
year = { 2018 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/araffin/rl-baselines-zoo} } ,
}RL 동물원에없는 에이전트를 훈련 한 경우 풀 요청 (초 파리 미터 및 점수도 포함)을 제출하십시오.
우리는 기고자들에게 감사의 말씀을 전합니다 : @iandanforth, @tatsubori @shade5