コンテンツにスキップ

Windows

WinMLは、ONNX Runtimeの推奨されるWindows開発パスです。 ONNX Runtime NuGetパッケージは、完全なWinML APIを使用する機能を提供します。 これにより、接続されたカメラからWindows.Media.VideoFrameをランタイムに直接渡してリアルタイム推論を行うなどのシナリオが可能になります。

WinMLは、Windows開発者にいくつかの利点を提供します。

  • 同じONNX Runtime API: WinMLは、すでにおなじみの同じONNX Runtime APIを使用します
  • 動的な実行プロバイダーの選択: WinMLは、顧客のハードウェアに基づいて最適な実行プロバイダー(EP)を自動的に選択します。手動によるきめ細かい制御のためにオーバーライドできるメカニズムも備えています
  • 簡素化されたデプロイ: クライアントでのAI推論に必要なすべての依存関係をデプロイすることで、Windows開発者の複雑さを軽減します

WinML APIは、Windows.AI.MachineLearning名前空間のビルド1809(RS5)以降、Windows OSに同梱されたWinRT APIです。これにはONNX Runtimeのバージョンが組み込まれていました。

インボックスバージョンのWinMLを使用することに加えて、WinMLはアプリケーションの再配布可能パッケージとしてインストールすることもできます。レガシーシナリオや特定のDirectML要件については、DirectML実行プロバイダーのドキュメントを参照してください(注:DirectMLは維持エンジニアリング段階にあります)。

ONNX Runtimeは、Windows 10バージョン >= 1809およびWindows 11のすべてのバージョンで利用できます。Microsoft.Windows.AI.MachineLearning.dllに埋め込まれ、WinRT API(略してWinML)を介して公開されます。これには、CPU実行プロバイダーと、GPUサポート用のDirectML実行プロバイダーが含まれます(注:DirectMLは維持エンジニアリング段階にあり、WinMLが推奨されるアプローチです)。

バージョンサポート:

  • Windows 10 (1809+) & Windows 11 (24H2以前): ONNX Runtimeは動作しますが、モデルと実行プロバイダーを手動で選択および管理する必要があります
  • Windows 11 (24H2+): WinMLは、Windowsの広範でオープンなエコシステム全体で実行プロバイダーの選択とハードウェアの最適化を支援する追加の自動化を提供します

すべてのシリコンベンダーで完全なサポートを得るには、Windows 11 24H2+のWinMLが推奨されます。これは、複雑さの多くを自動的に処理するためです。

高レベルの設計は次のようになります。

ONNX + WinML階層アーキテクチャ

WinRT APIまたはC APIのいずれかを使用することを選択できます。

WinRTC API
型システムWindows RT型との統合プラットフォームに依存しない型
言語サポートWinRTプロジェクションによる言語サポート言語ごとのプロジェクションによる言語サポート
テンソル化VideoFrameを受け入れ、テンソルに変換(CPUとGPUをサポート)テンソルを受け入れる

NuGet WinRT APIと他のC-APIディストリビューションの使用

Section titled “NuGet WinRT APIと他のC-APIディストリビューションの使用”

WinRT API NuGetパッケージは、特定のバージョンのONNX Runtimeとともに配布されますが、アプリは独自のバージョンのONNX Runtime(リリースされたバージョンまたはカスタムビルドのいずれか)を含めることができます。デフォルト以外の実行プロバイダーを使用するためにこれを行いたい場合があります。 独自のバージョンのONNX Runtimeを使用するには、onnxruntime.dllを目的のバージョンに置き換えます。

トップに戻る

サポートされているバージョン

Section titled “サポートされているバージョン”

Windows 8.1+

トップに戻る

アーティファクト説明サポートされているプラットフォーム
Microsoft.AI.MachineLearningWinRT - CPU, GPU (DirectML)Windows 8.1+

Windows.AI.MachineLearning

Windows.AI.MachineLearning API用にすでに記述されているコードは、Microsoft.ML.OnnxRuntimeパッケージに対して実行するように簡単に変更できます。元々インボックスのお客様がWindows名前空間を介して参照していたすべての型は、Microsoft名前空間を使用するように更新する必要があります。

インボックス版とNuGet版のWinMLのどちらを使用すべきか?

Section titled “インボックス版とNuGet版のWinMLのどちらを使用すべきか?”

比較については、Windows Machine Learning: インボックス版とNuGet版のWinMLソリューションを参照してください。

特定のOSバージョンのWindowsにWinML APIがあるかどうかを検出するには、IsApiContractPresentメソッドを使用します。これはUWPアプリまたはネイティブアプリのいずれかから呼び出すことができます。

OSに必要なランタイムがない場合は、代わりに再配布バイナリを使用するように切り替えることができます。

リリースAPIコントラクトバージョン
Windows OS 18091
Windows OS 19032
Windows OS 19092
ORTリリース 1.23
ORTリリース 1.33
ORTリリース 1.43

Windows OSディストリビューションのopsetとONNXバージョンの詳細については、こちらを参照してください。

Windows Machine Learning (WinML) の詳細については、Windows MLの概要を参照してください。

トップに戻る