Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Środowisko uruchomieniowe ONNX dostarczane z systemem Windows ML umożliwia aplikacjom konfigurowanie dostawców wykonywania (EPS) na podstawie zasad urządzenia lub jawnie, co zapewnia większą kontrolę nad opcjami dostawcy i urządzeniami, które powinny być używane.
Zalecamy rozpoczęcie od jawnego wyboru adresów e-mail, aby mieć większą przewidywalność w wynikach. Po wykonaniu tej pracy możesz eksperymentować z użyciem zasad urządzeń , aby wybrać dostawców wykonywania w naturalny, zorientowany na wynik.
Jawny wybór adresów e-mail
Aby jawnie wybrać EP, użyj funkcji środowiska GetEpDevices , aby wyliczyć wszystkie dostępne urządzenia i wybrać urządzenia EP, których chcesz użyć. Następnie użyj AppendExecutionProvider (C#) lub AppendExecutionProvider_V2 (C++), aby dołączyć określone urządzenia i udostępnić niestandardowe opcje dostawcy do żądanego EP. Wszystkie nasze obsługiwane adresy e-mail można zobaczyć tutaj.
Ważne
Lista urządzeń może dynamicznie się zmieniać: lista urządzeń EpDevices może dynamicznie zmieniać się w czasie wykonywania, gdy dostawcy wykonywania uczenia maszynowego systemu Windows są automatycznie aktualizowani lub gdy sterowniki są aktualizowane. Kod powinien być odporny na obsługę pojawiających się nowych lub nieoczekiwanych urządzeń EP albo wcześniej używanych urządzeń, które nie były już obecne.
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);
Przejrzyj wszystkie dostępne EP w obsługiwanych dokumentach EP. Aby uzyskać więcej informacji na temat wyboru EP, zobacz dokumentację ONNX Runtime OrtApi.
Wybieranie dostawcy wykonywania przy użyciu zasad urządzenia
Oprócz jawnego wybierania adresów e-mail można również użyć zasad urządzeń, które są naturalnym, zorientowanym na wynik sposobem określania sposobu uruchamiania obciążenia sztucznej inteligencji. W tym celu użyj polecenia SessionOptions.SetEpSelectionPolicy, przekazując OrtExecutionProviderDevicePolicy wartości. Istnieje wiele wartości, których można użyć do automatycznego wyboru, takich jak MAX_PERFORMANCE, PREFER_NPU, MAX_EFFICIENCYi nie tylko. Aby uzyskać inne wartości, zobacz dokumentację 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);
Dalsze kroki
Po wybraniu dostawców wykonywania możesz rozpocząć wnioskowanie na modelu przy użyciu środowiska uruchomieniowego ONNX.