Ryzen AIのNPU(XDNA)を使わせたい

今回は小ネタ。

ミニPCのGMKtec EVO-X1を購入。フットプリントは11センチ四方くらいで、Intel N100搭載のミニPC(写真はBeelink)とほぼ同じ。わかりやすく言うと「あみぐるみ2個分」の大きさ。

EVO-X1 は Ryzen AI 9 HX370*1と64GB のユニファイドメモリ、そこそこ以上の速度のiGPU Radeon 890Mを搭載しており、AIっぽいことがいろいろできる、はず。

LM StudioでQwen3-30B-A3Bを動かすと下のツイート内動画くらいの速度で動く。ただしBIOSGPUの占有メモリ量(EVO-X1のBIOSの項目ではUMA Frame Buffer Size)を最大の32GBにしておくこと。

これでVulkanかつ省電力モードなので、ポテンシャルはもうちょっとある。

さて、EVO-X1 はいわゆるCopilot+ PCでもあり、50TOPSの性能を持つNPU(XDNA2)も搭載している。が、このNPUを使わせるのが難しい。「Copilot+ PC には40TOPS以上の NPU が必要(ただし使わない)」状態で、とにかくなかなか使ってくれない。*2

先ほどのLM StudioのLLM推論でも、GPUはゴリゴリ使ってくれるが、NPUはうんともすんとも言わない。タスクマネージャーのNPU使用状況も見事な無風。

AMD Ryzen AI の NPUが動いているところを見る*3にはどうすればよいか。いくつか方法はあるだろうが、ここでのお勧めは Amuse。

www.amuse-ai.com

これはAMD が公式にスポーンサードする画像生成AIのランチャーであり、ちゃんと NPU(XDNA) を使ってくれるはず。なにしろダウンロードボタンに "with AMD XDNA™ Super Resolution" と書いてあるくらい。

これをダウンロード&インストールして実行、さらにモデルもダウンロードして画像を生成。

あらかじめ開いておいたタスクマネージャを確認すると、確かにNPUを使っていた。ちょっぴり。ささやか。

Amuze は 1024x1024 の画像生成では NPUを使わず、縦横倍の2048x2048に拡大する処理(一瞬)で NPU を使う。そういえば、ダウンロードボタンに "with AMD XDNA™ Super Resolution" (超解像) って書いてあったわー。嘘はついてない。ただ、このささやかさをダウンロードボタンに記載してまでアピールしてるのか、と思うと感慨深い。

こうして Ryzen AI の NPU を使わせることに成功して大満足……とはならんやろう、さすがに。もうちょっとちゃんと使ってほしい。

実は Amuse はモデルを選べばちゃんと NPU を使ってくれる。手順は次の通り。

  1. Amuseのウィンドウの左下にコッソリある "Expert" の文字をクリックして、上級者モードに切り替える
  2. 画面の上の Model Manager タブを開いて、Tag に NPU を選ぶと、StableDiffution XL Turboというモデルが1つだけヒットするのでこれをダウンロード
  3. Image Generation タブを開いて、今ダウンロードしたStableDiffution XL Turboを選び、Variant に RyzenAI を選んでから(重要!)、Loadボタンを押す
  4. 適当なプロンプトを入力、Generate ボタンを押して画像生成。このモデルが生成する画像は 512x512 ですぐ生成完了する。Inference Steps を増やすと、計算時間を増やせる。ただし画像の質が上がるわけではない。


この手順で実行すると画像生成にNPUが用いられて、パフォーマンスモニタで以下のようなグラフが得られる。そうそう、見たかったのはこれ!

Variant(実装の種類?)を Default のまま Load すると、同じモデルで GPU を使って生成する。ただし実装の違いからか、量子化の違いからか、同じプロンプト&シードでも微妙に生成画像が異なる。

また Inference Steps = 4 での Compute Time を比べると、GPU 1.3s に対し、NPU 1.7s と NPU のほうが遅い。
一瞬納得しそうになるが、よく考えるとおかしい。Ryzen AI 9 HX 370 のカタログスペックでは、NPU のAI計算性能は 50TOPS、チップセット全体だと 80TOPS となっている。つまり GPU はたかだか 30TOPS であり、数字通りなら NPU のほうが速いはず。これが NPU の不得意な計算とはさすがに思えないので、やはり NPU(XDNA / XDNA2) のソフトウェアの整備が進んでないせいなのだろう(それ以外の理由だったらむしろ困惑する)。
せめてワットパフォーマンスが良いことを期待したいが、手元にそれを測る機械がないので残念ながら不明。

「NPUを使わせる」が目的なら、AMDよりもQualcommのほうがやはり一日の長がありそうだ。AMDももうちょっと頑張ってほしいが、Ryzen AI Softwareを見る限り、早くてももう2年はかかりそうだなあ……。

*1:ツイート(Xのポスト)ではHX870と誤記。GPURadeon 890Mと混ざった……

*2:言い出しっぺのマイクロソフトが頑張らないといけないところだが、AMDSDKであるRyzen AI Softwareの中身を見てみると、マイクロソフトだけが悪いとは言いがたいのが悩ましい。

*3:NPUを役立たせる、ではない。