A Microsoft e seus parceiros de hardware lançaram recentemente seus PCs Copilot+, equipados com CPUs Arm com unidades de processamento neural integradas. Eles são um redirecionamento interessante das plataformas x64 convencionais anteriores, focadas inicialmente nos processadores Snapdragon X Arm da Qualcomm e executando as versões mais recentes do Windows on Arm da Microsoft. Compre um agora e ele já estará executando a versão 24H2 do Windows 11, pelo menos alguns meses antes que o 24H2 chegue a outro hardware.

Fora da caixa, o Copilot+ é um PC rápido, com todos os recursos que esperamos de um laptop moderno. A duração da bateria é excelente e os benchmarks nativos do Arm são tão bons ou, em alguns casos, melhores que a maioria dos hardwares baseados em Intel ou AMD. Eles até oferecem aos processadores M2 e M3 Arm da Apple uma corrida pelo seu dinheiro. Isso os torna ideais para as tarefas de desenvolvimento mais comuns usando Visual Studio e Visual Studio Code. Ambos têm compilações Arm64, portanto, não precisam passar pela complexidade adicional que vem com a camada de emulação Prism do Windows On Arm.

Arm PCs para desenvolvimento Arm

Com o GitHub ou outro sistema de controle de versão para gerenciar o código, os desenvolvedores que trabalham em versões Arm de aplicativos podem clonar rapidamente um repositório, configurar uma nova ramificação, construir, testar e fazer alterações locais antes de enviar sua ramificação para o repositório principal, pronta para usar solicitações de pull para mesclar quaisquer alterações. Essa abordagem deve acelerar o desenvolvimento de versões Arm de aplicativos existentes, com hardware capaz agora fazendo parte do ciclo de vida de desenvolvimento de software.

Para ser honesto, isso não é uma grande mudança em relação a qualquer hardware anterior do Windows On Arm. Se isso é tudo que você precisa, esta nova geração de hardware simplesmente traz um conjunto mais amplo de fontes. Se você tiver um contrato de compra com Dell, HP ou Lenovo, poderá adicionar rapidamente hardware Arm à sua frota e não ficará preso ao uso do Surface da Microsoft.

A característica mais interessante dos novos dispositivos é a unidade de processamento neural (NPU) integrada. Oferecendo pelo menos 40 TOPs de capacidade computacional adicional, o NPU traz recursos avançados de inferência local para PCs, suportando modelos de linguagem pequena e outros recursos de aprendizado de máquina. A Microsoft está inicialmente apresentando isso com uma ferramenta de legenda ao vivo e uma seleção de diferentes filtros de vídeo em tempo real no caminho de processamento da câmera do dispositivo. (A ferramenta planejada de indexação Recall AI está sendo redesenvolvida para abordar questões de segurança.)

Crie sua própria IA em hardware de IA

Os aplicativos de IA incluídos são interessantes e potencialmente úteis, mas talvez sejam melhor considerados como indicadores das capacidades do hardware. Como sempre, a Microsoft confia em seus desenvolvedores para fornecer aplicativos mais complexos que podem levar o hardware ao seu limite. É disso que trata o Copilot Runtime, com suporte para o tempo de execução de inferência ONNX e, se não estiver na versão do Windows, uma versão de sua API de inferência DirectML para PCs Copilot + e seu NPU Qualcomm.

Embora o suporte DirectML simplificasse a criação e execução de aplicativos de IA, a Microsoft já começou a enviar algumas das ferramentas necessárias para criar seus próprios aplicativos de IA. Não espere que seja fácil, pois ainda faltam muitas peças, dificultando a implementação do fluxo de trabalho de desenvolvimento de IA.

Por onde você começa? O lugar óbvio é o AI Toolkit for Visual Studio Code. Ele foi projetado para ajudá-lo a testar e ajustar modelos de linguagem pequena que podem ser executados em PCs e laptops, usando CPU, GPU e NPU. As compilações mais recentes oferecem suporte ao Arm64, para que você possa instalar o AI Toolkit e o Visual Studio Code em seus dispositivos de desenvolvimento.

Trabalhando com o AI Toolkit para Visual Studio

A instalação é rápida, usando as ferramentas integradas do Marketplace. Se você está planejando criar aplicativos de IA, vale a pena instalar as ferramentas Python e C#, bem como ferramentas para conexão ao GitHub ou outros repositórios de código-fonte. Outros recursos úteis a serem adicionados incluem suporte ao Azure e as extensões necessárias para trabalhar com o Windows Subsystem for Linux (WSL).

Depois de instalado, você pode usar o AI Toolkit para avaliar uma biblioteca de pequenos modelos de linguagem destinados à execução em PCs e hardware de ponta. Cinco estão disponíveis atualmente: quatro versões diferentes do Phi-3 da Microsoft e uma instância do Mistral 7b. Todos eles são baixados localmente e você pode usar o playground de modelo do AI Toolkit para experimentar instruções de contexto e prompts do usuário.

Infelizmente, o playground do modelo não usa o NPU, então você não consegue ter uma ideia de como o modelo será executado no NPU. Mesmo assim, é bom experimentar desenvolver o contexto da sua aplicação e ver como o modelo responde às entradas do usuário. Seria bom ter uma maneira de construir um aplicativo com mais recursos em torno do modelo – por exemplo, implementando o Prompt Flow ou uma ferramenta de orquestração de IA semelhante para experimentar basear seu modelo de linguagem pequena em seus próprios dados.

Não espere poder ajustar um modelo em um PC Copilot+. Eles atendem à maioria dos requisitos, com suporte para as compilações Arm64 WSL corretas do Ubuntu, mas o hardware da Qualcomm não inclui uma GPU Nvidia. Seu NPU foi projetado apenas para inferência, portanto, não fornece os recursos necessários para o ajuste fino de algoritmos.

Isso não impede você de usar um dispositivo Arm como parte de um fluxo de trabalho de ajuste fino, pois ele ainda pode ser usado com uma máquina virtual hospedada na nuvem que tenha acesso a uma GPU inteira ou fracionada. Tanto o Microsoft Dev Box quanto o GitHub Codespaces têm opções de máquina virtual habilitadas para GPU, embora possam ser caras se você estiver executando um trabalho grande. Alternativamente, você pode usar um PC com GPU Nvidia se estiver trabalhando com dados confidenciais.

Depois de ter um modelo com o qual você esteja satisfeito, você pode começar a incorporá-lo em um aplicativo. É aqui que há uma grande lacuna no fluxo de trabalho de desenvolvimento de IA do Copilot + PC, já que você não pode ir diretamente do AI Toolkit para a edição de código. Em vez disso, comece encontrando o diretório oculto que contém a cópia local do modelo que você está testando (ou baixe uma versão ajustada do serviço de ajuste de sua escolha), configure um tempo de execução ONNX que suporte o NPU do PC e use isso para começar a construir e testar o código.

Construindo um tempo de execução de IA para NPUs Qualcomm

Embora você possa construir um ambiente Arm ONNX a partir do código-fonte, todas as peças necessárias já estão disponíveis, então tudo o que você precisa fazer é montar seu próprio ambiente de execução. O AI Toolkit inclui um endpoint de servidor web básico para um modelo carregado, e você pode usá-lo com ferramentas como Postman para ver como funciona com entradas e saídas REST, como se estivesse usando-o em um aplicativo web.

Se você preferir construir seu próprio código, há uma versão Arm64 do Python 3 para Windows, bem como uma versão pré-construída do provedor de execução ONNX para NPUs QNN da Qualcomm. Isso deve permitir que você crie e teste o código Python no Visual Studio Code depois de validar seu modelo usando inferência de CPU no AI Toolkit. Embora não seja uma abordagem ideal, ela fornece um caminho para usar um PC Copilot+ como ambiente de desenvolvimento de IA. Você pode até usar isso com a versão Python da estrutura de orquestração de agentes Semantic Kernel AI da Microsoft.

Os desenvolvedores de C# não ficam de fora. Há uma versão .NET da ferramenta QNN ONNX disponível no NuGet, para que você possa rapidamente pegar modelos locais e incluí-los em seu código. Você pode usar o AI Toolkit e Python para validar modelos antes de incorporá-los em aplicativos .NET.

É importante compreender as limitações da ferramenta QNN ONNX. Ele foi projetado apenas para modelos quantizados e isso requer a garantia de que todos os modelos usados ​​sejam quantizados para usar números inteiros de 8 ou 16 bits. Você deve verificar a documentação antes de usar um modelo pronto para uso para ver se precisa fazer alguma alteração antes de incluí-lo em seus aplicativos.

Tão perto, mas tão longe

Embora a plataforma Copilot+ PC (e o Copilot Runtime associado) sejam muito promissoras, o conjunto de ferramentas ainda está fragmentado. Do jeito que está, é difícil passar do modelo ao código e ao aplicativo sem ter que sair do seu IDE. No entanto, é possível ver como uma versão futura do AI Toolkit for Visual Studio Code pode agrupar os tempos de execução QNN ONNX, bem como disponibilizá-los para uso por meio do DirectML para desenvolvimento de aplicativos .NET.

Esse lançamento futuro precisa ser mais cedo ou mais tarde, pois os dispositivos já estão nas mãos dos desenvolvedores. Obter inferência de IA em dispositivos locais é um passo importante na redução da carga nos data centers do Azure.

Sim, o estado atual do desenvolvimento do Arm64 AI no Windows é decepcionante, mas isso é mais porque é possível ver o que poderia ser, não por falta de ferramentas. Muitos elementos necessários estão aqui; o que é necessário é uma maneira de agrupá-los para nos fornecer uma plataforma de desenvolvimento de aplicativos de IA ponta a ponta para que possamos aproveitar ao máximo o hardware.

Por enquanto, talvez seja melhor ficar com o Copilot Runtime e o modelo Phi-Silica integrado com suas APIs prontas para uso. Afinal, comprei um dos novos laptops Surface com tecnologia Arm e quero vê-lo cumprir sua promessa como o hardware de desenvolvimento de IA que espero usar. Esperançosamente, a Microsoft (e a Qualcomm) preencherão as lacunas e me darão a experiência de codificação NPU que desejo.