DeepMind Lab عبارة عن بيئة تعليمية ثلاثية الأبعاد تعتمد على Quake III Arena من id Software عبر ioquake3 وغيرها من البرامج مفتوحة المصدر.
يوفر DeepMind Lab مجموعة من المهام الصعبة للتنقل ثلاثي الأبعاد وحل الألغاز لوكلاء التعلم. والغرض الأساسي منه هو أن يكون بمثابة اختبار للبحث في مجال الذكاء الاصطناعي، وخاصة التعلم المعزز العميق.
إخلاء المسؤولية: هذا ليس أحد منتجات Google الرسمية.
إذا كنت تستخدم DeepMind Lab في بحثك وترغب في الاستشهاد ببيئة DeepMind Lab ، فإننا نقترح عليك الاستشهاد بمقالة DeepMind Lab.
يمكنك التواصل معنا على [email protected].
احصل على بازل من bazel.io.
استنساخ مختبر DeepMind، على سبيل المثال عن طريق التشغيل
$ 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 للتفاعلات بين الوكيل والبيئة. كما نقدم أيضًا روابط لواجهة برمجة التطبيقات العامة "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 الخاصة بها. تم تضمين "واجهة برمجة تطبيقات التعلم المعزز العامة" في //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=...
build.تستخدم قواعد البناء بعض إعدادات المترجم الخاصة بدول مجلس التعاون الخليجي. إذا لم يتعرف المترجم على بعض العلامات (عادةً ما تكون هذه العلامات عبارة عن عمليات منع تحذيرية محددة)، فقد يتعين عليك تحرير تلك العلامات. يجب أن تكون التحذيرات صاخبة ولكنها غير ضارة.