5 de los diseños disponibles. Los nuevos diseños son fáciles de codificar o generar mediante programación.
Overcooked-AI es un entorno de referencia para la realización de tareas totalmente cooperativas entre humanos y IA, basado en el popular videojuego Overcooked.
El objetivo del juego es entregar sopas lo más rápido posible. Cada sopa requiere colocar hasta 3 ingredientes en una olla, esperar a que se cocine y luego pedirle a un agente que la recoja y la entregue. Los agentes deben dividir las tareas sobre la marcha y coordinarse de manera efectiva para lograr una alta recompensa.
Puedes probar el juego aquí (jugando con algunos agentes DRL previamente capacitados). Para jugar con tus propios agentes capacitados usando esta interfaz, o para recopilar más datos humanos-IA o humano-humano, puedes usar el código aquí. Puedes encontrar algunos datos de juego entre humanos y humanos-IA ya recopilados aquí.
Las implementaciones de DRL compatibles con el entorno se incluyen en el repositorio como un submódulo en src/human_aware_rl.
El antiguo human_aware_rl está obsoleto y solo debe usarse para reproducir los resultados del artículo de 2019: Sobre la utilidad de aprender sobre humanos para la coordinación entre humanos y IA (consulte también nuestra publicación de blog).
Para un uso sencillo del entorno, vale la pena considerar el uso de este contenedor de entorno.
Puede instalar el archivo wheel precompilado usando pip.
pip install overcooked-ai
Tenga en cuenta que las versiones de PyPI son estables pero poco frecuentes. Para obtener las funciones de desarrollo más actualizadas, compila desde el código fuente con pip install -e .
.
Es útil configurar un entorno conda con Python 3.7 (virtualenv también funciona):
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
Clonar el repositorio
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
Finalmente, use las herramientas de configuración de Python para instalar localmente
Si solo desea utilizar el entorno:
pip install -e .
Si también necesita las implementaciones de DRL (es posible que deba ingresar esto en su terminal como pip install -e '.[harl]'
):
pip install -e .[harl]
Al compilar desde la fuente, puede verificar la instalación ejecutando el conjunto de pruebas unitarias Overcooked. Todos los siguientes comandos deben ejecutarse desde el directorio raíz del proyecto overcooked_ai
:
python testing/overcooked_test.py
Para verificar si humam_aware_rl
está instalado correctamente, puede ejecutar el siguiente comando desde el directorio src/human_aware_rl
:
$ ./run_tests.sh
Esto ejecutará todas las pruebas pertenecientes al módulo human_aware_rl. Puede consultar el archivo README en el submódulo para obtener instrucciones sobre cómo ejecutar pruebas específicas de destino. Esto se puede iniciar desde cualquier directorio.
Si está pensando en utilizar ampliamente el código de planificación, debe ejecutar el conjunto de pruebas completo que verifica todas las herramientas accesorias de Overcooked (esto puede tardar entre 5 y 10 minutos):
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
contiene:
mdp/
:
overcooked_mdp.py
: Lógica principal del juego Overcookedovercooked_env.py
: clases de entorno creadas sobre el mdp Overcookedlayout_generator.py
: funciones para generar diseños aleatorios mediante programación agents/
:
agent.py
: ubicación de las clases de agentesbenchmarking.py
: muestra trayectorias de agentes (tanto capacitados como planificadores) y carga varios modelos planning/
:
planners.py
: lógica de planificación de agentes casi óptimasearch.py
: A* búsqueda y lógica de ruta más corta human_aware_rl
contiene:
ppo/
:
ppo_rllib.py
: módulo principal donde reside el código para capacitar a un agente de PPO. Esto incluye un contenedor compatible con rllib en OvercookedEnv
, utilidades para convertir clases Policy
de rllib en Agent
Overcooked, así como funciones de utilidad y devoluciones de llamadas.ppo_rllib_client.py
Código de controlador para configurar e iniciar la capacitación de un agente. Más detalles sobre el uso a continuaciónppo_rllib_from_params_client.py
: capacita a un agente con PPO en Overcooked con MDP variablesppo_rllib_test.py
Pruebas de reproducibilidad para controles de cordura localesrun_experiments.sh
Script para capacitar agentes en 5 diseños clásicostrained_example/
Modelo previamente entrenado para fines de prueba rllib/
:
rllib.py
: agente rllib y utilidades de capacitación que utilizan API recocidasutils.py
: utilidades para lo anteriortests.py
: pruebas preliminares para lo anterior imitation/
:
behavior_cloning_tf2.py
: Módulo para entrenar, guardar y cargar un modelo BCbehavior_cloning_tf2_test.py
: contiene pruebas de reproducibilidad básicas, así como pruebas unitarias para los distintos componentes del módulo bc. human/
:
process_data.py
para procesar datos humanos en formatos específicos para ser utilizados por algoritmos DRLdata_processing_utils.py
para lo anterior utils.py
: utilidades para el repositorio
overcooked_demo
contiene:
server/
:
app.py
: La aplicación Flaskgame.py
: La lógica principal del juego. Las transiciones de estado son manejadas por el objeto overcooked.Gridworld incrustado en el entorno del juego.move_agents.py
: un script que simplifica la copia de puntos de control al directorio de agentes. Las instrucciones de uso se pueden encontrar dentro del archivo o ejecutando python move_agents.py -h
up.sh
: script de Shell para activar el servidor Docker que aloja el juego.
Consulte este Google Colab para obtener un código de muestra para visualizar trayectorias en Python.
Hemos incorporado un cuaderno que guía a los usuarios en el proceso de formación, carga y evaluación de agentes. Idealmente, nos gustaría permitir a los usuarios ejecutar el cuaderno en Google Colab; sin embargo, debido a que el kernel predeterminado de Colab es Python 3.10 y nuestro repositorio está optimizado para Python 3.7, algunas funciones actualmente son incompatibles con Colab. Para brindar una experiencia perfecta, hemos preejecutado todas las celdas del portátil, lo que le permite ver el resultado esperado cuando lo ejecuta localmente siguiendo la configuración adecuada.
Overcooked_demo también puede iniciar un juego interactivo en el navegador para visualizaciones. Los detalles se pueden encontrar en su archivo README.
Los datos sin procesar utilizados en el entrenamiento son >100 MB, lo que hace que sea inconveniente distribuirlos a través de git. El código utiliza marcos de datos seleccionados para entrenamiento y prueba, pero en caso de que necesite datos originales, puede encontrarlos aquí.
Si tiene problemas o preguntas, puede comunicarse con Micah Carroll en [email protected].