
Mushroomrl:加固学习Python图书馆。
本文档的内容:
Mushroomrl是一个Python增强学习(RL)库,其模块化允许易于使用众所周知的Python库进行张量计算(例如Pytorch,TensorFlow)和RL基准测试(例如OpenAI Gym,Pybullet,Pybullet,DeepMind Control Suite)。它允许以简单的方式执行RL实验,从而提供经典的RL算法(例如Q-Learning,SARSA,FQI)和Deep RL算法(例如DQN,DDPG,SAC,TD3,TD3,TRPO,PPO)。
完整的文档和教程。
您可以使用以下方式进行最小的MushroomRL安装。
pip3 install mushroom_rlMushroomRL还包含一些可选的组件,例如对OpenAI Gym环境的支持,Atari 2600游戏中的Arcade Learning Environment 2600游戏以及对Pybullet和MuJoCo等物理模拟器的支持。默认情况下不启用对这些类的支持。
要安装整个功能集,您将需要安装其他软件包。您可以通过运行安装所有内容:
pip3 install mushroom_rl[all]除了图依赖关系外,这将安装Mushroomrl的所有依赖性。对于Ubuntu> 20.04,您可能需要安装Pygame和健身房依赖性:
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 swig请注意,您仍然需要为不同的操作系统安装其中一些依赖项,例如MacOS的SWIG
以下是您需要运行的代码来安装图依赖项:
sudo apt -y install python3-pyqt5
pip3 install mushroom_rl[plots]您可能需要首先安装外部依赖项。有关Mujoco-Py安装的更多信息,请遵循项目页面上的说明
警告!使用Conda时,QT可能存在问题。您可以通过将以下行添加到代码中来修复它们,将<conda_base_path>替换为通往conda发行的路径,并用您使用的conda环境的名称<env_name>:
import os
os . environ [ 'QT_QPA_PLATFORM_PLUGIN_PATH' ] = '<conda_base_path>/envs/<env_name>/bin/platforms'要使用DM_Control Mushroomrl接口,请按照可以在此处找到的说明安装dm_control
栖息地和Igibson是提供现实且感官丰富的学习环境的仿真平台。在Mushroomrl中,代理的默认观察结果是RGB图像,但是RGBD,Agent感觉数据和其他信息也可以使用。
如果您已经安装了以前的Igibson或栖息地版本,我们建议您删除它们并进行清洁安装。
遵循官方指南并安装其资产和数据集。
对于<MUSHROOM_RL PATH>/mushroom-rl/examples/igibson_dqn.py您需要运行
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_dataset您也可以使用第三方数据集。
场景详细信息是在需要传递给代理商的YAML文件中定义的。有关示例,请参见<IGIBSON PATH>/igibson/test/test_house.YAML 。
遵循官方指南,并使用Habitat_baselines进行完整安装。然后,您可以在此之后下载交互式数据集。如果您需要下载其他数据集,则可以使用此实用程序。
创建Habitat环境时,需要传递包装器名称和两个YAML文件: Habitat(wrapper, config_file, base_config_file) 。
包装器必须是<MUSHROOM_RL PATH>/mushroom-rl/environments/habitat_env.py中定义的包装器之一,并照顾以类似健身房的形式转换动作和观察。如果您的任务 /机器人需要它,则可能需要定义新包装器。
YAML文件定义了每个细节:栖息地环境,场景,机器人可用的传感器,奖励,操作离散化以及您可能需要的任何其他信息。第二个YAML文件是可选的,并且覆盖了第一个YAML中已经定义的内容。
如果您使用
habitat-lab的山药,请检查它们是否为BASE_TASK_CONFIG_PATH定义yaml。如果他们这样做,则需要将其作为base_config_file将其传递给Habitat()。实际上,habitat-lab山药使用相对路径,并从根部文件夹外拨打它们会导致错误。
如果使用数据集,请确保在YAML文件中定义的路径正确,尤其是在使用相对路径时。 habitat-lab山药使用相对路径,因此请谨慎使用。默认情况下,YAML文件中定义的路径将相对于您启动Python代码的位置。如果您的数据文件夹在其他地方,则还可以创建一个符号链接。
--data-path data将它们从启动代码启动的文件夹中下载) python -m habitat_sim.utils.datasets_download --uids replica_cad_dataset --data-path data<HABITAT_LAB PATH>/habitat_baselines/config/rearrange/rl_pick.yaml 。此YAML定义BASE_TASK_CONFIG_PATH: configs/tasks/rearrange/pick.yaml ,由于这是一个相对路径,我们需要通过将其绝对路径作为base_config_file grognm传递给Habitat()来覆盖它。pick.yaml定义数据集用于<HABITAT_LAB PATH> 。如果您尚未使用 - 使用上一个下载命令的--data-path参数,则replicacad数据集现在在<HABITAT_LAB PATH>/data中,您需要链接到它ln -s < HABITAT_LAB PATH > /data/ < MUSHROOM_RL PATH > /mushroom-rl/examples/habitatpython habitat_rearrange_sac.py 。 下载并提取副本场景
警告!数据集很大!
sudo apt-get install pigz
git clone https://github.com/facebookresearch/Replica-Dataset.git
cd Replica-Dataset
./download.sh replica-path对于此任务,我们仅使用自定义YAML文件pointnav_apartment-0.yaml 。
DATA_PATH: "replica_{split}_apartment-0.json.gz"定义了JSON文件,其中包含一些场景详细信息,例如代理的初始位置和方向。 {split}值在SPLIT键中定义。
如果您想尝试新的位置,则可以从场景可导航点的集合中进行采样。初始化
habitat环境后,例如mdp = Habitat(...),运行mdp.env._env._sim.sample_navigable_point()。
SCENES_DIR: "Replica-Dataset/replica-path/apartment_0"定义了场景。如前所述,此路径是相对于您启动脚本的位置,因此我们需要链接副本文件夹。如果您从其示例文件夹中启动habitat_nav_dqn.py ,请运行
ln -s < PATH TO > /Replica-Dataset/ < MUSHROOM_RL PATH > /mushroom-rl/examples/habitatpython habitat_nav_dqn.py 。您还可以通过使用以下方式执行本地可编辑安装。
pip install --no-use-pep517 -e .还安装可选依赖性:
pip install --no-use-pep517 -e .[all]要运行实验,Mushroomrl需要一个脚本文件,为实验提供必要的信息。在“示例”文件夹中关注脚本,以了解如何运行实验。
例如,要使用提供的示例脚本之一进行快速实验,请运行:
python3 examples/car_on_hill_fqi.py如果您正在使用Mushroomrl作为科学出版物,请引用:
@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 }
}对于任何问题,请通过[email protected]删除电子邮件。
在Twitter @mushroom_rl上关注我们!