(Katago のバージョンアップされたので更新版を再投稿します)
手持ちの Mac に囲碁ソフトをいくつか入れてみました。OS は、インテル版 macOS 11 Big Sur と、インテル版 macOS 12 Monterey の2種類です。
※今日の日記は、半年余り前の 3/27(土) に書いた「囲碁AIソフトをインテル版 macOS 11 Big Sur にインストールしてみた」をベースに加筆修正したものです。
2016年3月に AlphaGo が韓国のイ・セドル九段を4勝1敗で破って以来、人間が囲碁AIから学ぶ時代となったようです。市販のパソコンで動作するオープンソースの強力な囲碁AIソフトウェアがいくつも公開されているので、インストールすれば誰でも簡単に利用できます。熟練者が本気で使おうと思ったら高性能パソコンや高性能クラウドが必要なようですが、入門者レベルの私には、手持ちの Mac でも猛烈に強すぎます…(入門者向けの接待モードが必要です…)
最近は、囲碁AIの思考エンジン・ソフトウェアと、碁盤を操作するためのユーザインタフェース・ソフトウェアは別々に開発されているそうです。そして、自分の目的にあった思考エンジンと、自分の目的にあった碁盤アプリを組み合わせて使うというスタイルとなっているようです。ただし発展段階にあるため、良さそうなものをいくつかインストールしておいて、バージョンアップをこまめに追いかけて、その時々で一番目的にかなったものを使うことになるようです。
私は入門者レベルなので本当は手頃な囲碁アプリを接待モードで動かせば十分なのですが、話題のツールに触れてみたかったので、囲碁AIの思考エンジンを5種類と、碁盤アプリを3種類を改めてインストールしてみました(すべての組み合わせで使えるわけではありません)。
とりあえず、囲碁AI同士の対局を観戦できるところまで作業しました。それにしても、見たことのない布石から始まります。私は入門者レベルというよりも、門外漢レベルと称した方が正確かもしれません…
なお、思考エンジンは Homebrew から Fuego, GNU Go, KataGo, Leela Zero, Pahci の5種類をインストールしました。碁盤アプリは、Homebrew から KaTrain, Sabaki の2種類を、GitHub から LizGoban をインストールしました。
現時点では、思考エンジンで一番強そうなのは KataGo、碁盤アプリで思考エンジンを選ばないのは Sabaki、高機能そうなのは LizGoban という印象です。しかし私は門外漢レベルなので、大きな勘違いをしていたら誠に申し訳ありません。
以下、インストール作業のメモです。(準備作業×3本、囲碁アプリ×1本、思考エンジン×5本、碁盤アプリ×3本、関連記事・資料、と続きます)
〔準備1〕ターミナル
以下の操作は、Mac の「ターミナル」と呼ばれるアプリケーションを起動して、その中で行いました。ターミナルの起動方法は次の通りです。
画面下部の Dock から「Launchpad」を起動するとアプリケーションのアイコン一覧が表示されます。その中にある「その他」をクリックすると、ユーティリティ・アプリケーションのアイコン一覧が表示されます。その中に「ターミナル」があるので、クリックすると「ターミナル」を起動できます。
- 【参考資料】Macで「ターミナル」を開く/終了する (Apple)
〔準備2〕Homebrew
思考エンジンのインストールでは Homebrew を利用しました。
Homebrew は macOS 用のパッケージ管理システムです。Homebrew をインストールするには、ターミナルで下記を実行します。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
〔準備3〕nodebrew と Node.js
碁盤アプリ LizGoban をインストールするためには、nodebrew と Node.js をインストールしておく必要があります。
まず、Homebrew を利用して nodebrew をインストールします。
brew install nodebrew
次に nodebrew を用いて Node.js をインストールします。
nodebrew setup
nodebrew install stable
そして、インストールされたバージョンを確認します。
nodebrew ls
表示されたバージョンを「nodebrew use」で設定します。例えば、次のように設定します。
nodebrew use v16.13.0
そして、~/.zprofile もしくは ~/.bash_profile に下記を追記します。また、今すぐ利用できるようにターミナルでも下記を実行します。
export PATH=$HOME/.nodebrew/current/bin:$PATH
※ご覧のように、~/.nodebrew にインストールされるようです。「~」はホームディレクトリを表す記号です。
〔囲碁アプリ〕
Homebrew でアプリをインストールする手順例として、囲碁アプリ Leela をインストールする手順を紹介します。
まず、Homebrew を利用して Leela をインストールします。
brew install leela
(なお、Leela は今回のメモの対象ではありません。Leela Zero と同じ人が作ったまったく別のソフトウェアです。)
次に、一旦起動を試みます。(セキュリティ上の理由から、最初は起動できません)
画面下部の Dock から「Finder」を起動して、「アプリケーション」の一覧を表示します。その中に「Leela」があるので、クリックすると Leela を起動できます。
すると、「“Leela” は、開発元を検証できないため開けません」と表示されます。そこで一旦「キャンセル」します。
それから、以下の手順に従って起動できるようにします。
- 画面下部の Dock から「システム環境設定」を起動して、「セキュリティとプライバシー」をクリックします。
- ウインドウ最下部付近に「“Leela”は開発元を確認できないため、使用がブロックされました」と書かれていて、その右に「このまま開く」ボタンがあるのでクリックします。
- すると、「“Leela”は開発元を検証できません。開いてもよろしいですか?」と表示さるので、「開く」をクリックします。
- Leela が起動します。
一度この手順を踏むと、以後、Launchpad, Dock, Finder などから Leela を起動できるようになります。Launchpad から起動する方法は、以下の通りです。
画面下部の Dock から「Launchpad」を起動するとアプリケーションのアイコン一覧が表示されます。その中にある「ゲーム」をクリックすると、ゲームのアイコン一覧が表示されます。その中に「Leela」があるので、クリックすると Leela を起動できます。
詳しくは、「Mac で App を安全に開く」のページ、特にページ後半の「ノータリゼーションを受けていない App や未確認の開発元の App を開きたい場合」節をご覧ください。
これと同じ手順が、以下で KaTrain, Sabaki を起動できるようにする場合にも必要となります。
〔思考エンジン〕
準備が完了したら、まずは思考エンジンのインストールです。
下記のように Homebrew を利用して、Fuego, Gnu Go, KataGo, Leela Zero, Pachi をインストールしました。このように、インストール自体は簡単です。
brew install fuego
brew install gnu-go
brew install katago
brew install leela-zero
brew install pachi
なお、katago を初めて起動するときは、初期化(チューニング)に数十秒かかるようです。チューニングの結果は ~/.katago に格納されます。
最新版を細かく追いかけたくなったら、下記サイトに書かれている方法でソースコードを取得して追いかければよさそうでした。
〔碁盤アプリ1〕KaTrain
次に、碁盤アプリのインストールです。まずは一番簡単な KaTrain からです。
KaTrain は KataGo 専用の碁盤アプリです。
今回は KaTrain を Homebrew を利用してインストールしました。
brew install katrain
起動できるようにするためには、前述の Leela と同様の手順を踏む必要があります。
なお、katrain を初めて起動するときは、katrain 専用の katago の初期化(チューニング)に数十秒かかるようです。チューニングの結果は ~/.katrain に格納されます。
※今日の時点では、インテル版 macOS 11 Big Sur では起動できましたが、インテル版 macOS 12 Monterey では起動できませんでした。
起動すると KaTrain のウインドウが表示されます。左上にある「三」の形をしたアイコンをクリックすると、メニューが表示されます。「Player」の下の「Human」をクリックすると「AI」に変更することができます。人間対AI、AI対AI、などが選べます。
※アプリ開発で Python3 を利用しているため、画面最上部のメニューバーには「Python」と表示されます。知らないと、一瞬混乱するかもしれません。
〔碁盤アプリ2〕Sabaki
碁盤アプリのインストールの二つ目は、Sabaki です。
Sabaki を使うと、前述の5種類の思考エンジンのいずれでも利用できます。
今回は Sabaki を Homebrew を利用してインストールしました。
brew install sabaki
起動できるようにするためには、前述の Leela と同様の手順を踏む必要があります。
起動すると Sabaki のウインドウが表示されます。まず、思考エンジンの登録をします(登録方法は次節に記載)。
AI対AIの対局を観戦するには、メニーバーの「Engines」の「Show Engines Sidebar」を選択します。すると、ウインドウ左側にサイドバーが現れます。サイドバーの左上に三角形があるのでクリックすると、思考エンジンの一覧が表示されます。まず黒、次に白の思考エンジンを選択して、左上の稲妻のような形のアイコンをクリックすると、AI対AIの対局が始まります。
終了時は、Dock で「Sabaki」の「終了」をなぜか2回選択する必要があります。(代わりに、メニューバーの「Sabaki」で「Quit Sabaki」を選択したあとで、Dock の「Sabaki」で「終了」を選択することもできます。いずれにしても2回終了を選択する必要があります。現時点では原因はわかりません。)
Sakaki の思考エンジンの登録は以下の手順で行いました。
メニューバーの「Sabaki」の「Preferences…」を選択すると、ウインドウ下部に設定画面が表示されます。右端の「Engines」をクリックすると、思考エンジン画面に切り替わります。左下の「Add」をクリックすると、思考エンジンをひとつずつ追加できます。登録作業が終了したら、右下の「Close」をクリックします。
私は下記のように登録しています。(1行目が path 、2行目が arguments です。2行目に (No arguments) と書かれているものは、arguments は不要です。)
Fuego
/usr/local/bin/fuego
(No arguments)
/usr/local/bin/gnugo
--mode gtp
Katago
/usr/local/bin/katago
gtp -config /usr/local/Cellar/katago/1.10.0/share/katago/configs/gtp_example.cfg -model /usr/local/Cellar/katago/1.10.0/share/katago/g170-b30c320x2-s4824661760-d1229536699.bin.gz
Leela Zero
/usr/local/bin/leelaz
-g -w /usr/local/Cellar/leela-zero/0.17/share/leela-zero/00ff08ebcdc92a2554aaae815fbf5d91e8d76b9edfe82c9999427806e30eae77.gz
Pachi
/usr/local/bin/pachi
(No arguments)
Sabaki は思考エンジンと GTP (Go Text Protocol) を用いて通信しているようです。そこで、思考エンジンが GTP モードで起動されるように設定しています。
また、上記のうち KataGo と Leela Zero は、バージョンアップのたびに arguments を更新する必要があります。下記コマンドでそれぞれのファイル一覧が表示されますので、それぞれ対応する新しいファイルに書き換えるだけです。
brew list --verbose katago
brew list --verbose leela-zero
〔碁盤アプリ3〕LizGoban
碁盤アプリのインストールの三つ目は、LizGoban です。
LizGoban は多機能な碁盤アプリです。
今回は GitHub からダウンロードして利用しました。(〔準備3〕で書いたように、事前に Node.js をインストールしておく必要があります。下記の npm は Node.js に入ってます。)(囲碁関連作業用のディレクトリを作成して、その下で行いました)
git clone https://github.com/kaorahi/lizgoban
cd lizgoban
npm install
vi external/config.json (config.json の内容は次節に記載)
起動方法は下記の通りです。
npm start
起動すると LizGoban のウインドウが表示されます。次節の設定ファイルを利用すると、黒が KataGo で起動します。メニューバーで「Preset」→「Engine for White」→「Leela Zero」を選択すると、白が Leela Zero になります。この状態で着手候補が表示されます。
AI対AIの対局を観戦するには、メニューバーで「Electron」→「Match vs. AI」を選択します。ただし全自動ではなくて、画面右側の「start AI's turn」をクリックするたびに一手ずつ進行します(全自動にする方法は現時点ではわかりません)。
終了するには、「Electron」→「Quit」を選択します。
※アプリ開発で Electron を利用しているため、画面最上部のメニューバーには「Electron」と表示されます。知らないと、一瞬混乱するかもしれません。
前述の「vi lizgoban/external/config.json」では、下記の内容のファイルを作成しました。(煩雑さを避けるため簡易版を掲載します)
{
"preset": [
{
"label": "KataGo",
"engine": [
"/usr/local/bin/katago", "gtp",
"-override-config", "analysisPVLen=50, defaultBoardSize=19",
"-model", "/usr/local/Cellar/katago/1.10.0/share/katago/g170-b30c320x2-s4824661760-d1229536699.bin.gz",
"-config", "/usr/local/Cellar/katago/1.10.0/share/katago/configs/gtp_example.cfg"
]
},
{
"label": "Leela Zero",
"engine": [
"/usr/local/Cellar/leela-zero/0.17/bin/leelaz", "-g", "-w",
"/usr/local/Cellar/leela-zero/0.17/share/leela-zero/00ff08ebcdc92a2554aaae815fbf5d91e8d76b9edfe82c9999427806e30eae77.gz"
]
}
]
}
ご覧のように KataGo と Leela Zero のみの設定です。前述の Sabaki 同様、思考エンジンとは GTP (Go Text Protocol) を用いて通信しているとのことですが、Fuego, Gnu Go, Pachi とは相性が悪いようで動作させることができませんでした。
また、前述の Sabaki 同様、LizGoban でも KataGo と Leela Zero のバージョンアップのたびにこのファイルを更新する必要があります。下記コマンドでそれぞれのファイル一覧が表示されますので、それぞれ対応する新しいファイルに書き換えるだけです。
brew list --verbose katago
brew list --verbose leela-zero
〔関連記事〕
囲碁AIについては、下記のインタビュー記事が興味深かったです。囲碁AIに詳しいプロ棋士・大橋拓文六段に、将棋界に詳しい作家の白鳥士郎さんがインタビューしています。
- いま囲碁界で起きている”人間とAI”の関係 (ニコニコニュース, 2021-02-25)
下記は関連記事です。
- Deep Learning系の将棋AIは何ブロックでやっているのか? (やねうら王, 2021-02-26)
〔関連資料〕
また、囲碁AIを Windows で利用する場合は、下記資料が参考になりそうです。
- Lizzieの導入方法 (囲碁やら何やら)
- 他AIの導入方法 (囲碁やら何やら)