Sdílet prostřednictvím


Výběr zprostředkovatelů spouštění pomocí modulu RUNTIME ONNX, který je součástí Windows ML

Modul runtime ONNX dodávaný s Windows ML umožňuje aplikacím konfigurovat poskytovatele spouštění (EPS) buď na základě zásad zařízení , nebo explicitně, což poskytuje větší kontrolu nad možnostmi poskytovatele a zařízeními, která se mají použít.

Doporučujeme začít explicitním výběrem EP, abyste ve výsledcích mohli mít předvídatelnější výsledky. Po dokončení práce můžete experimentovat s používáním zásad zařízení k výběru poskytovatelů spouštění přirozeným způsobem orientovaným na výsledky.

Explicitní výběr EP

Pokud chcete explicitně vybrat EP, použijte funkci prostředí GetEpDevices k vytvoření výčtu všech dostupných zařízení a vyberte zařízení EP, která chcete použít. Pak pomocí AppendExecutionProvider jazyka (C#) nebo AppendExecutionProvider_V2 (C++) připojte konkrétní zařízení a do požadovaného EP zadejte vlastní možnosti poskytovatele. Tady vidíte všechny podporované koncové body.

Důležité

Seznam zařízení se může dynamicky měnit: Seznam epDevices se může dynamicky měnit za běhu, když se automaticky aktualizují zprostředkovatelé spouštění Windows ML nebo při aktualizaci ovladačů. Váš kód by měl být připraven na to, že se objeví nová nebo neočekávaná zařízení EP, nebo že zařízení EP, která jste dříve používali, již nejsou k dispozici.

using Microsoft.ML.OnnxRuntime;
using System;
using System.Linq;
using System.Collections.Generic;

// Assuming you've created an OrtEnv named 'ortEnv'
// 1. Enumerate devices
var epDevices = ortEnv.GetEpDevices();

// 2. Filter to your desired execution provider and device type
var selectedEpDevices = epDevices
    .Where(d =>
        d.EpName == "ReplaceWithExecutionProvider"
        && d.HardwareDevice.Type == OrtHardwareDeviceType.NPU)
    .ToList();

if (selectedEpDevices.Count == 0)
{
    throw new InvalidOperationException("ReplaceWithExecutionProvider is not available on this system.");
}

// 3. Configure provider-specific options (varies based on EP)
// and append the EP with the correct devices (varies based on EP)
var sessionOptions = new SessionOptions();
var epOptions = new Dictionary<string,string>{ ["provider_specific_option"] = "4" };
sessionOptions.AppendExecutionProvider(ortEnv, new[] { selectedEpDevices.First() }, epOptions);

Prohlédněte všechny dostupné EP v dokumentaci podporovaných EP. Další podrobnosti o výběru EP najdete v dokumentaci k ONNX Runtime OrtApi.

Použití zásad zařízení pro výběr poskytovatele spouštění

Kromě explicitního výběru EPS můžete také použít zásady zařízení, což je přirozený způsob orientovaný na výsledky, abyste určili, jak se má vaše úloha AI spouštět. Uděláte to tak, že použijete SessionOptions.SetEpSelectionPolicyfunkci předávání OrtExecutionProviderDevicePolicy hodnot. Existují různé hodnoty, které můžete použít pro automatický výběr, například MAX_PERFORMANCE, PREFER_NPUMAX_EFFICIENCY, a další. Další hodnoty, které můžete použít, najdete v dokumentaci k ONNX OrtExecutionProviderDevicePolicy .

// Configure the session to select an EP and device for MAX_EFFICIENCY which typically
// will choose an NPU if available with a CPU fallback.
var sessionOptions = new SessionOptions();
sessionOptions.SetEpSelectionPolicy(ExecutionProviderDevicePolicy.MAX_EFFICIENCY);

Další kroky

Po výběru zprostředkovatelů spouštění jste připraveni spustit odvozování na modelu pomocí modulu RUNTIME ONNX!