2020年05月21日

GTP対応囲碁GUI「q5Go」のインストールと使いかた - Ubuntu編

コンピュータ囲碁プログラムとよばれるものは一般的に、現在の盤面の状況を分析して次の着手を導き出す囲碁思考エンジンそのものを指すことがおおく、それじたいは対局や棋譜分析に適した操作画面をそなえてないのがふつうです。
そうした操作画面は囲碁GUI(Graphical User Interface)とよばれるべつのソフトウェアで、囲碁思考エンジンを囲碁GUIと連携させることによって、グラフィカルな碁盤画面をつうじて囲碁思考エンジンとやりとりできるようになるわけです。
そして、囲碁思考エンジンと囲碁GUIとは、GTP(Go Text Protocol)という共通の言葉によってむすびつけられています。
囲碁GUIは現在の盤面の状況をGTP経由で囲碁思考エンジンに伝え、次の着手を導き出すよう命令し、囲碁思考エンジンも計算によって導き出された着手をGTP経由で囲碁GUIに返し、それを囲碁GUIがグラフィック画面の碁盤上に表示するという方法で、ユーザと囲碁思考エンジンとの対局や思考エンジンによる棋譜分析が可能になっているのです。
そのため、いろいろな囲碁思考エンジンを対局や棋譜分析に使うためには、GTPに対応した囲碁GUIをインストールして囲碁思考エンジンと連携させ、GTP対応囲碁GUIをとおして囲碁思考エンジンを制御してやる必要があることになります。
GTPに対応した囲碁GUIとしては「Leela Zero」専用GUIとして開発された「Lizzie」が、「Leela Zero」経由で「ELF OpenGo」のネットワークを使えることや操作性のよさもあいまって広く利用されていますが、ほかにも「GoGui」「Sabaki」「q5Go」などはよく使われていると思います。
ここでは、「q5Go」を「Ubuntu 18.04 LTS」にインストールする方法と、基本的な使いかたについて記述していきます。

「Lizzie」プロジェクトページ
「GoGui」プロジェクトページ
「Sabaki」プロジェクトページ
「q5Go」プロジェクトページ

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

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

「q5Go」をインストールするさいの動作要件ですが、ハードウェア的にもソフトウェア的にも特別な要請はなく、比較的あたらしいOSが動いているコンピュータならたいてい問題なく動かせるはずです。
ただし、「q5Go」をどれだけ使えるかはけっきょく「q5Go」から利用できる囲碁思考エンジンの性能に依存するので、最低限自分が利用したいコンピュータ囲碁プログラムを動かせる環境でないと意味がありません。

2. 「q5Go」インストールファイルのダウンロード
「q5Go」の最新バージョンは「1.1.1」で、「Ubuntu 18.04 LTS」にインストールするには、「q5Go」GitHubレポジトリからソースをダウンロードする必要があります。
最終的には「~/q5Go」ディレクトリに実行ファイルをインストールするとして、作業用フォルダ「~/q5Go-tmp」にソースをダウンロードすることにしましょう。

$ cd
$ git clone https://github.com/bernds/q5Go q5Go-tmp


これによってホームフォルダに「~/q5Go-tmp」ディレクトリを作成のうえ、そこに必要なソースをダウンロードして、「q5Go」をインストールする準備がととのったことになります。

3. 「q5Go」のインストール
ソースをダウンロードした「~/q5Go-tmp」ディレクトリ内にビルド作業に使うサブディレクトリを作り、そこでコンパイルをおこなって実行ファイルを生成し、そして生成した実行ファイルを「~/q5Go」にインストールしてやる手順です。

$ cd q5Go-tmp
$ mkdir build
$ cd build
$ qmake ../src/q5go.pro PREFIX=/home/username/q5Go
$ make
$ make install


「qmake」コマンドが見つからない場合は「$ sudo apt install qt5-qmake」でインストールしますが、「qmake」を実行するにあたって「qt5」関連のライブラリが足りないというエラーが出るかもしれません。
hatakazuの場合は「multimedia」と「svg」のライブラリがはいってなかったので、追加でインストールする必要がありました。
最後に「q5Go」の実体である「~/q5Go/bin/q5go」ファイルをターゲットに、パスのとおった場所(たとえば「~/bin」など)からリンクを張っておきます。

$ ln -s ~/q5Go/bin/q5go ~/bin


これで「q5Go」のインストール作業は完了し、「$ q5go」コマンド一発で「q5Go」を起動できるようになりました。

4. 「q5Go」の設定
「q5Go」を起動したら、まずは「q5Go」から呼び出すコンピュータ囲碁プログラムを登録します。
起動画面真ん中下の「Settings」をクリックし、設定画面が開いたら「Gomputer Go」タブをクリックして、エンジン登録画面を開きます。
「New」をクリックして「Name:」欄にわかりやすい表示名を、そして「Executable:」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「AQ」フォルダを「/home/username/AQ」に設置した場合、「Name:」欄に「AQ」と入力、「Executable:」欄に絶対パス「/home/username/AQ/AQ」を指定します。
「Arguments:」欄には「--rule=1 --komi=6.5 --byoyomi=10 --use_ponder=off」のようにオプションを指定しますが、「AQ」の場合は「AQ」フォルダにある設定ファイル「config.txt」から設定を読みこむスタイルなので、基本的にここは空欄のままで問題ありません。
「config.txt」の内容を上書きして、「AQ」の動作を変更したい場合だけ、ここにその内容を記述すればO.K.です。
「Fixed Komi:」欄にデフォルトのコミ(「AQ」や「KataGo」なら「6.5」が有効に作用します)を指定、「Board size:」欄には「19」と入力しておきます。
「Lizzie」と通信できるエンジンであれば記譜解析に利用できるので「Use for analysis」ボタンにチェックをいれてから、それ以外のエンジンであればチェックがはずれた状態のままで、「OK」をクリックすればエンジンの登録は完了です。
「AQ v4.0.0」は「--lizzie」スイッチを指定することで「Lizzie」での出力が可能になっていますが、「q5Go」でおなじ設定をためしてみたところ、現時点では動かせませんでした。
そのため、記譜解析に使えるのは基本的には「Leela Zero」および「KataGo」のみ、ということになりそうです。

5. 「q5Go」の基本的な使いかた
「q5Go」はGTP対応囲碁GUIとしては比較的あたらしいもので、そのぶん「Leela Zero」のもつ「Leela Zero」や「KataGo」と連携した棋譜分析機能や「KataGo」の目数差による形勢判断表示などのあたらしいトレンドにも対応しており、非常に多機能かつ使いやすい囲碁GUIとなっています。
コンピュータ囲碁プログラム相手の対局、思考エンジンどうしの対局、「Leela Zero」および「KataGo」を利用した記譜解析、SGFファイルの編集や他形式ファイルへの変換など、囲碁GUIに期待されることはひととおりできるうえに、いくつか便利な機能も追加されています。

5-1. 思考エンジンとの対局
登録した囲碁思考エンジン(たとえば「AQ」)と対局するには、起動画面で「Play against the machine」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Play with program」を選択します。
開いた画面の「Engine:」欄で登録ずみの思考エンジンから対局したいエンジン(たとえば「AQ」)を選択、「Computer plays:」の右の石アイコンをクリックして、コンピュータに黒番を打たせるか白番を打たせるかを指定します。
「Board size: 19」「Komi: 6.5」「Handicap:」を指定し、「Main time (minutes):」および「Overtime」を設定して、「OK」ボタンを押下すれば対局開始です。

5-2. 思考エンジンどうしの対局
起動画面で「Play online」ボタンをクリックして開いた画面で、メニューバー「File」から「Computer vs. computer play」を選択します。
「Engine (white):」欄に白番を担当させたいエンジンを、「Engine (black):」欄に黒番を担当させたいエンジンを指定し、「Board size: 19」「Komi: 6.5」などの条件と時間を設定して「OK」ボタンをクリックします。
思考エンジンどうしの対局では、対局させる思考エンジンの両方について「ponder」機能を無効化するように設定し、互いの思考をさまたげないように設定しておく必要があります。

5-3. 記譜分析
新規入力する記譜を分析するためには、起動画面で「Create a board」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「New board 19x19」を選択します。
碁盤が表示されるので、メニューバー「Edit」から「Game information」を選択し、各種情報を入力していきますが、「Komi: 6.5」を忘れずに設定しておきます。
つづいてメニューバー「Analysis」から「Choose analysis engine」へすすんで、解析に使用する思考エンジンにチェックをいれます。
ふたたびメニューバー「Analysis」から、今度は「Connect analysis engine」を選択すると、さきほど選択したエンジンが起動します。
あとは、リアルタイムで進行する分析を参照しながら、着手を入力していくことができます。
保存してあるSFG記譜を分析する場合は、起動画面で「Load SGF file」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Opne」を選択します。
表示された画面からディレクトリをたどって解析したいSGFファイルを見つけ、それを選択して「Open」ボタンをクリックします。
あとは新規記譜の場合とおなじように解析用エンジンを指定、立ち上げてから、カーソルキーの左右を使って記譜を分析しながら手順をすすめていきます。
候補手の色分け表示や、候補手をカーソルでポイントすることによる読み筋表示など、操作方法はほかの囲碁GUIとおなじく直感的にわかりやすくなっています。
石の上に表示されるのは勝率のみ、探索数や「KataGo」の目数形勢判断などは、右下の枠内に別途表示される仕組みになっています。

5-4. 事前記譜解析のバッチ処理
ちょっとめずらしい、「q5Go」に特徴的な機能として、思考エンジンにあらかじめ記譜を解析させて結果を書き込んだSFGファイルを出力する、バッチ処理があります。
hatakazuのコンピュータはなんとか「CUDA」環境でGPUを動かせるぎりぎりの性能しかもっておらず、「Lizzie」から思考エンジンを立ち上げてGPUをぶんぶん回していると、正直なところ負荷が大きくて操作に支障をきたしたり最悪しばらく入力を受けつけなくなったりします。
しかしたとえば寝ているあいだや外出中にこの事前記譜解析バッチ処理を走らせておけば、コンピュータにむかうときにはすでに解析を終えてデータが書き込まれたSFGファイルが準備されており、「q5Go」からそれを開いて手順を追っていくと(その時点では思考エンジンを動かす必要はなく、GPUを回してコンピュータに負担をかけることなく)解析結果を見ることができるのです。
強力なGPUを搭載しているコンピュータであれば、同時進行で解析しながらでも問題ないのでしょうが、hatakazuのようにとぼしいGPU資源しかもたないコンピュータを使っている場合はたいへん助かります。
たとえば寝ているあいだに、同時進行なら待ってられないほどの時間をかけて深く解析させておいて、それをあとから短時間でパラパラと軽快に追っていくことができるということです。
hatakazuがこの囲碁GUI「q5Go」を使っている理由、ここであらためて紹介する理由は、おもにこのバッチ処理機能が便利で重宝しているところにあります。
事前記譜解析のバッチ処理を実行するためには、起動画面で「Batch analysis」ボタンをクリック、もしくは「Play online」ボタンをクリックして開いた画面のメニューバー「File」から「Batch analysis」を選択します。
「Batch computer analysis」画面が表示されるので、「Choose:」欄で解析に使用する思考エンジンを指定、メニューバー「Analysis」から「Choose analysis engine」へすすんで、解析に使用する思考エンジンにチェックをいれます。
左側の「Number of seconds per move:」と「Maximum number of lines to add:」は、一手ごとにどれだけ時間をかけて読ませ、その読んだなかからどれだけの情報を解析結果として出力するかを指定するパラメータです。
数が大きいほど情報量は増えますが、そのぶん解析にかかる時間も長くなります。
「If fixed engine komi:」では、たとえば「PhoenixGo」のように七目半以外のコミを受けつけないエンジンに、たとえばコミ六目半の碁を解析させるときの振る舞いを制御します。
このあたりの設定を終えたら、「File to analysis」欄で解析したいSGFファイルを選んでは「Add to queue」ボタンを押して「Job queue」へ追加していきます。
解析したいSFGファイルをすべて登録したら、「Start engine」ボタンをクリックします。
「Choose:」欄で設定した解析用エンジンが立ち上がり、SFGファイルを順番に解析にかけて、その結果(候補手、読み筋、勝率の推移など)を各SFGファイルへ追加していきます。
作業が終わったSFGファイルを「q5Go」で開くと、あらかじめ思考エンジンによって解析した結果が書き込まれているので、思考エンジンを起動することなく手順を追っていくことができるというわけです。
そのさいは、まさにリアルタイムで解析しながら手順を再生するときとおなじように、候補手が勝率におうじて色分け表示され、気になる候補手をポイントすれば読み筋があらわれ、勝率の推移や探索深さのデータ、「KataGo」で解析させた場合は目数形勢判断もすべて見ることができます。


参考ウェブページ一覧表(順不同)
posted by hatakazu at 21:46| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください