2019/10/22 作成 2019/12/18 改定
・ベースとなるAMIを変更しました。これにより必要手順がすこし減りました
・cfgファイル、ネットワークファイルについての記述し、日本ルール対応方法を追記しました

Amazon EC2 p2.xlarge のサーバーで KataGo (CUDA版)をビルドするまでの手順メモです。
cmake とか KataGo をビルドする環境の準備がちょっとした手間でした。

ベースとなるAMI として各種GPUドライバの入ってるこれを選びました。
(Nvidia とか CUDA とかのドライバのインストールって、ググっていただければわかりますが、なかなかややこしいのです。今回の選択は賢明だったようで、そのへんの問題は全くありませんでした)
OS としてはなんとなく慣れてる感じの Ubuntu 18。

追記(2019/12/19):
Deep Learning Base AMI (Ubuntu 18.04) Version 21.0
を使えば初めから入っている cmake が使え、またストレージを50GBしか使わないとご指摘いただきました

最新のcmakeのソースをダウンロードしてビルドしてインストール

wget https://github.com/Kitware/CMake/releases/download/v3.16.0-rc2/cmake-3.16.0-rc2.tar.gz
tar xzvf cmake-3.16.0-rc2.tar.gz
cd cmake-3.16.0-rc2/
./bootstrap
make
sudo make install

(↑wget と https:// の間に改行は入りません)

KataGo をゲットしてビルドの準備をします。
cd ~
git clone https://github.com/lightvector/KataGo.git
cd KataGo/cpp/
cmake . -DBUILD_MCTS=1 -DUSE_BACKEND=CUDA

ビルドの前に日本語ルール対応の改造をしておきます。

vi neuralnet/desc.cpp

編集内容はこちらの記事をご参照ください。

ファイルを保存してビルドします。
make

KataGoの設定ファイルとネットワークファイルは Lizzie 0.7.2 Windows版に同梱されているものを使用しました。

cd ~
wget https://github.com/featurecat/lizzie/releases/download/0.7.2/Lizzie.0.7.2.Windows.x64.GPU.zip
unzip Lizzie.0.7.2.Windows.x64.GPU.zip

(↑wget と https:// の間に改行は入りません)

追記(2019/12/19):
cfgファイルは KataGo/cpp/configs/gtp_example.cfg があるということと、ネットワークファイルはこちらから落とすのがよいとご指摘いただきました

katago ディレクトリを作成して必要ファイルを集めます。

mkdir katago
cp KataGo/cpp/katago katago/
cp Lizzie/katago-gtp10.cfg katago/katago-gtp-ch.cfg
cp Lizzie/katago-gtp10.cfg katago/katago-gtp-jp.cfg
cp Lizzie/katanetwork.gz katago/

katago-gtp-jp.cfg についてこちらの記事を参考に書き換えてください。

手元のパソコンの Lizzie とクラウドの KataGo をつなげる設定については、LeelaZero についての情報、主としてaws guideを参考にしました。
Windows の場合は aws guide にある ssh.bat の中の

cd leela-zero; ./leelaz –gtp –lagbuffer 0 –weights elf.gz –threads 2

の部分を

cd katago; ./katago gtp -model katanetwork.gz -config katago-gtp-jp.cfg

に書き換えます。katago-gtp-jp.cfg のところを katago-gtp-ch.cfg にすれば中国ルールでの動作になります。

2019/12/19追記
plink に -no-antispoof を追加しないとまずいようです。山口さんはサーバー側で細工してるのかな
%plink_path% -no-antispoof -ssh -i %key_path% ubuntu@%server_ip% cd katago; ./katago gtp -model katanetwork.gz -config katago-gtp-jp.cfg

おまけのメモ
AWS CLI というコマンドラインツールがあって、自分が立ち上げた EC2 のインスタンスが1つだけなら下記で簡単に IP アドレスが返ります。(jq というのは aws から返った JSON を解析するために用いる別ソフト) –query を使えばjq不要ですね 10/23 追記・書き換え
aws ec2 describe-instances –filter “Name=instance-state-name,Values=running” –output text –query ‘Reservations[].Instances[].PublicIpAddress’

これを使えば Lizzie から KataGo を起動するシェルスクリプトやバッチファイルのIPアドレス部分を(aws guide にあるように)手書きで書き換えない工夫もできるでしょう。

一例として私が作ったMac用のシェルスクリプトが下記。
Windows ではバッククォートの技が使えないでしょうからもうひと工夫がいるでしょうね。
(10/22 追記  Windows の PowerShell で $() が使えるようなのでその点の工夫は不要のようです)

なお、1行目の -l がないと、環境変数が読み込まれず、aws が起動できないなどの問題が生じました。

#!/bin/bash -l
IPADDRESS=`aws ec2 describe-instances –filter “Name=instance-state-name,Values=running” –output text –query ‘Reservations[].Instances[].PublicIpAddress’`
ssh -oStrictHostKeyChecking=no -i ~/.ssh/katago-aws.pem ubuntu@$IPADDRESS “cd katago; ./katago gtp -model katanetwork.gz -config katago-gtp-jp.cfg”

MacBook の Lizzie で動かしてる様子がこちらです。さすが速いです。