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
這裡有一些更詳細的建置文檔,包括如何安裝依賴項(如果沒有)。
若要啟用編譯器最佳化,請將標誌--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
、 libxml2
、 jpeg
和png
函式庫被引用為外部 Bazel 來源,並提供了 Bazel BUILD 檔案。依賴程式碼本身應該具有相當的可移植性,但我們發布的 BUILD 規則特定於 x86 上的 Linux。要在不同的平台上構建,您很可能必須編輯這些 BUILD 檔案。
訊息摘要演算法包含在此套件中(在//third_party/md
中),取自各自 RFC 的參考實作。 //third_party/rl_api
中包含“通用強化學習 API”,它也是由DeepMind 實驗室作者創建的。該代碼是可移植的。
EGL 標頭包含在此套件中(在//third_party/GL/{
EGL
,
KHR
}
中),取自 www.khronos.org/registry/EGL 上的 Khronos OpenGL/OpenGL ES XML API 註冊表。標頭已稍作修改,以消除 EGL 對 X 的依賴。
需要幾個額外的庫,但不以任何形式提供;它們必須存在於您的系統上:
glib
需要)--define headless=...
建置設定。建置規則使用一些特定於 GCC 的編譯器設定。如果您的編譯器無法識別某些標誌(通常是特定的警告抑制),您可能必須編輯這些標誌。警告應該是吵鬧但無害的。