読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

クラウドでLeela Zeroを動かしてローカルのLizzieで見る

以前、VPSサービスGPUEaterでLeela ZeroとLizzie動かす方法を紹介しました。

nextliteracy.hatenablog.com

VPSVNCで繋いて、VPS側でLizzieを動かす方法でしたが、この方法だとVPS側にデスクトップ関連のインストールする必要があってその時間が比較的長く、サクッと使ってみる気にはなれないものでした。

今回は、ローカル(自分のパソコン)でLizzieを動かして、Leela ZeroはVPSサービスで動かす方法を紹介します。元ネタは以下のイシューです。

github.com

VPSサービスとしてGPUEaterを例にしますが、sshでつながるVPSならどれでも同じだと思います。

手順

GPUEaterでアカウントを作る。

省略^^:

インスタンスを生成する。

省略^^:

SSHで接続してインストール作業をする。

SSH接続手順は省略^^;

Leela Zeroをインストールする。

シェルから以下を順に実行してください。スクリプトにして一括実行するのもいいかと思います。おおよそ2分30秒です。
最後のwgetは私のDropboxに置いてあるELF OpenGo v1ウェイトです。お好きなものを用意してください。

apt update
git clone -b next http://github.com/gcp/leela-zero.git
cd leela-zero
git submodule update --init --recursive
apt install -y libboost-dev libboost-program-options-dev libboost-filesystem-dev opencl-headers ocl-icd-libopencl1 ocl-icd-opencl-dev zlib1g-dev
mkdir build && cd build
cmake ..
cmake --build .
wget https://www.dropbox.com/s/qxd2bu0xb59lb5f/elf_converted_weights.txt.gz

次に以下を実行して、OpenCL最適化を終わらせておきます。

cd
leela-zero/build/leelaz --weights leela-zero/build/elf_converted_weights.txt.gz --gtp
Setting max tree size to 4136 MiB and cache size to 459 MiB.

という感じのメッセージで止まったら終了してください。

以上でサーバ準備完了です。VPSインスタンスの起動を含めても5分かからないはずです。

ローカルのLizzieの設定ファイルを変更する。

(普通ローカル環境も維持したいかと思いますので、変更するよりはもう一式Lizzieをインストールしてから設定することをおすすめします)
以下のように、engine-commandプロパティを変更してください。

{
  "leelaz": {
    "automatically-download-latest-network": そのまま,
    "max-analyze-time-minutes": そのまま,
    "analyze-update-interval-centisec": そのまま,
    "network-file": そのまま,
    "max-game-thinking-time-seconds": そのまま,
    "engine-start-location": そのまま,
    "engine-command": "ssh -i ~/.ssh/gpueater.pem root@<IPアドレス> leela-zero/build/leelaz --weights leela-zero/build/elf_converted_weights.txt.gz --gtp --lagbuffer 0 --threads 3",
    "print-comms": そのまま
  },

~.ssh/gpueater.pemはご利用のVPSsshに合わせて変更してください。
<IPアドレス>はご利用のVPSインスタンスIPアドレスです。
--weightsはもしLeela Zeroのインストールの際に違うウェイトをダウンロードしたならそれに合わせてください。
--threadsはご利用のVPSインスタンスの性能に合わせて変えてください。

ダミーのファイルを作る

engine.start-locationとengine-commandの--weightsオプションを組み合わせたファイルを用意してください。空のファイルで結構です。
(Lizzieがウェイトファイルが存在するか確認するので、それを誤魔化すために作ります)

お疲れ様でした。以上で設定完了です。いつものようにLizzieを起動してください。VPS上のLeela ZeroをLizzieで使うことができます。

20万円近くする高性能パソコンを買わなくても、GPUEaterなら1時間50円程度で高性能パソコンと同等にLizzieを使うことができます。

対局場控室で、持ち込みのノートPCは非力とお嘆きの解説の先生がた!、この方法ならノートPCでもいくらでも高性能Lizzieになりますよ!

Enjoy!