話題の記事

AI学習プラットフォーム「Universe」を試してみる

2017.01.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

先月、OpenAIによるAI(人工知能)学習プラットフォーム「Universe」がオープンソース化されたと発表されました。

OpenAI_Universe _top

Universeとは、

OpenAIの開発したAI学習プラットフォームのUniverseは、既存のライブラリであるTensorFlowやTheanoをそのまま使えるプラットフォームです。 AIに学習を施すにはさまざまなタスクを経験させる必要がありますが、UniverseはAIエージェントに「人間と同じようにコンピューターを使ってさまざまなタスクを実行させる」というプラットフォームになっています。 AIエージェントに画面上に表示される映像を認識させ、バーチャル上のキーボードとマウスを使わせることで、人間がコンピューターを使うようにさまざまなタスクを行わせるわけです。

引用元:イーロン・マスクの人工知能研究機関OpenAIがAI学習プラットフォーム「Universe」をリリース | Gigazine

とのことです。ライセンスは確認したところMITのようです。

Github

https://github.com/openai/universe

公式サイト

https://universe.openai.com/

今回は個人的に詰まった点も含めてUniverseを動かしたところまで記載したいと思います。

検証環境

Universeが動作するサポート対象はPython 2.7or3.5が動くLinuxまたはOSXと記載がありました。今回は以下のOSで試しています。

  • mac OSX 10.11.6

準備

Pythonの環境構築

現在、利用しているPCでPythonを扱ったことが無かったので、まず最初にPythonの環境を構築しました。

以下のサイトを参考に、
MacでPython3系ベースの機械学習環境設定(Python2系との共存) | Qiita
Homebrewからpython3とpyenvをインストールしました。

> brew install python3
> brew install pyenv

そして、pyenvでconda環境であるminicondaをインストールしました。

> pyenv install -l
> pyenv install miniconda3-3.19.0

※ UniverseのReadmeに「まず最初にconda環境を設定することをお勧めします」と記載があります。

pyenvでminicondaを選ぶようにしました。

# 使用するPythonの設定
> pyenv global miniconda3-3.19.0

# 現在のPythonのバージョン確認
> pyenv version
miniconda3-3.19.0

> conda update conda

また、Pythonのバージョンがlocalのバージョンが優先されていたので切替ました。

> export PYENV_ROOT="${HOME}/.pyenv"
> export PATH=${PYENV_ROOT}/bin:$PATH
> eval "$(pyenv init -)"
> source .bash_profile

[参考] 環境変数の設定| MacでPython使う時の最低限のメモ | Qiita

Universeのインストール

Pythonの環境が出来たので次はUniverseのReadmeに従って導入を進めます。記述の通りに以下のコマンドを実行しました。

> git clone https://github.com/openai/universe.git
> cd universe
> pip install -e .

しかし、pip install -e .で以下のWarningが出てしまいました。(ログの最後を抜粋しています)

You are using pip version 8.1.2, however version 9.0.1 is available
You should consider upgrading via the 'pip install --upgrade pip' command.

Readmeにもある下記をインストールして、

> pip install numpy incremental
> brew install golang libjpeg-turbo

さらにログに記載されていた通りにpipをアップデートしました。

> brew install python
> pip install --upgrade setuptools

再度、

> pip install -e .

を実行したところSuccessfully installed universeとなり成功になりました。

Dockerのインストール

Dockerアプリをダウンロードして、インストールしただけで特に問題になる箇所はありませんでした。 https://docs.docker.com/docker-for-mac/

インストール後、docker psコマンドを実行した際に、

> docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

となっていればOKみたいです。

実行

Readmeのサンプル

Run your first agentに書いてるサンプルコードをまるっとコピーしてsample1.pyというファイル名で保存しました。

sample1.py

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()

上記ファイルを

> python sample1.py

で実行するとサンプルのレースゲームが起動されました。

sample1

とりあえず、動かしてみるところまでできました✨

別のゲームを実行してみる

Readmeに載っていたサンプルは車のレースゲームですが、公式サイトをみると色々なENVIRONMENTS(環境)が用意されています。

OpenAI_Universe 2

上で記載したコードはReadMeにあったコードをまるっとコピーしただけなので、少し変更して別のゲーム(環境)にしました。選んだのはinternet.SlitherIO-v0です。また、example以下にあったrandom-agent.pyのコードを見て操作をランダム?に変更しました。

sample2.py

import argparse
import gym
import universe  # register the universe environments
from universe import wrappers

env = gym.make('internet.SlitherIO-v0')
env.configure(remotes=1)  # automatically creates a local docker container
env = wrappers.SafeActionSpace(env)
observation_n = env.reset()

while True:
  action_n = [env.action_space.sample() for ob in observation_n]
  observation_n, reward_n, done_n, info = env.step(action_n)
  env.render()

これも

> python sample2.py

で実行するとゲーム画面が起動します。

sample2

さいごに

Universeは画面のピクセルを見て、仮想キーボードとマウスを操作するという特性上、汎用性が高そうな印象を受けました。
現在、公開されている環境はかなり多いので、環境やアクションを変えて色々と試してみると楽しいかもしれません。