Windows ML API

概念的なガイダンスについては、「 Windows ML を使用した ONNX モデルの実行」を参照してください。

Microsoft.WindowsAppSDK.ML NuGet パッケージ内の API は、次の 2 つのセットのスーパーセットと考えることができます。

Microsoft.WindowsAppSDK.ML NuGet パッケージ

Microsoft Windows ML ランタイムには、Windows アプリケーションでの機械学習と AI 操作用の API が用意されています。 Microsoft.WindowsAppSDK.ML NuGet パッケージは、C# プロジェクトと C++ プロジェクトの両方で使用できる Windows ML ランタイム .winmd ファイルを提供します。

pywinrt Python wheel

Microsoft Windows ML ランタイムは 、pywinrt プロジェクトを利用して、同じ Windows ML API への Python アクセスを提供します。 パッケージ名は winui3-Microsoft.Windows.AI.MachineLearning です。 Python で Windows App SDK を使用するには、追加のパッケージが必要です。 詳細については、Windows ML を使用した ONNX モデルの実行に関 するトピックを参照してください。

Windows ML API

API リファレンス ドキュメントとコード例については、 Microsoft.Windows.AI.MachineLearning 名前空間を 参照してください。

実装に関するメモ

Windows ML ランタイムは Windows App SDK と統合されており、展開とブートストラップのメカニズムに依存します。

  • 現在のハードウェアと互換性のある実行プロバイダーを自動的に検出する
  • パッケージの有効期間と更新プログラムを管理します
  • パッケージの登録とアクティブ化を処理する
  • さまざまなバージョンの実行プロバイダーをサポート

フレームワークに依存する展開

Windows ML は、 フレームワークに依存する コンポーネントとして提供されます。 つまり、アプリは次のいずれかを行う必要があります。

  • Microsoft.WindowsAppSDKへの参照を追加して、メインの Windows App SDK NuGet パッケージを参照する (推奨)
  • 両方の Microsoft.WindowsAppSDK.MLMicrosoft.WindowsAppSDK.Runtime を参照するか、

Windows App SDK アプリケーションの展開の詳細については、Windows アプリのパッケージ化と展開 に関するドキュメントを参照してください。

Windows ML での ONNX ランタイムの使用

C++ アプリケーションの場合、実行プロバイダーを登録した後、ONNX Runtime C API を直接使用してセッションを作成し、推論を実行します。

C# アプリケーションの場合は、 Microsoft.ML.OnnxRuntime 名前空間を使用した推論に ONNX ランタイムを直接使用します。

Python アプリケーションの場合は、推論に ONNX ランタイム ホイール onnxruntime-windowsml を使用します。

Python ノート

Windows アプリ SDK を初期化する

すべての Windows ML 呼び出しは、Windows App SDK が初期化された後に行われる必要があります。 これを行うには、次のコードを使用します。

from winui3.microsoft.windows.applicationmodel.dynamicdependency.bootstrap import (
    InitializeOptions,
    initialize
)
with initialize(options = InitializeOptions.ON_NO_MATCH_SHOW_UI):
    # Your Windows ML code here

Windows ML から登録が行われる

ONNX ランタイムは、Python とネイティブ環境が分離された方法で設計されています。 また、同じプロセスでのネイティブ登録呼び出しは、Python 環境では機能しません。 したがって、実行プロバイダーの登録は Python API で直接行う必要があります。

pywinrt のパックされた vcruntime を削除する

pywinrt プロジェクトには、winrt ランタイム パッケージに msvcp140.dll が含まれています。 これは他のパッケージと競合する可能性があります。 この問題を回避するには、この dll を削除し、不足している vcruntime ライブラリを vc 再頒布可能パッケージと共にインストールしてください

こちらも参照ください