Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O OnNX Runtime fornecido com o Windows ML permite que os aplicativos configurem EPs (provedores de execução) com base nas Políticas de Dispositivo ou explicitamente, o que fornece mais controle sobre as opções do provedor e quais dispositivos devem ser usados.
É recomendável começar com a seleção explícita de EPs para que você possa ter mais previsibilidade nos resultados. Depois que isso funcionar, você poderá experimentar o uso de Políticas de Dispositivo para selecionar provedores de execução de maneira natural e orientada a resultados.
Seleção explícita de EPs
Para selecionar explicitamente um EP, use a função do GetEpDevices ambiente para enumerar todos os dispositivos disponíveis e selecione os dispositivos EP que você deseja usar. Em seguida, use AppendExecutionProvider (C#) ou AppendExecutionProvider_V2 (C++) para acrescentar dispositivos específicos e fornecer opções de provedor personalizadas ao EP desejado. Você pode ver todos os nossos EPs com suporte aqui.
Importante
A lista de dispositivos pode mudar dinamicamente: a lista de EpDevices pode ser alterada dinamicamente no runtime quando os provedores de execução do Windows ML são atualizados automaticamente ou quando os drivers são atualizados. Seu código deve ser resiliente para lidar com dispositivos EP novos ou inesperados que aparecem ou dispositivos EP que você estava usando anteriormente não estavam mais presentes.
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);
Navegue por todos os EPs disponíveis nos documentos de EPs com suporte. Para obter mais detalhes sobre a seleção de EP, consulte a documentação do ONNX Runtime OrtApi.
Usando políticas de dispositivo para a seleção do provedor de execução
Além de selecionar explicitamente os EPs, você também pode usar políticas de dispositivo, que são uma maneira natural orientada a resultados para especificar como deseja que sua carga de trabalho de IA seja executada. Para fazer isso, use SessionOptions.SetEpSelectionPolicy, passando OrtExecutionProviderDevicePolicy valores. Há uma variedade de valores que você pode usar para seleção automática, comoMAX_PERFORMANCE, , PREFER_NPUMAX_EFFICIENCYe muito mais. Consulte os documentos ONNX OrtExecutionProviderDevicePolicy para obter outros valores que você pode usar.
// 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);
Próximas etapas
Depois de selecionar provedores de execução, você estará pronto para executar a inferência em um modelo usando o ONNX Runtime!