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は完全無料なので、課金される心配なく使用できます。
基本的にプログラミングや難しい操作は必要ありません。本記事の通りに操作するだけで、KataGoを動かせるようになります。では、説明していきます。
- Google Colaboratory(Google Colab)とは
- Google ColabでのKataGo実行環境の概要
- Lizzie(検討用ソフト)のインストール
- Sabaki(対局用のソフト)のインストール
- Google Colab上のKataGoに接続するクライアントのインストール
- Google Colabのノートブックを開く
- ngrokのトークン取得
- Google ColabにngrokのトークンとSSHパスワードを設定
- サーバへKataGoインストール
- LizzieでのKataGo接続設定
- SabakiでのKataGo接続設定
- 2回目以降の利用方法
- 接続エラーが発生する場合
- KataGoの設定変更
- 割り当てられるGPUの性能と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)
以下に、実行環境の概要図を示します。
本記事で環境を構築すると、以下のような流れでKataGoが動くようになります。
Lizzie(検討用ソフト)のインストール
囲碁AIを使って棋譜の検討や研究をしたい方は、Lizzieをインストールするのがおすすめです。まずは、Lizzieのインストール方法を解説します。
Lizzieをすでにインストール済みの方は、スキップしてください。
Java実行環境のインストール
Javaの実行環境がインストールされていない方は、あらかじめこちらからダウンロードしておきましょう。
すでにJava8以上の実行環境がインストールされている場合は、本手順はスキップしてください。
AdoptOpenJDK
https://adoptopenjdk.net/
上記URLにWindows10からアクセスした場合、以下のような画面が出ますのでLatest releaseをクリックしてダウンロードして、インストールします。
ダウンロードしたファイルをダブルクリックしてインストールします。
Lizzieのインストール
自分のパソコンに囲碁検討用ソフトであるLizzieをインストールします。
Lizzieをインストール済みの方はスキップしてください。
Lizzieを以下のURLからダウンロードします。
Assetsの中からご自身の環境に合わせて、ダウンロードし、ZIPファイルを解凍します。
Windows10でGPUを搭載していないパソコンや、よくわからない場合は、Lizzie.*.*.*.Windows.x64.CPU.zipをダウンロードしてください。
ZIPファイルを解凍すると、Lizzieフォルダが作成されますので、任意の場所に置いてください。
lizzie.jarをダブルクリックしてアプリケーションが起動したらインストール成功です。
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をダブルクリックして、アプリケーションが起動すればインストール成功です。
Google Colab上のKataGoに接続するクライアントのインストール
以下のURLからそれぞれの環境に合わせて、クライアントをダウンロードします。
このクライアントは、Google Colabで立ち上げたマシンにSSHログインし、KataGoを起動するものです。
- Windows(64bit)
https://github.com/mildinvestor/katago-colab/releases/download/v1.9.1-alpha/colab-katago-gd.windows.zip - Linux
https://github.com/mildinvestor/katago-colab/releases/download/v1.9.1-alpha/colab-katago-gd.linux.zip - Mac OSX
https://github.com/mildinvestor/katago-colab/releases/download/v1.9.1-alpha/colab-katago-gd.mac.zip
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 Driveにノートブックがコピーされます。
ngrokのトークン取得
Google Colabで起動するマシンにインターネットからSSHログインできるように、ngrokというサービスのアカウントを作成します。
以下のURLにアクセスします。
ngrok
https://dashboard.ngrok.com/auth/your-authtoken
Log in with Googleを選択して、Googleアカウントのログイン情報を入力します。
ログイン後、左のメニューからAuthentication – Your Authentokenを選択肢表示されたトークンの文字列をコピーします。
Google ColabにngrokのトークンとSSHパスワードを設定
ChromeのGoogle Colabに戻り、ngrokのトークンとSSHパスワードを設定します。
サーバへKataGoインストール
まず、左の再生ボタンをクリックして、KataGoのインストールを開始します。
少し下にスクロールすると、インストール状況が表示されます。
Google Driveに一時ファイルを保存するため、Googleへの認証を行います。表示されるURLをクリックすると、Googleのログイン画面が出てくるので、ログインします。
Google Driveへのアクセスを求められるので、許可をクリックします。
認証コードの文字列が表示されるので、右のボタンをクリックしてコピーします。
Colabに戻って、コピーした認証コードを”Enter verification code:”の枠に貼り付けます。
その後、”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は、コピーしたものを使用します。
Lizzieのメニューで、今設定したエンジンの番号を選択します。
しばらく待った後、分析実行が開始されれば成功です。
SabakiでのKataGo接続設定
Sabakiでも同様に、colab-katagoを設定できます。SabakiのメニューからEngines – Show Engine Sidebarを選択します。
再生ボタンの隣の▼をクリックし、Manage Enginesを選択肢、以下のように入力します。
- (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”を実行してから再度接続してみてください。
KataGoの設定変更
本記事で紹介したノートブックでのKataGoの設定は、Colabのクラウドサーバ上のファイルを使うようになっております。
囲碁のルールと対局時の強さを設定する方法
colab-katago-gd.ipynbの”KataGo configuration”のところで囲碁のルールと、対局時の強さ(探索時の最大訪問回数)を設定できます。KataGoのインストール(再生ボタン)を押す前に設定してください。設定の意味の詳細は、KataGoのものを参照してください。
- rules: 囲碁のルール
- maxVisits: ノードの最大訪問数
その他の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
割り当てられる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のインストール方法と使い方は、以下のページで詳しく解説されています。
Chromeでブラウザを自動更新する拡張機能 Easy Auto Refresh
GPU利用時間の上限
Google ColabではGPUの利用時間の上限が定められており、長時間使っているとGPUが使用できなくなります。本記事で紹介しているKataGoはGPUがないと動きません。
Colab の使用量上限とは何ですか?
Colab を長期間のコンピューティング処理に使用するユーザーや直近のリソース使用量が多いユーザーは、使用量が上限に達して GPU と TPU へのアクセスが一時的に制限される可能性が高くなります。
Colaboratoryよくある質問より引用
GPU利用時間の上限に達した場合は、以下のようなエラーメッセージが表示されます。
このようなケースでは、以下のような対処が考えられます。
Colab Proは月額9.99ドルかかりますが、GPU利用制限の緩和、優先的に高性能なGPUが割り当てられるなどのメリットがあります。1日何時間も高性能GPUでKataGoを使う人にとっては、AWSやGCPなどのクラウドよりもコスパは高いかもしれません。
なお、Colab Proは米国限定のサービスですが、郵便番号に米国のものを利用すれば、日本のクレジットカードでも登録できるそうです。日本からの登録方法は、以下のページで解説されています。
標準ランタイムに変更された場合の戻し方
突然切断されてGPUが使えなくなる現象も報告されています。
GPUを30分ほど連続で使用したら突然切断されたので、再度接続しました。GPUの使用を数分休ませたら、「GPUが使用されていません、標準ランタイムに変更しますか?」というメッセージが出てきたので試しに標準ランタイムにしてみました。しかしこれだとKataGoが動かなくなります。
本記事へのお問い合わせメールより引用
GPUをしばらく使用せず、以下のような警告がでてきても、無視してください。「標準ランタイムに切り替える」を選択すると、標準ランタイムに変更されてしまい、GPUが使用できなくなります。
もし意図せず標準ランタイムに変更されてしまった場合は、GPU版に戻す必要があります。Colabのメニューから[ランタイム]-[ランタイムのタイプの変更]でハードウェアアクセラレータに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 2070、Geforce RTX 2080、Geforce RTX 3080などを搭載した高性能パソコンであれば、それ以上の性能がでますが、その分お高いです。
個人的には、Google Colabで使用できるGPUでも、アマチュアが囲碁の検討に使う分には十分高速で、囲碁の検討や勉強が捗ると思います。これが完全無料で使えるとは、Googleは太っ腹ですね(^o^)
囲碁の勉強に役立つAlphaGoの棋譜関連書籍はKindle Unlimitedで読み放題のものが色々あります。
コメント
[…] 【無料GPU】囲碁AI KataGoをGoogle Colaboratory上で動かす方法【お知らせ】2021/8/26… […]
[…] 【無料GPU】囲碁AI KataGoをGoogle Colaboratory上で動かす方法【お知らせ】2021/8/26… スポンサーリンク […]