手持ちの Mac に囲碁ソフトをいくつか入れてみました。インテル版 macOS 11 Big Sur です。
※情報を更新しました→「囲碁AIソフトをインテル版 macOS Big Sur と Monterey にインストールしてみた」(2021年11月5日)をご覧ください。
2016年3月に AlphaGo が韓国のイ・セドル九段を4勝1敗で破って以来、人間が囲碁AIに学ぶ時代になりました。市販のパソコンで動作するオープンソースの強力な囲碁AIソフトウェアがいくつも公開されているので、インストールすれば誰でも利用できるようになりました。熟練者が本気で使おうと思ったら高性能パソコンが必要なようですが、入門者レベルの私は、手持ちの Mac で動いてくれるだけで御の字です。(入門者向けの接待モードがあると、なお嬉しいです)
最近は、囲碁AIの思考エンジン・ソフトウェアと、碁盤を操作するためのユーザインタフェース・ソフトウェアは別々に開発されているそうです。そして、自分の目的にあった思考エンジンと、自分の目的にあった碁盤アプリを組み合わせて使うというスタイルになるようです。ただ、いまは発展段階にあるので、良さそうなものをいくつかインストールしておいた上で、バージョンアップをこまめに追いかけて、その時々で一番目的にかなったものを使うことになるようです。
私は入門者レベルなので本当は手頃な囲碁アプリがひとつあれば十分なのですが、思い立ったら吉日とばかりに、囲碁AIの思考エンジンを5種類と、碁盤アプリを3種類をインストールしてみました(すべての組み合わせで使えるわけではありません)。
今日のところは、囲碁AI同士を対局させて、それを眺めることができるところまで作業しました。入門者レベルの私が言っても信憑性はないと思いますが、、かつて見た布石とは全然違う布石で始まります。。もしかしたら、私は入門者レベルというよりも、門外漢レベルと称した方が正確かもしれません…
なお、思考エンジンは Homebrew から Fuego, GNU Go, KataGo, Leela Zero, Pahci の5種類をインストールしました。碁盤アプリは、GitHub から LizGoban, Sabaki の2種類を、PyPI から KaTrain をインストールしました。
今日ざっと試したところ、思考エンジンで一番強そうなのは KataGo、碁盤アプリで思考エンジンを選ばないのは Sabaki、高機能そうなのは LizGoban のようでした。しかし私は門外漢レベルなので、大きな勘違いをしていたら誠に申し訳ありません。
以下、インストール作業のメモです。(準備作業×3本、思考エンジン×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)"
例えば囲碁アプリ Leela をインストールするのであれば、Homebrew をインストールした上で、下記を実行します。これで Launchpad から起動できるようになります。
brew install leela
(なお、Leela は今回のメモの対象ではありません。Leela Zero と同じ人が作ったまったく別のソフトウェアです。)
〔準備3〕nodebrew と Node.js
碁盤アプリ Sabaki と LizGoban をインストールするためには、nodebrew と Node.js をインストールしておく必要があります。(KaTrain には必要ありません)
まず、Homebrew を利用して nodebrew をインストールします。
brew install nodebrew
次に nodebrew を用いて Node.js をインストールします。
nodebrew setup
nodebrew install stable
そして、インストールされたバージョンを確認します。
nodebrew ls
表示されたバージョンを「nodebrew use」で設定します。例えば、次のように設定します。
nodebrew use v14.16.0
そして、~/.zprofile もしくは ~/.bash_profile に下記を追記します。また、今すぐ利用できるようにターミナルでも下記を実行します。
export PATH=$HOME/.nodebrew/current/bin:$PATH
※ご覧のように、~/.nodebrew にインストールされるようです。
〔思考エンジン〕
準備が完了したら、まずは思考エンジンのインストールです。
下記のように 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
最新版を細かく追いかけたくなったら、下記サイトに書かれている方法でソースコードを取得して追いかければよさそうでした。
〔碁盤アプリ1〕KaTrain
次に、碁盤アプリのインストールです。まずは一番簡単な KaTrain から。
KaTrain は KataGo 専用の碁盤アプリです。
今回は KaTrain を PyPI (Python Package Index) を利用してインストールしました。そのため、まず python3 をインストールします。(まだインストールしてない場合のみです)
brew install python3
次に、PyPI から katrain をインストールします。
pip3 install katrain
起動方法は「ターミナル」で次のようにタイプするだけです。
katrain
起動すると KaTrain のウインドウが表示されます。左上にある「三」の形をしたアイコンをクリックすると、メニューが表示されます。「Player」の下の「Human」をクリックすると「AI」に変更することができます。人間対AI、AI対AI、などが選べます。
※アプリ開発で Python3 を利用しているため、画面最上部のメニューバーには「python」と表示されます。知らないと、一瞬混乱するかもしれません。
(なお、KaTrainOSX.zip が用意されてますが、macOS 11 Big Sur では起動できませんでした。codesign されてないのかもしれません。そこで今回はインストール手順に従って上述のように作業しました。)
〔碁盤アプリ2〕Sabaki
碁盤アプリのインストールの二つ目は、Sabaki です。
Sabaki を使うと、様々な思考エンジンを利用することができます。
今回は GitHub からダウンロードして利用しました。(囲碁関連作業用のディレクトリを作成して、その下で行いました)
git clone https://github.com/SabakiHQ/Sabaki
起動方法は下記の通りです。(〔準備3〕で書いたように、事前に Node.js をインストールしておく必要があります。下記の npm は Node.js に入ってます。)
cd Sabaki
npm start
起動すると Sabaki のウインドウが表示されます。(現時点では起動時に「This file is unreadable」という warning が表示されます。原因はまだわかりませんが、大きな問題はなさそうなので、解決は後回しにしています。)
左上にある三角形をクリックすると、思考エンジンの一覧が表示されます(登録方法は次節に記載)。まず黒、次に白の思考エンジンを選択して、左上の稲妻のような形のアイコンをクリックすると、AI対AIの対局が始まります。
終了時は、Dock で「Electron」の「終了」をなぜか2回選択する必要があります。(その代わりに、メニューバーの「Electron」で「Quit Sabaki」を選択したあとで、Dock の「Electron」で「終了」を選択するという手もあります。いずれにしても2回終了を選択する必要があります。現時点では原因はわかりません。)
※アプリ開発で Electron を利用しているため、画面最上部のメニューバーには「Electron」と表示されます。知らないと、一瞬混乱するかもしれません。
(なお、Homebrew にも sabaki が用意されてますが、macOS 11 Big Sur では起動できませんでした。codesign されてないのかもしれません。そこで上述のように作業しました。)
Sakaki の思考エンジンの登録は以下の手順で行いました。
ウインドウ左上の三角形をクリックして、「Manage Engines...」を選択します。すると思考エンジン登録用のウインドウが表示されるので、手持ちの思考エンジンを登録していきます。左下の「Add」をクリックすると、ひとつずつ追加できます。
私は下記のように登録しています。(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.8.1/share/katago/configs/gtp_example.cfg -model /usr/local/Cellar/katago/1.8.1/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 からダウンロードして利用しました。(囲碁関連作業用のディレクトリを作成して、その下で行いました)
git clone https://github.com/kaorahi/lizgoban
vi lizgoban/external/config.json (config.json の内容は次節に記載)
起動方法は下記の通りです。(〔準備3〕で書いたように、事前に Node.js をインストールしておく必要があります。下記の npm は Node.js に入ってます。)
cd lizgoban
npm start
起動すると LizGoban のウインドウが表示されます。次節の設定ファイルを利用すると、黒が KataGo で起動します。メニューバーで「Preset」→「Engine for White」→「Leela Zero」を選択すると、白が Leela Zero になります。メニューバーで「Electron」→「Match vs. AI」を選択すると囲碁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.8.1/share/katago/g170-b30c320x2-s4824661760-d1229536699.bin.gz",
"-config", "/usr/local/Cellar/katago/1.8.1/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の導入方法 (囲碁やら何やら)