WARNUNG: Dieses Repository wird nicht mehr gewartet. Bitte verwenden Sie den RL-Baselines3-Zoo für eine aktuelle Version, die von Stable-Baselines3 betrieben wird

Eine Sammlung von RL -Agenten (ausgebildete Verstärkung Learning) mit abgestimmten Hyperparametern unter Verwendung stabiler Basislinien.
Wir suchen nach Mitwirkenden , um die Sammlung zu vervollständigen!
Ziele dieses Repositorys:
Wenn der ausgebildete Agent existiert, können Sie es in Aktion mit:
python enjoy.py --algo algo_name --env env_id
Genießen Sie beispielsweise A2C auf Breakout während 5000 Timesteps:
python enjoy.py --algo a2c --env BreakoutNoFrameskip-v4 --folder trained_agents/ -n 5000
Wenn Sie einen Agenten selbst geschult haben, müssen Sie:
# 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
So laden Sie das beste Modell (bei Verwendung der Bewertungsumgebung):
python enjoy.py --algo algo_name --env env_id -f logs/ --exp-id 1 --load-best
Die Hyperparameter für jede Umgebung sind in hyperparameters/algo_name.yml definiert.
Wenn die Umgebung in dieser Datei vorhanden ist, können Sie einen Agenten verwenden, indem Sie:
python train.py --algo algo_name --env env_id
Zum Beispiel (mit Tensorboard -Unterstützung):
python train.py --algo ppo2 --env CartPole-v1 --tensorboard-log /tmp/stable-baselines/
Bewerten Sie den Agenten alle 10000 Schritte mit 10 Episoden zur Bewertung:
python train.py --algo sac --env HalfCheetahBulletEnv-v0 --eval-freq 10000 --eval-episodes 10
Speichern Sie alle 100000 Schritte einen Kontrollpunkt des Agenten:
python train.py --algo td3 --env HalfCheetahBulletEnv-v0 --save-freq 100000
Setzen Sie das Training fort (laden Sie hier ein vorbereiteter Agent für Breakout und fahren Sie für 5000 Schritte fort):
python train.py --algo a2c --env BreakoutNoFrameskip-v4 -i trained_agents/a2c/BreakoutNoFrameskip-v4.pkl -n 5000
Hinweis: Beim Training von TRPO müssen Sie mpirun verwenden, um eine Multiprozessierung zu ermöglichen:
mpirun -n 16 python train.py --algo trpo --env BreakoutNoFrameskip-v4
Wir verwenden Optuna, um die Hyperparameter zu optimieren.
Hinweis: Die Hyperparametersuche wird vorerst nicht für ACER und DQN implementiert. Bei Verwendung von SuctoptiveauerPruner ("halbieren") müssen Sie --n-jobs > 1 angeben
Budget von 1000 Versuchen mit maximal 50000 Schritten:
python train.py --algo ppo2 --env MountainCar-v0 -n 50000 -optimize --n-trials 1000 --n-jobs 2
--sampler tpe --pruner median
Sie können in der Hyperparameter -Konfiguration einen oder mehrere Wrapper angeben, die in der Umgebung verwendet werden sollen:
für eine Wrapper:
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
Geben Sie für mehrere eine Liste an:
env_wrapper:
- utils.wrappers.DoneOnSuccessWrapper:
reward_offset: 1.0
- utils.wrappers.TimeFeatureWrapper
Beachten Sie, dass Sie auch die Parameter auch einfach angeben können.
Sie können Keyword-Argumente angeben, um an den Env-Konstruktor in der Befehlszeile weiterzugeben, indem Sie --env-kwargs :
python enjoy.py --algo ppo2 --env MountainCar-v0 --env-kwargs goal_velocity:10
Sie können Hyperparameter in der Befehlszeile leicht überschreiben, indem Sie --hyperparams :
python train.py --algo a2c --env MountainCarContinuous-v0 --hyperparams learning_rate:0.001 policy_kwargs:"dict(net_arch=[64, 64])"
1000 Schritte aufzeichnen:
python -m utils.record_video --algo ppo2 --env BipedalWalkerHardcore-v2 -n 1000
Bewertungen finden Sie in benchmark.md . Um sie zu berechnen, führen Sie einfach python -m utils.benchmark aus.
7 Atari-Spiele von OpenAI Benchmark (Noframeskip-V4-Version).
| Rl Algo | Beamrider | Ausbruch | Enduro | Pong | Qbert | Seefahrer | SpaceInvaders |
|---|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Acer | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Acktr | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DQN | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Trpo |
Zusätzliche Atari -Spiele (abgeschlossen werden):
| Rl Algo | Mspacman |
|---|---|
| A2C | ✔️ |
| Acer | ✔️ |
| Acktr | ✔️ |
| PPO2 | ✔️ |
| DQN | ✔️ |
| Rl Algo | Cartpole-V1 | Mountaincar-V0 | Acrobot-V1 | Pendel-V0 | Mountaincarcontinuous-V0 |
|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Acer | ✔️ | ✔️ | ✔️ | N / A | N / A |
| Acktr | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DQN | ✔️ | ✔️ | ✔️ | N / A | N / A |
| DDPG | N / A | N / A | N / A | ✔️ | ✔️ |
| SACK | N / A | N / A | N / A | ✔️ | ✔️ |
| Td3 | N / A | N / A | N / A | ✔️ | ✔️ |
| Trpo | ✔️ | ✔️ | ✔️ | ✔️ |
| Rl Algo | Bipedalwalker-V2 | Mondländer-V2 | Lunarlandercontinuous-V2 | Bipedalwalkerhardcore-v2 | TRADING-V0 |
|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | |
| Acer | N / A | ✔️ | N / A | N / A | N / A |
| Acktr | ✔️ | ✔️ | ✔️ | ✔️ | |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | |
| DQN | N / A | ✔️ | N / A | N / A | N / A |
| DDPG | ✔️ | N / A | ✔️ | ||
| SACK | ✔️ | N / A | ✔️ | ✔️ | |
| Td3 | ✔️ | N / A | ✔️ | ||
| Trpo | ✔️ | ✔️ | ✔️ |
Siehe https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/gym/pybullet_envs. Ähnlich wie Mujoco Envs, aber mit einem freien Simulator: Pybullet. Wir verwenden BulletEnv-v0 Version.
Hinweis: Diese Umgebungen stammen von RoboSchool und sind viel schwieriger als die Mujoco -Version (siehe Pybullet -Problem)
| Rl Algo | Walker2d | Halbscheet | Ameise | Reacher | Trichter | Humanoid |
|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ||
| Acktr | ✔️ | |||||
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| DDPG | ✔️ | ✔️ | ✔️ | |||
| SACK | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Td3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Trpo | ✔️ | ✔️ | ✔️ | ✔️ |
Pybullet Envs (Fortsetzung)
| Rl Algo | Minitaur | Minitaurduck | InvertedDoublePendulum | InvertedPendulumswingup |
|---|---|---|---|---|
| A2C | ||||
| Acktr | ||||
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ |
| DDPG | ||||
| SACK | ✔️ | ✔️ | ||
| Td3 | ✔️ | ✔️ | ||
| Trpo |
Siehe https://github.com/maximecb/gym-minigrid Eine einfache, leichte und schnelle Umgebungsumgebungen der berühmten Gridworld.
| Rl Algo | Leer | Vier Räume | Tür | Multiroom | Bringen |
|---|---|---|---|---|---|
| A2C | |||||
| PPO2 | ✔️ | ✔️ | |||
| DDPG | |||||
| SACK | |||||
| Trpo |
Insgesamt gibt es 19 Umgebungsgruppen (jeweils Variationen).
Beachten Sie, dass Sie angeben müssen-GYM-Packages Gym_Minigrid mit genießen.py und Train.py Da es sich nicht um eine Standard-Fitnessumgebung handelt, um das benutzerdefinierte Fitness-Paketmodul zu installieren oder es in Python-Pfad zu setzen.
pip install gym-minigrid
python train.py --algo ppo2 --env MiniGrid-DoorKey-5x5-v0 --gym-packages gym_minigrid
Das tut das Gleiche wie:
import gym_minigridMöglicherweise müssen Sie möglicherweise eine Umgebung im Fitnessstudio in Hyperparametern angeben, da minigide Umgebungen einen dikten Beobachtungsraum haben, der vorerst nicht von StableBaselines unterstützt wird.
MiniGrid-DoorKey-5x5-v0:
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
Sie können Agenten online mit Colab Notebook schulen.
Min-Version: Stabile-Baselines [MPI]> = 2.10.0
apt-get install swig cmake libopenmpi-dev zlib1g-dev ffmpeg
pip install -r requirements.txt
Bitte beachten Sie die stabilen Baselines Readme für Alternativen.
Bauen Sie das Docker -Bild (CPU):
./scripts/build_docker.sh
GPU:
USE_GPU=True ./scripts/build_docker.sh
Pull Building Docker Image (CPU):
docker pull stablebaselines/rl-baselines-zoo-cpu
GPU -Bild:
docker pull stablebaselines/rl-baselines-zoo
Führen Sie das Skript im Docker -Bild aus:
./scripts/run_docker_cpu.sh python train.py --algo ppo2 --env CartPole-v1
Um Tests auszuführen, installieren Sie zuerst PyTest und dann: dann:
python -m pytest -v tests/
Um dieses Repository in Veröffentlichungen zu zitieren:
@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} } ,
}Wenn Sie einen Agenten geschult haben, der im RL -Zoo nicht vorhanden ist, senden Sie bitte eine Pull -Anfrage (mit den Hyperparametern und der Punktzahl).
Wir möchten unseren Mitwirkenden danken: @ianganforth, @tatsubori @Shade5