シンギュラリティ実験ノート

購入した1000ドルPCで何がどこまでできるのか実験した記録です。

DeepLearning系の将棋AIをColab Proで動かす

DeepLearning系の将棋AIの本来の強さを知るためには、NVIDIAGPUと高性能な推論ランタイムライブラリである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も最新のマスタをクローンしてコンパイルし直したら動かすことができた。導入方法をメモしておく。

 

  1. git cloneする
    %cd /content/
    !git clone https://github.com/TadaoYamaoka/DeepLearningShogi.git
  2. 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
  3. 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
  4. 環境変数の設定
    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'] )
  5. Makefileを編集してインクルードファイルのパスに-I/root/TensorRT-8.6.1.6/include 、ライブラリのパスに -L/root/TensorRT-8.6.1.6/libを追加

  6. ビルドするとlibcublas11がないというエラーになるのでビルド前に追加インストール
    !apt install libcublas11
  7. Makefileでビルド
    %cd /content/DeepLearningShogi/usi/
    !make clean
    !make
  8. 動作確認する
    %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