DeepMind Lab es un entorno de aprendizaje 3D basado en Quake III Arena de id Software a través de ioquake3 y otro software de código abierto.
DeepMind Lab proporciona un conjunto de desafiantes tareas de resolución de acertijos y navegación 3D para agentes de aprendizaje. Su objetivo principal es actuar como banco de pruebas para la investigación en inteligencia artificial, especialmente el aprendizaje por refuerzo profundo.
Descargo de responsabilidad: este no es un producto oficial de Google.
Si utiliza DeepMind Lab en su investigación y le gustaría citar el entorno de DeepMind Lab , le sugerimos que cite el artículo de DeepMind Lab.
Puede comunicarse con nosotros en [email protected].
Obtenga Bazel de bazel.io.
Clonar DeepMind Lab, por ejemplo ejecutando
$ git clone https://github.com/deepmind/lab
$ cd lab
Para ver un ejemplo en vivo de un agente aleatorio, ejecute
lab$ bazel run :python_random_agent --define graphics=sdl --
--length=10000 --width=640 --height=480
Aquí hay documentación de compilación más detallada, que incluye cómo instalar dependencias si no las tiene.
Para habilitar las optimizaciones del compilador, pase la marca --compilation_mode=opt
, o -c opt
para abreviar, a cada comando bazel build
, bazel test
y bazel run
. La bandera se omite en los ejemplos aquí por motivos de brevedad, pero debe usarse para capacitación y evaluación reales donde el desempeño importa.
Para probar el juego usando controles de entrada humana, ejecuta
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
Deje la configuración logToStdErr
desactivada para desactivar la mayoría de las salidas de registros.
Los valores de las observaciones que expone el entorno se pueden imprimir en cada paso agregando una bandera --observation OBSERVATION_NAME
para cada observación de interés.
lab$ bazel run :game -- --level_script=lt_chasm --observation VEL.TRANS --observation VEL.ROT
DeepMind Lab viene con un agente aleatorio de ejemplo en python/random_agent.py
que puede usarse como punto de partida para implementar un agente de aprendizaje. Para permitir que este agente interactúe con DeepMind Lab para recibir capacitación, ejecute
lab$ bazel run :python_random_agent
La API de Python se utiliza para interacciones agente-entorno. También proporcionamos enlaces a la API general "dm_env" de DeepMind para el aprendizaje por refuerzo, así como una forma de crear un paquete PIP autónomo; consulte la documentación separada para obtener más detalles.
DeepMind Lab viene con diferentes niveles que implementan diferentes tareas. Estas tareas se pueden configurar mediante scripts de Lua, como se describe en la API de Lua.
DeepMind Lab está construido a partir del motor de juego ioquake3 y utiliza las herramientas q3map2 y bspc para la creación de mapas. Las correcciones de errores y las limpiezas que se originan con esos proyectos se solucionan mejor en fase inicial y luego se fusionan en DeepMind Lab .
bspc se tomó de github.com/TTimo/bspc, revisión d9a372db3fb6163bc49ead41c76c801a3d14cf80. Prácticamente no hay modificaciones locales, aunque integramos este código con el código principal ioq3 y no usamos su copia en el directorio deps
. Esperamos que este código sea estable.
q3map2 está tomado de github.com/TTimo/GtkRadiant, revisión d3d00345c542c8d7cc74e2e8a577bdf76f79c701. Algunas modificaciones locales menores añaden sincronización. También esperamos que este código sea estable.
ioquake3 está tomado de github.com/ioquake/ioq3, revisión 29db64070aa0bae49953bddbedbed5e317af48ba. El código contiene amplias modificaciones y adiciones. Nuestro objetivo es fusionar cambios ascendentes ocasionalmente.
Estamos muy agradecidos con los mantenedores de estos repositorios por todo su arduo trabajo para mantener bases de código de alta calidad.
Actualmente, DeepMind Lab se distribuye únicamente como código fuente. Depende de algunas bibliotecas de software externas, que enviamos de varias maneras diferentes:
Se hace referencia a las bibliotecas zlib
, glib
, libxml2
, jpeg
y png
como fuentes externas de Bazel y se proporcionan archivos Bazel BUILD. El código dependiente en sí debería ser bastante portátil, pero las reglas BUILD que enviamos son específicas de Linux en x86. Para construir en una plataforma diferente, lo más probable es que tengas que editar esos archivos BUILD.
Los algoritmos de resumen de mensajes se incluyen en este paquete (en //third_party/md
), tomados de las implementaciones de referencia de sus respectivos RFC. Se incluye una "API genérica de aprendizaje por refuerzo" en //third_party/rl_api
, que también ha sido creada por los autores de DeepMind Lab . Este código es portátil.
Los encabezados EGL se incluyen en este paquete (en //third_party/GL/{
EGL
,
KHR
}
), tomados del Registro API XML de Khronos OpenGL/OpenGL ES en www.khronos.org/registry/EGL. Los encabezados se han modificado ligeramente para eliminar la dependencia de EGL en X.
Se requieren varias bibliotecas adicionales, pero no se envían de ningún modo; deben estar presentes en su sistema:
glib
)--define headless=...
Las reglas de compilación utilizan algunas configuraciones del compilador que son específicas de GCC. Si su compilador no reconoce algunas banderas (normalmente serían supresiones de advertencias específicas), es posible que tenga que editar esas banderas. Las advertencias deben ser ruidosas pero inofensivas.