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

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

DeepLearning系の将棋AIがRyzenのiGPUで簡単に動いた(ふかうら王編)

DeepLearning系の将棋AIがRyzenのiGPUで簡単に動いた、の続報で今回はふかうら王についてである。ふかうら王はやねうらお氏によって作られたdlshogi互換エンジンである。

ふかうら王の導入手順

Windows版実行ファイルは下記のページから辿っていき、ふかうら王の実行ファイル詰め合わせYaneuraOu-v7.6.1+20220511b.master-deep-windows.zipをダウンロードする。

yaneuraou.yaneu.com

ふかうら王の導入手順は下記のページを見てほしい。

ふかうら王のインストール手順 · yaneurao/YaneuraOu Wiki · GitHub

上記ページに説明があるが、実行ファイル詰め合わせには以下の種類のふかうら王が含まれている。私が導入したのはORT-CPUとORT-DMLである。

  • ORT-CPU onnxruntime上でCPUのみで動く
  • ORT-DML onnxruntime上でDirectMLを利用 様々なGPUで動く
  • ORT-TRT onnxruntime上でTesorRTを利用 NVIDIAGPUでのみ動く
  • TensorRT TensorRTを利用 NVIDIAGPUでのみ動く

Microsoftの提供するonnxruntimeという様々な環境で動くプラットフォームがあり、DirectMLという機械学習ライブラリを使うことで様々なGPUで推論を実行できる、ということのようだ。知ったかぶりをしているが、私はDirectMLについては全く知らなかった。どうやらdlshogiがAMDGPUで動いたのもこのDirectMLを使ってくれているからのようだ。

ふかうら王をNVIDIAGPUで動かす手順は非常に複雑だが、ORT-CPUとORT-DMLの導入はシンプルだ。以下のステップになる。

  1. ZIPファイルを自分の環境にあわせて展開する
  2. dlshogiのonnx形式モデルファイルを入手し、evalフォルダの下に置く
  3. 定跡ファイルを使う場合は、bookフォルダの下に置く(任意)
  4. 将棋GUIソフトを立ち上げ、エンジン登録画面で該当する実行ファイルを選択する
  5. 必要に応じてエンジン設定画面でパラメタを修正する

以上である。私の場合は定跡ファイルを持っていなかったので、下記のパラメタを修正した。

  • USI_OwnBookをFalseにする
  • BookFileをno_bookにする
  • DNN_Model1を使用するモデルファイル名に変更する(モデルのファイル名をmodel.onnxにしておけば変更不要)

ふかうら王の動作状況

NPS値は初期局面で2000を超えている。中盤でも1900前後が出ているのでdlshogiより約1割ほど高いNPS値がでている印象だ。作者のやねうらお氏によるプログラミングと高速化テクニックの成果であろうか。

ORT-DML版のふかうら王が秒読み3秒で対局している時にタスクマネージャでGPUの状況を確認している画面である。NPS値は1895となっている。

ふかうら王がGPUで動作中

ふかうら王の動作確認を続けたところ、問題点が一つ見つかった(dlshgiも同様)。「切れ負け」することが結構な頻度で起きる。本来はネット経由で他のエンジンと対局する際にネットの遅延で時間切れになるのが「切れ負け」だ。PC上での対局で「切れ負け」になるのを私は見たことがない。ネットの遅延が原因であればふかうら王ではNetworkDelayというパラメタを調整することで回避できるのだが、原因はネット遅延ではないのでこの手は使えない。原因はよく分からないが、この問題の回避策はただ一つ、将棋GUIの対局条件設定画面で「時間切れを負けにしない」を選ぶのだ。反則っぽい手であるが仕方がない。動けばOKなのだ(笑)。

ShogiGUIの対局設定画面(将棋所でも同様の設定ができる)

まとめ

Windows+onnxruntime+DirectMLでAMDのiGPUを簡単に動かせることが分かった。

これはよく考えるとすごいことである。頑張ればWindows環境でStableDiffusionやLLM(大規模言語モデル)も動かせるということである。

ネットでDirectMLについて検索してみると山岡忠夫氏のブログ記事が出てきた。2020年6月の記事である。

ONNX Runtimeを使ってみる その3(DirectML) - TadaoYamaokaの開発日記

私は記憶になかったがこの記事をブックマークしていた。当時はこの記事が全く理解できていなかったのだろう。今になってようやくこの記事の意味と価値が理解できる。また自分で検証する環境も今ならある。

私は将棋AIをUbuntuROCm環境で動かしたが、Windows+DirectML環境で性能差は感じていない。これがStableDiffusionで比べるとどうなるのか。自分で試してみたいと思っている。