2018年07月06日

「Leela Zero」専用囲碁GUI「Lizzie」のインストールと使いかた - Windows編

せっかく「Leela Zero」をインストールしても対局しかできないのは残念なことで、できることならこのどんどん強くなっていくコンピュータ囲碁プログラムが考えていることを学んで、棋力の向上に役だてたいものです。
そうした目的にぴったりな「Leela Zero」専用囲碁GUIとして、「Lizzie - Leela Zero Interface」が公開されています。

「Lizzie」GitHubレポジトリ
・Windowsバイナリ配布あり。
・64bit対応。
・GPUバージョンおよびCPUバージョン。

「Lizzie」を使うことで、「Leela Zero」と対局するだけではなく、「Leela Zero」の思考エンジンを利用して棋譜を分析することもできるようになります。
棋譜分析では勝率の推移はもちろん、候補手とそれぞれの勝率、そのあとの読み筋などを表示させることが可能で、hatakazuのように囲碁の勉強に「Leela Zero」を使ってみたいひとにとってはたいへん役にたつツールになっています。

1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。

--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Windows10 Home 64bit
CPU:インテル Core i7-8550U (4Mキャッシュ、最大4.0GHz)
GPU:NVIDIA GeForce MX150 GDDR5 2GB
メモリー:8GB DDR4 2400MHz(最大16GB)
保存装置:128GB SSD + 1TB 5400rpm HDD
--

「Lizzie」をインストールするさいの動作要件ですが、ハードウェア的には特別な要請はなく、64bit版Windowsが動いているコンピュータならたいてい問題なく動かせるはずです。
ただし、「Lizzie」はようするに「Leela Zero」を思考エンジンとしてもちいる囲碁GUIなので、「Leela Zero」を動かすさいの条件を考慮する必要があります。
NVIDIA製もしくはAMD製の外部GPUを搭載したコンピュータであれば、GPUバージョンの「Leela Zero」を動かすことができますが、それ以外の場合はCPUバージョンを使うことになります。
ソフトウェア的には、「Lizzie」は「Javaランタイム」をあてにしているので、「Javaランタイム」をあらかじめインストールしておく必要があります。

*****「Java」ランタイムインストール*****
(必要な環境がすでに構築されている場合は、このセクションは無視して先へすすんでください。)

無料Javaソフトウェアをダウンロード」ページから、「無料Javaのダウンロード」 -> 「同意して無料ダウンロードを開始」とすすんで、Windows版Javaの推奨バージョン(Version 8 Update 171)インストールファイル「JavaSetup8u171.exe」をダウンロードします。

ダウンロードしたインストールファイルをダブルクリックすると、セットアップがはじまって「Javaへようこそ」画面が開くので、(必要におうじて「宛先フォルダを変更する」にチェックをいれて)「インストール」ボタンをクリックします。
ファイルのダウンロードがはじまって、最終確認を求められるので、問題なければそのまま「インストール」ボタンを押してすすめます。
デフォルトのインストール先は「C:\Program Files (x86)\Java\jre1.8.0_171」です。

インストール処理が終わったら、完了画面があらわれるので、「閉じる」ボタンをクリックして終了します。


2. 「Lizzie」インストールファイルのダウンロード
「Lizzie」の現行バージョンは「v0.5」で、「Lizzie」GitHubレポジトリの「Releases」ページから「Lizzie.0.5.Windows.x64.GPU.zip」をクリックして、GPUバージョンの64bit版Windows用インストールファイル「Lizzie.0.5.Windows.x64.GPU.zip」を取得します。
CPUバージョンを使う場合は、「Lizzie.0.5.Windows.x64.CPU.zip」のほうをクリックして、CPUバージョンの64bit版Windows用インストールファイル「Lizzie.0.5.Windows.x64.CPU.zip」を取得します。

3. 「Lizzie」のインストール
ダウンロードした「Lizzie.0.5.Windows.x64.GPU.zip」ファイルもしくは「Lizzie.0.5.Windows.x64.CPU.zip」ファイルを右クリックして「すべて展開」を選ぶと、「Lizzie.0.5.Windows.x64.GPU」フォルダもしくは「Lizzie.0.5.Windows.x64.CPU」フォルダが生成し、そのなかに「lizzie」フォルダができているはずです。
この「lizzie」フォルダをそのまましかるべき場所、たとえば「C:\Users\username\lizzie」(「username」はお使いのユーザ名)などに設置すれば、インストール作業は終了です。

4. 「Lizzie」の設定
「lizzie」フォルダのなかには「Lizzie」囲碁GUI機能を提供する「Lizzie.jar」のほか、「Lizzie」と連携して動く「Leela Zero」囲碁思考エンジン本体である「leelaz.exe」、そして「Leela Zero」が利用する学習ずみネットワーク「network.gz」などがふくまれています。
動作要件どおり「Javaランタイム」がインストールされた環境であれば、「Lizzie.jar」をダブルクリックすることで、「Lizzie」が起動するはずです。
はじめて「Lizzie」を起動する場合は、連携する「Leela Zero」が「OpenCL」チューニングを設定する必要があるため、じゃっかん時間がかかります。
左下に「Leela Zero is loading...」というメッセージが表示された状態で、しばらく待たされますが、このメッセージが消えたら「Lizzie」は問題なく起動しています。
「Lizzie」の正常起動を確認したら「Lizzie」をいったん終了し、「lizzie」フォルダのなかに生成している設定ファイル「config.txt」を開きます。
以下に、編集する可能性のある項目だけ抜き出して、各項目の意味と設定方法を記述します。

{ # 全体設定開始。
"leelaz": { # エンジン設定開始。
"automatically-download-latest-network": false, # 「true」にすると、起動するたびに最新の学習ずみネットワークを確認にいく。
"max-analyze-time-minutes": 5, # 思考モードを継続する最大分数。
"analyze-update-interval-centisec": 10, # エンジンから分析情報を送る間隔を1/100秒単位で指定。
"network-file": "best-network", # 利用する学習ずみネットワークファイルを指定。
"max-game-thinking-time-seconds": 10, # 対局時に考える一手あたりの最大秒数。
"engine-start-location": ".", # パスの起点を指定する。
"engine-command": "./leelaz --gtp --lagbuffer 0 --weights %network-file --threads 4", # エンジンのパスと、起動時にわたすパラメータ。
"print-comms": false # 「true」にすると、エンジンとやりとりするGTPコマンドを出力する。
}, # エンジン設定終了
"ui": { # GUI設定開始
"shadows-enabled": true,
"board-color": [
217,
152,
77
],
"shadow-size": 100,
"show-winrate": true, # 勝率を表示する。
"fancy-board": true,
"show-variation-graph": true, # 「true」にすると、画面右に分岐ツリーを表示する。
"win-rate-always-black": false, # 「true」にすると、つねに黒番からみた勝率を表示する。
"confirm-exit": false, # 「true」にすると、「lizzie」を終了するときにデータ保存の確認をする。
"handicap-instead-of-winrate": false, # 「true」にすると、実力差を勝率ではなく、置石の数で表示する。
"large-subboard": false, # 画面左下の第二碁盤を大きなサイズで表示する。
"show-move-number": false, # 「true」にすると、石の上に手順を表示する。
"show-next-moves": true, # 次の手を表示する。
"show-leelaz-variation": true, # 変化図を表示する。
"show-subboard": true, # 画面左下に第二碁盤を表示する。
"theme": "DefaultTheme",
"fancy-stones": true,
"show-best-moves": true, # 最善手をハイライト表示する。
"board-size": 19
} # GUI設定終了
} # 全体設定終了


上記は「http://zero.sjeng.org/best-network」から最新の学習ずみネットワークを取得し、それを「C:\Users\username\lizzie」フォルダに移動して、「best-network」という名前に変更したものを利用する設定です。

*****そのほかの学習ずみネットワークの利用方法*****
「Leela Zero」が各局面でどう打つかは過去に学習してきたことに依存するので、ことなる学習ずみネットワークを読みこませることで、ことなるふるまいをすることが期待できます。

人間の棋譜から学んで人間にちかい打ちかたをするもの
上のリンクから「best_v1.txt.zip」ファイルを取得し、展開してえられる「weights.txt」ファイルを「C:\Users\username\lizzie」フォルダに移動して、「human-network」などのわかりやすい名前に変更しておきます。
この学習ずみネットワークを利用したい場合、「Lizzie」フォルダにある設定ファイル「config.txt」の該当部分を、「"network-file": "human-network",」に変更します。

Facebook「ELF OpenGo」の学習ずみネットワークを「Leela Zero」で利用できるように変換したもの
上のリンクからgzファイルを取得し、「C:\Users\username\lizzie」フォルダに移動して、「ELF-network」などのわかりやすい名前に変更しておきます。
Facebook「ELF OpenGo」のGitHubレポジトリから学習ずみネットワーク「pretrained-go-19x19-v0.bin」をダウンロードして、公開されているpythonスクリプトで変換することもできます。

この学習ずみネットワークを利用したい場合、「Lizzie」フォルダにある設定ファイル「config.txt」の該当部分を、「"network-file": "ELF-network",」に変更します。


5. 「Lizzie」の使いかた
デフォルトであらわれるのは、白黒両方を手動入力するかたちで、「Leela Zero」エンジンの思考内容を表示させていく画面です。
「x」キーを押すことで、入力できるコマンドの一覧表が表示されます。
「Leela Zero」との対局を開始するためには、「n」キーを押下します。
対局条件としては手番と置石は設定できますが、コミは七目半固定で、日本ルールでの対局はできなそうなのが残念なところです。
「Leela Zero」に棋譜分析させるためには、「o」キーを押して、分析したいSGFファイルを読みこみます。
「s」キーで保存、「i」キーで棋譜情報編集、「m」キーで手順番号表示、「.」キーで地を数えて形成判断します。
上下矢印キーで手順操作、左右矢印キーで分岐ツリーを移動、「home」キーで棋譜の最初へ、「end」キーで棋譜の最後へ飛びます。
棋譜分析では、考えられる候補手が勝率および思考深さとともに表示され、候補手のどれかにカーソルを重ねるとそのあとの読み筋が表示される仕組みになっています。
「space」キーで「Leela Zero」の思考開始/停止をコントロールできるほか、「enter」キーで「Leela Zero」に次の手を打たせてみることもできます。
posted by hatakazu at 21:55| Comment(20) | 囲碁ソフトのこと | 更新情報をチェックする
この記事へのコメント
Leelaについて教えていただければ幸いです。

当方、7年前のノートPC(core i3)にLeelaとLizzieを入れ、特にストレスなく使用していますがさすがに新しいPC(例えばcorei7+GTX1050)に変えようかと思っています。
そこでお尋ねしたいのですが
1)上の二つのソフトはCPU版とGPU版の2種類がありますが強さとか速さはどれくらい違いますか?
2)GPU搭載PCにするとLeelaZeroと対局できると思いますがこの場合、「置き碁」ができますか?
注)CPU版LizzieもZeroとの対局モードがありますが互い先だけのようです。

Posted by at 2018年10月17日 09:45
>1)上の二つのソフトはCPU版とGPU版の2種類がありますが強さとか速さはどれくらい違いますか?

手元の環境では「GeForce MX150」というGPUを使っていますが、GPUを使うのと使わないのでは、計算処理速度が三倍ていどちがうようです。
GPUを使うと、おなじプレイアウト数の計算にかかる時間が三分の一くらいになる、逆にいえば、おなじ時間であれば三倍くらいの計算をしているように見えます。
「GeForce GTX1050」であれば、もっと大きな差が出るはずです。

>2)GPU搭載PCにするとLeelaZeroと対局できると思いますがこの場合、「置き碁」ができますか?
>注)CPU版LizzieもZeroとの対局モードがありますが互い先だけのようです。

「Leela Zero」+「Lizzie」の組み合わせでは、CPU版かGPU版かにかかわらず、現時点で置碁はできないようです。
「Leela Zero」で置碁をということであれば、「Lizzie」ではなくて、「Sabaki」や「GoGui」などの囲碁GUIを使えば、自由に置石の数を指定して打つことができます。
ただし、「Leela Zero」は置碁で白をもった場合、順番に四隅の三々にはいっていってしまうので、ふつうの置碁の打ちかたにはなりません。
ふつうに置碁を打ってくれるという意味では、「Leela Zero」ではなくて、「Leela」のほうをおすすめしておきます。
Posted by hatakazu at 2018年10月17日 23:34
ありがとうございました。囲碁ソフト関連のブログも興味深く拝見しました。Leelaに4子置いてもコテンパンにヤラレていますのでZeroは無いだろうと思ってはいるのですが・・・(lizzieもまばたきもせず眺めるだけです)
上違方法についてもぜひ書いて下さい。(70才、2段)
Posted by at 2018年10月18日 11:05
Lizzie v0.6 を入れれば、コミは固定ですが、置き碁はOKです。
Posted by Kimura at 2018年11月12日 02:35
lizzieが正常に起動してくれません。
7-zipで解凍してLizzieのjarファイルが作成されましたので、これをダブルクリックしますと「.jarを開く方法を選んで下さい」というメッセージが表示されます。
因に、Lizzie.jarファイルのプロパティにあるプログラム欄には不明なアプリケーションと表示されています。
java8 update 201(64-bit)はインストールされています。
甚だ恐縮ですが、ご指摘頂ければ幸いです。
Posted by kiri at 2019年01月17日 06:05
>kiriさん
>
>java8 update 201(64-bit)はインストールされています。

「コマンドプロンプト」をひらいて、コマンド「java -version」を実行してみてください。
どのようなメッセージが表示されるか、教えてください。
Posted by hatakazu at 2019年01月18日 08:24
hatanaka様

私のPCはWindows10 homeのためコマンドプロンプトがみつかりません。professionalにアップグレードしてトライしてみます。初心者(71歳の手習い)のため、ご迷惑をおかけしました。
Posted by kiri at 2019年01月18日 23:17
hatanaka様

お世話になります。
Windows10 homeからProにアップグレードしてからお尋ねのjava-versionを実行しましたら、以下のメッセージが表示されました。
「java-versionは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」
javaのことは良く分かりませんので、ご指導よろしくお願い致します。
Posted by kiri at 2019年01月21日 13:51


>kiriさん
>
>Windows10 homeからProにアップグレードしてからお尋ねのjava-versionを実行しましたら、以下のメッセージが表示されました。

「java -version」コマンドは、「java」と「-version」のあいだに「半角スペース」が必要です。
「半角スペース」をはさまないで、つづけて入力してらっしゃるように見えるので、「java -version」のように「半角スペース」を挿入してためしてみてください。
正しくコマンドが実行されれば、以下のようなメッセージ(数字などの細部は多少相違があってもO.K.)が表示されると思います。
それが表示されない場合は、「Java」ランタイムが正しくインストールされていない可能性が高いと思います。

java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
Posted by hatakazu at 2019年01月22日 20:38
こちらのサイトで紹介されている、「人間の棋譜から学んで人間にちかい打ちかたをするもの」というのは、leela0.11.0で使用されているデータでしょうか?

また、他のAIもlizzieで動かしてみたいのですが、lizzie上で動かすことができるネットワークファイルとして現在使用可能なものは、leela関連とELFのみでしょうか?
絶芸やPhoenixGo、Golaxyその他のAIもlizzieで動かせたら面白いと思います。
Posted by hiro at 2019年01月24日 00:34
Lizzie0.6と同梱のLeelaZero0.16で使用していますが よく
途中で思考が停止します GUIは停止していなくて棋譜のSAVEは
可能です config.txtのthreadsの数を減らしても停止します
config.txtの設定方法等の解決策を教えてもらえますか

OS Win10 CPU i7-8700K メモリ16G グラボ GTX 1050Ti
Posted by odagaki0621 at 2019年03月17日 12:01
「Lizzie」の初期碁盤サイズが私のNoteでは大きすぎるので、サイズを小さくしたいのですが、Config のどの部分を書き換えたら宜しいでしょうか?
Posted by Noriyuki Kimura at 2019年03月21日 20:28
「Lizzie」の初期碁盤サイズが私のNoteでは大きすぎるので、サイズを小さくしたいのですが、Config のどの部分を書き換えたら宜しいでしょうか?
Posted by Noriyuki Kimura at 2019年03月21日 20:29


>hiroさん
>
>こちらのサイトで紹介されている、「人間の棋譜から学んで人間にちかい打ちかたをするもの」というのは、leela0.11.0で使用されているデータでしょうか?

ちがいます。
コンピュータ同士の自己対戦ではなくて、人間の棋譜にもとづいて訓練された、あくまでも「Leela Zero」用のネットワークファイルです。

>また、他のAIもlizzieで動かしてみたいのですが、lizzie上で動かすことができるネットワークファイルとして現在使用可能なものは、leela関連とELFのみでしょうか?
>絶芸やPhoenixGo、Golaxyその他のAIもlizzieで動かせたら面白いと思います。

「PhoenixGo」は、なんらかのかたちで「Leela Zero」から利用できる(ひいては「Lizzie」で動かせる)ようになっていたと思います。
Posted by hatakazu at 2019年03月24日 16:11
>odagaki0621さん
>
>Lizzie0.6と同梱のLeelaZero0.16で使用していますが よく
>途中で思考が停止します GUIは停止していなくて棋譜のSAVEは
>可能です config.txtのthreadsの数を減らしても停止します
>config.txtの設定方法等の解決策を教えてもらえますか
>
>OS Win10 CPU i7-8700K メモリ16G グラボ GTX 1050Ti

「Lizzie」インタフェースは生きているけれど、「Leela Zero」が反応しなくなる状態、ということでしょうか。
「Leela Zero」を「Lizzie」以外の囲碁GUI、たとえば「GoGui」や「Sabaki」などと連携させてみて、「Leela Zero」が止まらずに動くかどうか確認してみたらどうでしょうか。
Posted by hatakazu at 2019年03月24日 16:27
>Noriyuki Kimuraさん
>
>「Lizzie」の初期碁盤サイズが私のNoteでは大きすぎるので、サイズを小さくしたいのですが、Config のどの部分を書き換えたら宜しいでしょうか?

もうしわけありません、状況がよく理解できません。
碁盤のサイズは、コンピュータ画面のサイズにあわせて調整されるのではないか、と思うのですが・・・。
つまり、画面が小さければ、それにあわせて碁盤サイズも小さく表示されるのではないでしょうか。
Posted by hatakazu at 2019年03月24日 16:29
パソコンは少し教えてもらいJavaで競技プログラミングをする環境はそろっているのですが、lizzei.jarを開こうとすると、この.jarファイルを開く方法を選んでください。と出まして
"C:\Proguram Files\Java\jre-10.0.2\bin\javaw.exe" -jar"%1"%*
が青く表示されます。しかし、開くことができません。
Javan のversionは以下の通りです
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
少しかじっただけなので初心者としてご享受していただきたいです。よろしくお願いします。
Posted by 602 at 2019年05月04日 03:48
↑上に追加で今気づいたのですが
実際に実行されている方のlizze.jarのアイコンはJavaのアイコンと同じなんですが自分のは白紙です。
何卒よろしくお願いします。
Posted by 602 at 2019年05月04日 03:57
↑解決しました
JDK10をアンストしたら実行されました
白紙アイコンのままなので関係なかったです
お騒がせしました
Posted by 602 at 2019年05月04日 07:52
Lizzieが約11ヶ月ぶりにVersion 0.7に更新されて早速
DLしていろいろチェックしています
Ver0.6ではLeela Zeroがよく途中で思考が止まってしまい
ましたがVer0.7では思考が止まることもなくなりました
おまけにkatagoがLeela Zeroに加えて同梱されていて歓喜
しました 実力的にもLZに勝るとも劣らないエンジンのはずで
実際CPUモードでは互角以上の強さだと思いますがGPUモード
ではCPUモードより全く強くなっていません 当然LZのGPU
モードにはほとんど勝てません config.txtの設定等を変更
すれば本来のGPUモードの実力を発揮できるようになるのなら
やり方を教えて下さい
Posted by odagaki0621 at 2019年10月08日 23:28
コメントを書く
コチラをクリックしてください