ちょっと前まではCPUで計算する人工知能将棋AI,水匠が一番強かったんですが、最近ではGPU(グラフィックカードの心臓)で計算するディープラーニング系のdlshogiという方が強く、藤井聡太先生も研究に使ってるそうです。
CPUで計算するってのは常識的にわかるけど、GPUで計算するってのは直感的にわからない。
ただ、仮想通貨のマイニングとかでGPUが使われてたりするので、まぁなんかそういう風にも使えるんだなと認識。
こないだの3連休、時間があったので頑張って入れてみようと。ちなみに敷居は高いです。
パソコン初心者にはたぶん無理だと思います。僕でも4時間くらいかかりました。
最初、https://kakuyasu-sim-now.com/shogi/dlshogi-tensorrt/
を参考に導入してみたんだけど失敗。
shogiGUIで初期化エラーが出る。
将棋所でも動かない。
(shogiGUIとか将棋所っていうのは、将棋AIエンジンを登録して、実際に使用するためのユーザーインターフェースです)
色々試行錯誤したあげく、dlshogi動かすには、
・dlshogi
・CUDA
・cuDNN
・TensorRT
の4つのソフトウェア(?)のインストールが必須で、それぞれバージョンの違いに非常に厳しいことがわかりました。
最初は「なんかどれも最新版いれときゃいいんだろ?」
みたいな感じでやってたので動かなかった。
それぞれのバージョンをはっきり書いてある、
https://migigyoku.com/?p=4523
を参考に最初からやり直しました。
でも動かない。
shogiGUIでは検討始めるとずっと考慮中になって、中断すると「初期化エラー」になるし、将棋所はなにも動かない。
色々検索したりした結果、dlshogiのダウンロード元のリリースノートを見ると、
TensorRT版では、初回の対局開始時に、TensorRTでモデルの最適化を行うため、1手目の開始が遅い。2回目以降はキャッシュを使用するため速くなる。
ShogiGUIではエンジン登録に失敗することがあるため、将棋所に登録してキャッシュファイルを作る。
もしくは、「build_onnx.exe」にmodel-0000225kai.onnxもしくはmodel-0000226kai.onnxをドラッグ&ドロップする。
GPUのドライバを更新した場合、キャッシュファイルがあると起動できなくなる場合がある。その場合、モデルファイルと同じフォルダにある拡張子が「.serialized」のキャッシュファイルを削除する。
と書いてありました。
なのでまずは将棋所に登録して、キャッシュファイルを作ろうとしました。
同時にファイル検索フリーソフト、everythingで「*.serialized」のファイルが存在するか検索かけながら。
しかし、5分ほど放置してもキャッシュファイルが作成される気配がない。
なので、次の手段、
「「build_onnx.exe」にmodel-0000225kai.onnxもしくはmodel-0000226kai.onnxをドラッグ&ドロップする。」
を試してみました。
するとコマンドプロンプトが開いて、数行なんか表示され、何も動かない。
ENTERとか押したけど何の反応もない。
しかし!5分ほど放置してると、なんとコマンドプロンプトが消えて、「.serialized」のファイルが作成されました!
あとはパラメータ調整。
DNN_Batch_Sizeはデフォルトの128にしておきました。
UCT_NodeLimitは
パソコンのメモリが16GBなら5,000,000(500万)
パソコンのメモリが8GBなら2,500,000(250万)
ぼくのPCはメモリ12GB。計算がややこしいので、8GBとして250万にしました。
これでshogiGUIのエンジンにdlshogiを登録して、検討を始めると、やっとちゃんと動いた!
まだ動かない人は、環境変数の問題かもしれません。
ぼくは最初、「ユーザー環境変数」にしか登録してなかったのですが、ググりまくってたら「システム環境変数」にも登録したら動いたという事例があったので両方に登録しました。
結構大変でしたが、ちゃんと動いたときには感動。
藤井聡太先生、自分でやったんならパソコンもほんとにかなり詳しいな。
でも、彼はAMDから超ハイスペックPCをプレゼントされてます。
dlshogiは、Nvidia製のグラボを搭載してないと弱いんですが、どうしてるんですかね?
AMDのグラボといえばRadeon。自作できるくらいだから、さっさとNvidia RTX4090辺り買って差し替えてんのかな?
以上、dlshogi導入体験記でした。
スポンサーリンク