5 dos layouts disponíveis. Novos layouts são fáceis de codificar ou gerar programaticamente.
Overcooked-AI é um ambiente de referência para desempenho de tarefas de IA humana totalmente cooperativa, baseado no popular videogame Overcooked.
O objetivo do jogo é entregar sopas o mais rápido possível. Cada sopa requer colocar até 3 ingredientes em uma panela, esperar que a sopa cozinhe e depois pedir a um agente que pegue a sopa e a entregue. Os agentes devem dividir as tarefas rapidamente e coordenar-se de forma eficaz para obter altas recompensas.
Você pode experimentar o jogo aqui (jogando com alguns agentes DRL previamente treinados). Para jogar com seus próprios agentes treinados usando esta interface, ou para coletar mais dados de IA humana ou humano-humano, você pode usar o código aqui. Você pode encontrar alguns dados de jogo humano-humano e humano-IA já coletados aqui.
Implementações DRL compatíveis com o ambiente são incluídas no repositório como um submódulo em src/human_aware_rl.
O antigo human_aware_rl está sendo descontinuado e só deve ser usado para reproduzir os resultados do artigo de 2019: Sobre a utilidade de aprender sobre humanos para coordenação de IA humana (veja também nossa postagem no blog).
Para uma utilização simples do ambiente, vale a pena considerar o uso deste wrapper de ambiente.
Você pode instalar o arquivo wheel pré-compilado usando pip.
pip install overcooked-ai
Observe que as versões do PyPI são estáveis, mas pouco frequentes. Para obter os recursos de desenvolvimento mais atualizados, crie a partir do código-fonte com pip install -e .
.
É útil configurar um ambiente conda com Python 3.7 (virtualenv também funciona):
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
Clonar o repositório
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
Finalmente, use ferramentas de configuração python para instalar localmente
Se você quiser apenas usar o ambiente:
pip install -e .
Se você também precisar das implementações DRL (talvez seja necessário inserir isso em seu terminal como pip install -e '.[harl]'
):
pip install -e .[harl]
Ao compilar a partir do código-fonte, você pode verificar a instalação executando o conjunto de testes de unidade Overcooked. Os comandos a seguir devem ser executados no diretório raiz do projeto overcooked_ai
:
python testing/overcooked_test.py
Para verificar se o humam_aware_rl
está instalado corretamente, você pode executar o seguinte comando no diretório src/human_aware_rl
:
$ ./run_tests.sh
Isto irá executar todos os testes pertencentes ao módulo human_aware_rl. Você pode verificar o README no submódulo para obter instruções sobre como executar testes específicos do destino. Isso pode ser iniciado a partir de qualquer diretório.
Se você está pensando em usar o código de planejamento extensivamente, você deve executar o conjunto completo de testes que verifica todas as ferramentas acessórias Overcooked (isso pode levar de 5 a 10 minutos):
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
contém:
mdp/
:
overcooked_mdp.py
: lógica principal do jogo Overcookedovercooked_env.py
: classes de ambiente construídas sobre o mdp Overcookedlayout_generator.py
: funções para gerar layouts aleatórios programaticamente agents/
:
agent.py
: localização das classes de agentebenchmarking.py
: amostra trajetórias de agentes (treinados e planejadores) e carrega vários modelos planning/
:
planners.py
: lógica de planejamento de agente quase idealsearch.py
: pesquisa A* e lógica do caminho mais curto human_aware_rl
contém:
ppo/
:
ppo_rllib.py
: Módulo primário onde reside o código para treinar um agente PPO. Isso inclui um wrapper compatível com rllib em OvercookedEnv
, utilitários para converter classes Policy
rllib em Overcooked Agent
s, bem como funções utilitárias e retornos de chamadappo_rllib_client.py
Código do driver para configuração e lançamento do treinamento de um agente. Mais detalhes sobre o uso abaixoppo_rllib_from_params_client.py
: treinar um agente com PPO em Overcooked com MDPs variáveisppo_rllib_test.py
Testes de reprodutibilidade para verificações de integridade locaisrun_experiments.sh
Script para treinar agentes em 5 layouts clássicostrained_example/
Modelo pré-treinado para fins de teste rllib/
:
rllib.py
: agente rllib e utilitários de treinamento que utilizam APIs Overcookedutils.py
: utilitários para o acimatests.py
: testes preliminares para o acima imitation/
:
behavior_cloning_tf2.py
: Módulo para treinar, salvar e carregar um modelo BCbehavior_cloning_tf2_test.py
: Contém testes básicos de reprodutibilidade, bem como testes de unidade para os vários componentes do módulo bc. human/
:
process_data.py
para processar dados humanos em formatos específicos para serem usados por algoritmos DRLdata_processing_utils.py
para o acima utils.py
: utilitários para o repositório
overcooked_demo
contém:
server/
:
app.py
: O aplicativo Flaskgame.py
: A lógica principal do jogo. As transições de estado são tratadas pelo objeto overcooked.Gridworld incorporado no ambiente do jogomove_agents.py
: um script que simplifica a cópia de pontos de verificação para o diretório de agentes. As instruções de como usar podem ser encontradas dentro do arquivo ou executando python move_agents.py -h
up.sh
: Shell script para ativar o servidor Docker que hospeda o jogo
Veja este Google Colab para obter alguns exemplos de código para visualizar trajetórias em python.
Incorporamos um notebook que orienta os usuários no processo de treinamento, carregamento e avaliação dos agentes. Idealmente, gostaríamos de permitir que os usuários executassem o notebook no Google Colab; no entanto, devido ao kernel padrão do Colab ser Python 3.10 e nosso repositório ser otimizado para Python 3.7, algumas funções são atualmente incompatíveis com o Colab. Para fornecer uma experiência perfeita, pré-executamos todas as células do notebook, permitindo que você visualize a saída esperada ao executá-lo localmente seguindo a configuração apropriada.
Overcooked_demo também pode iniciar um jogo interativo no navegador para visualizações. Detalhes podem ser encontrados em seu README
Os dados brutos usados no treinamento são >100 MB, o que torna inconveniente a distribuição via git. O código usa dataframes em conserva para treinamento e teste, mas caso seja necessário dados originais, eles podem ser encontrados aqui
Se você tiver problemas ou dúvidas, entre em contato com Micah Carroll em [email protected].