Leela Zero は、Alpha GO Zero の論文を参考に開発されている、人間による知識を与えられないで作られた囲碁のプログラムです。
macOS で Leela Zero を動かすのに少しだけ手間取ったので、オープンソースにあまり慣れてない人のヒントになるように記してみます。(ターミナルとはなんぞや?レベルの方は、「macos ターミナル 使い方」あたりで Google 検索してみてください。)
ただし、この内容は2018年8月現在の記事なので、将来的にこの手順では動かなくなる可能性もあります。
#必要なプログラム
- Leela Zero 囲碁AI本体
- Sabaki 豊富な機能を持つ棋譜ソフト。ここでは対戦用の UI として使う。
- LeelaSabaki Sabaki と Leela Zero を結びつけるためのプログラム
#手順
Leela Zero のインストール
ターミナル.app を立ち上げ、README.mdにあるようにインストールすればいいです。
# github 上のリポジトリからソースコードを clone
git clone https://github.com/gcp/leela-zero
cd leela-zero/src
git submodule update --init --recursive
# boost と cmake を Homebrew 経由でインストール
brew install boost cmake
# コンパイル
make
cd ..
# ネットワーク(AIの中身)をダウンロード
curl -O http://zero.sjeng.org/best-network
brew コマンドが入ってなくてエラーがでる人は、こちらを参照してインストールしましょう。 xcrun が見つからないとか、言われる場合には
xcode-select --install
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
というふうに、xcode からインストールしないとだめかも。
ちなみに、LeelaSabaki を使う場合は autogtp はコンパイルしなくてもOK。
インストールができたら
src/leelaz --weights best-network
というコマンドで、なにやら動くのを確認できるはず。
##Sabaki のインストール
https://sabaki.yichuanshen.de/ から、sabaki-v0.*.*-mac-x64.7z というような Mac 用のファイルをダウンロードします。
7z という圧縮フォーマットは少し特殊なので、手元のソフトウェアで伸長できないときは、
brew install p7zip
7z x sabaki-v0.*-mac-x64.7z
というように伸長。Sabakiは実行形式のアプリケーションで配布されているので、これだけでOKです。
##LeelaSabaki のインストール
cd ~
# npm コマンドのために、Homebrew で node.js をインストール
brew install node
# LeelaSabaki のダウンロード
git clone https://github.com/SabakiHQ/LeelaSabaki.git
cd LeelaSabaki
# LeelaSabaki のビルド
npm install
npm run build
インストールできたら
$ ./leelasabaki --heatmap <path-to-leela> --weights=<path-to-network> --noponder --playouts 100
とかすると、なにか動くのが見えるはず。
path-to-leela は、上にインストールしたLeelaの実行ファイルへのパス。たとえば、上の手順をそのまま実行した場合、macOSのユーザー名が XXX だとすると、 <path-to-leela> は "/Users/XXX/leela-zero/src/leelaz"、 <path-to-network> は "/Users/XXX/leela-zero/best-network" になるはず。
Sabaki の起動と設定
Sabaki を起動します。
Engines > Manage Engine...を選択し、新しい項目を Add します。
- (Unnamed Engine) → 名前なので、適当に Leela Zero とでも
- Path → /Users/XXX/leela-zero/src/leelaz
- No arguments → --weights=/Users/XXX/leela-zero/best-network --noponder --playouts=100
設定を Close して、 File > New から、Black または White に Leela-Zero を選んで、対決開始。
Engine > Toggle GTP Console を入れると、Sabaki と Leela Zero の通信を見られます。
playout の値を大きくすると、AIの計算量が増えて、強くなります。(その分、推論に時間がかかる。)
以上です。