使ってわかるCopilot+ PC

第82回

『NPU対応ソフトなのにNPUを使ってくれない』のはなぜか?

OpenVINO、QNN、Ryzen AI、ONNX Runtime、DirectML……どれが自分のNPUに対応するの?

MicrosoftのWebサイトより

NPUが使われないのはなぜ?

 Copilot+ PCは高性能なNPUを搭載したAI PCだ。ただし、全ての動作がNPUで高速化するという話ではない。あくまでNPUを活用するソフトに限り、AI処理が高速だったり、低消費電力で実行できたりする。

 本連載ではさまざまなNPU対応ソフトを紹介してきているが、その際にとても面倒な問題がある。NPU対応と書いてあっても、どのメーカーのCPUに対応しているかわからない、あるいはわかりづらいのだ。試しにソフトをインストールしてみても、動きはするがNPUが全く使われないということもある。

 自分が持っているCopilot+ PC、あるいはNPU搭載PCに対応するソフトはどれなのか、一般ユーザーにもなるべくわかりやすい基準を示したいと思う。

CPUメーカー各社のNPUと開発キットを知る

OpenVINOのWebサイト

 Windows PCにおいて、NPUを搭載するCPUを提供しているのは、Intel、AMD、Qualcommの3社だ。お手持ちのPCはこの中のいずれかのはずだ。

 各メーカーのCPUに搭載されているNPUは、メーカーごとに内部構造が異なる。簡単に言えば、互換性がない。CPUにはx86やArmといった共通仕様があるものの、少なくとも現時点ではNPUの仕様が3社でバラバラだ。

 そして各社にはNPUを使うための開発キットが存在する。Intelであれば「OpenVINO」、AMDは「Ryzen AI」、Qualcommであれば「QNN」だ。AMDはNPUに限らず、AI機能全般、さらには製品名まで全部「Ryzen AI」と呼んでいる状態なので、この際は逆にややこしい。

 また各社のNPUにはアーキテクチャなどの名前が付いており、Intelは「Intel AI Boost」、AMDは「XDNA」、Qualcommは「Hexagon」となっている。

 ということで、NPU対応ソフトがどのメーカーのCPUに対応するのかを見極めるためのキーワードは下記のようになる。

  • Intel:OpenVINO、Intel AI Boost、Intel製NPU対応など
  • AMD:Ryzen AI、XDNA、AMD製NPU対応など
  • Qualcomm:QNN、Hexagon、Qualcomm製NPU対応など

 これを覚えておけば、どのNPUに対応するのかは見分けられる。

ONNX RuntimeとExecution Provider

ONNX RuntimeのWebサイト

 NPU対応ソフトの記述を見ると、先述のような表記のほかにも、「ONNX Runtime」というものを見かけることがある。これは何かのプラットフォーム対応を示すものではなく、AIモデルを動かすための推論エンジンのこと。Microsoftが中心になって開発されている。

 AIモデルは通常、作成した環境でのみ動作する。これをONNXの形式に変換することで、ONNX Runtimeを用いてさまざまな環境で動かせるようになる。しかも動作が高速で、メモリ消費量も少なくて済むという特徴もある。

 ONNX RuntimeはNPU専用の仕組みではなく、GPUやCPUにも対応できる。AIモデルを全く違うハードウェアで同じように動かすために、橋渡しをする役目を果たす「Execution Provider(EP)」という仕組みがある。

 Intel製CPUに搭載されたNPUでONNX Runtimeを動かそうとするとOpenVINOのEPが必要、Qualcomm製CPUのNPUならQNNのEPが必要、という具合だ。ちなみにNVIDIA製のGPUを使って処理したければCUDAのEPがあるし、速度や効率を気にしないならCPU処理でも動く。

 ではONNX Runtimeで動くソフトは全部のNPUに対応するのかというと、残念ながらそうではない。ソフトの開発側でどのEPを使うのかを指定する必要があるためだ。

 『指定するだけなら、あらゆるEPが使えるように全部指定すれば?』と思うのだが、そうすると複数のドライバやライブラリをソフトに同梱する必要があり、ソフトが肥大化する。また各環境での動作チェックや、最適に動かすためのチューニングも必要になる。結果的に、動作保証できる一部の機能のみ対応するという形になりやすい。

 よって、ONNX Runtimeと書いてある場合は、さらに何のEPが使われているのかを確認する必要がある。OpenVINO対応と書いてあるものをAMD製CPUで実行すると、動作したとしても全てCPU処理になるはずだ。

 1つ言えることがあるとすれば、ONNX Runtimeと書いてあれば、今は未対応の環境に対しても、いずれ対応しやすい状態にあるとは言える。あとはソフトの開発者次第だ。

DirectMLもNPUに対応するが……

DirectMLのWebサイト

 ほかには「DirectML」という仕組みもある。元々はGPUでAI処理を行うための仕組みで、DirectXと同じく、GPUメーカーの壁を越えて動作させるものだった。これが現在はNPUにも対応できるようになっている。DirectMLはONNX RuntimeのEPの1つでもある。

 ただし、DirectMLは適切な計算場所を自動で選ぶ仕組みがあるので、NPUがあっても、GPUとCPUに処理を回すことはあり得る。確実にNPUを活用するものを探したいなら、先述のキーワードから探す方が確かだ。

 いずれにせよ最終的にはソフトを動かしてみて、「タスク マネージャー」でNPUが使われているのかどうか見てみないと判断できない。対応ソフトであったとしても、一部の機能でのみ使われることも多く、ソフトのいろいろな機能を使ってはNPUが使用されているかチェックする……ということを筆者は日々やっている(笑)。

 今後はDirectMLがさらに洗練されたり、それこそCopilot+ PC対応ソフトといった形で、CPUメーカーの壁は少なくなっていくだろう。ただ現状では、『NPU対応ソフトなのにCPUしか使わない!』ということが起こりがちだ。そんな時は本稿を参考に原因を探っていただきたい。

著者プロフィール:石田賀津男(いしだ かつお)

1977年生まれ、滋賀県出身

ゲーム専門誌『GAME Watch』(インプレス)の記者を経てフリージャーナリスト。ゲーム等のエンターテイメントと、PC・スマホ・ネットワーク等のIT系にまたがる分野を中心に幅広く執筆中。1990年代からのオンラインゲーマー。窓の杜では連載『初月100円! オススメGame Pass作品』、『週末ゲーム』などを執筆。

・著者Webサイト:https://ougi.net/