警告:不再维护此存储库,请使用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