https://www.itmedia.co.jp/news/articles/2206/25/news044.html

広瀬八段、将棋AIマシンで研究スタート 早速優勝も ソフト設定から広瀬流の研究方法まで

プロの将棋棋士が研究に使える、“最強の将棋AIマシン”を組むべく記者が奔走する本連載。前回の記事ではついに将棋AIマシンが完成した。

 今回はソフトウェアの設定から、実際に広瀬章人八段にマシンをお届けし、使ってもらったファーストインプレッションまでをお届けする。
ソフト設定、なめてかかるとしっぺ返し
 「運送会社の責任限度額を超えるので頑張ってなんとか運んでくださいね」という、筆者にとって自作PCの師匠であるアユート(東京都文京区)森田健介さんの愛ある忠告で終わった前回。

 いくつかの方法を検討したが、結局タクシーで運ぶことに。最近のタクシー配車アプリには事前確定運賃に対応しているものもあり、呼ぶ前に「これくらいの料金でいけるのか」と分かるのはこんなときに便利だ。

 さて、ハードウェアが完成したといってもソフトがインストールされていなければ研究には使えない。必要な各種ソフトをインストールするため、筆者宅に一度持ち帰った。

 CPU系の将棋ソフト「水匠」も、GPU系の「dlshogi」も、開発者本人やファンなどがインストール方法を紹介している。基本的には手順を言われた通りに踏んでいけば問題なく完了するはずなのだが、こうしたソフトのインストールに比較的(?)慣れている筆者なら余裕だろう、と考えていたら意外と大変だった。

 先に前提を説明すると、水匠もdlshogiも、それ単体で将棋アプリとして動くわけではない。これらは思考エンジンであって、その思考エンジンを使うためのGUI(いわゆるソフト・アプリ)が別途必要になる。

 ここでは「ShogiGUI」というGUIを利用することにした。
まず水匠のインストールだが、こちらは難しいところはあまりない。「水匠 インストール」などで検索すればダウンロード先や設定方法を確認できるのでその通りに進めていけばいいが、唯一分からなくなる部分があるとしたら「設定すべき思考エンジンの実行ファイルはどれか」ということだろう。

 実行ファイルはいくつか用意されており、筆者が利用したバージョンではファイル名の末尾が「avx2.exe」「sse42.exe」「zen2.exe」の3種類があった。これは並列演算処理の種類を示していて、米Intel製のCPUか、米AMD製のCPUか、いつの世代のCPUかで使える処理が変わってくるのだ。今回はZen2世代であるAMDの「Ryzen Threadripper PRO 3975WX」を使うので、「zen2.exe」を選んでおけばOK。
 筆者がはまったのはdlshogiの方だ。dlshogiは米NVIDIAのGPUを利用して計算するため、GPUの計算環境の構築が必要になる。具体的にNVIDIAの「CUDA」「cuDNN」「TensorRT」という3点セットをインストールするのだが、「ソフトウェアはバージョンが高い方がバグなどが修正されていて良いもののはずだ」という適当な先入観で最初にトライしたところ、dlshogiが起動しなかった。

 結論から言えば、各ソフトウェアのバージョンを、インストール手順書にあるものとしっかり一致させての再インストールでうまくいった。説明書はきちんと読みましょうということだ。

メモリ512GB使い切ってみた
 各ソフトウェアをインストールしたところで、次は「ハードウェアパワーを最大に引き出す」ための設定が必要だ。例えば、CPUを1コア、メモリ1GBしか利用しない設定になっていたら宝の持ち腐れというもの。

 今回のマシンでいえばCPUは32コア64スレッド、メモリは512GBあるからこれらをしっかり使いたい。
CPUで計算する水匠は特にこの設定が大事になるはず。ただ、ShogiGUIに用意されているオプション項目はかなり多く、素人目に最適な設定を探し出すのは難しい。

 水匠は将棋ソフト「やねうら王」から派生していることから、やねうら王の公式サイトで紹介されている設定を参考にした。

 CPUの設定は「Threads」、メモリの設定は「Hash」という項目を変更すればいいことになる。公式の推奨設定では「(発熱の観点から)Threadsは物理コア数に」とのことだったが、棋力を優先したいのと、簡易水冷クーラーも使っていることから論理コア数(64)で設定。Hashは512GBに近い値で設定した。

 1つのソフトウェアに512GBも使わせようとする試みは筆者としては初めてで、まず驚いたのは「その分だけ思考エンジンの起動に時間がかかる」ということだ。

 隣にWindowsのタスクマネージャーを開いてメモリ消費量をモニタリングしていると、突然512GBを確保するような挙動ではなく、利用するメモリを順に確保していくような挙動をしていることが分かる。