5 der verfügbaren Layouts. Neue Layouts können einfach fest codiert oder programmgesteuert generiert werden.
Overcooked-AI ist eine Benchmark-Umgebung für die vollständig kooperative Aufgabenausführung von Mensch und KI, basierend auf dem äußerst beliebten Videospiel Overcooked.
Ziel des Spiels ist es, Suppen so schnell wie möglich auszuliefern. Für jede Suppe müssen bis zu drei Zutaten in einen Topf gegeben, darauf gewartet werden, dass die Suppe kocht, und dann von einem Agenten abgeholt und geliefert werden. Die Agenten sollten Aufgaben spontan aufteilen und effektiv koordinieren, um eine hohe Belohnung zu erzielen.
Sie können das Spiel hier ausprobieren (spielen Sie mit einigen zuvor ausgebildeten DRL-Agenten). Um mit Ihren eigenen geschulten Agenten über diese Schnittstelle zu spielen oder mehr Mensch-KI- oder Mensch-Mensch-Daten zu sammeln, können Sie den Code hier verwenden. Hier finden Sie einige bereits gesammelte Mensch-Mensch- und Mensch-KI-Gameplay-Daten.
Mit der Umgebung kompatible DRL-Implementierungen sind im Repo als Submodul unter src/human_aware_rl enthalten.
Das alte human_aware_rl ist veraltet und sollte nur zur Reproduktion der Ergebnisse im Papier von 2019 verwendet werden: „On the Utility of Learning about Humans for Human-AI Coordination“ (siehe auch unseren Blogbeitrag).
Für eine einfache Nutzung der Umgebung lohnt es sich, über die Verwendung dieses Umgebungs-Wrappers nachzudenken.
Sie können die vorkompilierte Raddatei mit pip installieren.
pip install overcooked-ai
Beachten Sie, dass PyPI-Veröffentlichungen stabil, aber selten sind. Für die aktuellsten Entwicklungsfunktionen erstellen Sie mit pip install -e .
.
Es ist nützlich, eine Conda-Umgebung mit Python 3.7 einzurichten (virtualenv funktioniert auch):
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
Klonen Sie das Repo
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
Verwenden Sie abschließend die Python-Setup-Tools für die lokale Installation
Wenn Sie nur die Umgebung nutzen möchten:
pip install -e .
Wenn Sie auch die DRL-Implementierungen benötigen (möglicherweise müssen Sie dies in Ihrem Terminal als pip install -e '.[harl]'
eingeben):
pip install -e .[harl]
Wenn Sie aus dem Quellcode erstellen, können Sie die Installation überprüfen, indem Sie die Unit-Testsuite Overcooked ausführen. Die folgenden Befehle sollten alle im Stammverzeichnis des Projekts overcooked_ai
ausgeführt werden:
python testing/overcooked_test.py
Um zu überprüfen, ob humam_aware_rl
korrekt installiert ist, können Sie den folgenden Befehl aus dem Verzeichnis src/human_aware_rl
ausführen:
$ ./run_tests.sh
Dadurch werden alle Tests ausgeführt, die zum Modul human_aware_rl gehören. Anweisungen zum Ausführen zielspezifischer Tests finden Sie in der README-Datei im Submodul. Dies kann von jedem Verzeichnis aus initiiert werden.
Wenn Sie den Planungscode ausgiebig nutzen möchten, sollten Sie die vollständige Testsuite ausführen, die alle Overcooked-Zubehörtools überprüft (dies kann 5–10 Minuten dauern):
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
enthält:
mdp/
:
overcooked_mdp.py
: Hauptlogik des Overcooked-Spielsovercooked_env.py
: Umgebungsklassen, die auf dem Overcooked-mdp basierenlayout_generator.py
: Funktionen zum programmgesteuerten Generieren zufälliger Layouts agents/
:
agent.py
: Speicherort der Agentenklassenbenchmarking.py
: Beispielverläufe von Agenten (sowohl geschulte als auch Planer) und Laden verschiedener Modelle planning/
:
planners.py
: Nahezu optimale Agentenplanungslogiksearch.py
: A*-Suche und Logik für den kürzesten Weg human_aware_rl
enthält:
ppo/
:
ppo_rllib.py
: Primärmodul, in dem sich Code zum Trainieren eines PPO-Agenten befindet. Dazu gehören ein rllib-kompatibler Wrapper für OvercookedEnv
, Dienstprogramme zum Konvertieren von rllib- Policy
in Overcooked Agent
sowie Dienstprogrammfunktionen und Rückrufeppo_rllib_client.py
Treibercode zum Konfigurieren und Starten des Trainings eines Agenten. Weitere Einzelheiten zur Nutzung finden Sie weiter untenppo_rllib_from_params_client.py
: Trainieren Sie einen Agenten mit PPO in Overcooked mit variablen MDPsppo_rllib_test.py
Reproduzierbarkeitstests für lokale Plausibilitätsprüfungenrun_experiments.sh
Skript zum Trainieren von Agenten auf 5 klassischen Layoutstrained_example/
Vorab trainiertes Modell für Testzwecke rllib/
:
rllib.py
: rllib-Agent und Trainings-Utils, die Overcooked APIs nutzenutils.py
: Utils für das oben Genanntetests.py
: Vorläufige Tests für das oben Genannte imitation/
:
behavior_cloning_tf2.py
: Modul zum Trainieren, Speichern und Laden eines BC-Modellsbehavior_cloning_tf2_test.py
: Enthält grundlegende Reproduzierbarkeitstests sowie Komponententests für die verschiedenen Komponenten des BC-Moduls. human/
:
process_data.py
zur Verarbeitung menschlicher Daten in bestimmten Formaten, die von DRL-Algorithmen verwendet werden sollendata_processing_utils.py
Hilfsprogramme für die oben genannten utils.py
: Utils für das Repo
overcooked_demo
enthält:
server/
:
app.py
: Die Flask-Appgame.py
: Die Hauptlogik des Spiels. Zustandsübergänge werden vom overcooked.Gridworld-Objekt verarbeitet, das in die Spielumgebung eingebettet istmove_agents.py
: Ein Skript, das das Kopieren von Prüfpunkten in das Agentenverzeichnis vereinfacht. Anweisungen zur Verwendung finden Sie in der Datei oder durch Ausführen von python move_agents.py -h
up.sh
: Shell-Skript zum Hochfahren des Docker-Servers, der das Spiel hostet
In diesem Google Colab finden Sie Beispielcode zur Visualisierung von Trajektorien in Python.
Wir haben ein Notizbuch integriert, das Benutzer durch den Prozess der Schulung, Beladung und Bewertung von Agenten führt. Idealerweise möchten wir Benutzern ermöglichen, das Notebook in Google Colab auszuführen; Da Colabs Standardkernel jedoch Python 3.10 ist und unser Repository für Python 3.7 optimiert ist, sind einige Funktionen derzeit nicht mit Colab kompatibel. Um ein nahtloses Erlebnis zu bieten, haben wir alle Zellen im Notebook vorab ausgeführt, sodass Sie die erwartete Ausgabe sehen können, wenn Sie es lokal nach dem entsprechenden Setup ausführen.
Overcooked_demo kann zur Visualisierung auch ein interaktives Spiel im Browser starten. Einzelheiten finden Sie in der README-Datei
Die im Training verwendeten Rohdaten sind >100 MB, was die Verteilung über Git unpraktisch macht. Der Code verwendet eingelegte Datenrahmen für Training und Tests. Falls Sie jedoch Originaldaten benötigen, finden Sie diese hier
Wenn Sie Probleme oder Fragen haben, können Sie Micah Carroll unter [email protected] kontaktieren.