Amazon EC2でDarkForestを動かしてみた

Amazon EC2のg2.2xlargeでDarkForestを動かしてみました。G2はGPUなインスタンスファミリーです。基本的にドキュメントどおりで、あまり中身のある内容ではありませんが、以下、簡単に手順を書いていきたいと思います。

まずはともあれ、DarkForestのドキュメントに目を通しておきます(g2.2xlargeはそんなに安くありませんので(笑)、インスタンス立ち上げる前に準備をしっかりしとかないとね!)。

darkforestGo/README.md at master ・ facebookresearch/darkforestGo ・ GitHub
https://github.com/facebookresearch/darkforestGo/blob/master/README.md

EC2は初めて使ったのですが、インスタンスの使用数に制限があって、私の場合は、なんとg2.2xlarge0(!)でした。制限緩和のリクエストは可能ですが、承認されるのに私の場合で半日ほど掛かりましたので、使用の予定がある時は、早めに確認しておくことをお勧めします。

OSは、Ubuntu 16.04で今回はいきたいと思います。Ubuntu初めて触りました。初めてだらけです。こちらのページで、Version16.04 LTSを選び、Instanch Typehvm:ebs-ssdを選びして(他との違いがよく分かりませんが…)、最後にZoneus-west-2(オレゴン)なami-191fd379に決定しました。

インスタンスを起動したら、まず最初にこちらに書かれていることを全部やります。ただし、cuDNNはcudnn-7.5-linux-x64-v5.1-rc.tgzを使用してみました。cuDNNのダウンロードには、NVIDIAのAccelerated Computing Developer Programへの登録が必要です。

Ubuntu 16.04へのCUDAインストール方法 – Qiita
http://qiita.com/yukoba/items/3692f1cb677b2383c983

次にTorchです。こちらを参考にします。

Torch | Getting started with Torch
http://torch.ch/docs/getting-started.html

言われるようにやっていきます。

$ git clone https://github.com/torch/distro.git ~/torch --recursive
$ cd ~/torch
$ bash install-deps
$ ./install.sh
$ source ~/.bashrc
$ luarocks install class
$ luarocks install image
$ luarocks install tds
$ luarocks install cudnn

そして、本題のDarkForest。まずはコンパイル。

$ git clone https://github.com/facebookresearch/darkforestGo.git ~/darkforest --recursive
$ cd ~/darkforest
$ sh ./compile.sh

次に、モデルファイルを用意します。

$ mkdir ~/darkforest/models

作ったmodelsディレクトリにこちらのファイルを(よく分からんから全部)入れておきます。

Dropbox – df_models
https://www.dropbox.com/sh/6nm8g8z163omb9f/AABQxJyV7EIdbHKd9rnPQGnha?dl=0

次に、pipeファイル用のディレクトリをどこか適当な場所に作ります。

$ mkdir ~/df_pipe

ここまでで、準備は完了です。そして、実際にDarkForestを動かすためには、まずGPUサーバを動かします。ここで、先ほどのpipeファイル用のディレクトリを指定してください。

$ cd ~/darkforest/local_evaluator
$ sh cnn_evaluator.sh 1 ~/df_pipe

そして、本体を動かします。再度、先ほどのpipeファイル用のディレクトリを指定してください。

$ cd ~/darkforest/cnnPlayerV2
$ th cnnPlayerMCTSV2.lua --pipe_path ~/df_pipe

これでGTPコマンドを受け付けてくれるようになります。cnnPlayerMCTSV2.luaにはオプションがいろいろあるので確認してみてください。ただ、MCTSではないPure-DCNN playerCNNPlayerV3.luaっていうのもあるのですが、こいつが動いてくれません(本当は、こっちに興味があったのですが…)。df.binは、代わりにdf2.binとかを使えばいいのかもしれませんが、value_model.binっていうのがどこにも見当たりません。残念です。

最後に、gogui-twogtpで取った棋譜を3局載せておきます。3局とも、黒が--time_limit 10で、白が--time_limit 20です(実際の消費時間は、白が黒の約1.37倍)。


Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

はっきりとは棋力が分かりませんが、とりあえず私よりは間違いなく強そう…(笑) とはいえ、私はこの3局以外にも何局か棋譜を確認しましたが、あきらかにおかしな手が結構あります。一種の攻め合いのような時が多いように思えますが、例えば、3局目の291手目(同じく292手目、293手目、ついでに295手目!)とかやばすぎる… 「MCTSは攻め合いが…」とかそんなレベルではないと思うし、というか、これはもうただのアタリアタリですしね。なんか致命的なのが、コードに残っているような気がします。

あと、部分部分でDarkForestがものすごく好む形っていうのがいろいろありますね。いくつかの棋譜を続けて見ていたら、「あれっ、これ今さっき見たやつじゃない?」ってなるぐらい、部分的に同じような形のオンパレードになります。ひとつだけ例をあげると、星に小ゲイマに掛かられた時、ほぼ例外なくケイマか一間に受けて、周りの状況がどうであれ、ハサミ返すことはしません(私がざっと見たかぎり、約20回中0回でした)。モデル、ひいてはそれを作成するのに使った棋譜によるところが大きいのだろうし、これをDarkForestの特徴とは言っていいのかよく分かりませんが、Fuegoなどでは、あまり感じない傾向だと思います。

先ほどの3局は、並列ではなく一局ずつ打たせてて、全部で3時間以上掛かっています。そして、あまりよく分からないですが、GPUはだいたい使い切っているように見えます。もちろん、消費リソースをもっと絞って打たせることはできますが、やっぱりお金が掛かりますね。「DarkForestを、なんらかの形でCOSUMIで使えたら…」と思ったのですが、簡単ではないなあ… また、しばらく考えておきます。

DarkForestもソースコードが公開されました

2016.06.11  |  DarkForest, 囲碁  |  Comments (1)

あのDarkForestもソースコードが公開されています。

GitHub – facebookresearch/darkforestGo: DarkForest, the Facebook Go engine.
https://github.com/facebookresearch/darkforestGo

なんかもうすごいですね。びっくりしました。これはさくっと動かせるんでしょうか?

将棋の方も、技巧とかnozomiとか驚くことばかりですけど、囲碁もなんか時代が変わった感があります。

[追記 2016/8/26]
Amazon EC2でDarkForestを動かしてみました。

http://www.perfectsky.net/blog/?p=323

第9回UEC杯コンピュータ囲碁大会&第4回電聖戦

2016.03.19  |  DarkForest, Zen, 囲碁  |  Comments (0)

今日から2日間、第9回UEC杯コンピュータ囲碁大会が開催されます。

第9回UEC杯コンピュータ囲碁大会
http://jsb.cs.uec.ac.jp/~igo/

そして、優勝と準優勝のソフトは(一応、他の上位ソフトの可能性もありますが)、23日(水)に行われる第4回電聖戦で小林光一名誉棋聖と対局することになります。

第4回電聖戦
http://entcog.c.ooco.jp/entcog/densei/densei4/

今回は、AlphaGoのおかげで逆に盛り上がりそうな気がします。なんか、とんでもなく強いソフトが混ざってそうなんですよね。ただ、無料で見られるライブストリームは無いみたいなのでちょっと残念。囲碁プレミアムは1日500円らしいのですが、どうしたものか…

[追記 2016/3/20]
優勝はZen、準優勝darkforest、3位CrazyStone、4位Ayaでした。Zenはエキシビションマッチも勝ったみたいで強いですね。最後はトーナメントなのではっきりしたことは言いにくいですが、Facebookのdarkforestも弱くはなかったようです。こう考えてみると、Google、Facebook、Baidu(?)、ドワンゴ(ここに並べていいのか分からないですが…(笑))、みんな囲碁やるんですね。IBMだって、以前Fuegoでちょっとやる気になっていたはずで、BlueFuegoなんてものもありました。このあたりは将棋と全く状況が違って、囲碁は国際性がありますね。

[追記 2016/3/26]
電聖戦は、darkforestの中押し負けに、Zenの4目半勝ち。プロ棋士に対して3子の勝利は価値がありますね。


Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

お金が大切なのは分かりますが、どのみちほとんど実になっていないと思うので、どうせならただで見せて欲しかったです。もうちょっとうまいやり方無いんでしょうか?