次の方法で共有


Windows ML の使い始め方

このトピックでは、Windows ML をインストールして使用して、Windows ML に付属する ONNX ランタイムで使用する実行プロバイダー (IP) を検出、ダウンロード、および登録する方法について説明します。 Windows ML は、パッケージ管理とハードウェアの選択の複雑さを処理するため、ユーザーのハードウェアと互換性のある最新の実行プロバイダーをダウンロードできます。

ONNX ランタイムにまだ慣れていない場合は、 ONNX Runtime のドキュメントを読むことをお勧めします。つまり、Windows ML には ONNX ランタイムのコピーと、実行プロバイダー (IP) を動的にダウンロードする機能が用意されています。

[前提条件]

  • すべての Windows ML API を使用する .NET 8 以降
    • .NET 6 では、 Microsoft.Windows.AI.MachineLearning API を使用して実行プロバイダーをインストールできますが、 Microsoft.ML.OnnxRuntime API を使用することはできません。
  • net8.0-windows10.0.19041.0以上など、Windows 10 固有の TFM を対象とする

手順 1: Windows ML をインストールまたは更新する

Windows ML は、 Windows App SDK 1.8.1 以降に含まれています。

Windows ML を使用する最も簡単な方法は、既定で自己完結型展開を使用する Microsoft.WindowsAppSDK.ML NuGet パッケージをインストールすることです。 デプロイ オプションの詳細については、「 アプリの デプロイ」を参照してください。

dotnet add package Microsoft.WindowsAppSDK.ML

手順 2: EP をダウンロードして登録する

開始する最も簡単な方法は、互換性のあるすべての実行プロバイダーの最新バージョンを Windows ML が自動的に検出、ダウンロード、登録できるようにすることです。 実行プロバイダーを使用するには、実行プロバイダーを Windows ML 内の ONNX ランタイムに登録する必要があります。 まだダウンロードされていない場合は、最初にダウンロードする必要があります。 EnsureAndRegisterCertifiedAsync()を呼び出すと、これらの両方が 1 つの手順で実行されます。

using Microsoft.ML.OnnxRuntime;
using Microsoft.Windows.AI.MachineLearning;

// First we create a new instance of EnvironmentCreationOptions
EnvironmentCreationOptions envOptions = new()
{
    logId = "WinMLDemo", // Use an ID of your own choice
    logLevel = OrtLoggingLevel.ORT_LOGGING_LEVEL_ERROR
};

// And then use that to create the ORT environment
using var ortEnv = OrtEnv.CreateInstanceWithOptions(ref envOptions);

// Get the default ExecutionProviderCatalog
var catalog = ExecutionProviderCatalog.GetDefault();

// Ensure and register all compatible execution providers with ONNX Runtime
// This downloads any necessary components and registers them
await catalog.EnsureAndRegisterCertifiedAsync();

ヒント

スレッドのスピンを有効にすると、ONNX Runtime のパフォーマンスが向上することがあります。 詳細については、「 Windows ML でのスレッド スピン動作 」を参照してください。

ヒント

運用アプリケーションでは、 EnsureAndRegisterCertifiedAsync() 呼び出しを try-catch ブロックにラップして、潜在的なネットワーク障害やダウンロード エラーを適切に処理します。

次のステップ

実行プロバイダーを登録したら、Windows ML 内で ONNX ランタイム API を使用する準備ができました。 お勧めしたいことは、...

  1. 実行プロバイダーの選択 - 使用する実行プロバイダーをランタイムに通知する
  2. モデルを取得する - モデル カタログを使用してモデルを動的にダウンロードするか、ローカルに含める
  3. モデル推論の実行 - モデル のコンパイル、読み込み、推論

こちらも参照ください