Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die mit Windows ML ausgelieferte ONNX-Runtime ermöglicht es Apps, die Ausführungsanbieter (EPs) entweder basierend auf Geräterichtlinien oder explizit zu konfigurieren, was mehr Kontrolle über die Anbieteroptionen und die zu verwendenden Geräte bietet.
Es wird empfohlen, mit der expliziten Auswahl von EPs zu beginnen, damit Sie die Ergebnisse besser vorhersagbar machen können. Nachdem Sie dies funktioniert haben, können Sie mit der Verwendung von Geräterichtlinien experimentieren, um Ausführungsanbieter auf natürliche, ergebnisorientierte Weise auszuwählen.
Explizite Auswahl von EPs
Um ein EP explizit auszuwählen, verwenden Sie die Umgebungsfunktion GetEpDevices , um alle verfügbaren Geräte aufzählen zu können, und wählen Sie die EP-Geräte aus, die Sie verwenden möchten. Verwenden Sie AppendExecutionProvider dann (C#) oder AppendExecutionProvider_V2 (C++), um bestimmte Geräte anzufügen und benutzerdefinierte Anbieteroptionen an die gewünschte EP bereitzustellen. Hier sehen Sie alle unterstützten EPs.
Von Bedeutung
Liste der Geräte kann sich dynamisch ändern: Die Liste der EpDevices kann zur Laufzeit dynamisch geändert werden, wenn Windows ML-Ausführungsanbieter automatisch aktualisiert werden oder wenn Treiber aktualisiert werden. Ihr Code sollte so gestaltet sein, dass er fähig ist, mit neuen oder unerwarteten EP-Geräten umzugehen, die auftauchen, oder damit, dass EP-Geräte, die Sie zuvor verwendet haben, nicht mehr vorhanden sind.
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);
Durchsuchen Sie alle verfügbaren EPs in den unterstützten EPs-Dokumenten . Weitere Informationen zur EP-Auswahl finden Sie in der ONNX-Runtime OrtApi-Dokumentation.
Verwenden von Geräterichtlinien für die Auswahl des Ausführungsanbieters
Zusätzlich zur expliziten Auswahl von EPs können Sie auch Geräterichtlinien verwenden, die eine natürliche, ergebnisorientierte Methode sind, um anzugeben, wie Ihre KI-Workload ausgeführt werden soll. Verwenden Sie dazu SessionOptions.SetEpSelectionPolicy, indem Sie OrtExecutionProviderDevicePolicy-Werte übergeben. Es gibt eine Vielzahl von Werten, die Sie für die automatische Auswahl verwenden können, wie z.B. MAX_PERFORMANCE, PREFER_NPU und MAX_EFFICIENCY. Weitere Werte können Sie in den ONNX OrtExecutionProviderDevicePolicy-Dokumenten nachlesen.
// 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);
Nächste Schritte
Nachdem Sie Ausführungsanbieter ausgewählt haben, können Sie die Ableitung für ein Modell mit ONNX Runtime ausführen!