5 des mises en page disponibles. Les nouvelles mises en page sont faciles à coder en dur ou à générer par programme.
Overcooked-AI est un environnement de référence pour l'exécution de tâches homme-IA entièrement coopératives, basé sur le jeu vidéo très populaire Overcooked.
Le but du jeu est de livrer des soupes le plus rapidement possible. Chaque soupe nécessite de placer jusqu'à 3 ingrédients dans une casserole, d'attendre que la soupe soit cuite, puis de demander à un agent de récupérer la soupe et de la livrer. Les agents doivent répartir les tâches à la volée et se coordonner efficacement afin d'obtenir une récompense élevée.
Vous pouvez essayer le jeu ici (en jouant avec des agents DRL préalablement formés). Pour jouer avec vos propres agents formés en utilisant cette interface, ou pour collecter davantage de données humain-IA ou humain-humain, vous pouvez utiliser le code ici. Vous pouvez trouver des données de gameplay humain-humain et humain-IA déjà collectées ici.
Les implémentations DRL compatibles avec l'environnement sont incluses dans le dépôt en tant que sous-module sous src/human_aware_rl.
L'ancien human_aware_rl est obsolète et ne doit être utilisé que pour reproduire les résultats de l'article de 2019 : Sur l'utilité de l'apprentissage sur les humains pour la coordination homme-IA (voir également notre article de blog).
Pour une utilisation simple de l'environnement, il vaut la peine d'envisager d'utiliser ce wrapper d'environnement.
Vous pouvez installer le fichier wheel précompilé en utilisant pip.
pip install overcooked-ai
Notez que les versions de PyPI sont stables mais peu fréquentes. Pour les fonctionnalités de développement les plus récentes, créez à partir des sources avec pip install -e .
.
Il est utile de configurer un environnement conda avec Python 3.7 (virtualenv fonctionne aussi) :
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
Cloner le dépôt
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
Enfin, utilisez les outils de configuration Python pour installer localement
Si vous souhaitez simplement utiliser l'environnement :
pip install -e .
Si vous avez également besoin des implémentations DRL (vous devrez peut-être les saisir dans votre terminal sous la forme pip install -e '.[harl]'
) :
pip install -e .[harl]
Lors de la construction à partir des sources, vous pouvez vérifier l'installation en exécutant la suite de tests unitaires Overcooked. Les commandes suivantes doivent toutes être exécutées à partir du répertoire racine du projet overcooked_ai
:
python testing/overcooked_test.py
Pour vérifier si humam_aware_rl
est correctement installé, vous pouvez exécuter la commande suivante depuis le répertoire src/human_aware_rl
:
$ ./run_tests.sh
Cela exécutera tous les tests appartenant au module human_aware_rl. Vous pouvez consulter le README dans le sous-module pour obtenir des instructions sur l'exécution de tests spécifiques à une cible. Cela peut être lancé à partir de n’importe quel répertoire.
Si vous envisagez d'utiliser le code de planification de manière intensive, vous devez exécuter la suite de tests complète qui vérifie tous les outils accessoires Overcooked (cela peut prendre 5 à 10 minutes) :
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
contient :
mdp/
:
overcooked_mdp.py
: logique principale du jeu Overcookedovercooked_env.py
: classes d'environnement construites sur le mdp Overcookedlayout_generator.py
: fonctions pour générer des mises en page aléatoires par programme agents/
:
agent.py
: emplacement des classes d'agentbenchmarking.py
: échantillonner les trajectoires des agents (à la fois formés et planificateurs) et charger divers modèles planning/
:
planners.py
: logique de planification d'agent quasi optimalesearch.py
: logique de recherche A* et de chemin le plus court human_aware_rl
contient :
ppo/
:
ppo_rllib.py
: module principal où réside le code de formation d'un agent PPO. Cela inclut un wrapper compatible rllib sur OvercookedEnv
, des utilitaires pour convertir les classes Policy
rllib en Overcooked Agent
, ainsi que des fonctions utilitaires et des rappels.ppo_rllib_client.py
Code du driver pour configurer et lancer la formation d'un agent. Plus de détails sur l'utilisation ci-dessousppo_rllib_from_params_client.py
: former un agent avec PPO dans Overcooked avec des MDP variablesppo_rllib_test.py
Tests de reproductibilité pour les contrôles de cohérence locauxrun_experiments.sh
Script pour former les agents sur 5 mises en page classiquestrained_example/
Modèle pré-entraîné à des fins de test rllib/
:
rllib.py
: agent rllib et utilitaires de formation qui utilisent les API Overcookedutils.py
: utils pour ce qui précèdetests.py
: tests préliminaires pour ce qui précède imitation/
:
behavior_cloning_tf2.py
: Module de formation, d'enregistrement et de chargement d'un modèle BCbehavior_cloning_tf2_test.py
: Contient des tests de reproductibilité de base ainsi que des tests unitaires pour les différents composants du module bc. human/
:
process_data.py
pour traiter les données humaines dans des formats spécifiques à utiliser par les algorithmes DRLdata_processing_utils.py
pour ce qui précède utils.py
: utils pour le dépôt
overcooked_demo
contient :
server/
:
app.py
: L'application Flaskgame.py
: La logique principale du jeu. Les transitions d'état sont gérées par l'objet overcooked.Gridworld intégré dans l'environnement de jeumove_agents.py
: Un script qui simplifie la copie des points de contrôle dans le répertoire des agents. Les instructions d'utilisation peuvent être trouvées dans le fichier ou en exécutant python move_agents.py -h
up.sh
: Script Shell pour faire tourner le serveur Docker qui héberge le jeu
Consultez ce Google Colab pour un exemple de code permettant de visualiser des trajectoires en python.
Nous avons incorporé un cahier qui guide les utilisateurs dans le processus de formation, de chargement et d'évaluation des agents. Idéalement, nous aimerions permettre aux utilisateurs d'exécuter le notebook dans Google Colab ; cependant, étant donné que le noyau par défaut de Colab est Python 3.10 et que notre référentiel est optimisé pour Python 3.7, certaines fonctions sont actuellement incompatibles avec Colab. Pour offrir une expérience transparente, nous avons pré-exécuté toutes les cellules du bloc-notes, vous permettant de visualiser le résultat attendu lors de son exécution locale après la configuration appropriée.
Overcooked_demo peut également démarrer un jeu interactif dans le navigateur pour des visualisations. Les détails peuvent être trouvés dans son README
Les données brutes utilisées dans la formation sont >100 Mo, ce qui rend leur distribution via git peu pratique. Le code utilise des trames de données marinées pour la formation et les tests, mais si l'on a besoin de données originales, elles peuvent être trouvées ici
Si vous avez des problèmes ou des questions, vous pouvez contacter Micah Carroll à [email protected].