APIs do Windows ML

Para obter diretrizes conceituais, consulte Executar modelos ONNX com o Windows ML).

Você pode pensar nas APIs no pacote NuGet Microsoft.WindowsAppSDK.ML como sendo o superconjunto destes dois conjuntos:

O pacote NuGet do Microsoft.WindowsAppSDK.ML

O runtime do Microsoft Windows ML fornece APIs para machine learning e operações de IA em aplicativos do Windows. Microsoft.WindowsAppSDK.ML pacote NuGet fornece os arquivos de runtime .winmd do Windows ML para uso em projetos C# e C++.

As engrenagens pywinrt Python

O runtime do Microsoft Windows ML aproveita o projeto pywinrt para fornecer acesso ao Python às mesmas APIs do Windows ML. O nome do pacote é winui3-Microsoft.Windows.AI.MachineLearning. Pacotes adicionais são necessários para usar o SDK do Aplicativo do Windows no Python. Para obter detalhes, consulte o tópico Executar modelos ONNX com o Windows ML.

APIs do Windows ML

Para obter a documentação de referência da API e exemplos de código, consulte o namespace Microsoft.Windows.AI.MachineLearning .

APIs Runtime do ML do Windows, de Geração de Texto e de Reconhecimento de Fala (experimental)

Para cenários C/C++ nativos que precisam de controle de runtime, pipeline, estágio e tensor explícitos, consulte a visão geral da API de runtime do Windows ML. Para fluxos de trabalho de nível superior compostos por esses primitivos, consulte Gerar texto com seu próprio modelo de linguagem usando Windows ML e reconhecer fala com seu próprio modelo Whisper usando Windows ML.

Essas APIs nativas são disponibilizadas no pacote NuGet Microsoft.Windows.AI.MachineLearning. Aplicativos Python podem usar as projeções correspondentes windowsml.tasks e windowsml.runtime.

Notas de implementação

O runtime do Windows ML é integrado ao SDK de Aplicativos do Windows e depende de seus mecanismos de implantação e inicialização:

  • Descobre automaticamente provedores de execução compatíveis com o hardware atual
  • Gerencia o tempo de vida do pacote e as atualizações
  • Garante o registro e a ativação do pacote
  • Dá suporte a diferentes versões de provedores de execução

Implantação dependente da estrutura

O Windows ML é entregue como um componente dependente da estrutura . Isso significa que seu aplicativo deve:

  • Recomenda-se referenciar o pacote principal NuGet do SDK de Aplicativo do Windows, adicionando uma referência a Microsoft.WindowsAppSDK.
  • Ou referenciar ambos Microsoft.WindowsAppSDK.ML e Microsoft.WindowsAppSDK.Runtime

Para obter mais informações sobre como implantar aplicativos do SDK de Aplicativos do Windows, consulte a documentação do Pacote e implante aplicativos do Windows .

Usando o ONNX Runtime com o Windows ML

Para aplicativos C++, depois de registrar provedores de execução, use a API C do ONNX Runtime diretamente para criar sessões e realizar inferência.

Para aplicativos C#, use o Runtime do ONNX diretamente para inferência usando o Microsoft.ML.OnnxRuntime namespace.

Para aplicações Python, utilize o pacote ONNX Runtime onnxruntime-windowsml para inferência.

Anotações do Python

Inicializar o SDK do Aplicativo do Windows

Todas as chamadas do Windows ML devem ocorrer depois que o SDK do Aplicativo Windows for inicializado. Isso pode ser feito com o seguinte código:

from winui3.microsoft.windows.applicationmodel.dynamicdependency.bootstrap import (
    InitializeOptions,
    initialize
)
with initialize(options = InitializeOptions.ON_NO_MATCH_SHOW_UI):
    # Your Windows ML code here

O registro ocorre fora do Windows ML

O runtime do ONNX foi projetado de uma maneira em que os ambientes python e nativos são separados. E as chamadas de registro nativas no mesmo processo não funcionarão para o ambiente do Python. Portanto, o registro de provedores de execução deve ser feito diretamente com a API do Python.

Remova o vcruntime empacotado do pywinrt

O projeto pywinrt inclui um msvcp140.dll no pacote winrt-runtime. Isso pode entrar em conflito com outros pacotes. Remova esta dll para evitar esse problema e instale as bibliotecas vcruntime ausentes usando o Microsoft Visual C++ Redistributable

Consulte também