DeepMind Lab est un environnement d'apprentissage 3D basé sur Quake III Arena d'id Software via ioquake3 et d'autres logiciels open source.
DeepMind Lab propose une suite de tâches difficiles de navigation 3D et de résolution d'énigmes pour les agents d'apprentissage. Son objectif premier est de servir de banc d’essai pour la recherche en intelligence artificielle, notamment en apprentissage par renforcement profond.
Avertissement : il ne s'agit pas d'un produit Google officiel.
Si vous utilisez DeepMind Lab dans vos recherches et souhaitez citer l'environnement DeepMind Lab , nous vous suggérons de citer l'article de DeepMind Lab.
Vous pouvez nous joindre à [email protected].
Obtenez Bazel sur bazel.io.
Cloner DeepMind Lab, par exemple en exécutant
$ git clone https://github.com/deepmind/lab
$ cd lab
Pour un exemple réel d'agent aléatoire, exécutez
lab$ bazel run :python_random_agent --define graphics=sdl --
--length=10000 --width=640 --height=480
Voici une documentation de construction plus détaillée, y compris comment installer les dépendances si vous ne les avez pas.
Pour activer les optimisations du compilateur, transmettez l'indicateur --compilation_mode=opt
, ou -c opt
en abrégé, à chaque commande bazel build
, bazel test
et bazel run
. Le drapeau est omis des exemples ici par souci de concision, mais il doit être utilisé pour une véritable formation et évaluation là où la performance compte.
Pour tester le jeu à l'aide de contrôles de saisie humaine, exécutez
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
Laissez le paramètre logToStdErr
désactivé pour désactiver la plupart des sorties de journaux.
Les valeurs des observations exposées par l'environnement peuvent être imprimées à chaque étape en ajoutant un indicateur --observation OBSERVATION_NAME
pour chaque observation d'intérêt.
lab$ bazel run :game -- --level_script=lt_chasm --observation VEL.TRANS --observation VEL.ROT
DeepMind Lab est livré avec un exemple d'agent aléatoire dans python/random_agent.py
qui peut être utilisé comme point de départ pour implémenter un agent d'apprentissage. Pour permettre à cet agent d'interagir avec DeepMind Lab pour la formation, exécutez
lab$ bazel run :python_random_agent
L'API Python est utilisée pour les interactions agent-environnement. Nous fournissons également des liaisons à l'API générale « dm_env » de DeepMind pour l'apprentissage par renforcement, ainsi qu'un moyen de créer un package PIP autonome ; voir la documentation séparée pour plus de détails.
DeepMind Lab est livré avec différents niveaux implémentant différentes tâches. Ces tâches peuvent être configurées à l'aide de scripts Lua, comme décrit dans l'API Lua.
DeepMind Lab est construit à partir du moteur de jeu ioquake3 et utilise les outils q3map2 et bspc pour la création de cartes. Les corrections de bogues et les nettoyages provenant de ces projets sont mieux corrigés en amont, puis fusionnés dans DeepMind Lab .
bspc est extrait de github.com/TTimo/bspc, révision d9a372db3fb6163bc49ead41c76c801a3d14cf80. Il n'y a pratiquement aucune modification locale, même si nous intégrons ce code avec le code principal ioq3 et n'utilisons pas leur copie dans le répertoire deps
. Nous nous attendons à ce que ce code soit stable.
q3map2 est extrait de github.com/TTimo/GtkRadiant, révision d3d00345c542c8d7cc74e2e8a577bdf76f79c701. Quelques modifications locales mineures ajoutent la synchronisation. Nous nous attendons également à ce que ce code soit stable.
ioquake3 est extrait de github.com/ioquake/ioq3, révision 29db64070aa0bae49953bddbedbed5e317af48ba. Le code contient d'importantes modifications et ajouts. Notre objectif est de fusionner occasionnellement les modifications en amont.
Nous sommes très reconnaissants envers les responsables de ces référentiels pour tout leur travail acharné visant à maintenir des bases de code de haute qualité.
DeepMind Lab est actuellement livré uniquement sous forme de code source. Cela dépend de quelques bibliothèques de logiciels externes, que nous livrons de plusieurs manières différentes :
Les bibliothèques zlib
, glib
, libxml2
, jpeg
et png
sont référencées comme sources Bazel externes et les fichiers Bazel BUILD sont fournis. Le code dépendant lui-même devrait être assez portable, mais les règles BUILD que nous fournissons sont spécifiques à Linux sur x86. Pour construire sur une plate-forme différente, vous devrez probablement modifier ces fichiers BUILD.
Les algorithmes de résumé de message sont inclus dans ce package (dans //third_party/md
), tirés des implémentations de référence de leurs RFC respectives. Une « API générique d'apprentissage par renforcement » est incluse dans //third_party/rl_api
, qui a également été créée par les auteurs de DeepMind Lab . Ce code est portable.
Les en-têtes EGL sont inclus dans ce package (dans //third_party/GL/{
EGL
,
KHR
}
), extraits du registre de l'API XML Khronos OpenGL/OpenGL ES sur www.khronos.org/registry/EGL. Les en-têtes ont été légèrement modifiés pour supprimer la dépendance d'EGL sur X.
Plusieurs bibliothèques supplémentaires sont requises mais ne sont livrées sous aucune forme ; ils doivent être présents sur votre système :
glib
)--define headless=...
.Les règles de construction utilisent quelques paramètres du compilateur spécifiques à GCC. Si certains indicateurs ne sont pas reconnus par votre compilateur (il s'agit généralement de suppressions d'avertissements spécifiques), vous devrez peut-être modifier ces indicateurs. Les avertissements doivent être bruyants mais inoffensifs.