Amazon EC2 p3.xlarge のサーバーで KataGo (CUDA版)をビルドするまでの手順メモです。
cmake とか gcc とか、KataGo をビルドする環境の準備がちょっとした手間でした。
(OSもっと新しいの選べばちょっと楽だった可能性はあります。)

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

Deep Learning Base AMI (Ubuntu) Version 18.0 – ami-052a768a105494e76
Comes with foundational platform of NVidia CUDA, cuDNN, NCCL, GPU Drivers, Intel MKL-DNN and other system libraries to deploy your own custom deep learning environment. For a fully managed experience, check: https://aws.amazon.com/sagemaker

最初にこれ促されたのでやっておきました。

do-release-upgrade

gcc、g++ はver7でないとあとでよくわからないエラーが出るので入れておきます。

sudo add-apt-repository ppa:jonathonf/gcc-7.1
sudo apt-get update
sudo apt-get install gcc-7 g++-7

最初から入っていた ver5 でなく ver7 を使うための設定

sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-7 70
sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-5 50
sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-7 70
sudo update-alternatives –config gcc

最新の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

KataGo のソースをゲットするために git をインストール
sudo apt-get install git

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

あとは cfgファイルやネットワークファイルを探して持ってくればOK
(この辺を具体的に書いてないのは、自分がやったこがベストかあまり自信ないためです。この記事で詳しく書いてない部分はそういう事情とお察しください)

ご要望が多ければAMIの公開も考えたいとは思います。
(ただ、それしようとするとパラメータの設定などに責任が生じるのですぐにはできませんが)

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

おまけのメモ
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用のシェルスクリプトが下記。
(KataGo の関係ファイルはホームディレクトリに配置してて、cd コマンドは無し)
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 “./katago gtp -model model.txt.gz -config gtp_example.cfg”

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