DeepMind Lab : 3D AI 学習環境
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/19/2017
* 本ページは、github 上の DeepMind/Labの README.md を動作確認・翻訳した上で適宜、補足説明したものです:
https://github.com/deepmind/lab/blob/master/README.md
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
DeepMind Lab は ioquake3 経由の id Software’s Quake III Arena と 他のオープンソースソフトウェア をベースとする 3D 学習環境です。
DeepMind Lab は学習エージェントのための挑戦的な 3D ナビゲーションとパズル解法タスクを提供します。その主な目的は人工知能、特に深層強化学習における研究のためのテストベッドとしての役割を果たすことです。
Linux 上で始めましょう
- bazel.io から Bazel を取得する。
- DeepMind Lab を clone します, e.g. by running
$ git clone https://github.com/deepmind/lab $ cd lab
- random エージェントのライブ・サンプルのためには、次を実行します :
$ bazel run :random_agent --define headless=false -- \ --length=10000 --width=640 --height=480
(訳注 : 以下は実行画面の一部を録画したものです。)
こちらに幾つか より詳細なビルド・ドキュメンテーション があり、(もしまだならば) 依存部をどのようにインストールするかを含みます。
人としてプレイ (Play as a human)
人の入力コントロールを使用してゲームをテストするためには、次を実行できます :
$ bazel run :game -- --level_script tests/demo_map
(訳注 : 以下は実行画面の一部を録画したものです。インタラクティブになりマウスやカーソルが使用可能となりました。)

エージェントを訓練する
DeepMind Lab は python/random_agent.py でサンプル random agent とともに提供しています、これは学習エージェントを実装するための開始点として使用できます。訓練のためにこのエージェントに DeepMind Lab と相互作用させるためには、次を実行します :
$ bazel run :random_agent
エージェント環境相互作用についての Python API は docs/python_api.md で記述されています。
DeepMind Lab は異なるタスクを実装して異なるレベルで提供しています。これらのタスクは Lua スクリプトを使用して構成可能で、docs/lua_api.md で記述されています。
アップストリーム・ソース
DeepMind Lab は ioquake3 ゲームエンジンから構築され、マップ作成にはツール q3map2 と bspc を使用しています。それらのプロジェクトに起因するバグフィックスとクリーンアップはアップストリームで最大限に fix されて DeepMind Lab にマージされています。
- bspc は github.com/TTimo/bspc から取得され、リビジョンは e6f90a2dc02916aa2298da6ace70a8333b3f2405 です。事実上はローカルでの変更はありませんが、このコードをメインの ioq3 コードと統合して deps ディレクトリのコピーは使用していません。このコードがステーブルであることを期待します。
- q3map2 は github.com/TTimo/GtkRadiant から取得され、リビジョンは 8557f1820f8e0c7cef9d52a78b2847fa401a4a95 です。2、3のマイナーなローカル変更は同期を追加して C99 を使用して前は可搬性がなかったあるいは定義されていない挙動を置き換える構築をしています。このコードがステーブルであることも期待します。
- ioquake3 は github.com/ioquake/ioq3 から取得され、リビジョンは 1c1e1f61f180596c925a4ac0eddba4806d1369cd です。このコードは広範囲の変更と追加を含みます。アップストリームの変更を時にマージするつもりです。
これらのレポジトリの保守者に高品質なコードベースを維持するためのハードワーク全てについて多大な感謝をしています。
外部依存、前提条件、そして移植ノート
DeepMind Lab は現在ソースコードのみとして提供しています。2、3の外部ソフトウェアライブラリに依存し、これらは幾つかの異なる方法で提供しています :
- zlib, glib, libxml2, jpeg と png ライブラリは外部 Bazel ソースとして参照され、Bazel BUILD ファイルが提供されます。依存コード自身は公正に可搬ですが、提供する BUILD ルールは x86 上の Linux 特有のものです。異なるプラットフォームでビルドするためにはそれらの BUILD ファイルを編集しなければならない可能性が高いでしょう。
- Message digest algorithms はこのパッケージに含まれ (in //third_party/md)、それらのそれぞれの RFC のリファレンス実装から取得されました。”generic reinforcement learning API” は //third_party/rl_api に含まれ、これもまた DeepMind Lab 作者により作成されました。このコードは可搬です。
- 幾つかの追加のライブラリも必要とされますがどのような形でも提供されません; 貴方のシステムに存在しなければなりません :
- SDL 2
- Lua 5.1 (以降のバージョンも動作するかもしれません)
- gettext (glib により必要です)
- OpenGL: ハードウェア加速された人のプレイにはハードウェア・ドライバとライブラリが必要で、ソフトウェア・レンダリングのためには OSMesa が必要で、headless ライブラリは機械学習エージェントが使用することを望むでしょう。
- Python 2.7 (他のバージョンも動作するかもしれません)
build ルールは GCC に固有な 2,3 のコンパイラ設定を使用します。幾つかのフラグが貴方のコンパイラで認識されないならば (典型的にはそれらは特定の warning 抑止です)、それらのフラグを編集するべきかもしれません。警告はうるさいですが害はありません。
About
Disclaimer: This is not an official Google product.
If you use DeepMind Lab in your research and would like to cite the DeepMind Lab environment, we suggest you cite the DeepMind Lab paper.
You can reach us at lab@deepmind.com.
以上