EnsekiTT Blog

EnsekiTTが書くブログです。

Universeがリリースされたので、まずはReadmeを読んで実行してみた。

つまりなにしたの

UniverseのReadmeを読んで、OSXで動くことを確認した。

openai.com
汎用的な能力を持つ人工知能の能力を計測したり、学習するための環境として作られたプラットフォーム

構成としては、
Docker中で実行しているゲームにVNCでアクセスして、
ゲーム画面の情報をエージェントに渡して、
マウスやキーボードをエージェントが操作して、
報酬をゲーム画面から取得して、
報酬をもらうと嬉しいエージェントがどんどん賢くなっていく。



事前準備

PyenvでUniverse用の環境を作っているけど、Pyenvの使い方については別サイトを参照していただきたい。
Pyenv使わなくても動く。

環境の準備

pip install numpy incremental
brew install golang libjpeg-turbo

Docker for Macをインストールして起動しておく
docs.docker.com

起動すると

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

こんなのが出てくる。Dockerは起動しておく。

Universeのインストール

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

実行

Dockerを起動した状態で、GithubのREADMEに書いてあったサンプルコードを実行してみる。

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 first_agent.py

で起動すると初回はDockerImageをダウンロードしているようでだいぶ時間がかかる。

実行結果

NVCで仮想マシン上のブラウザにつながって、レースゲームと右下にQRコードが出てる。
もちろんなんの学習もしていないので、事故る。
f:id:ensekitt:20161208021807p:plain

terminalには

universe-C8VXzi-0 | [2016-12-07 17:18:58,368] [INFO:universe.pyprofile] [pyprofile] period=5.02s timers={"score.crop_cache.readthrough.OCRScorerV0": {"calls": 25, "std": "4.08ms", "mean": "13.52ms"}, "rewarder.sleep.missed": {"calls": 11, "std": "4.51ms", "mean": "4.95ms"}, "score.crop_cache.readthrough.MatchImage": {"calls": 26, "std": "68.77us", "mean": "107.61us"}, "score.crop_cache.get.MatchImage": {"calls": 297, "std": "288.12us", "mean": "142.92us"}, "vnc_env.VNCEnv.vnc_session.step": {"calls": 297, "std": "386.77us", "mean": "226.00us"}, "reward.parsing.gameover": {"calls": 297, "std": "905.17us", "mean": "315.74us"}, "rewarder.sleep": {"calls": 286, "std": "3.41ms", "mean": "13.42ms"}, "reward.parsing.score": {"calls": 297, "std": "3.96ms", "mean": "1.77ms"}, "rewarder.compute_reward": {"calls": 297, "std": "4.43ms", "mean": "2.89ms"}, "rewarder.frame": {"calls": 297, "std": "1.98ms", "mean": "17.63ms"}, "score.crop_cache.get.OCRScorerV0": {"calls": 297, "std": "415.42us", "mean": "208.73us"}} counters={"agent_conn.reward": {"mean": 1465.5200000000004, "calls": 25, "std": 1103.5127668797797}, "score.crop_cache.hit.MatchImage": {"mean": 1.0, "calls": 271, "std": 0.0}, "score.crop_cache.hit.OCRScorerV0": {"mean": 1.0, "calls": 272, "std": 0.0}} gauges={"reward_parser.score.last_score": {"std": 9632.65572710234, "mean": 188122.21212121216, "value": 204880.0, "calls": 297}} (export_time=170.71us)

universe-C8VXzi-0 | [2016-12-07 17:18:58,950] [INFO:universe.rewarder.remote] [Rewarder] Over past 1.08s, sent 9 reward messages to agent: reward=8415.0 reward_min=0.0 reward_max=2667.0 done=False info={'rewarder.vnc.updates.bytes': None, 'rewarder.vnc.updates.n': None, 'rewarder.profile': '<1934 bytes>', 'rewarder.vnc.updates.pixels': None}

universe-C8VXzi-0 | [2016-12-07 17:19:00,011] [INFO:universe.rewarder.remote] [Rewarder] Over past 1.06s, sent 8 reward messages to agent: reward=231.0 reward_min=5.0 reward_max=88.0 done=False info={'rewarder.vnc.updates.pixels': None, 'rewarder.vnc.updates.bytes': None, 'rewarder.vnc.updates.n': None}

universe-C8VXzi-0 | [2016-12-07 17:19:01,079] [INFO:universe.rewarder.remote] [Rewarder] Over past 1.07s, sent 6 reward messages to agent: reward=291.0 reward_min=8.0 reward_max=86.0 done=False info={'rewarder.vnc.updates.pixels': None, 'rewarder.vnc.updates.bytes': None, 'rewarder.vnc.updates.n': None}

こんなのがつらつら出てきてプレイしている間のステータスや報酬状況が表示される。

実行したあと

実行してたコンテナは消してくれるが、Imageは残るようで、

$ docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
quay.io/openai/universe.flashgames   0.20.2              2816ba5f272d        12 hours ago        1.663 GB

DockerにFlashgames用のイメージが作成されていた。
容量を食い始めたら確認してみたほうがいいかもしれない。

以上。ほんとに試してみただけ。