ディープラーニングの将棋AI「dlshogi」をインストールしてみた

ソフト紹介と導入方法

先日の「電竜戦長時間マッチ水匠 vs dlshogi」でも強さを見せつけたdlshogiをインストールしてみました。

以下は具体的な手順というより、個人的なメモです。
(将来的には具体的な手順も作りたい)
が、自分がハマった部分はこれからdlshogiをインストールしたい人には参考になるかもしれません。一方で、間違っている部分もあるかもです。参考程度にお願います。

そもそもdlshogiとは?

山岡忠夫さんによるディープラーニングベースの将棋AIです。ちなみに「山岡忠夫」というは本名ではないそうで、PN(ペンネーム?プログラマーネーム?)とのこと。
水匠などやねうら王系将棋ソフトと違い、基本的にGPUで動作するので、GPUが重要になります。

また、導入が簡単な水匠と比べると、導入の難易度は高いとされてます。実際、必要なファイルと設定が多く、パソコンに慣れてない人には難しいかもしれません。

dlshogiのダウンロード先

Release 第2回世界将棋AI電竜戦エキシビジョンバージョン · TadaoYamaoka/DeepLearningShogi
dlshogiの第2回世界将棋AI電竜戦エキシビジョンバージョンのWindows用ビルド済みファイル。 導入方法は、第31回世界コンピュータ将棋選手権バージョンを参照。 モデルファイルを使用するにはライセンスに同意が必要です。 第31回世界コンピュータ将棋選手権バージョンからの差分 倍精度バージョン 検討用に、倍精度浮...

上のサイトからビルド済みファイルとモデルファイルがダウンロードできます。モデルファイルにはパスワードが掛かっています。パスワードは山岡さんのブログのエントリ「dlshogi(第2回世界将棋AI電竜戦エキシビジョンバージョン)のWindows版ビルド済みファイル公開」に記載されており、こちらに記載されているライセンスに沿った利用が必要となります。

dlshogiの導入手順と必要なファイル

導入方法については、以下のページを参考にしてください。

Release 第31回世界コンピュータ将棋選手権バージョン · TadaoYamaoka/DeepLearningShogi
dlshogiの第31回世界コンピュータ将棋選手権バージョンのWindows用ビルド済みファイルとdlshogi with GCTのモデルファイル。 NVIDIAのGPU非搭載のPCでも動作するOnnxRuntime版を含む。 実行環境 実行するには以下の環境が必要。 ハードウェア 以下のハードウェアが必要。 ・AV...

必要なハードウェアは上ページから引用すると

[必須]
・AVX2命令に対応したx86-64 CPU
以下のいずれか
・CUDA 11.1に対応したGPU(GeForce 2080など) [※TensorCoreを搭載したGPUを推奨]
・DirectX12対応グラフィックカード(内蔵グラフィックスでも可)

とのこと。

また、CUDAのとcuDNN、TensorRTのインストールとPATHを通す作業も必要になります。
cuDNNとTensorRTのダウンロードにはユーザー登録と簡単なアンケートに答える必要があります(アンケートは適当でも大丈夫ですが……)。

2021/8/19追記
CUDA、cuDNN、TensorRTは最新バージョンでは動かない可能性があるので以下からダウンロードしてください。※参考元

CUDA Toolkit 11.1.1
cuDNN(「Download cuDNN v8.2.0 (April 23rd, 2021), for CUDA 11.x」を選ぶ)
NVIDIA TensorRT 7.x (「TensorRT 7.2.2 for Windows10 and CUDA 11.1 & 11.2 ZIP package」を選ぶ)

k kanouさん、ご指摘ありがとうございます。

dlshogiのインストールの流れ

GUIとして将棋所が必要になるのでインストールしておきます。将棋所で起動したあと(キャッシュができたあと?)は、ShogiGUIでも動きます。

dlshogi-dr2_exhi.zip」と「model-dr2_exhi.zip」を解凍して、任意のフォルダにコピーしておきます。「C:\Program Files」以下に置くとキャッシュが作成できないので、別の場所にしておきましょう。

「nvrtc64_111_0.dll」が見つからないエラー

将棋所にdlshogiを登録して起動しようとしたところ、「nvrtc64_111_0.dllが見つからないため、コードを続行できません。」というエラーが出てしまいました。

nvrtc64_111_0.dll」を調べてみるとCUDAのライブラリとのこと。CUDAの実行ファイルがあるフォルダ(標準では「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\bin」)を見てみると、「nvrtc64_112_0.dll」がある。どうやらバージョンが違うらしい。
nVidiaのページに旧バージョンは見つからない。


「中身はそんなに変わらないだろ、と思って、「nvrtc64_112_0.dll」のファイル名を「nvrtc64_111_0.dll」に変更したら動作しました。これで良いのかわからず、おそらく良くはないだろうが、とりあえず良し。

アーカイブから旧バージョンをダウンロードできるとの情報をいただきました。ありがとうございます!

モデルファイルをエンジンに設定する

将棋所にdlshogiを設定したら、「エンジン設定」からモデルファイルを指定する。これは、「DNN_Model」に「model-dr2_exhi.onnx」までのパスを書けば良い。
今回は「C:\shogidokoro」フォルダ内に「model-dr2_exhi」フォルダを置いたので「C:\Shogidokoro\model-dr2_exhi\model-dr2_exhi.onnx」と記述しました。

なお、モデルファイルをdlshogiの実行ファイルがあるフォルダ内にコピーすれば、フルパスは必要なく「model-dr2_exhi.onnx」と変更するだけでOKです。こちらのほうが簡単かもしれません。

デバッグウィンドウでチェック

どうしても動かない場合はエンジン設定の「DebugMessage」にチェックを入れておき、「表示」→「デバッグウィンドウ」でメッセージをチェックしてみるとよいかも。


例えば上の画像だとモデルファイルがないといっているので、「DNN_Model」のパスが間違ってるとわかります。

dlshogi vs 水匠を試してみた

というわけで、設定は無事に完了。将棋所で動作確認したあと、ShogiGUIで動かしてます。ShogiGUI側でも「DNN_Model」のパスを設定することは忘れずに。

で、dlshogi vs 水匠を一手30秒で試してみました。
ちなみに自分のPC環境は

CPU:Ryzen 5 5600X
メモリ:16GB
ストレージ:[M.2 NVMe SSD] 1TB + [HDD] 2TB
GPU:NVIDIA GeForce RTX 3070

超ハイスペックではないけど、ミドルスペックよりは上、偏差値でいうと60くらいの環境かと思います。(フロンティアのセールで買いました。同じモデルはないですが、安くておすすめ)

対局の様子はこんな感じ。

棋譜はこちら

結果は相入玉で先手勝ち。いやー、dlshogiも強いですね……。

というわけで、dlshogiをインストールしてみた話でした。

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