Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Windows Machine Learning (ML) ajuda os desenvolvedores de aplicativos Windows em C#, C++ e Python a executar modelos ONNX localmente em toda a variedade de hardware de PC Windows, incluindo CPUs, GPUs e NPUs. O Windows ML abstrai o hardware e os provedores de execução, para que você possa se concentrar em escrever seu código. Além disso, o Windows ML é atualizado automaticamente para oferecer suporte às NPUs, GPUs e CPUs mais recentes à medida que são lançadas.
Importante
As APIs de ML do Windows são atualmente experimentais e não têm suporte para uso em ambientes de produção. Os aplicativos que experimentam essas APIs não devem ser publicados na Microsoft Store.
Versões suportadas do Windows
O Windows ML funciona em todos os PCs com Windows 11 com a versão 24H2 (compilação 26100) ou superior.
Hardware suportado
O Windows ML funciona em todo o hardware de PC x64 e ARM64, mesmo PCs que não têm NPUs ou GPUs, o que significa que você pode alcançar centenas de milhões de dispositivos Windows no mercado. Isso pode significar manter as cargas de trabalho leves; mas existem iGPUs que são poderosas o suficiente para lidar com cargas de trabalho pesadas.
Convertendo modelos para ONNX
Você pode converter modelos de outros formatos para ONNX para que possa usá-los com o Windows ML. Consulte os documentos do Visual Studio Code AI Toolkit sobre como converter modelos para o formato ONNX para saber mais.
Que desafios o Windows ML enfrenta?
Diversidade de hardware
Como um desenvolvedor de IA baseado no Windows, o primeiro desafio que o Windows ML aborda para você é o da diversidade de hardware. Sim, é uma vantagem do ecossistema Windows que os usuários possam escolher o hardware que melhor lhes convier. Mas sem o Windows ML, isso tornaria difícil para você, como desenvolvedor criando experiências de IA, suportar toda essa diversidade de hardware. Muitos dos principais aplicativos atuais que são executados no Windows optam por lançar em apenas um único fornecedor de hardware de cada vez. Apenas Intel; apenas Qualcomm; apenas AMD; apenas GPUs discretas por enquanto. E isso limita muito o número de dispositivos em que esses aplicativos podem ser executados.
Desdobramento de dependências
Em seguida, há o problema de implantar todas as dependências necessárias. Para enviar experiências de IA em seu aplicativo, ele deve enviar e implantar três elementos.
- Os modelos de IA que você deseja executar.
- Um tempo de execução que permite executar inferências nesses modelos.
- Ferramentas e drivers específicos do fornecedor que ajudam o runtime escolhido a comunicar-se com o silício.
Seu aplicativo precisa dessas coisas e também precisa que elas sejam mantidas e atualizadas. Quando uma nova versão do tempo de execução é lançada, ou um bug crítico é corrigido nela, você precisa atualizar seu aplicativo de acordo. Sem o Windows ML, como desenvolvedor de aplicativos, você precisaria assumir a propriedade de todas essas dependências. Eles se tornariam parte do seu aplicativo, e o fardo de manter tudo recairia sobre você.
Aproveitando o hardware local
E há também a questão de colocar para trabalhar o hardware local no qual seu aplicativo está sendo executado. Suas cargas de trabalho de IA devem ser executadas em CPU, GPU ou NPU? Se você estiver usando diferentes modelos de IA, quais funcionam melhor em quais processadores? Este problema torna-se rapidamente muito complexo. E sem o Windows ML caberia a você escrever e manter a lógica difícil que primeiro deteta o que está disponível no dispositivo atual e, em seguida, tenta obter o máximo desempenho dele.
O Windows ML, disponível por meio do SDK de aplicativos do Windows, resolve todos esses problemas.
- O ambiente de execução não precisa estar integrado no seu aplicativo.
- O provedor de execução (EP) é selecionado para seus usuários automaticamente com base no hardware disponível para eles. As sobrescrições do desenvolvedor estão disponíveis para seleção.
- O Windows ML gerencia suas dependências de tempo de execução; empurrando a carga para fora do seu aplicativo e para o próprio Windows ML e os EPs.
- O Windows ML ajuda a equilibrar a carga no dispositivo cliente e escolhe o hardware apropriado para a execução da carga de trabalho de IA.
Visão geral detalhada
O Windows ML in Microsoft.Windows.AI.MachineLearning
serve como o núcleo de inferência de IA do Windows AI Foundry. Portanto, se você estiver usando as APIs de IA do Windows para acessar os modelos incorporados ao Windows ou estiver usando a lista crescente de modelos do Foundry prontos para uso com o Foundry Local (consulte Introdução ao Foundry Local), você estará executando suas cargas de trabalho de IA no Windows ML provavelmente sem saber.
E se você estiver trazendo seus próprios modelos, ou se precisar de um alto grau de controle refinado sobre como a inferência de modelo ocorre, poderá usar o Windows ML diretamente chamando suas APIs. Consulte APIs do Windows ML (Microsoft.Windows.AI.MachineLearning).
Baseado no ONNX Runtime
O Windows ML é criado em uma versão bifurcada e especializada do ONNX Runtime. Isso permite alguns aprimoramentos específicos do Windows para o desempenho. Também o otimizamos em torno de modelos QDQ ONNX padrão, o que permite um foco em alcançar o melhor desempenho de inferência no dispositivo local sem a necessidade de ampliar os modelos desnecessariamente.
O ONNX Runtime comunica-se ao silício por meio de fornecedores de execução (EPs), que servem como uma camada de tradução entre o tempo de execução e os drivers de hardware. Pegamos o trabalho do provedor de execução que fizemos com o Windows Click to Do e NPUs, combinamos isso com novos provedores de execução para GPUs e envolvemos tudo em uma única estrutura de ML do Windows que agora cumpre totalmente a promessa de habilitar cargas de trabalho de IA que podem atingir qualquer hardware em CPU, GPU e NPU. Cada tipo de processador é um elemento de primeira classe que é totalmente suportado pelos drivers mais recentes e provedores de execução ONNX Runtime dos quatro principais fabricantes de hardware de IA (AMD, Intel, NVIDIA e Qualcomm). Esses tipos de processador estão em pé de igualdade — você só precisa escrever para o Windows ML com modelos ONNX QDQ para escalar os seus workloads de IA com confiança em todos os tipos de hardware.
Empacotamento e implantação
O Windows ML é distribuído como parte do SDK de Aplicativos Windows. Depois de adicionar uma referência ao SDK de aplicativos do Windows em seu projeto e instalar seu aplicativo no computador de um cliente:
- O bootstrapper do Windows App SDK garante que o runtime do Windows ML seja inicializado corretamente no seu aplicativo.
- Em seguida, o Windows ML deteta o hardware da máquina específica em que seu aplicativo está instalado e baixa os provedores de execução apropriados necessários para esse computador.
Assim, você não precisa incluir os seus próprios provedores de execução no pacote da aplicação. Na verdade, você não precisa se preocupar com provedores de execução ou com o envio de compilações personalizadas de tempos de execução de IA que são projetados especificamente para AMD ou Intel ou NVIDIA ou Qualcomm ou qualquer outra família específica de hardware. Basta chamar as APIs de ML do Windows e, em seguida, alimentar um modelo formatado corretamente e nós cuidamos do resto — provisionando automaticamente tudo o que é necessário no hardware de destino e mantendo tudo atualizado.
O resultado é que simplifica muito as dependências que se tem que gerir e preocupar-se. E isso é possível graças ao nível de interação de que nos beneficiamos com parceiros de hardware como AMD, Intel, NVIDIA e Qualcomm. Esses parceiros continuarão a fornecer soluções de execução para o Windows ML e enviá-las à Microsoft quando tiverem atualizações ou novos microchips que estejam introduzindo no mercado.
A Microsoft certificará quaisquer novos provedores de execução (EPs) para garantir que não haja regressões à precisão da inferência. E então assumiremos a responsabilidade de implantar esses EPs em máquinas alvo em nome dos fornecedores de hardware e facilitar a manutenção do ecossistema de ML do Windows como um todo para que permaneça atualizado.
É uma abordagem diferente da abordagem adotada por tecnologias como DirectML e DirectX; onde a Microsoft abstrai APIs sobre alterações no ecossistema de hardware. Em vez disso, com o Windows ML, estamos mudando o cenário para capacitar os fornecedores de hardware a introduzir rápida e diretamente tecnologia de silício inovadora, com suporte imediato do provedor de execução desde o primeiro dia para esse hardware quando chega ao mercado.
Desempenho
O desempenho é mais do que a pura velocidade do relógio de parede. Sim, muitas cargas de trabalho de IA são computacionalmente caras. Mas, à medida que a IA se torna onipresente nas experiências de aplicativos, há uma necessidade de um tempo de execução que possa otimizar a inferência de uma forma que preserve a vida útil da bateria enquanto mantém um alto grau de precisão. Para que a IA produza resultados bons e precisos.
As cargas de trabalho de IA normalmente se enquadram em um de dois grupos:
- IA Ambiental A IA está acontecendo silenciosamente em segundo plano à medida que os usuários interagem com seu aplicativo.
- IA explícita. Os usuários sabem que lançaram uma tarefa de IA, que geralmente é algum tipo de cenário de IA generativa (genAI).
As cargas de trabalho da IA ambiente podem ser descarregadas para um processador NPU dedicado com mais de 40 TOPS de poder de processamento e consumo de energia geralmente na ordem de alguns watts. Dessa forma, o Windows ML é perfeito para cargas de trabalho de IA ambiente. Na maioria dos casos, os usuários de seus aplicativos sentirão a magia da IA sem ter que esperar e sem ter que se preocupar com a vida útil da bateria do PC.
Muitas tarefas de IA computacionalmente pesadas podem ser melhor servidas por uma GPU dedicada. A versão 2018 do Windows ML depende de um EP DirectML para lidar com cargas de trabalho de GPU; e isso aumenta o número de camadas entre o seu modelo e o silício. O Windows ML in Microsoft.Windows.AI.MachineLearning
não tem a camada DirectML. Em vez disso, ele trabalha diretamente com provedores de execução dedicados para a GPU, proporcionando um desempenho equivalente ao dos SDKs dedicados do passado, como TensorRT para RTX, AI Engine Direct e Extension da Intel para PyTorch. Projetámos o Windows ML para alcançar um desempenho de GPU líder na sua categoria, ao mesmo tempo que mantém os benefícios de escrever uma vez e executar em qualquer lugar que a solução anterior baseada em DirectML oferecia.
Em ambos os casos acima referidos, todos os aspetos do desempenho são importantes. Velocidade pura do relógio de parede, duração da bateria e precisão. Para que o usuário obtenha resultados realmente bons.
Tudo isso abre para você uma gama de experiências e cenários baseados em IA. Você pode executar cargas de trabalho e agentes de IA ambiente em NPUs dedicadas; ou execute cargas de trabalho em GPUs integradas para manter a GPU discreta livre, se necessário. E se você quiser energia bruta, então você pode direcionar as GPUs discretas modernas (dGPUs) de hoje para executar cargas de trabalho mais pesadas nas velocidades mais rápidas possíveis.
O que é um provedor de execução?
Um provedor de execução (EP) é um componente que implementa otimizações específicas de hardware para operações de aprendizado de máquina (ML). Um EP pode implementar uma ou mais abstrações de hardware. Por exemplo:
- Os provedores de execução de CPU otimizam para processadores de uso geral.
- Os fornecedores de execução de GPUs otimizam para processadores gráficos.
- Os provedores de execução otimizam NPUs para unidades de processamento neural.
- Outros fornecedores específicos do fornecedor.
O tempo de execução do Windows ML lida com a complexidade do gerenciamento desses provedores de execução fornecendo APIs para fazer o seguinte:
- Faça o download dos EPs apropriados para o hardware atual.
- Registe EPs dinamicamente durante a execução.
- Configure o comportamento do EP.
Usando provedores de execução com o Windows ML
O tempo de execução do Windows ML fornece uma maneira flexível de acessar provedores de execução (EPs) de aprendizado de máquina (ML), que podem otimizar a inferência do modelo de ML em diferentes configurações de hardware. Esses EPs são distribuídos como pacotes separados que podem ser atualizados independentemente do sistema operacional.
Fornecendo comentários sobre o Windows ML
Gostaríamos muito de ouvir os seus comentários sobre a utilização do Windows ML! Se você tiver algum problema ou tiver sugestões, pesquise no GitHub do SDK de Aplicativo Windows para ver se ele já foi relatado e, se não, crie um novo problema.