つまりなにしたの
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コードが出てる。
もちろんなんの学習もしていないので、事故る。
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用のイメージが作成されていた。
容量を食い始めたら確認してみたほうがいいかもしれない。
以上。ほんとに試してみただけ。