DeepLearning系の将棋AIの本来の強さを知るためには、NVIDIA製GPUと高性能な推論ランタイムライブラリであるTensorRTの環境が必要である、ということは先日の記事で書いた通りだ。
そこで今更ではあるが、dlshogiと水匠5をColab環境の有料版にインストールして対局させ、強さを比べてみた。数年前に公開されているモデルなので、Colab環境で動かしたことがある方は多いだろう。私も以前に動かした記憶があるが、正確に強さを計測していなかったので、改めてインストールして計測してみることにした。
なお、Colab上でdlshogiと水匠5を対局させるだけなら、Colab無料版でも動かせる。何故わざわざ有料版でやっているかというと、SSH接続を使ってPCのモデルとも対局させたりしたかったからであるが、そこは難しそうなので今回はパスしてColab上での対局となっている。
StableDiffusionは将棋の駒☖☗を描けない。残念(T_T)。
Colab Proで50回連続対局させた結果
下記の条件で秒読み1秒で連続対局させてみた。使用したGPUはT4である。
- dlshogi
- モデル:2021年第2回電竜戦エキジビジョンバージョン
- 定跡 :未使用
- Suisho5
- モデル:2021年第2回電竜戦バージョン
- 定跡 :使用(standard_book)
Colab環境で50回連続対局させた結果は以下の通り。引き分けは0.5勝として勝率を計算した。
- dlshogi 32勝14敗4分け(68%)
- 先手20勝2敗3分け(86%)、後手12勝12敗1分け(50%)
- Suisho5 14勝32敗4分け(32%)
- 先手12勝12敗1分け(50%)、後手2勝20敗3分け(14%)
dlshogiの連続対局機能を使うとELOレーティングを計算してくれる。レーティング差は130.9でdlshogiが強いという結果となった。コンピュータ将棋レーティングのレーティング差(約100)よりも大きい値となった。
Elo difference: 130.9 +/- 102.2, LOS: 99.6 %, DrawRatio: 0.1 %
勝率の比率は68/32=2.1で2.1倍となる。
考察
NPS値は大きい時に9000くらい出る。我が1000ドルPCではGPUを使って1800くらいなので約5倍の性能アップだ。勝率的に見ると1000ドルPCでのSuisho5とdlshogiの勝率の比率2.7倍と、今回の比率2.1をかけると、2.7*2.1=5.7倍となる。
今回使用したT4 GPUの演算性能はFP32で8.1TFLOPSなので、実は1000ドルPCのRadeon 780Mとほぼ同じだ。しかし高性能推論ライブラリTensorRTを使うことで約5倍の性能アップと、約5.7倍の勝率アップを達成したのだ(と思う)。
Colab ProではA100 GPU(FP32で19.5 TFLOPS)を使うことができる。GPUの性能が上がれば更に強くなるのか、それともこの辺で頭打ち、つまり「サチる」のか興味があるところだ。
dlshogiインストール方法
Colab Proのcudaバージョンは12.2で当初苦戦したが、結局最新のTensorRTとcuDNNをインストールし、dlshogiも最新のマスタをクローンしてコンパイルし直したら動かすことができた。導入方法をメモしておく。
- git cloneする
%cd /content/ !git clone https://github.com/TadaoYamaoka/DeepLearningShogi.git
- TensoeRTインストール
%cd /content/ !wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz !tar xvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz -C /root
- cuDNNインストール(NVIDIAのサイトからダウンロードしGoogle Driveにアップしてから実行)
%cd /content/drive/MyDrive !sudo dpkg -i cudnn-local-repo-ubuntu2404-9.4.0_1.0-1_amd64.deb !sudo cp /var/cudnn-local-repo-ubuntu2404-9.4.0/cudnn-local-9E99E616-keyring.gpg /usr/share/keyrings/ !sudo apt-get update !sudo apt-get -y install cudnn
- 環境変数の設定
import os p = os.getenv('PATH') ld = os.getenv('LD_LIBRARY_PATH') os.environ['PATH'] = f"/root/TensorRT-8.6.1.6/lib:/usr/local/cuda/bin:{p}" os.environ['LD_LIBRARY_PATH'] = f"/root/TensorRT-8.6.1.6/lib:usr/local/cuda/lib64:{ld}" print(os.environ['PATH']) print(os.environ['LD_LIBRARY_PATH'] )
- Makefileを編集してインクルードファイルのパスに-I/root/TensorRT-8.6.1.6/include 、ライブラリのパスに -L/root/TensorRT-8.6.1.6/libを追加
- ビルドするとlibcublas11がないというエラーになるのでビルド前に追加インストール
!apt install libcublas11
- Makefileでビルド
%cd /content/DeepLearningShogi/usi/ !make clean !make
- 動作確認する
%cd /content/DeepLearningShogi/usi/bin !./usi
dlshogiのモデルのセットや、動作確認方法などの詳細は割愛する。詳しい説明は書籍「強い将棋ソフトの作り方」に書かれているのでそちらを見ていただきたい。
水匠5インストール方法
2年前に作ったnotebookを使ってインストールしたので古いバージョン(V7.61)をインストールした。参考にならないと思うので説明は割愛する。インストール方法は、本家のサイトを参照していただきたい。
連続対局コマンド
連続対局のコマンドは以下の通り。
!python -u -m cshogi.cli /content/DeepLearningShogi/usi/bin/usi /content/Suishou5/YaneuraOu-by-gcc --options1 USI_Hash:1024 --options2 USI_Hash:1024,NetworkDelay2:0 --byoyomi 1000 --games 50 --pgn /content/dlshogi_vs_Suishou5.pgn > /content/log_dlshogi_vs_Suishou5.txt