Windows
Windows向けONNX Runtime入門
Section titled “Windows向けONNX Runtime入門”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は維持エンジニアリング段階にあります)。
Windows OSの統合
Section titled “Windows OSの統合”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が推奨されます。これは、複雑さの多くを自動的に処理するためです。
高レベルの設計は次のようになります。

APIの選択
Section titled “APIの選択”WinRT APIまたはC APIのいずれかを使用することを選択できます。
| WinRT | C 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.MachineLearning | WinRT - CPU, GPU (DirectML) | Windows 8.1+ |
APIリファレンス
Section titled “APIリファレンス”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 1809 | 1 |
| Windows OS 1903 | 2 |
| Windows OS 1909 | 2 |
| ORTリリース 1.2 | 3 |
| ORTリリース 1.3 | 3 |
| ORTリリース 1.4 | 3 |
Windows OSディストリビューションのopsetとONNXバージョンの詳細については、こちらを参照してください。
追加リソース
Section titled “追加リソース”Windows Machine Learning (WinML) の詳細については、Windows MLの概要を参照してください。