DarkforestをUbuntu14.04で動かしてみた

Darkforestを動かしていくまでを記録してみましたので、参考になればと思います
今回はAmazon EC2のg2.2xlergeを使っていきます
こちらは有料なので、使われる場合は金額をご確認ください
インスタンスの使用数に制限があり、デフォルトではg2.2xlargeは0(!)になっているかと思いますので、制限緩和のリクエストをしなければならないので、先にリクエストしておきましょう

OSはUbuntu14.04LTSを選択しました
DarkforestのGithubはこちら
https://github.com/facebookresearch/darkforestGo


gitインストール
$sudo apt-get install git

vimインストール
$sudo apt-get install vim

$makeインストール

$sudo apt-get install -y build-essential cmake

パスワード設定
$sudo passwd (username)

パッケージのアップデート
$sudo aptitude update

$sudo aptitude -y full-upgrade

torchインストール
$git clone https://github.com/torch/distro.git ~/torch --recursive

$cd ~/torch; bash install-deps;

$./install.sh

$source ~/.bashrc

デフォルトのグラフィックドライバを停止
$sudo vim /etc/modprobe.d/blacklist-nouveau.conf
以下入力
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
sudo vim /etc/modprobe.d/nouveau-kms.conf
options nouveau modeset=0

$sudo update-initramfs -u

$sudo reboot

CUDAインストール
NVIDIA公式サイトにてCUDAをダウンロードする(最新版で良いと思います)
$sudo dpkg -i cuda-repo-ubuntu1404_8.0.44-1_amd64.deb

$sudo apt-get update

$sudo apt-get install cuda(長い)

$echo "export PATH=/usr/local/cuda/bin/:\$PATH; export 

$LD_LIBRARY_PATH=/usr/local/cuda/lib64/:\$LD_LIBRARY_PATH; " >>~/.bashrc && source ~/.bashrc

cuDNNインストール
公式サイトよりcudaのverに合わせてダウンロードする(こちらも最新版で良いと思います)
$tar -xvf cudnn-8.0-linux-x64-v5.1.tgz

$sudo cp cuda/include/*.h /usr/local/cuda/include

$sudo cp cuda/lib64/*.so* /usr/local/cuda/lib64

パッケージのインストール
githubでは以下だけだが、cunnも必要なようです(現段階では入れなくてもよい)
$sudo apt-get install luarocks

$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

全部モデルファイルに入れておく
$cd models/

$wget https://www.dropbox.com/sh/6nm8g8z163omb9f/AAAOsp9WzSQrITY9veSmOA1pa/df1.bin?dl=0 -O df1.bin

$wget https://www.dropbox.com/sh/6nm8g8z163omb9f/AACZwAeb0OOCReoeIWPRgILta/df2.bin?dl=0 -O df2.bin

$wget https://www.dropbox.com/sh/6nm8g8z163omb9f/AABrO3wRZ5hLOk70gmu3rK7Ja/LICENSE?dl=0 -O LICENSE

$wget https://www.dropbox.com/sh/6nm8g8z163omb9f/AABcYJKMOl6-Uol98boGa7n5a/playout-model.bin?dl=0 -O playout-model.bin


pipeファイル用ディレクトリ
$mkdir ~/df_pipe

動かす
$cd ~/darkforest/local_evaluator

$sh cnn_evaluator.sh 1 ~/df_pipe

(output path = /~/df_pipe
数字)で処理が止まってしまった場合は、df_pipeの中身を確認
私の場合はcnn_eval-1.logに(cunn)が見つからないといわれていたので、luarocks install cunnで入れました

$cd ~/darkforest/cnnPlayerV2

$th cnnPlayerMCTSV2.lua --pipe_path ~/df_pipe (--option)

これでGTPコマンドでの操作が可能です(公式では以下)
clear_board (盤面の初期化)
genmove b (Darkforestに黒番で次の一手を打たせる)
play w Q4 (自分が白番で指定の座標に打つ) ← genmove w Q4 をお勧めします
quit (終了)

genmove b
![qiita_genmove.PNG](https://qiita-image-store.s3.amazonaws.com/0/163972/8f7fdeb8-54e0-a22d-955a-cacf35988e8b.png)


goguiでの遊び方
javaのインストール
$sudo apt install default-jre

goguiをインスト―ル
$wget http://downloads.sourceforge.net/project/gogui/gogui/1.4.9/gogui-1.4.9.zip

解凍
$unzip gogui-1.4.9.zip

仮想環境の場合以下から、vncserverなどで行ったほうが良いだろう
$cd gogui-1.4.9/bin/

$./gogui

プログラムの登録方法
~/darkforest でpipeを通すところまで行う

Program/NewProgram...をクリック
コマンド(Command)
th cnnPlayerMCTSV2.lua ―pipe_path ~/df_pipe -num_gpu 1 -time_limit 5
time_limitは変更可能

Workingdirectry
~/darkforest/cnnPlayerV2
パスはフルパスで入力

Program/Attachで先ほど登録したものを選択


Game/New Gameをクリックし、対局が始められる

デフォルトではComputerが白番だが、以下から
Game/Computer Colorで手番を決められる

やってみた
![gogui.PNG](https://qiita-image-store.s3.amazonaws.com/0/163972/7611efac-75bc-9069-5f25-31fec5f08c2d.png)



棋譜は載せませんが、軽く対局してみた感じですと、有段者レベル(1~3d)はあるかなぁという感じでした
悪手と守る手が多くて… ( ´∀｀ )


学習につきましては、試行錯誤してみましたが、どうもうまくいかないようでした