
Mushroomrl: Biblioteca Python de Aprendizagem de Reforço.
Conteúdo deste documento:
O Mushroomrl é uma biblioteca de aprendizado de reforço em Python (RL) cuja modularidade permite usar facilmente bibliotecas Python conhecidas para computação tensorada (por exemplo, pytorch, tensorflow) e referência de RL (por exemplo, academia OpenAi, pybullet, deepmind controle). Permite realizar experimentos RL de uma maneira simples, fornecendo algoritmos RL clássicos (por exemplo, q-learning, SARSA, FQI) e algoritmos RL profunda (por exemplo, DQN, DDPG, SAC, TD3, TRPO, PPO).
Documentação completa e tutoriais disponíveis aqui.
Você pode fazer uma instalação mínima de MushroomRL com:
pip3 install mushroom_rl MushroomRL também contém alguns componentes opcionais, por exemplo, suporte para ambientes OpenAI Gym , Atari 2600 jogos do Arcade Learning Environment e o suporte para simuladores de física como Pybullet e MuJoCo . O suporte a essas classes não está ativado por padrão.
Para instalar todo o conjunto de recursos, você precisará de pacotes adicionais instalados. Você pode instalar tudo executando:
pip3 install mushroom_rl[all]Isso instalará todas as dependências do Mushroomrl, exceto a dependência das parcelas. Para o Ubuntu> 20.04, pode ser necessário instalar dependências de pygame e academia:
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 você ainda precisa instalar algumas dessas dependências para diferentes sistemas operacionais, por exemplo, SWIG para MacOS
Abaixo está o código que você precisa executar para instalar as dependências dos gráficos:
sudo apt -y install python3-pyqt5
pip3 install mushroom_rl[plots]Pode ser necessário instalar dependências externas primeiro. Para obter mais informações sobre a instalação do Mujoco-Py, siga as instruções na página do projeto
AVISO! Ao usar o CONDA, pode haver problemas com o Qt. Você pode corrigi -los adicionando as seguintes linhas ao código, substituindo<conda_base_path>pelo caminho para a sua distribuição do CONDA e<env_name>com o nome do ambiente do CONDA que você está usando:
import os
os . environ [ 'QT_QPA_PLATFORM_PLUGIN_PATH' ] = '<conda_base_path>/envs/<env_name>/bin/platforms' Para usar a interface DM_Control Mushroomrl, instale dm_control seguindo a instrução que pode ser encontrada aqui
Habitat e Igibson são plataformas de simulação que fornecem ambientes de aprendizado realistas e ricos em sensoriais. No Mushroomrl, as observações padrão do agente são imagens RGB, mas RGBD, dados sensoriais do agente e outras informações também podem ser usados.
Se você tiver versões anteriores do Igibson ou Habitat já instalado, recomendamos removê -las e fazer instalações limpas.
Siga o guia oficial e instale seus ativos e conjuntos de dados.
Para <MUSHROOM_RL PATH>/mushroom-rl/examples/igibson_dqn.py você precisa executar
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_datasetVocê também pode usar conjuntos de dados de terceiros.
Os detalhes da cena são definidos em um arquivo YAML, que precisa ser passado para o agente. Veja <IGIBSON PATH>/igibson/test/test_house.YAML para um exemplo.
Siga o guia oficial e faça uma instalação completa com o Habitat_BaseLines. Em seguida, você pode baixar conjuntos de dados interativos seguindo isso e isso. Se você precisar baixar outros conjuntos de dados, poderá usar este utilitário.
Ao criar um ambiente Habitat , você precisa passar um nome de wrapper e dois arquivos YAML: Habitat(wrapper, config_file, base_config_file) .
O invólucro deve estar entre os definidos em <MUSHROOM_RL PATH>/mushroom-rl/environments/habitat_env.py e cuida de ações e observações de conversão em um formato semelhante à academia. Se sua tarefa / robô exigir, pode ser necessário definir novos invólucros.
Os arquivos YAML definem todos os detalhes: o ambiente do habitat, a cena, os sensores disponíveis para o robô, as recompensas, a discretização da ação e qualquer informação adicional que você possa precisar. O segundo arquivo YAML é opcional e substitui o que já foi definido no primeiro YAML.
Se você usar YAMLs do
habitat-lab, verifique se eles definirem um YAML paraBASE_TASK_CONFIG_PATH. Se o fizerem, você precisa passá -lo comobase_config_fileparaHabitat(). Os iamls dehabitat-lab, de fato, usam caminhos relativos e chamá-los de fora de sua pasta raiz causarão erros.
Se você usar um conjunto de dados, verifique se o caminho definido no arquivo YAML está correto, especialmente se você usar caminhos relativos. Os iamls de habitat-lab usam caminhos relativos, portanto, tenha cuidado com isso. Por padrão, o caminho definido no arquivo YAML será relativo para onde você iniciou o código Python. Se a sua pasta de dados estiver em outro lugar, você também poderá criar um link simbólico.
--data-path data baixe-os na pasta de onde você está lançando seu 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 , e como esse é um caminho relativo, precisamos substituí -lo passando seu caminho absoluto como base base_config_file para Habitat() .pick.yaml define o conjunto de dados a ser usado em relação a <HABITAT_LAB PATH> . Se você não usou --data-path com o comando de download anterior, os conjuntos de dados REPLICACAD estão agora em <HABITAT_LAB PATH>/data e você precisa fazer um link para isso ln -s < HABITAT_LAB PATH > /data/ < MUSHROOM_RL PATH > /mushroom-rl/examples/habitatpython habitat_rearrange_sac.py . Baixar e extrair cenas de réplica
AVISO! O conjunto de dados é muito grande!
sudo apt-get install pigz
git clone https://github.com/facebookresearch/Replica-Dataset.git
cd Replica-Dataset
./download.sh replica-path Para esta tarefa, usamos apenas o arquivo YAML pointnav_apartment-0.yaml personalizado.
DATA_PATH: "replica_{split}_apartment-0.json.gz" define o arquivo JSON com alguns detalhes da cena, como a posição inicial e orientação do agente. O valor {split} é definido na chave SPLIT .
Se você quiser experimentar novas posições, pode provar alguns do conjunto dos pontos navegáveis da cena. Depois de inicializar um ambiente
habitat, por exemplo,mdp = Habitat(...), executemdp.env._env._sim.sample_navigable_point().
SCENES_DIR: "Replica-Dataset/replica-path/apartment_0" define a cena. Como dito antes, esse caminho é relativo a onde você inicia o script, portanto, precisamos vincular a pasta de réplica. Se você iniciar habitat_nav_dqn.py da pasta Exemplo, execute
ln -s < PATH TO > /Replica-Dataset/ < MUSHROOM_RL PATH > /mushroom-rl/examples/habitatpython habitat_nav_dqn.py .Você também pode realizar uma instalação editável local usando:
pip install --no-use-pep517 -e .Para instalar também dependências opcionais:
pip install --no-use-pep517 -e .[all]Para executar experimentos, o MushroomRL requer um arquivo de script que forneça as informações necessárias para o experimento. Siga os scripts na pasta "Exemplos" para ter uma idéia de como um experimento pode ser executado.
Por exemplo, para executar um experimento rápido com um dos scripts de exemplo fornecidos, execute:
python3 examples/car_on_hill_fqi.pySe você estiver usando o Mushroomrl para suas publicações 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 qualquer pergunta, envie um e-mail em [email protected].
Siga -nos no Twitter @mushroom_rl!