警告:不再維護此存儲庫,請使用RL-BASELINE3動物園進行最新版本,由穩定的Baselines提供支持

使用穩定的基線的訓練有素的增強型學習(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
例如(帶有張板支持):
python train.py --algo ppo2 --env CartPole-v1 --tensorboard-log /tmp/stable-baselines/
使用10集評估每10000個步驟每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來優化超參數。
注意:目前尚未針對ACER和DQN實施超參數搜索。使用RescontiveHalvingPruner(“減半”)時,您必須指定--n-jobs > 1
1000次試驗的預算最多50000步:
python train.py --algo ppo2 --env MountainCar-v0 -n 50000 -optimize --n-trials 1000 --n-jobs 2
--sampler tpe --pruner median
您可以在Adryparameter配置中指定一個或多個包裝器,以圍繞環境使用:
對於一個包裝器:
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即可。
7個來自OpenAI基準的Atari遊戲(Noframeskip-V4版本)。
| RL算法 | Beamrider | 突破 | Enduro | 乒乓球 | Qbert | Seaquest | SpaceInvaders |
|---|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 宏cer | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| acktr | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DQN | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| trpo |
其他Atari遊戲(要完成):
| RL算法 | MSPACMAN |
|---|---|
| A2C | ✔️ |
| 宏cer | ✔️ |
| acktr | ✔️ |
| PPO2 | ✔️ |
| DQN | ✔️ |
| RL算法 | Cartpole-V1 | MountainCar-V0 | Acrobot-V1 | 擺-V0 | 山脈連續-V0 |
|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 宏cer | ✔️ | ✔️ | ✔️ | 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算法 | BipedalWalker-V2 | Lunarlander-V2 | lunarlanderconcontinuun-v2 | BIPEDALWALKERHARDCORE-V2 | 卡拉奇-V0 |
|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | |
| 宏cer | 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/master/examples/pybullet/gym/pybullet_envs。與Mujoco Envs類似,但帶有免費的模擬器:Pybullet。我們正在使用BulletEnv-v0版本。
注意:這些環境來自Roboschool,比Mujoco版本要難得多(請參閱Pybullet Issue)
| RL算法 | Walker2d | Halfcheetah | 螞蟻 | 接觸者 | 料斗 | 人形生物 |
|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ||
| acktr | ✔️ | |||||
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DDPG | ✔️ | ✔️ | ✔️ | |||
| 囊 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TD3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| trpo | ✔️ | ✔️ | ✔️ | ✔️ |
Pybullet Envs(續)
| RL算法 | 迷你龍 | 微型龍 | 反向傾斜 | 倒數 |
|---|---|---|---|---|
| A2C | ||||
| acktr | ||||
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ |
| DDPG | ||||
| 囊 | ✔️ | ✔️ | ||
| TD3 | ✔️ | ✔️ | ||
| trpo |
請參閱https://github.com/maximecb/gym-minigrid,簡單,輕巧且快速的健身環境實現了著名的網格世界。
| RL算法 | 空的 | 四個房間 | 門鑰匙 | 多室 | 拿來 |
|---|---|---|---|---|---|
| A2C | |||||
| PPO2 | ✔️ | ✔️ | |||
| DDPG | |||||
| 囊 | |||||
| trpo |
總共有19個環境組(每個變化)。
請注意,您需要指定 - gym-packages gym_minigrid with.py.py and train.py,因為它不是標準的健身房環境,並且安裝了自定義健身套餐模塊或將其放在Python路徑中。
pip install gym-minigrid
python train.py --algo ppo2 --env MiniGrid-DoorKey-5x5-v0 --gym-packages gym_minigrid
這與:
import gym_minigrid另外,您可能需要在超參數中指定健身房環境包裝,因為Minigrid環境具有dict觀測空間,目前穩定的baselines尚不支持。
MiniGrid-DoorKey-5x5-v0:
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
您可以使用COLAB筆記本在線培訓代理商。
最小版本:穩定的冰淇淋[MPI]> = 2.10.0
apt-get install swig cmake libopenmpi-dev zlib1g-dev ffmpeg
pip install -r requirements.txt
有關替代方案,請參見穩定的基線讀數。
構建Docker Image(CPU):
./scripts/build_docker.sh
GPU:
USE_GPU=True ./scripts/build_docker.sh
拉動的Docker Image(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