DeepMind Lab ist eine 3D-Lernumgebung, die auf Quake III Arena von id Software über ioquake3 und anderer Open-Source-Software basiert.
DeepMind Lab bietet eine Reihe anspruchsvoller 3D-Navigations- und Rätsellösungsaufgaben für Lernagenten. Sein Hauptzweck besteht darin, als Testumgebung für die Forschung im Bereich der künstlichen Intelligenz, insbesondere des Deep Reinforcement Learning, zu fungieren.
Haftungsausschluss: Dies ist kein offizielles Google-Produkt.
Wenn Sie DeepMind Lab in Ihrer Forschung nutzen und die DeepMind Lab- Umgebung zitieren möchten, empfehlen wir Ihnen, das DeepMind Lab-Papier zu zitieren.
Sie erreichen uns unter [email protected].
Holen Sie sich Bazel von bazel.io.
Klonen Sie DeepMind Lab, z. B. durch Ausführen
$ git clone https://github.com/deepmind/lab
$ cd lab
Führen Sie Folgendes aus, um ein Live-Beispiel eines zufälligen Agenten zu erhalten
lab$ bazel run :python_random_agent --define graphics=sdl --
--length=10000 --width=640 --height=480
Hier finden Sie eine detailliertere Build-Dokumentation, einschließlich der Installation von Abhängigkeiten, wenn Sie diese nicht haben.
Um Compiler-Optimierungen zu aktivieren, übergeben Sie das Flag --compilation_mode=opt
, oder kurz -c opt
, an jeden bazel build
, bazel test
und bazel run
Befehl. Der Kürze halber wird die Flagge in den Beispielen hier weggelassen, sie sollte jedoch für echtes Training und Bewertung verwendet werden, bei denen es auf die Leistung ankommt.
Um das Spiel mit menschlichen Eingabesteuerungen zu testen, führen Sie Folgendes aus:
lab$ bazel run :game -- --level_script=tests/empty_room_test --level_setting=logToStdErr=true
# or:
lab$ bazel run :game -- -l tests/empty_room_test -s logToStdErr=true
Lassen Sie die logToStdErr
Einstellung deaktiviert, um die meisten Protokollausgaben zu deaktivieren.
Die Werte der Beobachtungen, die die Umgebung offenlegt, können bei jedem Schritt gedruckt werden, indem für jede interessierende Beobachtung ein Flag --observation OBSERVATION_NAME
hinzugefügt wird.
lab$ bazel run :game -- --level_script=lt_chasm --observation VEL.TRANS --observation VEL.ROT
DeepMind Lab wird mit einem Beispiel-Zufallsagenten in python/random_agent.py
ausgeliefert, der als Ausgangspunkt für die Implementierung eines Lernagenten verwendet werden kann. Um diesen Agenten für das Training mit DeepMind Lab interagieren zu lassen, führen Sie Folgendes aus:
lab$ bazel run :python_random_agent
Die Python-API wird für Interaktionen zwischen Agent und Umgebung verwendet. Wir bieten auch Bindungen an die allgemeine API „dm_env“ von DeepMind für verstärktes Lernen sowie eine Möglichkeit, ein eigenständiges PIP-Paket zu erstellen; Weitere Informationen finden Sie in der separaten Dokumentation.
DeepMind Lab wird mit verschiedenen Ebenen geliefert, die unterschiedliche Aufgaben implementieren. Diese Aufgaben können mithilfe von Lua-Skripten konfiguriert werden, wie in der Lua-API beschrieben.
DeepMind Lab basiert auf der ioquake3- Game-Engine und verwendet die Tools q3map2 und bspc zur Kartenerstellung. Fehlerbehebungen und Bereinigungen, die aus diesen Projekten stammen, werden am besten im Vorfeld behoben und dann in DeepMind Lab zusammengeführt.
bspc stammt von github.com/TTimo/bspc, Revision d9a372db3fb6163bc49ead41c76c801a3d14cf80. Es gibt praktisch keine lokalen Änderungen, obwohl wir diesen Code in den Hauptcode von ioq3 integrieren und deren Kopie nicht im deps
-Verzeichnis verwenden. Wir gehen davon aus, dass dieser Code stabil ist.
q3map2 stammt von github.com/TTimo/GtkRadiant, Revision d3d00345c542c8d7cc74e2e8a577bdf76f79c701. Ein paar kleinere lokale Änderungen fügen die Synchronisierung hinzu. Wir erwarten auch, dass dieser Code stabil ist.
ioquake3 stammt von github.com/ioquake/ioq3, Revision 29db64070aa0bae49953bddbedbed5e317af48ba. Der Code enthält umfangreiche Änderungen und Ergänzungen. Unser Ziel ist es, gelegentlich Upstream-Änderungen zusammenzuführen.
Wir sind den Betreuern dieser Repositories sehr dankbar für all ihre harte Arbeit bei der Pflege qualitativ hochwertiger Codebasen.
DeepMind Lab wird derzeit nur als Quellcode geliefert. Es hängt von einigen externen Softwarebibliotheken ab, die wir auf verschiedene Arten bereitstellen:
Die Bibliotheken zlib
, glib
, libxml2
, jpeg
und png
werden als externe Bazel-Quellen referenziert und Bazel BUILD-Dateien werden bereitgestellt. Der abhängige Code selbst sollte einigermaßen portierbar sein, aber die von uns ausgelieferten BUILD-Regeln sind spezifisch für Linux auf x86. Um auf einer anderen Plattform zu bauen, müssen Sie höchstwahrscheinlich diese BUILD-Dateien bearbeiten.
In diesem Paket (in //third_party/md
) sind Nachrichtenauszugsalgorithmen enthalten, die aus den Referenzimplementierungen ihrer jeweiligen RFCs stammen. Eine „generische Reinforcement-Learning-API“ ist in //third_party/rl_api
enthalten, die ebenfalls von den DeepMind Lab- Autoren erstellt wurde. Dieser Code ist portierbar.
EGL-Header sind in diesem Paket enthalten (in //third_party/GL/{
EGL
,
KHR
}
), entnommen aus der Khronos OpenGL/OpenGL ES XML API Registry unter www.khronos.org/registry/EGL. Die Header wurden leicht geändert, um die Abhängigkeit von EGL von X zu beseitigen.
Mehrere zusätzliche Bibliotheken sind erforderlich, werden aber in keiner Form mitgeliefert; Sie müssen auf Ihrem System vorhanden sein:
glib
)--define headless=...
entweder hardwarebeschleunigtes Rendering über EGL oder GLX oder Software-Rendering über OSMesa verwenden.Die Build-Regeln verwenden einige Compiler-Einstellungen, die speziell für GCC gelten. Wenn einige Flags von Ihrem Compiler nicht erkannt werden (normalerweise handelt es sich dabei um bestimmte Warnungsunterdrückungen), müssen Sie diese Flags möglicherweise bearbeiten. Die Warnungen sollten laut, aber harmlos sein.