Partilhar via


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
  • DirectXMinPower

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

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.