囲碁AIの Leela Zero を MacBook Air にインストールしたらうまくいかなかった話。--cpu-only で起動するのがコツです。
問題
- 一手、二手は動いているようだけどすぐに勝率が 1300万% になったりする
- 候補手がめちゃくちゃになって、数手で候補手も表示されなくなる

解決策
GPU を使わない --cpu-only
オプションで起動する。Lizzie/config.txt
のエンジンコマンドに --cpu-only
を追加します。
手順
1. 前提
ターミナルでコマンドを打つこと、Homebrew は既知とします。政光順二先生のページ が丁寧です。
2. Leela Zero をインストール
これが囲碁AIの本体です。ソースコードからコンパイルしても難しくありませんが、homebrew からインストールできます。
$ brew install leela-zero
これでインストールされます。確認してみましょう:
$ leelaz
A network weights file is required to use the program.
By default, Leela Zero looks for it in /Users/junkoda/.local/share/leela-zero/best-network.
ネットワークとかウェイトと呼ばれるのは自己対戦で鍛えられたデータです。それがないよというエラーですが、Lizzie に付属しているので、とりあえずそれを使います。
どこにインストールされたかも確認しておきます:
3. Lizzie をインストール
3.1 Java SDK をインストール
Homebrew からも 「Java」 はインストールできますが、それは Open JDK で、Liziee の公式 README.txt
によると、Open JDK では問題が起こることがあるので公式 JDK が奨励らしいです。Oracle のサイトから jdk-13.0.1_osx-x64_bin.dmg
をダウンロードしてきてインストールしました。
3.2 Lizzie をダウンロード
Lizzie は Leela Zero の思考を可視化してくれるインターフェースです。棋譜 SGF ファイルを開いて検討したりできます。
Lizzie の GitHub にいきます。
執筆時の最新バージョンは 0.7.2 でした。Lizzie.0.7.2.Mac-Linux.zip
をダウンロードして、ダブルクリックで解凍すると Lizzie
というフォルダができます。
3.3 Lizzie の設定ファイルを編集
Lizzie/config.txt
をエディタで開きます。engine-command
というところを
"engine-command": "/usr/local/bin/leelaz --cpu-only --gtp --lagbuffer 0 --weights network.gz",
のようにして上書き保存します。
変更点 1: ./leelaz
から、homebrew がインストールした場所 /usr/local/bin/leelaz
に変更。
Leela Zero がどこにあるかは which コマンドで確認できます。
$ which leelaz
/usr/local/bin/leelaz
変更点 2: --cpu-only
を追加します。これが重要。これがないと、バグりました。
4. いざ実行
config.txt
と同じ Lizzie/
にある lizzie.jar
をダブルクリックします。「Appstore からダウンロードしていない野良ソフトは起動できません」と言われるので MacOS のシステム設定 → セキュリティ&プライバシィ から「かまわず実行」します(初回だけ)。Engine is loading...
としばらく表示され、初回は特に長いかもしれませんが、5分はかからないはずです。学習データは付属しているので問題はないはずですが、学習データがなかったりすると無限に loading になることもあります。
マウス(トラックパッド)でポチポチ打ってみましょう。

真っ当な候補と勝率が表示される 😂
付録: 最新の学習ファイルを配置
Lizzie には学習データが付属していますが、Leela Zero は日々自己対戦を続け進化しているので、最新の学習データを手に入れることもできます。ここではとりあえず起動することを優先して割愛しました。
どの学習データを使うかは Lizzie/config.txt
内の --weights=network.gz
で指定できます。既存の network.gz を上書きするのもアリです。
https://zero.sjeng.org をみると日々学習データが更新されています。
https://zero.sjeng.org/best-network が最新データでしょうか。
変更
2019-12-25: 最初は CPU_ONLY でコンパイルする方法を書いたのですが、--cpu-only
で起動する方法に変更しました。CPU_ONLY でソースコードからコンパイルする方法は American Go Association (AGA) から http://www.aghs.cc/tutorials/leela/leela.php