
RL BASELLINES3 ZOO es un marco de capacitación para el aprendizaje de refuerzo (RL), utilizando líneas de base estables3.
Proporciona scripts para capacitar, evaluar a los agentes, ajustar hiperparámetros, trazar resultados y grabar videos.
Además, incluye una colección de hiperparámetros sintonizados para entornos comunes y algoritmos RL, y agentes entrenados con esos ajustes.
¡Estamos buscando contribuyentes para completar la colección!
Objetivos de este repositorio:
Esta es la versión SB3 del SB2 RL-Zoo original.
Nota: Aunque SB3 y el zoológico RL son compatibles con Numpy> = 2.0, necesitará numpy <2 para ejecutar agentes en envs de pybullet (ver problema).
La documentación está disponible en línea: https://rl-baselines3-zoo.readthedocs.io/
De la fuente:
pip install -e .
Como paquete de pitón:
pip install rl_zoo3
Nota: puede hacer python -m rl_zoo3.train desde cualquier carpeta y tiene acceso a la interfaz de línea de comandos rl_zoo3 , por ejemplo, rl_zoo3 train es equivalente a python train.py
apt-get install swig cmake ffmpeg
pip install -r requirements.txt
pip install -e .[plots,tests]
Consulte la documentación estable de líneas de base3 para alternativas para instalar líneas de base estables3.
Los hiperparámetros para cada entorno se definen en hyperparameters/algo_name.yml .
Si el entorno existe en este archivo, entonces puede capacitar a un agente usando:
python train.py --algo algo_name --env env_id
Evalúe el agente cada 10000 pasos utilizando 10 episodios para la evaluación (usando solo una evaluación de evaluación):
python train.py --algo sac --env HalfCheetahBulletEnv-v0 --eval-freq 10000 --eval-episodes 10 --n-eval-envs 1
Hay más ejemplos disponibles en la documentación.
El zoológico RL tiene cierta integración con otras bibliotecas/servicios, como pesas y prejuicios para el seguimiento de los experimentos o abrazar la cara para almacenar/compartir modelos entrenados. Puede obtener más información en la sección dedicada de la documentación.
Consulte la sección dedicada de la documentación.
Nota: Para descargar el repositorio con los agentes capacitados, debe usar git clone --recursive https://github.com/DLR-RM/rl-baselines3-zoo para clonar el submódico también.
Si el agente entrenado existe, puede verlo en acción usando:
python enjoy.py --algo algo_name --env env_id
Por ejemplo, disfrute de A2C en Breakout durante 5000 times de tiempo:
python enjoy.py --algo a2c --env BreakoutNoFrameskip-v4 --folder rl-trained-agents/ -n 5000
Consulte la sección dedicada de la documentación.
Consulte la sección dedicada de la documentación.
El rendimiento final de los agentes entrenados se puede encontrar en benchmark.md . Para calcularlos, simplemente ejecute python -m rl_zoo3.benchmark .
Lista y videos de agentes capacitados se pueden encontrar en nuestra página de Huggingface: https://huggingface.co/sb3
Nota: Este no es un punto de referencia cuantitativo, ya que corresponde a una sola ejecución (CF Problema #38). Este punto de referencia está destinado a verificar el rendimiento del algoritmo (máximo), encontrar posibles errores y también permitir a los usuarios tener acceso a agentes previos a la aparición.
7 Juegos Atari de Operai Benchmark (versiones Noframeskip-V4).
| Rl algo | Beamrider | Fugarse | Enduro | Apestar | Qbert | Seaquest | SpaceInvaders |
|---|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Dqn | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| QR-DQN | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Juegos Atari adicionales (para completarse):
| Rl algo | Mspacman | Asteroides | Corredero |
|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ |
| PPO | ✔️ | ✔️ | ✔️ |
| Dqn | ✔️ | ✔️ | ✔️ |
| QR-DQN | ✔️ | ✔️ | ✔️ |
| Rl algo | Cartpole-V1 | Montaña-v0 | Acrobot-V1 | Péndulo-v1 | MountainCarcontinuous-V0 |
|---|---|---|---|---|---|
| Ars | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Dqn | ✔️ | ✔️ | ✔️ | N / A | N / A |
| QR-DQN | ✔️ | ✔️ | ✔️ | N / A | N / A |
| Ddpg | N / A | N / A | N / A | ✔️ | ✔️ |
| SACO | 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 | Lunarlandercontinuous-v2 | Bipedalwalkerhardcore-v3 | Carracing-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 | ✔️ | ||
| SACO | ✔️ | N / A | ✔️ | ✔️ | |
| TD3 | ✔️ | N / A | ✔️ | ✔️ | |
| TQC | ✔️ | N / A | ✔️ | ✔️ | |
| Trpo | ✔️ | ✔️ |
Consulte https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/gym/pybullet_envs. Similar a Mujoco Envs pero con un gratis (¡Mujoco 2.1.0+ ahora es gratis!) Fácil de instalar Simulador: Pybullet. Estamos utilizando la versión BulletEnv-v0 .
Nota: Esos entornos se derivan de Roboschool y son más difíciles que la versión de Mujoco (ver problema de Pybullet)
| Rl algo | Walker2d | Mediajeeta | Hormiga | Alcance | Tolva | Humanoide |
|---|---|---|---|---|---|---|
| Ars | ||||||
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Ddpg | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| SACO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| TD3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| TQC | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Trpo | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Envss de Pybullet (continuación)
| Rl algo | Minitaur | Minitaurduck | Péndulo invertido | Invertidopendulumswingup |
|---|---|---|---|---|
| A2C | ||||
| PPO | ||||
| Ddpg | ||||
| SACO | ||||
| TD3 | ||||
| TQC |
| Rl algo | Walker2d | Mediajeeta | Hormiga | Nadador | Tolva | Humanoide |
|---|---|---|---|---|---|---|
| Ars | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Ddpg | ||||||
| SACO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TD3 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TQC | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Trpo | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Ver https://gym.openai.com/envs/#robotics y #71
Versión de Mujoco: 1.50.1.0 Versión del gimnasio: 0.18.0
Usamos los entornos V1.
| Rl algo | Fetchreach | FetchPickandplace | Fetchpush | Deslizamiento |
|---|---|---|---|---|
| Su+TQC | ✔️ | ✔️ | ✔️ | ✔️ |
Ver https://github.com/qgallouedec/panda-gym/.
Similar a Mujoco Robotics Envs pero con un gratis Simulador fácil de instalar: Pybullet.
Usamos los entornos V1.
| Rl algo | Pandareach | Pandapickandplace | Pandapush | Pandaslide | Pandastack |
|---|---|---|---|---|---|
| Su+TQC | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Ver https://github.com/farama-foundation/minigrid. Una implementación de entornos de gimnasio simples, livianos y rápidos del famoso Gridworld.
| Rl algo | Vacío-aleatorio-5x5 | Cuatro habitaciones | DoorKey-5x5 | MultirOOM-N4-S5 | Fetch-5x5-N2 | Gotodoor-5x5 | Putnear-6x6-n2 | Redbluedoors-6x6 | Margen | KeyCorridors3r1 | Descubrir | Obstruido |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A2C | ||||||||||||
| PPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Dqn | ||||||||||||
| QR-DQN | ||||||||||||
| Trpo |
Hay 22 grupos ambientales (variaciones para cada uno) en total.
Puede entrenar a los agentes en línea usando el cuaderno de Colab.
El zoológico no está destinado a ser ejecutado a partir de una sesión interactiva (por ejemplo: cuadernos Jupyter, Ipython), sin embargo, se puede hacer modificando sys.argv y agregando los argumentos deseados.
Ejemplo
import sys
from rl_zoo3 . train import train
sys . argv = [ "python" , "--algo" , "ppo" , "--env" , "MountainCar-v0" ]
train ()Para ejecutar pruebas, primero instale pytest, luego:
make pytest
Lo mismo para verificar con pytype:
make type
Para citar este repositorio en publicaciones:
@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} } ,
}Si entrenó a un agente que no está presente en el zoológico RL, envíe una solicitud de extracción (que contiene los hiperparámetros y el puntaje también).
Nos gustaría agradecer a nuestros contribuyentes: @iandanforth, @tatsubori @shade5 @mcres, @ernestum, @qgallouedec