PCのNPUを活用する「ONNX Runtime」と「DirectML」:Windows環境でローカルAIを爆速かつ低消費電力で動かす
Windows 11を搭載した新しいカテゴリのPC「Copilot+ PC」の登場に伴い、AI処理専用の半導体である「NPU」(Neural Processing Unit)が標準搭載される時代が到来しました。これまでローカル環境でのAIモデルの推論は高性能なGPUに依存しがちでしたが、NPUの活用によって、軽量かつ低消費電力でAIを常時稼働させることが可能になりつつあります。
開発者がこのWindows上のNPUパワーを手軽に引き出すための強力な組み合わせが、Microsoftが主導する「ONNX Runtime」と「DirectML」のコンビネーションです。今回は、この2つの技術を使ったNPUの活用方法と、そのメリットについて解説します。
ONNX Runtime と DirectML の役割
ONNX Runtimeは、オープンなAIモデルの相互運用規格である「ONNX」(Open Neural Network Exchange)形式のモデルを様々なハードウェアで超高速に実行するための推論エンジンです。
そして、DirectMLはWindowsのグラフィックスAPI(DirectX 12)上に構築されたAIハードウェアアクセラレーション用の低レベルAPIです。DirectMLをONNX Runtimeの「Execution Provider」(実行バックエンド)として指定することで、Windows上で動く多様なハードウェア(NVIDIA/AMD/IntelなどのGPUや、Qualcomm Snapdragon、Intel Core Ultra、AMD Ryzenに搭載された各種NPU)を共通のインターフェースで制御・活用できるようになります。
これにより、開発者はターゲットPCのハードウェアがIntel製かQualcomm製かといった違いを詳細に意識することなく、ONNX RuntimeとDirectMLという単一の抽象化レイヤーを通じてNPUのパワーを利用することができます。
なぜNPUなのか?GPUとの比較
AIの推論速度だけであれば、ハイエンドなディスクリートGPU(dGPU)の方が勝っているケースがまだ多いのが現状です。しかし、PCのNPUを活用することには、以下のような極めて重要なメリットがあります。
- 圧倒的な低消費電力 GPUは動作中に数十Wから数百Wの電力を消費するため、ノートPCで稼働させるとバッテリーがあっという間に空になり、ファンが激しく回転してしまいます。これに対し、NPUは数Wという極めて低い消費電力で効率よく推論処理を実行するように設計されています。これにより、ノートPCの駆動時間を犠牲にせず、ファンレスで静かにAI処理を行えます。
- システムの負荷分散 重いAIタスク(音声認識や画像認識、リアルタイム翻訳など)をNPUにオフロードすることで、CPUやGPUをゲームの描画や画面のレンダリングなどのメインタスクに専念させることができます。マルチタスク環境でもPC全体の動作が重くならず、スムーズなユーザー体験(UX)を維持できます。
実装と実行の手順
Python環境からONNX RuntimeとDirectMLを用いて、モデルをNPU(またはDirectML対応デバイス)で実行するのは非常にシンプルです。
まず、必要なパッケージをインストールします。
pip install onnxruntime-directml
次に、Pythonスクリプト上で実行オプションの Execution Provider として DmlExecutionProvider を追加し、ONNXモデルをロードします。
import onnxruntime as ort
# DirectMLをプロバイダーとして登録
providers = ['DmlExecutionProvider', 'CPUExecutionProvider']
session = ort.InferenceSession("my_model.onnx", providers=providers)
# あとは通常通り推論を実行するだけ
outputs = session.run(None, {"input": input_data})
Windows 11に最新のドライバとSDKが導入されている環境であれば、DirectMLがPC内の対応するNPUデバイス(あるいは内蔵GPU)を自動的に検出し、最適なアクセラレーションを適用して実行します。
まとめ
ONNX RuntimeとDirectMLの組み合わせは、Windows上でローカルAIアプリケーションを開発する上でのデファクトスタンダードになりつつあります。特にバッテリー駆動時間が重視されるモバイルノートPCにおいて、NPUを用いたローカル推論は今後ますます重要な技術になるでしょう。PCに眠っているNPUの可能性を、ぜひこれらのAPIを使って引き出してみてください。
お役立ち情報
- 📄 Microsoft Learn - WindowsでのDirectMLを使用したONNX Runtimeの紹介 (日本語)
- DirectMLをバックエンドとしてONNX Runtimeをセットアップし、ハードウェアアクセラレーションを有効にするためのMicrosoft公式の開発ドキュメントです。
- 📄 ONNX Runtime 公式ウェブサイト
- ONNX Runtimeの機能、サポートされているプラットフォーム、DirectMLを含むExecution Providerに関する最新情報を提供する公式ページです。
- 📄 DirectML GitHub リポジトリ
- Microsoft DirectMLのオープンソースリポジトリ。C++やPythonでDirectMLを直接叩くためのサンプルコードやリリースノートが公開されています。
出典: