はじめに
KataGo(カタゴ)はDavid J. Wu(通称 lightvector)によって開発されたコンピュータ囲碁プログラムである。
https://ja.wikipedia.org/wiki/KataGo
DeepMindが発表したAlphaGo ZeroとAlphaZero論文に基づいてDavid J. WuがKataGoを作成した[6]。さらに、DeepMindの論文に加え、多くの関連研究と独自の研究の結果、強化学習の速度を大幅に向上させた(50倍以上)。また、ニューラルネットワークのデータが公開されている、世界で最も強いコンピューター囲碁ソフトウェアの1つとなった。
macOSにKataGoをインストールできなくて困ってる人が少なからずいるということなので、初心者にもなるべくわかりやすく理解できるよう心がけて本記事を投稿します。
とにかく書いてある通りにやれば動くのですが、解説も入れています。ステップごとに「何をやっているのか」理解できると、KataGoなどのバージョンが変わった場合や、異なるOSで利用するときに応用が効くと思います。
おおまかな流れ
- Homebrewのインストールと設定
- KataGoのインストールと設定
- Java実行環境(OpenJDK)のインストール
- Lizzieのインストールと設定
- KataGo/Lizzieを簡単に実行する準備
Homebrewのインストールと設定
Homebrewとは、簡単に説明するとmacOSに様々なソフトウェアを簡単にインストールできるソフトウェアです。Homebrewをインストールすると、KataGoをコマンド一発でインストールできるようになります。
Homebrewのインストールは、一般の方にはちょっと慣れない方法ですが、次の手順通りにやれば、簡単です。
ターミナルを起動
macOSで「⌘(コマンドキー)」を押しながらスペースキーを押すと、Spotlight検索が起動します。
ここに「ターミナル」と入力すると、そのまんま「ターミナル」という名前のアプリが見つかりますので、そちらを↑↓キーで選択してEnterで起動します。(マウスでクリックでもOK)
ターミナルは、次の方法で起動することもできます。
- Finderで「アプリケーション」フォルダ内の「ユーティリティ」フォルダを開き、「ターミナル」のアイコンをダブルクリック
- LaunchPadを起動し、「その他」フォルダ内にある「ターミナル」のアイコンをクリック
ターミナルが起動しました。
Homebrewのインストール
下記のリンク先(Homebrewの公式ページ)を開きます。
次の画像のように、「インストール」の下にコマンドが書いてあるので、これをコピーします。(コマンドの右側にある四角いメモ帳のようなアイコンをクリックするとコピーされます)
コピーしたコマンドを、ターミナルにペーストします。(ターミナルの画面をクリックして、⌘+vで貼り付けられます)
Enterキーを押すと、貼り付けたコマンドが実行されて、Homebrewのインストールが始まります。
途中で、次のようにパスワードの入力を求められる場合があります。これは、Homebrewのインストールのために必要なXcode Command Line Toolsというアプリがインストールされていない場合に発生します。macOSにログインするときに使用しているパスワードを入力してEnterを押します。
Xcode Command Line Toolsのインストールが進みます。
引き続き、Homebrewのインストールが自動的に進みます。
下の画像のように Installation Successful! と表示されれば、Homebrewのインストールは完了です。
Homebrewインストールの確認
ターミナルで、次のコマンドを入力します。
brew -v
次のようにHomebrewのバージョンが表示されればOKです。(バージョン番号は違う可能性があります)
Homebrewの更新
Homebrewを最新の状態にします。
ターミナルで、次のコマンドを入力します。
brew update
ターミナルで、次のコマンドを入力します。
brew upgrade
上記コマンドが完了するまで時間がかかる場合があります。完了すれば、Homebrewの準備は完了です。
KataGoのインストールと設定
KataGoのインストール
ターミナルで、次のコマンドを入力します。
brew install katago
少し時間がかかりますが、勝手にインストールが進みます。
KataGoのインストールが完了したら、ターミナルで、次のコマンドを入力します。
katago version
インストールされたKataGoのバージョンが次のように表示されればOKです。
KataGoの実行テスト
KataGoは囲碁プログラム(AI)ですが、囲碁を行う環境は備わっていません。いわばKataGo単体では、棋士だけのようなものです。後述のステップでKataGoが碁を打てる環境(Lizzie)をインストールしますが、ここでKataGoが起動するかどうかを確認しましょう。
インストールされたKataGoの確認
KataGoを実行するためには、KataGoの実行に使用する設定ファイルとネットワークファイルを指定する必要があります。
ターミナルで次のコマンドを入力し、KataGoの実行に必要なファイルがどこにあるか確認します。
brew list --verbose katago
次のように表示されます。読みにくい場合は、ターミナルのウインドウを広げて読みやすくしましょう。
上記の情報は、KataGoを実行するために必要な設定ファイルとネットワークファイルがどこにインストールされているのかを示します。
たとえばKataGoの動作を設定するための設定ファイルのサンプルは、次の場所にあることがわかります。
/opt/homebrew/Cellar/katago/1.9.1/share/katago/configs/gtp_example.cfg
上記は、「opt(という名前の)フォルダ下のhomebrewフォルダ下のCellarフォルダ下のkatagoフォルダ下の1.9.1フォルダ下のshareフォルダ下のkatagoフォルダ下のconfigsフォルダ下にあるgtp_example.cfgという名前のファイル」という意味です。
このような、ファイルの場所を示す情報を「ファイルのパス(英語で file path)情報」といいます。パス情報がわかると、ファイルがコンピュータのストレージのどこにあるのかが分かります。
見るとおわかりのように、KataGoはバージョンごとに異なるフォルダにインストールされます。今回の場合はKataGoのバージョンは1.9.1なので「1.9.1」というフォルダ名が、パス情報に含まれているのがおわかりになるかと思います。
KataGoの単体実行
これでKataGoの実行に必要な情報が集まりました。
KataGoを実行するコマンドの書式は次の通りです。
katago gtp -config [設定ファイル] -model [ネットワークファイル]
実際には、設定ファイルとネットワークファイルを前章の情報から代入しますので、次のようになります。(これは環境によって違うので皆さん自分で作成してください。また、このコマンドはLizzieの章で使用します)
katago gtp -config /opt/homebrew/Cellar/katago/1.9.1/share/katago/configs/gtp_example.cfg -model /opt/homebrew/Cellar/katago/1.9.1/share/katago/g170e-b20c256x2-s5303129600-d1228401921.bin.gz
上記コマンドをターミナルに入力し、Enterで実行します。
起動には少々時間がかかります。「GTP ready, beginning main protocol loop」と表示されたら、起動に成功しています。
KataGoの実行を止めるには、ターミナルで「control + C」(controlを押しながらcキー)を押します。
Java実行環境(OpenJDK)のインストール
KataGoというAI棋士のインストールが終わったところで、次に囲碁を実行する環境、Lizzieをインストールします。
Lizzieは、ディープラーニングで強化されたオープンソースの囲碁思考エンジン「Leela Zero」のために開発されたGUIフロントエンド(つまり囲碁環境)です。
LizzueはJavaという言語で開発されていますので、初めにJavaを実行するために必要な「Java実行環境」をインストールします。Java実行環境は世の中に複数ありますが、今回はオープンソースのOpenJDKをインストールします。
ターミナルで、次のコマンドを入力します。
brew install openjdk
インストールが完了すると、次のようなメッセージが表示されます。
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
This is a beta version of openjdk for Apple Silicon
(openjdk 16 preview).openjdk is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.If you need to have openjdk first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrcFor compilers to find openjdk you may need to set:
export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
ターミナルで、次の4つのコマンドを順番に入力・実行します。
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"' >> ~/.zshrc
source ~/.zshrc
OpenJDKのインストールが完了しました。
Lizzieのインストールと設定
Lizzieのダウンロード
次のリンク先を開きます。
macOSで動作する Lizzie.バージョン番号.Mac-Linux.zip をクリックしてダウンロードします。
ダウンロードしたzipファイルを解凍します。macOSの場合、ダブルクリックすれば解凍されます。
解凍すると、ダウンロードフォルダ内に Lizzie という名前のフォルダが作成されているはずです。
この Lizzie フォルダを丸ごとホームフォルダ(ホームディレクトリ)直下に移動するため、ターミナルで次のコマンドを実行します。
mv ~/Downloads/Lizzie ~/
Lizzieの初回実行と設定
ターミナルで次のコマンドを実行し、Lizzieを起動します。
java -jdk ~/Lizzie/lizzie.jar
初回起動時はエラーダイアログが表示されるのでOKをクリックすると、エンジンの設定画面が開きます。
Engineの欄に既に入力されているものは、Leela Zeroのためのサンプル設定なので不要です。これを消して、KataGoをエンジンとして使用するためのコマンドをここに貼り付けます。これはKataGoの単体実行の章で作成したコマンドそのものです。ここに再掲載しますが、個人の環境によってコマンドは異なる場合がありますので注意してください。
katago gtp -config /opt/homebrew/Cellar/katago/1.9.1/share/katago/configs/gtp_example.cfg -model /opt/homebrew/Cellar/katago/1.9.1/share/katago/g170e-b20c256x2-s5303129600-d1228401921.bin.gz
Engineの項目にコマンドを貼り付けたらOKで設定画面を閉じると、Lizzieが自動的に終了します。
Lizzieを再起動してみましょう。
java -jdk ~/Lizzie/lizzie.jar
エンジンの読み込みにしばらく時間がかかります。
しばらく待ち、次のような画面になればKataGoの準備が完了です。
KataGo/Lizzieを簡単に実行する準備
Lizzieを起動するために毎回ターミナルからコマンドを入力するのは面倒なので、ダブルクリックで実行できるスクリプトを作りましょう。
ターミナルで次のコマンドを順番に実行します。
cd
echo '#/bin/sh' > ~/Desktop/Lizzie.command
echo 'java -jar ~/Lizzie/lizzie.jar' >> ~/Desktop/Lizzie.command
chmod +x ~/Desktop/Lizzie.command
これでMacのデスクトップに「Lizzie.command」というファイルができているはずです。ダブルクリックして、Lizzieが起動することを確認します。
このファイルからダブルクリックで初回起動した際に、Lizzieの設定を再度行う必要があります。前章の手順に従ってLizzieにKataGoの設定を行います。