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

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

【お知らせ】

2021/8/26 問題なく動かせる手順に修正しました。

2021/8/22 2021年6月ころから、以前紹介していた方法が使えなくなったため、2021年8月以前に本記事の手順でColab-katagoを使っていた方は、乗り換えに以下の作業が必要です。

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)

GitHub - mildinvestor/katago-colab
Contribute to mildinvestor/katago-colab development by creating an account on GitHub.

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

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からダウンロードします。

Releases · featurecat/lizzie
Lizzie - Leela Zero Interface. Contribute to featurecat/lizzie development by creating an account on GitHub.

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-gd\colab-katago-gd.exe

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

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

colab_katago_gd_en.ipynb
https://colab.research.google.com/github/mildinvestor/katago-colab/blob/master/colab_katago_gd_en.ipynb

Googleアカウントで未ログインの場合は、右上のログインボタンから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のトークンとSSHパスワードを設定

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

変更前
変更後: トークン、パスワードを書き換える

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

サーバへKataGoインストール

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

再生ボタンをクリック

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

Google Driveに一時ファイルを保存するため、Googleへの認証を行います。表示されるURLをクリックすると、Googleのログイン画面が出てくるので、ログインします。

Googleの認証URLをクリック

Google Driveへのアクセスを求められるので、許可をクリックします。

許可をクリック

認証コードの文字列が表示されるので、右のボタンをクリックしてコピーします。

認証コードをコピーする

Colabに戻って、コピーした認証コードを”Enter verification code:”の枠に貼り付けます。

認証コードを貼り付ける

この認証操作は、Colabに接続するたびに毎回必要になります。

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

表示されたGoogle DriveのファイルIDは、Lizzie/Sabakiの設定で使うので、文字列を選択して、Ctrl+cでコピーしておきます。このファイルIDは2回目以降は同じIDが表示されます。

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

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

このメッセージが出たら再接続をクリック

LizzieでのKataGo接続設定

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

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

<colab-katago-gdの絶対パス> <Colab実行時に表示されるSSH_INFO_GOOGLE_DRIVE_FILE_ID> <Google Colabで設定したUSER_PASSWORD>

SSH_INFO_GOOGLE_DRIVE_FILE_IDは、コピーしたものを使用します。

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

colab-katago-gd.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: <Colab実行時に表示されるSSH_INFO_GOOGLE_DRIVE_FILE_ID> <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-gd-en.ipynbファイルを右クリックし、アプリで開く-Google Colaboratoryで開きます。

その後は実行ボタンを押せば、KataGoが実行されます。Google Driveへの認証URLが出てきた際は、認証とコードの貼り付けをしてください。

実行ボタンクリック

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

接続エラーが発生する場合

Lizzie/Sabakiから接続する場合に、以下のようなエラーが出る場合があります。

failed to create ssh clientssh: handshake failed: EOF

これは、SSHの再起動をすると動く場合があります。ノートブックの一番下にある”Restart SSH”を実行してから再度接続してみてください。

SSHの再起動

KataGoの設定変更

本記事で紹介したノートブックでのKataGoの設定は、Colabのクラウドサーバ上のファイルを使うようになっております。

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

囲碁のルールと対局時の強さを設定する方法

colab-katago-gd.ipynbの”KataGo configuration”のところで囲碁のルールと、対局時の強さ(探索時の最大訪問回数)を設定できます。KataGoのインストール(再生ボタン)を押す前に設定してください。設定の意味の詳細は、KataGoのものを参照してください。

  • rules: 囲碁のルール
  • maxVisits: ノードの最大訪問数
囲碁のルールと最大訪問数の設定

その他のKataGoの設定を変更したい場合は、ノートブックの以下のソースコードを変更してください。

KataGoの設定ファイルを作成する箇所のソースコード

KataGoインストール後に設定ファイルを変更する方法

ノートブック内に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インストールのたびに毎回このセルも実行する必要があります。

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

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

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

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

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をしばらく使用せず、以下のような警告がでてきても、無視してください。「標準ランタイムに切り替える」を選択すると、標準ランタイムに変更されてしまい、GPUが使用できなくなります。

標準ランタイムには切り替えないこと

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

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

利用上の注意点

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

Google Driveアクセス権限を与えることの注意点

Colab上の処理の中で、SSH接続情報をご自身のGoogle Driveに保存しています。ご自身のGoogle Driveに”colab-katago-ssh.json”というファイルが作成されており、このファイルは誰でもアクセスできるようになっています。

それ以外のファイルは操作しませんし、公開されないようになっていますが、他人の書いたプログラムに自身のGoogle Driveのアクセス権限を与える際には、意図しないアクセスがされていないか十分に確認しましょう。

悪意のあるプログラムだった場合は、自分の情報が盗まれたり、破壊されてしまう可能性があります。

パスワードの注意点

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

まとめ

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

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

一番性能が良いT4が割り当てられた場合は、3万円以上するGeforce RTX 2060と同程度の性能で動くようです。Geforce RTX 2070Geforce RTX 2080Geforce RTX 3080などを搭載した高性能パソコンであれば、それ以上の性能がでますが、その分お高いです。

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

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

コメント

  1. […] 【無料GPU】囲碁AI KataGoをGoogle Colaboratory上で動かす方法【お知らせ】2021/8/26… […]

  2. […] 【無料GPU】囲碁AI KataGoをGoogle Colaboratory上で動かす方法【お知らせ】2021/8/26… スポンサーリンク […]

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