
Mushroomrl: Bibliothèque Python d'apprentissage du renforcement.
Contenu de ce document:
Mushroomrl est une bibliothèque Python Reinforcement Learning (RL) dont la modularité permet d'utiliser facilement des bibliothèques Python bien connues pour le calcul du tenseur (par exemple Pytorch, TensorFlow) et RL Benchmarks (par exemple Openai Gym, Pybullet, DeepMind Control Suite). Il permet d'effectuer des expériences RL d'une manière simple fournissant des algorithmes RL classiques (par exemple Q-Learning, SARSA, FQI) et des algorithmes RL profonds (par exemple DQN, DDPG, SAC, TD3, TRPO, PPO).
Documentation complète et tutoriels disponibles ici.
Vous pouvez faire une installation minimale de MushroomRL avec:
pip3 install mushroom_rl MushroomRL contient également des composants optionnels, par exemple, le soutien aux environnements OpenAI Gym , les jeux Atari 2600 de l' Arcade Learning Environment et le soutien aux simulateurs de physique tels que Pybullet et MuJoCo . La prise en charge de ces classes n'est pas activée par défaut.
Pour installer l'ensemble des fonctionnalités, vous aurez besoin de packages supplémentaires installés. Vous pouvez tout installer en fonctionnant:
pip3 install mushroom_rl[all]Cela installera chaque dépendance de Mushroomrl, à l'exception de la dépendance des parcelles. Pour Ubuntu> 20.04, vous devrez peut-être installer des dépendances pygame et gymnase:
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 swigNotez que vous devez toujours installer certaines de ces dépendances pour différents systèmes d'exploitation, par exemple SPH pour macOS
Vous trouverez ci-dessous le code que vous devez exécuter pour installer les dépendances des tracés:
sudo apt -y install python3-pyqt5
pip3 install mushroom_rl[plots]Vous devrez peut-être d'abord installer des dépendances externes. Pour plus d'informations sur l'installation de Mujoco-Py, suivez les instructions sur la page du projet
AVERTISSEMENT! Lorsque vous utilisez Conda, il peut y avoir des problèmes avec Qt. Vous pouvez les réparer en ajoutant les lignes suivantes au code, en remplaçant<conda_base_path>par le chemin de la distribution de votre conda et<env_name>par le nom de l'environnement conda que vous utilisez:
import os
os . environ [ 'QT_QPA_PLATFORM_PLUGIN_PATH' ] = '<conda_base_path>/envs/<env_name>/bin/platforms' Pour utiliser l'interface DM_Control Mushroomrl, installez dm_control en suivant les instructions qui peuvent être trouvées ici
Habitat et Igibson sont des plateformes de simulation offrant des environnements d'apprentissage réalistes et riches en sens Dans Mushroomrl, les observations par défaut de l'agent sont des images RVB, mais RVBD, les données sensorielles de l'agent et d'autres informations peuvent également être utilisées.
Si vous avez déjà installé des versions d'Igibson ou d'habitat, nous vous recommandons de les retirer et de faire des installations propres.
Suivez le guide officiel et installez ses actifs et ensembles de données.
Pour <MUSHROOM_RL PATH>/mushroom-rl/examples/igibson_dqn.py vous devez courir
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_datasetVous pouvez également utiliser des ensembles de données tiers.
Les détails de la scène sont définis dans un fichier YAML, qui doit être transmis à l'agent. Voir <IGIBSON PATH>/igibson/test/test_house.YAML pour un exemple.
Suivez le guide officiel et faites une installation complète avec Habitat_Baselines. Ensuite, vous pouvez télécharger des ensembles de données interactifs en suivant ceci et cela. Si vous avez besoin de télécharger d'autres ensembles de données, vous pouvez utiliser cet utilitaire.
Lorsque vous créez un environnement Habitat , vous devez passer un nom de wrapper et deux fichiers YAML: Habitat(wrapper, config_file, base_config_file) .
L'emballage doit être parmi ceux définis dans <MUSHROOM_RL PATH>/mushroom-rl/environments/habitat_env.py , et s'occupe de convertir des actions et des observations dans un format semblable à un gymnase. Si votre tâche / robot l'exige, vous devrez peut-être définir de nouveaux emballages.
Les fichiers YAML définissent chaque détail: l'environnement de l'habitat, la scène, les capteurs disponibles pour le robot, les récompenses, la discrétisation d'action et toute information supplémentaire dont vous pourriez avoir besoin. Le deuxième fichier YAML est facultatif et écrase tout ce qui était déjà défini dans le premier YAML.
Si vous utilisez YAMLS de
habitat-lab, vérifiez s'ils définissent un YAML pourBASE_TASK_CONFIG_PATH. S'ils le font, vous devez le passer en tant quebase_config_fileàHabitat(). Les YAMLShabitat-lab, en fait, utilisent des chemins relatifs, et les appeler de l'extérieur de son dossier racine provoquera des erreurs.
Si vous utilisez un ensemble de données, assurez-vous que le chemin défini dans le fichier YAML est correct, surtout si vous utilisez des chemins relatifs. Les YAML habitat-lab utilisent des chemins relatifs, alors soyez prudent avec cela. Par défaut, le chemin défini dans le fichier YAML sera relatif à l'endroit où vous avez lancé le code Python. Si votre dossier de données est ailleurs, vous pouvez également créer un lien symbolique.
--data-path data les téléchargent dans le dossier d'où vous lancez votre code) python -m habitat_sim.utils.datasets_download --uids replica_cad_dataset --data-path data<HABITAT_LAB PATH>/habitat_baselines/config/rearrange/rl_pick.yaml . Ce Yaml définit BASE_TASK_CONFIG_PATH: configs/tasks/rearrange/pick.yaml , et comme il s'agit d'un chemin relatif, nous devons l'écraser en passant son chemin absolu en tant qu'argument base_config_file à Habitat() .pick.yaml définit l'ensemble de données à utiliser par rapport à <HABITAT_LAB PATH> . Si vous n'avez pas utilisé l'argument --data-path avec la commande de téléchargement précédente, les ensembles de données ReplicACAC sont maintenant dans <HABITAT_LAB PATH>/data et vous devez établir un lien vers celui-ci ln -s < HABITAT_LAB PATH > /data/ < MUSHROOM_RL PATH > /mushroom-rl/examples/habitatpython habitat_rearrange_sac.py . Télécharger et extraire des scènes de répliques
AVERTISSEMENT! L'ensemble de données est très grand!
sudo apt-get install pigz
git clone https://github.com/facebookresearch/Replica-Dataset.git
cd Replica-Dataset
./download.sh replica-path Pour cette tâche, nous n'utilisons que le fichier YAML personnalisé pointnav_apartment-0.yaml .
DATA_PATH: "replica_{split}_apartment-0.json.gz" définit le fichier JSON avec certains détails de la scène, tels que la position et l'orientation initiales de l'agent. La valeur {split} est définie dans la touche SPLIT .
Si vous souhaitez essayer de nouvelles positions, vous pouvez en goûter à l'ensemble des points navigables de la scène. Après avoir initialisé un environnement
habitat, par exemplemdp = Habitat(...), exécutezmdp.env._env._sim.sample_navigable_point().
SCENES_DIR: "Replica-Dataset/replica-path/apartment_0" définit la scène. Comme dit précédemment, ce chemin est relatif à l'endroit où vous lancez le script, nous devons donc lier le dossier de répliques. Si vous lancez habitat_nav_dqn.py à partir de son exemple de dossier, exécutez
ln -s < PATH TO > /Replica-Dataset/ < MUSHROOM_RL PATH > /mushroom-rl/examples/habitatpython habitat_nav_dqn.py .Vous pouvez également effectuer une installation modifiable locale en utilisant:
pip install --no-use-pep517 -e .Pour installer également des dépendances facultatives:
pip install --no-use-pep517 -e .[all]Pour exécuter des expériences, Mushroomrl nécessite un fichier de script qui fournit les informations nécessaires à l'expérience. Suivez les scripts dans le dossier "Exemples" pour avoir une idée de la façon dont une expérience peut être exécutée.
Par exemple, pour exécuter une expérience rapide avec l'un des exemples de scripts fournis, exécutez:
python3 examples/car_on_hill_fqi.pySi vous utilisez Mushroomrl pour vos publications scientifiques, veuillez citer:
@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 }
}Pour toute question, déposez un e-mail à [email protected].
Suivez-nous sur Twitter @mushroom_rl!