DeepMind Lab — это среда 3D-обучения, основанная на Quake III Arena от id Software с использованием ioquake3 и другого программного обеспечения с открытым исходным кодом.
DeepMind Lab предоставляет обучающимся агентам набор сложных задач по 3D-навигации и решению головоломок. Его основная цель — служить испытательным стендом для исследований в области искусственного интеллекта, особенно глубокого обучения с подкреплением.
Отказ от ответственности: это не официальный продукт Google.
Если вы используете DeepMind Lab в своих исследованиях и хотели бы сослаться на среду DeepMind Lab , мы предлагаем вам сослаться на статью DeepMind Lab.
Вы можете связаться с нами по адресу [email protected].
Загрузите Bazel с bazel.io.
Клонируйте DeepMind Lab, например, запустив
$ git clone https://github.com/deepmind/lab
$ cd lab
Для живого примера случайного агента запустите
lab$ bazel run :python_random_agent --define graphics=sdl --
--length=10000 --width=640 --height=480
Вот более подробная документация по сборке, в том числе о том, как установить зависимости, если у вас их нет.
Чтобы включить оптимизацию компилятора, передайте флаг --compilation_mode=opt
или для краткости -c opt
каждой команде bazel build
, bazel test
и bazel run
. Флаг опущен в приведенных здесь примерах для краткости, но его следует использовать для реального обучения и оценки, когда производительность имеет значение.
Чтобы протестировать игру с использованием элементов управления вводом человека, запустите
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
Оставьте параметр logToStdErr
выключенным, чтобы отключить большую часть вывода журнала.
Значения наблюдений, предоставляемые средой, можно выводить на каждом этапе, добавляя флаг --observation OBSERVATION_NAME
для каждого интересующего наблюдения.
lab$ bazel run :game -- --level_script=lt_chasm --observation VEL.TRANS --observation VEL.ROT
DeepMind Lab поставляется с примером случайного агента в python/random_agent.py
, который можно использовать в качестве отправной точки для реализации обучающего агента. Чтобы позволить этому агенту взаимодействовать с DeepMind Lab для обучения, запустите
lab$ bazel run :python_random_agent
API Python используется для взаимодействия агента со средой. Мы также предоставляем привязки к общему API DeepMind «dm_env» для обучения с подкреплением, а также способ создания автономного пакета PIP; подробности см. в отдельной документации.
DeepMind Lab поставляется с разными уровнями, реализующими разные задачи. Эти задачи можно настроить с помощью сценариев Lua, как описано в Lua API.
DeepMind Lab построена на игровом движке ioquake3 и использует инструменты q3map2 и bspc для создания карт. Исправления ошибок и исправления, возникающие в этих проектах, лучше всего исправлять на начальном этапе, а затем объединять в DeepMind Lab .
bspc взят с github.com/TTimo/bspc, редакция d9a372db3fb6163bc49ead41c76c801a3d14cf80. Локальных модификаций практически нет, хотя мы интегрируем этот код с основным кодом ioq3 и не используем их копию в каталоге deps
. Мы ожидаем, что этот код будет стабильным.
q3map2 взят с github.com/TTimo/GtkRadiant, ревизия d3d00345c542c8d7cc74e2e8a577bdf76f79c701. Несколько незначительных локальных изменений добавляют синхронизацию. Мы также ожидаем, что этот код будет стабильным.
ioquake3 взят с github.com/ioquake/ioq3, ревизия 29db64070aa0bae49953bddbedbed5e317af48ba. Код содержит обширные изменения и дополнения. Мы стремимся время от времени объединять изменения, внесенные в исходную версию.
Мы очень благодарны сопровождающим этих репозиториев за всю их напряженную работу по поддержанию высококачественных кодовых баз.
DeepMind Lab в настоящее время поставляется только в виде исходного кода. Это зависит от нескольких внешних программных библиотек, которые мы поставляем разными способами:
Библиотеки zlib
, glib
, libxml2
, jpeg
и png
упоминаются как внешние источники Bazel, а также предоставляются файлы Bazel BUILD. Зависимый код сам по себе должен быть достаточно переносимым, но правила BUILD, которые мы поставляем, специфичны для Linux на x86. Чтобы использовать другую платформу, вам, скорее всего, придется отредактировать эти файлы BUILD.
Алгоритмы дайджеста сообщений включены в этот пакет (в //third_party/md
), взятые из эталонных реализаций соответствующих RFC. «Общий API обучения с подкреплением» включен в //third_party/rl_api
, который также был создан авторами DeepMind Lab . Этот код является переносимым.
Заголовки EGL включены в этот пакет (в //third_party/GL/{
EGL
,
KHR
}
), взятый из реестра Khronos OpenGL/OpenGL ES XML API по адресу www.khronos.org/registry/EGL. Заголовки были немного изменены, чтобы устранить зависимость EGL от X.
Требуется несколько дополнительных библиотек, но они не поставляются ни в каком виде; они должны присутствовать в вашей системе:
glib
)--define headless=...
Правила сборки используют несколько настроек компилятора, специфичных для GCC. Если некоторые флаги не распознаются вашим компилятором (обычно это специальные подавления предупреждений), возможно, вам придется отредактировать эти флаги. Предупреждения должны быть шумными, но безвредными.