
Mushroomrl: Biblioteca de aprendizaje de refuerzo Python.
Contenido de este documento:
Mushroomrl es una biblioteca de aprendizaje de refuerzo de Python (RL) cuya modularidad permite usar fácilmente bibliotecas de Python conocidas para la computación tensor (por ejemplo, Pytorch, Tensorflow) y puntos de referencia RL (EG OpenAi Gym, Pybullet, DeepMind Control Suite). Permite realizar experimentos RL de manera simple que proporcionan algoritmos RL clásicos (por ejemplo, Q-Learning, Sarsa, FQI) y los algoritmos RL profundos (por ejemplo, DQN, DDPG, SAC, TD3, TRPO, PPO).
Documentación completa y tutoriales disponibles aquí.
Puede hacer una instalación mínima de MushroomRL con:
pip3 install mushroom_rl MushroomRL contiene también algunos componentes opcionales, por ejemplo, soporte para entornos OpenAI Gym , juegos Atari 2600 del Arcade Learning Environment y el soporte para simuladores de física como Pybullet y MuJoCo . El soporte para estas clases no está habilitado de forma predeterminada.
Para instalar todo el conjunto de funciones, necesitará instalados paquetes adicionales. Puede instalar todo ejecutando:
pip3 install mushroom_rl[all]Esto instalará cada dependencia de MushroomRl, excepto la dependencia de las parcelas. Para Ubuntu> 20.04, es posible que deba instalar dependencias de Pygame y Gym:
sudo apt -y install libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev
libsdl1.2-dev libsmpeg-dev libportmidi-dev ffmpeg libswscale-dev
libavformat-dev libavcodec-dev swigObserve que aún necesita instalar algunas de estas dependencias para diferentes sistemas operativos, por ejemplo, Swig para MacOS
A continuación se muestra el código que debe ejecutar para instalar las dependencias de los gráficos:
sudo apt -y install python3-pyqt5
pip3 install mushroom_rl[plots]Es posible que deba instalar dependencias externas primero. Para obtener más información sobre la instalación de Mujoco-Py, siga las instrucciones en la página del proyecto
¡ADVERTENCIA! Al usar conda, puede haber problemas con Qt. Puede solucionarlos agregando las siguientes líneas al código, reemplazando<conda_base_path>con la ruta a su distribución de conda y<env_name>con el nombre del entorno de conda que está utilizando:
import os
os . environ [ 'QT_QPA_PLATFORM_PLUGIN_PATH' ] = '<conda_base_path>/envs/<env_name>/bin/platforms' Para usar la interfaz DM_Control Mushroomrl, instale dm_control siguiendo las instrucciones que se pueden encontrar aquí
Hábitat e Igibson son plataformas de simulación que proporcionan entornos de aprendizaje realistas y ricos en sensorías. En MushroomRl, las observaciones predeterminadas del agente son las imágenes RGB, pero RGBD, los datos sensoriales del agente y otra información también se pueden usar.
Si tiene versiones anteriores de Igibson o Hábitat ya instalado, recomendamos eliminarlas y hacer instalaciones limpias.
Siga la guía oficial e instale sus activos y conjuntos de datos.
Para <MUSHROOM_RL PATH>/mushroom-rl/examples/igibson_dqn.py necesitas ejecutar
python -m igibson.utils.assets_utils --download_assets
python -m igibson.utils.assets_utils --download_demo_data
python -m igibson.utils.assets_utils --download_ig_datasetTambién puede usar conjuntos de datos de terceros.
Los detalles de la escena se definen en un archivo YAML, que debe pasar al agente. Consulte <IGIBSON PATH>/igibson/test/test_house.YAML para un ejemplo.
Siga la guía oficial y realice una instalación completa con Hábitat_Baselines. Luego puede descargar conjuntos de datos interactivos después de esto y esto. Si necesita descargar otros conjuntos de datos, puede usar esta utilidad.
Cuando crea un entorno Habitat , debe pasar un nombre de envoltura y dos archivos YAML: Habitat(wrapper, config_file, base_config_file) .
El envoltorio debe estar entre los definidos en <MUSHROOM_RL PATH>/mushroom-rl/environments/habitat_env.py , y se encarga de convertir acciones y observaciones en un formato de gimnasio. Si su tarea / robot lo requiere, es posible que deba definir nuevos envoltorios.
Los archivos YAML definen cada detalle: el entorno del hábitat, la escena, los sensores disponibles para el robot, las recompensas, la discretización de acción y cualquier información adicional que pueda necesitar. El segundo archivo YAML es opcional y sobrescribe lo que ya estaba definido en el primer YAML.
Si usa yamls de
habitat-lab, verifique si definen un YAML paraBASE_TASK_CONFIG_PATH. Si lo hacen, debe pasarlo comobase_config_fileaHabitat(). Los Yamlshabitat-lab, de hecho, usan rutas relativas, y llamarlos desde fuera de su carpeta raíz causará errores.
Si usa un conjunto de datos, asegúrese de que la ruta definida en el archivo YAML sea correcta, especialmente si usa rutas relativas. Los Yamls habitat-lab usan rutas relativas, así que tenga cuidado con eso. De manera predeterminada, la ruta definida en el archivo YAML será relativo a donde lanzó el código Python. Si su carpeta de datos está en otro lugar, también puede crear un enlace simbólico.
--data-path data los descarga en la carpeta desde donde está lanzando su código) python -m habitat_sim.utils.datasets_download --uids replica_cad_dataset --data-path data<HABITAT_LAB PATH>/habitat_baselines/config/rearrange/rl_pick.yaml . Este Yaml define BASE_TASK_CONFIG_PATH: configs/tasks/rearrange/pick.yaml , y dado que esta es una ruta relativa, necesitamos sobrescribirlo pasando su ruta absoluta como argumento base_config_file a Habitat() .pick.yaml define el conjunto de datos que se utilizará con respecto a <HABITAT_LAB PATH> . Si no ha utilizado el argumento --data-path con el comando de descarga anterior, los conjuntos de datos Replicacad ahora están en <HABITAT_LAB PATH>/data y debe hacer un enlace a él ln -s < HABITAT_LAB PATH > /data/ < MUSHROOM_RL PATH > /mushroom-rl/examples/habitatpython habitat_rearrange_sac.py . Descargar y extraer escenas de réplica
¡ADVERTENCIA! ¡El conjunto de datos es muy grande!
sudo apt-get install pigz
git clone https://github.com/facebookresearch/Replica-Dataset.git
cd Replica-Dataset
./download.sh replica-path Para esta tarea solo usamos el archivo YAML personalizado pointnav_apartment-0.yaml .
DATA_PATH: "replica_{split}_apartment-0.json.gz" define el archivo JSON con algunos detalles de la escena, como la posición y orientación inicial del agente. El valor {split} se define en la tecla SPLIT .
Si desea probar nuevas posiciones, puede probar algunas del conjunto de puntos navegables de la escena. Después de inicializar un entorno
habitat, por ejemplomdp = Habitat(...), ejecutemdp.env._env._sim.sample_navigable_point().
SCENES_DIR: "Replica-Dataset/replica-path/apartment_0" define la escena. Como se dijo antes, esta ruta es relativa a donde inicia el script, por lo tanto, necesitamos vincular la carpeta de réplica. Si inicia habitat_nav_dqn.py desde su carpeta de ejemplo, ejecute
ln -s < PATH TO > /Replica-Dataset/ < MUSHROOM_RL PATH > /mushroom-rl/examples/habitatpython habitat_nav_dqn.py .También puede realizar una instalación editable local utilizando:
pip install --no-use-pep517 -e .Para instalar también dependencias opcionales:
pip install --no-use-pep517 -e .[all]Para ejecutar experimentos, MushroomRl requiere un archivo de script que proporcione la información necesaria para el experimento. Siga los scripts en la carpeta "Ejemplos" para tener una idea de cómo se puede ejecutar un experimento.
Por ejemplo, para ejecutar un experimento rápido con uno de los scripts de ejemplo proporcionados, ejecute:
python3 examples/car_on_hill_fqi.pySi está utilizando hongos para sus publicaciones científicas, cite:
@article { JMLR:v22:18-056 ,
author = { Carlo D'Eramo and Davide Tateo and Andrea Bonarini and Marcello Restelli and Jan Peters } ,
title = { MushroomRL: Simplifying Reinforcement Learning Research } ,
journal = { Journal of Machine Learning Research } ,
year = { 2021 } ,
volume = { 22 } ,
number = { 131 } ,
pages = { 1-5 } ,
url = { http://jmlr.org/papers/v22/18-056.html }
}Para cualquier pregunta, deje un correo electrónico a [email protected].
¡Síganos en Twitter @mushroom_rl!