Criar uma sessão
Depois de carregar um LearningModel, você cria uma LearningModelSession, que associa o modelo a um dispositivo que, por sua vez, executa e avalia o modelo.
Escolha um dispositivo
Você pode selecionar um dispositivo ao criar uma sessão. Você escolhe um dispositivo do tipo LearningModelDeviceKind:
- Default
- Deixe o sistema decidir qual dispositivo usar. Atualmente, o dispositivo padrão é a CPU.
- CPU
- Use a CPU, mesmo que outros dispositivos estejam disponíveis.
- DirectX
- Use um dispositivo de aceleração de hardware do DirectX, especificamente o primeiro adaptador enumerado por IDXGIFactory1::EnumAdapters1.
- DirectXHighPerformance
- O mesmo que DirectX, mas usará DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE ao enumerar adaptadores.
- DirectXMinPower
- O mesmo que DirectX, mas usará DXGI_GPU_PREFERENCE_MINIMUM_POWER ao enumerar adaptadores.
Se você não especificar um dispositivo, o sistema usará Padrão. É recomendável usar Padrão para obter a flexibilidade de permitir que o sistema escolha para você no futuro.
O vídeo a seguir apresenta mais detalhes sobre cada um dos tipos de dispositivo.
Criação avançada de dispositivos
O IA do Windows é compatível com o uso de um dispositivo que o chamador já criou. Há várias opções e considerações ao fazer isso:
- CreateFromDirect3D11Device. Use-o quando você já tiver um IDirect3DDevice existente. A IA do Windows usará esse mesmo adaptador para criar um dispositivo d3d12 para suas cargas de trabalho de ML. Isso é útil quando você tem uma câmera que está usando um dispositivo d3d11 para VideoFrames e você deseja usar esse mesmo dispositivo para seu LearningModelSession. Em muitos casos, isso pode evitar uma cópia de memória. Observação: a tensorização do VideoFrame é a única carga de trabalho d3d11 que a IA do Windows tem. Se você não está usando esse recurso, não há vantagem em compartilhar ou criar um dispositivo d3d11.
- CreateFromD3D12CommandQueue (nativo). Use-o quando você tiver um dispositivo d3d12 que deseja reutilizar. A IA do Windows usará essa fila de comandos para suas cargas de trabalho de ML. Ele também criará um dispositivo d3d11 usando o D3D11On12CreateDevice. Isso é feito somente quando necessário e será usado para todas as cargas de trabalho d3d11, como tensorização do VideoFrame. Você pode acessar esse novo dispositivo por meio da propriedade LearningModelDevice.Direct3D11Device.
Exemplo
O exemplo a seguir mostra como criar uma sessão de um modelo e um dispositivo:
private void CreateSession(LearningModel model, LearningModelDeviceKind kind)
{
// Create the evaluation session with the model and device
LearningModelSession session =
new LearningModelSession(model, new LearningModelDevice(kind));
}
Confira também
- Anterior: carregar um modelo
- Próximo: associar um modelo
Observação
Use os recursos a seguir para obter ajuda com o Windows ML:
- Para fazer perguntas ou responder a perguntas técnicas sobre o Windows ML, use a marca windows-machine-learning no Stack Overflow.
- Para relatar um bug, registre um problema no nosso GitHub.