DeepMind Lab은 ioquake3 및 기타 오픈 소스 소프트웨어를 통해 id Software의 Quake III Arena를 기반으로 하는 3D 학습 환경입니다.
DeepMind Lab은 학습 에이전트를 위한 까다로운 3D 탐색 및 퍼즐 해결 작업 제품군을 제공합니다. 주요 목적은 인공 지능, 특히 심층 강화 학습 연구를 위한 테스트베드 역할을 하는 것입니다.
면책조항: 이 제품은 공식 Google 제품이 아닙니다.
연구에 DeepMind Lab을 사용하고 DeepMind Lab 환경을 인용하고 싶다면 DeepMind Lab 논문을 인용하는 것이 좋습니다.
[email protected]으로 연락하실 수 있습니다.
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
다음은 종속성이 없는 경우 설치하는 방법을 포함하여 좀 더 자세한 빌드 문서입니다.
컴파일러 최적화를 활성화하려면 각 bazel build
, bazel test
및 bazel run
명령에 --compilation_mode=opt
플래그 또는 짧게 -c opt
플래그를 전달하세요. 간결성을 위해 여기 예제에서는 플래그가 생략되었지만 성능이 중요한 실제 교육 및 평가에는 사용해야 합니다.
사람의 입력 컨트롤을 사용하여 게임을 테스트하려면 다음을 실행하세요.
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 API에 설명된 대로 Lua 스크립트를 사용하여 구성할 수 있습니다.
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 규칙은 x86 기반 Linux에만 적용됩니다. 다른 플랫폼에서 빌드하려면 해당 BUILD 파일을 편집해야 할 가능성이 높습니다.
메시지 다이제스트 알고리즘은 해당 RFC의 참조 구현에서 가져온 이 패키지( //third_party/md
)에 포함되어 있습니다. "일반 강화 학습 API"는 DeepMind Lab 작성자가 만든 //third_party/rl_api
에 포함되어 있습니다. 이 코드는 이식 가능합니다.
EGL 헤더는 www.khronos.org/registry/EGL의 Khronos OpenGL/OpenGL ES XML API 레지스트리에서 가져온 이 패키지( //third_party/GL/{
EGL
,
KHR
}
)에 포함되어 있습니다. X에 대한 EGL의 종속성을 제거하기 위해 헤더가 약간 수정되었습니다.
몇 가지 추가 라이브러리가 필요하지만 어떤 형태로도 제공되지 않습니다. 시스템에 있어야 합니다.
glib
에 필요)--define headless=...
빌드 설정에 따라 EGL 또는 GLX를 통한 하드웨어 가속 렌더링이나 OSMesa를 통한 소프트웨어 렌더링을 사용할 수 있습니다.빌드 규칙은 GCC와 관련된 몇 가지 컴파일러 설정을 사용합니다. 컴파일러에서 일부 플래그를 인식하지 못하는 경우(일반적으로 특정 경고 표시 제외) 해당 플래그를 편집해야 할 수도 있습니다. 경고는 시끄럽지만 무해해야 합니다.