【無料GPU】囲碁AI KataGoをGoogle Colaboratory上で動かす方法

節約・貯金
スポンサーリンク

AlphaGoが人間の実力を超えたのが記憶に新しい囲碁ですが、すでにいろいろな囲碁AIが登場しており、個人のパソコン上でも人間以上に強いAIを動かすことができます。

ただし、囲碁AIはディープラーニングを使用しているため、性能を引き出すには高性能なGPU(グラフィックボード)が必要になります。

そのために、ヘビーな囲碁AIユーザは、高性能な自作パソコンを組んだり、AWS(Amazon Web Services)やGCP(Google Cloud Platform)、Vast.aiなどのクラウドサービスを利用することが一般的です。ただし、クラウドの利用料などが多少なりともかかるので、気軽には利用しにくい面もあります。

本記事では、Google Colaboratory(Google Colab)という、オンラインでGPUを使った機械学習が利用できるクラウドサービスを利用して、人間以上の強さがあると言われている囲碁AIであるKataGoを無料で動かす方法を紹介します。

Google Colaboratoryは完全無料なので、課金される心配なく使用できます。

本記事を読んでできるようになること
  • GPUの入っていないパソコンからでも、最新の囲碁AIであるKataGoを高速に動かせるようになります。
  • 利用料金は完全無料です。ただし、1回の連続利用時間は最大12時間です。
  • CPU版のKataGoの数十倍の性能がでるので、Lizzieなどのソフトでの検討に利用可能です。
準備が必要なもの
  • Windows、Mac、Linuxいずれかのパソコン(64bit環境)
  • Googleアカウント
  • ブラウザ(Google Chrome推奨)

なお、本記事では、主にWindows10、Chromeブラウザの環境向けに解説します。

基本的にプログラミングや難しい操作は必要ありません。本記事の通りに操作するだけで、KataGoを動かせるようになります。では、説明していきます。

スポンサーリンク

Google Colaboratory(Google Colab)とは

Google Colabは、環境構築なしに機械学習などのプログラムをブラウザから実行することができます。Googleが無料で公開しており、Googleアカウントがあれば誰でも無料で利用できます。

もう少し詳しく言うと、Google ColabはJupyter Notebookのクラウド版です。Jupyter Notebookとは、ノートブックと呼ばれるファイルに、Pythonプログラムを記載して実行したり、説明の文章や図を書いたり、実行結果を保存したりできるツールです。

Google ColabでのKataGo実行環境の概要

katago-colabというGitHubプロジェクトで公開されているソフトと、Google Colab上のJupyterノートブックを利用して、Google ColabからクラウドサーバにKataGoをインストールします。また、そのサーバにパソコンの囲碁検討用ソフトから接続して利用します。

katago-colab(GitHub)
https://github.com/kinfkong/katago-colab/

以下に、実行環境の概要図を示します。

Google Colabを使った囲碁AIの動かし方概要図

本記事で環境を構築すると、以下のような流れでKataGoが動くようになります。

Google Colab上でのKataGo実行方法の概要
  1. ChromeからGoogle Colabにアクセスし、KataGoのインストールコマンドが記載されているノートブックを開く。
  2. Google Colabでノートブックを実行し、KataGoをクラウドサーバにインストールする。
  3. 自分のパソコンの囲碁対局・検討ソフト(Lizzie)から、クラウドサーバにSSHで接続するクライアント(colab-katago)を起動する。
  4. colab-katagoがクラウドサーバ上のKataGoを起動し、LizzieとGTP(Go Text Protocol)という言葉で囲碁の情報をやりとりする。

Lizzie(検討用ソフト)のインストール

囲碁AIを使って棋譜の検討や研究をしたい方は、Lizzieをインストールするのがおすすめです。まずは、Lizzieのインストール方法を解説します。

Lizzieをすでにインストール済みの方は、スキップしてください。

Java実行環境のインストール

Javaの実行環境がインストールされていない方は、あらかじめこちらからダウンロードしておきましょう。
すでにJava8以上の実行環境がインストールされている場合は、本手順はスキップしてください。

AdoptOpenJDK
https://adoptopenjdk.net/

上記URLにWindows10からアクセスした場合、以下のような画面が出ますのでLatest releaseをクリックしてダウンロードして、インストールします。

Latest releaseをクリック

ダウンロードしたファイルをダブルクリックしてインストールします。

次へをクリック
使用許諾契約書に同意して次へをクリック
次へをクリック
インストールをクリック
完了をクリック

Lizzieのインストール

自分のパソコンに囲碁検討用ソフトであるLizzieをインストールします。
Lizzieをインストール済みの方はスキップしてください。

Lizzieを以下のURLからダウンロードします。https://github.com/featurecat/lizzie/releases

Assetsの中からご自身の環境に合わせて、ダウンロードし、ZIPファイルを解凍します。

Lizzieダウンロード

Windows10でGPUを搭載していないパソコンや、よくわからない場合は、Lizzie.*.*.*.Windows.x64.CPU.zipをダウンロードしてください。

ZIPファイルを解凍すると、Lizzieフォルダが作成されますので、任意の場所に置いてください。

Lizzieインストール後

lizzie.jarをダブルクリックしてアプリケーションが起動したらインストール成功です。

Lizzie起動後の画面

Sabaki(対局用のソフト)のインストール

続いてSabakiをインストールします。

Lizzieでも対局はできますが、検討用に特化したソフトなので、AIと対局したい場合は、Sabakiのほうが個人的には使いやすいと思います。

Sabakiインストール済みの方、Lizzieのみで良い方はスキップしてください。

以下のURLからSabakiをダウンロードします。

Sabaki
https://github.com/SabakiHQ/Sabaki/releases

Assestsに以下のリストが出てきます。ご自身の環境に合わせて選択してください。

Windows10の場合は、以下のどちらかをダウンロードします。

  • ポータブル版: sabaki-v*.**.*-win-x64-portable.exe
  • インストーラ版: sabaki-v*.**.*-win-x64-setup.exe

ポータブル版をダウンロードした場合、ダウンロードしたsabaki-v*.**.*-win-x64-portable.exeを、適当なフォルダの中に入れます。sabaki-v*.**.*-win-x64-portable.exeをダブルクリックして、アプリケーションが起動すればインストール成功です。

Sabaki起動後の画面

Google Colab上のKataGoに接続するクライアントのインストール

以下のURLからそれぞれの環境に合わせて、クライアントをダウンロードします。
このクライアントは、Google Colabで立ち上げたマシンにSSHログインし、KataGoを起動するものです。

ZIPファイルを解凍し、任意のフォルダに置いてください。

本記事の図では、Windows版の実行ファイルを以下にファイルを置いたものとしてすすめます。
G:\go\colab-katago\colab-katago.exe

Google Colabのノートブックを開く

Chromeで以下のURLを開きます。

colab-katago-en.ipynb
https://colab.research.google.com/drive/1sKv4QHdB6P-fSNMIhZkaC5gti6qhHDeC?usp=sharing

Googleアカウントで未ログインの場合は、右上のログインボタンからGoogleアカウントにログインします。

ログインをクリック

ログイン後、ドライブにコピーをクリックします。

ドライブにコピーをクリック

ログインしているGoogleアカウントのGoogle Driveにノートブックがコピーされます。

自分のGoogleアカウントへのコピー成功

ngrokのトークン取得

Google Colabで起動するマシンにインターネットからSSHログインできるように、ngrokというサービスのアカウントを作成します。

以下のURLにアクセスします。

ngrok
https://dashboard.ngrok.com/auth/your-authtoken

Log in with Googleを選択して、Googleアカウントのログイン情報を入力します。

ngrokにGoogleアカウントでログイン

ログイン後、左のメニューからAuthentication – Your Authentokenを選択肢表示されたトークンの文字列をコピーします。

トークン文字列をコピー

Google Colabにngrokのトークンとユーザ、パスワードを設定

ChromeのGoogle Colabに戻り、ngrokのトークンとユーザ、パスワードを設定します。

変更前: 最初から入っているトークン、ユーザ、パスワード
変更後: トークン、ユーザ、パスワードを書き換える

貼り付けはCtrl+vでできます。右クリックからの貼り付けは使えないのでご注意ください。

サーバへKataGoインストール

続いて、左の再生ボタンをクリックして、KataGoのインストールを開始します。

再生ボタンをクリック

少し下にスクロールすると、インストール状況が表示されます。

done!の行が表示されたらインストール完了です。

KataGoインストール完了

このあとは、Chromeは閉じずにそのままにしておきます。

一定時間、この画面が操作されていないと、接続が切れますので、連続して使用する際は注意してください。

このメッセージが出たら再接続が必要

LizzieでのKataGo接続設定

Google Colab上でKataGoがインストールできたら、Lizzieを開き、設定 – エンジンを表示します。

空欄になっている箇所にcolab-katagoを以下のように設定して、OKをクリックします。

<colab-katagoの絶対パス> <Google Colabで設定したUSER_NAME> <Google Colabで設定したUSER_PASSWORD>

KataGoへの引数は、colab-katago.exeの中で固定されており、ここの引数を変更してもKataGoの設定は変更できません。設定を変更したい場合は、後述するKataGoの設定ファイルの変更手順を実施する必要があります。

colab-katago.exeを指定して、OKをクリック

Lizzieのメニューで、今設定したエンジンの番号を選択します。

Lizzieのエンジン変更

しばらく待った後、分析実行が開始されれば成功です。

接続完了後

SabakiでのKataGo接続設定

Sabakiでも同様に、colab-katagoを設定できます。SabakiのメニューからEngines – Show Engine Sidebarを選択します。

Sabakiのサイドバーが表示される

再生ボタンの隣の▼をクリックし、Manage Enginesを選択肢、以下のように入力します。

SabakiでのKataGo起動設定
  • (Unnamed Engine): colab-katago
  • Path: <colab-katago.exeのある絶対パス>
  • No arguments: <Google Colabで設定したUSER_NAME> <Google Colabで設定したUSER_PASSWORD>

設定後は、再生ボタンの隣の▼をクリックし、colab-katagoを選択すると起動できます。

2回目以降の利用方法

2回目以降にKataGoを使いたい場合は、Google ColabやLizzieの設定は不要です。
Google Colabにアクセスして、再度KataGoをインストールすれば使えるようになります。

ChromeでGoogleドライブを開きます。
https://drive.google.com/drive/my-drive

Colab Notebooksフォルダ内のcolab-katago-en.ipynbファイルを右クリックし、アプリで開く-Google Colaboratoryで開きます。

その後は実行ボタンを押せば、KataGoが実行されます。

あとは初回と同様にLizzieやSabakiからエンジンを選択すればOKです。

KataGoの設定変更

本記事で紹介したノートブックでのKataGoの設定は、GitHub上のファイルを使うようになっており、変更できるようになっていません。囲碁のルールはtromp-taylor(中国ルールに近いもの)となっており、そのままでは日本ルールには変更できません。

使用されるKataGoの設定ファイル
https://github.com/kinfkong/katago-colab/blob/master/config/gtp_colab.cfg

KataGoへの引数は、colab-katago.exeの中で固定されており、Lizzieの設定でcolab-katago.exeへ渡す引数を変更してもKataGoの設定は変更できません。

KataGoの設定を変更したい場合は、ノートブック(ipynbファイル)のソースコードを自分で変更して使う必要があります。例として2つ方法をご紹介します。

ノートブック内に設定ファイルを記載する方法

ノートブック内にKataGoの設定ファイル内容を記載して、その設定で上書きする方法を紹介します。KataGoの設定を色々変更して試したい場合は、基本的にはこちらがおすすめです。

メニューの挿入-コードセルからノートブックに新しいセルを追加します。

このセルに%%writefileの行を記載します。その行より下に、KataGoの設定ファイルの内容を貼り付けます。KataGoのインストール後に、このセルを実行すれば設定ファイルが上書きされます。

%%writefile /content/katago-colab/config/gtp_colab.cfg

# お手元の設定ファイルの中身をコピーしてCtrl+vで貼り付けます。以下は一例です。

logDir = gtp_logs
logAllGTPCommunication = true
logSearchInfo = true
logToStderr = false
rules = japanese
allowResignation = true
resignThreshold = -0.90
resignConsecTurns = 3
# maxVisits = 500
# maxPlayouts = 300
# maxTime = 10
ponderingEnabled = true
maxTimePondering = 60
lagBuffer = 1.0
numSearchThreads = 12
searchFactorAfterOnePass = 0.50
searchFactorAfterTwoPass = 0.25
searchFactorWhenWinning = 0.40
searchFactorWhenWinningThreshold = 0.95
KataGoの設定変更

設定を変えたい場合は、KataGoインストールのたびに毎回このセルも実行する必要があります。

Pythonで設定ファイルを上書きする方法

Pythonで設定ファイルを上書きする方法を紹介します。KataGoの設定が決まっており、変更する必要があまりない場合、プログラミングに抵抗がない場合はこちらがおすすめです。

KataGoをインストールするセルの中の一番下(done!の直前の行)に、設定ファイルを上書きするソースコードを記載します。例として、日本ルールへの変更、maxVisitsを5000に変更する場合、以下のように記載します。ついでに設定ファイルの中身も出力してみます。

with open('/content/katago-colab/config/gtp_colab.cfg', mode='w') as f:
    f.write('logDir = gtp_logs\n')
    f.write('logAllGTPCommunication = true\n')
    f.write('logSearchInfo = true\n')
    f.write('logToStderr = false\n')
#    f.write('rules = tromp-taylor\n')
    f.write('rules = japanese\n')
    f.write('allowResignation = true\n')
    f.write('resignThreshold = -0.90\n')
    f.write('resignConsecTurns = 3\n')
#    f.write('maxVisits = 500\n')
    f.write('maxVisits = 5000\n')
    f.write('maxPlayouts = 300\n')
#    f.write('maxTime = 10\n')
    f.write('ponderingEnabled = true\n')
    f.write('maxTimePondering = 60\n')
    f.write('lagBuffer = 1.0\n')
    f.write('numSearchThreads = 12\n')
    f.write('searchFactorAfterOnePass = 0.50\n')
    f.write('searchFactorAfterTwoPass = 0.25\n')
    f.write('searchFactorWhenWinning = 0.40\n')
    f.write('searchFactorWhenWinningThreshold = 0.95\n')

!echo -e "\n[KataGo Config]" 
!cat /content/katago-colab/config/gtp_colab.cfg
!echo -e "\n"
KataGoの設定ファイル上書き

以降は、KataGoをインストールするたびに上記の設定で設定ファイルが上書きされるようになります。

割り当てられるGPUの性能とKataGoの強さ

Google Colabでは割り当てられるGPUの種類は指定できません。GPUはT4 > P100 > P4 > K80の順で高性能になりますが、接続するたびに違うGPUが割り当てられることがあります。

colab-katagoでは、GPUの種類に合わせてKataGoの種類とディープラーニングのネットワークは最適なものを選ぶようになっています。

例えば、最も性能が良いGPUであるT4が割り当てられた場合、ディープラーニングの性能を左右するネットワークファイルも大きい(=より高性能なGPUが必要な)40bが使われます。

T4は単精度(FP16)での計算に対応しており、OpenCL版よりCUDA版のほうが速くなるので、CUDA版が使われるようになります。

GPU 処理性能 KataGo ネットワークファイル
Tesla K80 4.37 TFLOPS OpenCL版 20b 
Tesla P4 5.5 TFLOPS OpenCL版 20b
Tesla P100 9.3 TFLOPS OpenCL版 40b 
T4 8.1 TFLOPS(FP32)
16.2 TFLOPS(FP16)
CUDA版 40b 

割り当てられたGPUは、以下のソースコードをKataGoインストールのセルの途中に追加すると出力できます。

!echo "GPU: " $gpu_name

またはノートブックの下の方にある以下のセルを実行しても出力できます。

!nvidia-smi

AWSやGCPなどのクラウドで使えるV100や最新のハイエンドGPUには劣りますが、家庭用のミドルエンドからハイエンドクラスのGPUが無料で使えますので、ありがたいですね。

対局時にKataGoが十分な時間考えるように設定すれば、人間以上の強さを発揮すると思われます。

利用時間の制限

Google Colabを利用するにあたっての時間制限やリソースの制限について説明します。

90分ルールと12時間ルール

Google Colabで起動したマシンは、セッションが切れてから90分、起動時から12時間以内に使えなくなります。

Google Colabの時間制限のルールは、詳しくは以下の記事にわかりやすく記載されております。

【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory
シャットダウンまでの残時間は(90分ルールと12時間ルール)

長時間使いたい場合は、Google Colabを開いているページを閉じないようにしてください。KataGoを使っている間、Google Colabのページを触っていないと、ランタイムの切断という画面が表示されます。この画面が表示された場合は、再接続をクリックしてください。

接続が切れた場合は、再接続が必要

切断されないようにするには、Chromeの拡張機能Easy Auto Refreshを使って、10分間隔でページを更新するのがお手軽です。

Easy Auto Refreshで10分間隔でページ更新

Easy Auto Refreshのインストール方法と使い方は、以下のページで詳しく解説されています。

Chromeでブラウザを自動更新する拡張機能 Easy Auto Refresh

GPU利用時間の上限

Google ColabではGPUの利用時間の上限が定められており、長時間使っているとGPUが使用できなくなります。本記事で紹介しているKataGoはGPUがないと動きません。

Colab の使用量上限とは何ですか?

Colab を長期間のコンピューティング処理に使用するユーザーや直近のリソース使用量が多いユーザーは、使用量が上限に達して GPU と TPU へのアクセスが一時的に制限される可能性が高くなります。

Colaboratoryよくある質問より引用

GPU利用時間の上限に達した場合は、以下のようなエラーメッセージが表示されます。

GPUの利用制限エラー(Colab Proを2ヶ月ほど使ってのメモ(良い点 / イマイチな点)より引用)

このようなケースでは、以下のような対処が考えられます。

GPU利用制限への対処法
  • しばらく待ってからGoogle Colabを利用する
  • 複数のGoogleアカウントを使い分ける
  • Colab Proに登録する(9.99ドル/月)

Colab Proは月額9.99ドルかかりますが、GPU利用制限の緩和、優先的に高性能なGPUが割り当てられるなどのメリットがあります。1日何時間も高性能GPUでKataGoを使う人にとっては、AWSやGCPなどのクラウドよりもコスパは高いかもしれません。

なお、Colab Proは米国限定のサービスですが、郵便番号に米国のものを利用すれば、日本のクレジットカードでも登録できるそうです。日本からの登録方法は、以下のページで解説されています。

Colab Proを日本から登録する

標準ランタイムに変更された場合の戻し方

突然切断されてGPUが使えなくなる現象も報告されています。

GPUを30分ほど連続で使用したら突然切断されたので、再度接続しました。GPUの使用を数分休ませたら、「GPUが使用されていません、標準ランタイムに変更しますか?」というメッセージが出てきたので試しに標準ランタイムにしてみました。しかしこれだとKataGoが動かなくなります。

本記事へのお問い合わせメールより引用

もし意図せず標準ランタイムに変更されてしまった場合は、GPU版に戻す必要があります。Colabのメニューから[ランタイム]-[ランタイムのタイプの変更]でハードウェアアクセラレータにGPUを選択して保存してください。

ラインタイムのタイプを変更
ハードウェアアクセラレータをGPUに変更し保存

利用上の注意点

Google ColabでKataGoを利用するにあたって、いくつか注意すべき点があります。

ユーザIDは他人と重複しないようにする

ユーザIDは他人と重複しないよう、ユニークなものを使ってください。他人と重複してしまうとうまく動かない可能性があります。

セキュリティ上の注意点

Colab上の処理の中で、SSH接続情報を外部サーバ(中国のAlibabaクラウド)に保存しています。ユーザIDが重複すると使えないのは、この保存先がユーザIDをキーにしているためです。

注意点としては、この外部サーバが使えなくなったら動かなくなるのと、セキュリティ的に外部サーバを使うのは気持ち悪いので、どうしても気になる方は自前でサーバを用意してそちらに保存するほうが良いかもしれません。

ユーザIDとパスワードは普段使っていないものにしましょう。ユーザIDとパスワードは暗号化されていない状態で保存されているため、漏洩するリスクがあります。

まとめ

クラウド上のGPU搭載マシンを使って、囲碁AIのKataGoを動かす方法を説明しました。

さらに深堀りして細かいカスタマイズをしたいなら、PythonやLinuxなどのスキルが多少必要ですが、基本的にはプログラミングなどの知識なしに、GPU版の高速な囲碁AIを無料で動かせるようになりました。

個人が囲碁の検討に使う分には十分高速で、囲碁の検討や勉強が捗ると思います。これが完全無料で使えるとは、Googleは太っ腹ですね(^o^)

囲碁の勉強に役立つAlphaGoの棋譜関連書籍はKindle Unlimitedで読み放題のものが色々あります。

タイトルとURLをコピーしました