イーロン・マスク氏が関わるOpenAIの人工知能プラットフォーム「Universe」を動かしてみる


## Universeとは

[イーロン・マスク氏のOpenAI、人工知能学習プラットフォーム「Universe」をオープンソース化 - ITmedia ニュース](http://www.itmedia.co.jp/news/articles/1612/06/news053.html)の説明がわかりやすいので引用します。

> Universeでは、AIエージェントは人間と同じようにコンピュータを使えるという。画面を見たり、仮想キーボードとマウスを使って操作する。これにより、人間がコンピュータでこなすタスクをエージェントに学習させることができるとしている。

さらに、

> Universeには、環境として2600のAtariゲーム、1000のFlashゲーム、ブラウザのタスクなどが含まれる。

## 準備

### conda(オプション)

READMEより、[conda](http://conda.pydata.org/docs/index.html)の環境があった方が良いということなので、[Quick install](http://conda.pydata.org/docs/install/quick.html#quick-install)を参考にインストールします（これは必須ではないので飛ばしても良いと思います）。

[Miniconda](http://conda.pydata.org/miniconda.html)を開いて、必要なファイルをダウンロードします。

ダウンロードしたファイルを実行します。

```bash
$ sh Miniconda3-latest-MacOSX-x86_64.sh
```

ダイアログ形式で訪ねてくるので、それに回答してインストール完了です（ただし、pythonに詳しくないのでconda環境を構築するのが良いことなのかはわかりません...）。

### Universeのインストール

README通り。

```bash
$ git clone https://github.com/openai/universe.git
$ cd universe
$ pip3 install -e .
```

で、うまくいくかと思ったのですが、エラーが出ました。必要に応じて下記の対応を行います。

```bash
$ xcode-select --install
$ pip3 install numpy incremental
$ brew install golang libjpeg-turbo
```

エラーが出た場合は、[XQuartzを入れる必要がある](https://github.com/openai/universe/issues/66)ということです。

```bash
$ brew install Caskroom/cask/xquartz
```

さらに、

```bash
configure: error: unable to find XShmQueryVersion in -lXext!
  specify XSHM_LIBS or configure --without-xshm to disable the extension
  See `config.log' for more details.
  Could not build fastzbarlight: ...
...
Failed to build fastzbarlight
```

と出た場合は(これには苦しめられました...)、ログやIssueなど探ったのですが、うまくいかず結局、[fastzbarlightのファイルをダウンロード](https://pypi.python.org/pypi/fastzbarlight)して、個別にインストールしようとするもうまくいかず、fastzbarlightがsetup時に利用しているzbar（fastzbarlightはzbarのラッパー）自体がおかしいいというヒントを得たので、ダウンロードしたfastzbarlightの `setup.py` の中にあるzbarの指定をhomebrewで入れたものに変えました（ちなみに、homebrewで入れたバージョンは念のため `--without-xshm` しました）。

変更した箇所です。

```bash
# extra_link_args=[os.path.join(os.path.dirname(__file__), 'src/fastzbarlight/vendor/zbar-0.10/zbar/.libs/libzbar.a')],
extra_link_args=[os.path.join(os.path.dirname(__file__), '/usr/local/Cellar/zbar/0.10_2/lib/libzbar.a')],
```

そして、pipを使わずマニュアルインストールです。

```bash
$ cd /path/to/fastzbarlight
$ python setup.py install
```

これで、fastzbarlightのインストールが成功しました...はぁはぁ...。

本家のIssueに手順を書いておきました...: [fastzbarlight build failed on MacOSX 10.11.6 · Issue #51 · openai/universe](https://github.com/openai/universe/issues/51#issuecomment-269529421)

再度、

```bash
$ pip install -e .
```

を実行して成功することを確認します。

Dockerをインストールします。おすすめは、[Docker for Mac](https://docs.docker.com/docker-for-mac/)ということです。Dockerアプリケーションを立ち上げて、

```bash
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
```

ができることを確認します。

## 起動！

READMEにあるコードをPythonのREPLに貼り付けます（とりあえず！）。起動にはちょっと時間がかかりました（15分くらい？）。

```python
import gym
import universe  # register the universe environments

env = gym.make('flashgames.DuskDrive-v0')
env.configure(remotes=1)  # automatically creates a local docker container
observation_n = env.reset()

while True:
  action_n = [[('KeyEvent', 'ArrowUp', True)] for ob in observation_n]  # your agent here
  observation_n, reward_n, done_n, info = env.step(action_n)
  env.render()
```

これで、接続して...、パスワードはREADMEに書いてあります。

```python
$ open vnc://localhost:5900
```


![Dec-29-2016 05-12-10.gif](https://qiita-image-store.s3.amazonaws.com/0/24041/9d56130c-78bf-3cf5-5725-1e5cd138703b.gif "Dec-29-2016 05-12-10.gif")


やったー！

## 参考

- [openai/universe: Universe: a software platform for measuring and training an AI's general intelligence across the world's supply of games, websites and other applications.](https://github.com/openai/universe)
- [イーロン・マスク氏のOpenAI、人工知能学習プラットフォーム「Universe」をオープンソース化 - ITmedia ニュース](http://www.itmedia.co.jp/news/articles/1612/06/news053.html)