DeepMind Lab是通过ioquake3和其他开源软件基于 id Software 的 Quake III Arena的 3D 学习环境。
DeepMind Lab为学习代理提供了一套具有挑战性的 3D 导航和解谜任务。它的主要目的是作为人工智能研究的试验台,尤其是深度强化学习。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
从 bazel.io获取Bazel。
克隆 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
Here is some more detailed build documentation,包括如果没有依赖项,如何安装它们。
要启用编译器优化,请将标志传递给每个--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
Python API用于代理与环境的交互。我们还提供绑定到 DeepMind 用于强化学习的“ dm_env ”通用 API,以及构建独立 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
和库被引用为外部 Bazel 源libxml2
,jpeg
并png
提供了 Bazel BUILD 文件。依赖代码本身应该是相当可移植的,但我们发布的构建规则是特定于 Linux on x86 的。要在不同的平台上构建,您很可能必须编辑这些 BUILD 文件。
消息摘要算法包含在这个包中(在 中 //third_party/md
),取自它们各自 RFC 的参考实现。中包含一个“通用强化学习 API” //third_party/rl_api
,它也是由DeepMind Lab作者创建的。此代码是可移植的。
EGL 标头包含在这个包中(在 中 ),取自 Khronos OpenGL/OpenGL ES XML API Registry, 网址为www.khronos.org/registry/EGL。标头已略作修改,以消除 EGL 对 X 的依赖性。//third_party/GL/{
EGL
,
KHR
}
需要几个额外的库,但不以任何形式提供;它们必须存在于您的系统上:
glib
)--define headless=...
构建设置。构建规则使用了一些特定于 GCC 的编译器设置。如果您的编译器无法识别某些标志(通常是特定的警告抑制),您可能必须编辑这些标志。警告应该是嘈杂但无害的。
[/hidecontent]