DeepMind Lab คือสภาพแวดล้อมการเรียนรู้ 3 มิติที่ใช้ Quake III Arena ของ id Software ผ่าน ioquake3 และซอฟต์แวร์โอเพ่นซอร์สอื่นๆ
DeepMind Lab นำเสนอชุดการนำทาง 3 มิติที่ท้าทายและงานไขปริศนาสำหรับตัวแทนการเรียนรู้ วัตถุประสงค์หลักคือเพื่อทำหน้าที่เป็นพื้นที่ทดสอบสำหรับการวิจัยด้านปัญญาประดิษฐ์ โดยเฉพาะอย่างยิ่งการเรียนรู้แบบเสริมกำลังเชิงลึก
ข้อจำกัดความรับผิดชอบ: นี่ไม่ใช่ผลิตภัณฑ์อย่างเป็นทางการของ Google
หากคุณใช้ DeepMind Lab ในการวิจัยและต้องการอ้างอิงสภาพแวดล้อม DeepMind Lab เราขอแนะนำให้คุณอ้างอิงรายงานของ DeepMind Lab
คุณสามารถติดต่อเราได้ที่ [email protected]
รับ Bazel จาก bazel.io
Clone 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
for short ไปยังแต่ละคำสั่ง 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 ใช้สำหรับการโต้ตอบระหว่างเอเจนต์และสภาพแวดล้อม นอกจากนี้เรายังจัดเตรียมการเชื่อมโยง API ทั่วไป "dm_env" ของ DeepMind เพื่อการเรียนรู้แบบเสริมกำลัง รวมถึงวิธีสร้างแพ็คเกจ 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 Registry ที่ www.khronos.org/registry/EGL ส่วนหัวได้รับการแก้ไขเล็กน้อยเพื่อลบการพึ่งพา EGL บน X
จำเป็นต้องมีห้องสมุดเพิ่มเติมหลายแห่ง แต่ไม่ได้จัดส่งในรูปแบบใด ๆ จะต้องมีอยู่ในระบบของคุณ:
glib
)--define headless=...
บิลด์กฎการสร้างใช้การตั้งค่าคอมไพเลอร์บางอย่างที่เฉพาะเจาะจงสำหรับ GCC หากคอมไพเลอร์ของคุณไม่รู้จักแฟล็กบางตัว (โดยทั่วไปจะเป็นการระงับคำเตือนเฉพาะ) คุณอาจต้องแก้ไขแฟล็กเหล่านั้น คำเตือนควรมีเสียงดังแต่ไม่เป็นอันตราย