Partilhar via


Usar seu modelo do ONNX com o Windows Machine Learning

Este guia ajudará os desenvolvedores de aplicativos iniciantes a trabalhar com modelos de Inteligência Artificial (IA) e Machine Learning (ML), abordando perguntas comuns, compartilhando conceitos e recursos básicos e oferecendo recomendações sobre como usar modelos de IA e ML em um aplicativo do Windows.

Machine Learning (ML) é um ramo da Inteligência Artificial (IA) que permite que os computadores aprendam com os dados e façam previsões ou decisões.

Os modelos de ML são algoritmos que podem ser treinados em dados e, em seguida, implantados para executar várias tarefas, como geração de conteúdo, raciocínio sobre conteúdo, reconhecimento de imagem, processamento de linguagem natural, análise de sentimento e muito mais.

Como os aplicativos do Windows podem aproveitar os modelos de ML?

Algumas maneiras pelas quais os aplicativos do Windows podem aproveitar os modelos de ML para aprimorar sua funcionalidade e experiência do usuário incluem:

  • Os aplicativos podem usar modelos de IA generativa para entender tópicos complexos para resumir, reescrever, relatar ou expandir.
  • Os aplicativos podem usar modelos que transformam conteúdo de forma livre em um formato estruturado que seu aplicativo possa entender.
  • Os aplicativos podem usar modelos de Pesquisa Semântica que permitem que os usuários pesquisem conteúdo por significado e localizem rapidamente o conteúdo relacionado.
  • Os aplicativos podem usar modelos de processamento de linguagem natural para raciocinar sobre requisitos complexos de linguagem natural e planejar e executar ações para realizar a solicitação do usuário.
  • Os aplicativos podem usar modelos de manipulação de imagens para modificar imagens de forma inteligente, apagar ou adicionar assuntos, aumentar a escala ou gerar novo conteúdo.
  • Os aplicativos podem usar modelos de diagnóstico preditivo para ajudar a identificar e prever problemas e ajudar a orientar o usuário ou fazer isso por ele.

Modelos de ML em APIs apoiadas por IA

O Windows Copilot Runtime integra várias maneiras de interagir com o sistema operacional que utiliza IA. Isso inclui recursos e APIs prontos para uso com suporte de IA, que chamamos de Windows Copilot Library. Consulte Introdução ao uso de APIs apoiadas por IA em seu aplicativo do Windows para obter orientação sobre esses recursos e APIs prontos para uso que oferecem suporte a alguns dos cenários listados acima.

Os modelos da Windows Copilot Library são executados localmente, diretamente no dispositivo Windows, embora você também possa optar por usar um modelo baseado em nuvem por meio de uma API pronta para uso. Quer estejam executando um local ou na nuvem, essas APIs abstraem o modelo de ML subjacente para que você não precise fazer nenhuma otimização, formatação ou ajuste fino.

No entanto, você pode querer encontrar seu próprio modelo de ML para usar localmente no Windows. Talvez seja necessário otimizar esse modelo para que ele seja executado corretamente em dispositivos Windows ou ajustar um modelo para que ele seja treinado com seus próprios dados personalizados específicos para seu caso de uso ou empresa em particular. Este artigo abordará alguns dos conceitos, ferramentas e bibliotecas de código aberto para ajudar a guiá-lo por esse processo.

Executando um modelo de idioma pequeno localmente versus um modelo de idioma grande na nuvem

Os Small Language Models (SLMs) são projetados para serem compactos e eficientes, geralmente treinados para tarefas ou domínios específicos em conjuntos de dados menores para permitir o armazenamento e a execução do modelo localmente com um tempo de desempenho de inferência mais rápido. Os SLMs são restritos na quantidade de dados usados para treiná-los, não fornecendo conhecimento tão extenso ou raciocínio complexo quanto um Large Language Model (LLM). No entanto, os SLMs podem fornecer uma alternativa mais segura e econômica aos LLMs quando usados localmente, pois exigem menos poder computacional para serem executados e maior privacidade de dados, mantendo suas informações de bate-papo locais seguras para seu dispositivo.

Os SLMs são mais ideais para uso local, pois executar um modelo de ML em um dispositivo significa que o tamanho não deve exceder a capacidade de armazenamento e processamento do dispositivo que o executa. A maioria dos LLMs seria muito grande para ser executada localmente.

Os modelos Microsoft Phi-2 e Phi-3 são exemplos de SLMs.

Os Large Language Models (LLMs) foram treinados em grandes quantidades de dados com um maior número de parâmetros, tornando-os mais complexos e de maior tamanho para armazenamento. Devido ao seu tamanho, os LLMs podem ser mais capazes de entender padrões mais sutis e complexos nos dados, cobrindo um espectro mais amplo de conhecimento com a capacidade de trabalhar com padrões mais complexos. Eles também requerem recursos computacionais mais significativos para treinamento e inferência. A maioria dos LLMs não seria capaz de ser executada em um dispositivo local.

Os modelos de linguagem OpenAI GPT-4o, GPT-4 Turbo, GPT-3.5 Turbo, DALL-E e Whisper são todos exemplos de LLMs.

Para obter mais orientações sobre a diferença entre usar um SLM localmente versus um LLM na nuvem, consulte Considerações sobre o uso de APIs locais versus baseadas em IA baseadas em nuvem em seu aplicativo do Windows.

Encontre modelos de ML de código aberto na Web

Os modelos de ML de código aberto que estão prontos para uso, e podem ser personalizados com seus próprios dados ou preferências, estão disponíveis em uma variedade de lugares, alguns dos mais populares incluem:

  • Hugging Face: Um hub de mais de 10.000 modelos de ML pré-treinados para processamento de linguagem natural, alimentado pela biblioteca Transformers. Você pode encontrar modelos para classificação de texto, resposta a perguntas, resumo, tradução, geração e muito mais.
  • ONNX Model Zoo: Uma coleção de modelos de ML pré-treinados no formato ONNX que abrangem uma ampla gama de domínios e tarefas, como visão computacional, processamento de linguagem natural, fala e muito mais.
  • Qualcomm AI Hub: Uma plataforma que fornece acesso a uma variedade de modelos de ML e ferramentas otimizadas para dispositivos Qualcomm Snapdragon. Você pode encontrar modelos para processamento de imagem, vídeo, áudio e sensores, bem como estruturas, bibliotecas e SDKs para criar e implantar aplicativos de ML em dispositivos móveis. O Qualcomm AI Hub também oferece tutoriais, guias e suporte à comunidade para desenvolvedores e pesquisadores.
  • Pytorch Hub: Um repositório de modelos pré-treinado projetado para facilitar a reprodutibilidade da pesquisa e permitir novas pesquisas. É uma API simples e um fluxo de trabalho que fornece os blocos de construção básicos para melhorar a reprodutibilidade da pesquisa de aprendizado de máquina. O PyTorch Hub consiste em um repositório de modelos pré-treinados projetado especificamente para facilitar a reprodutibilidade da pesquisa.
  • TensorFlow Hub: Um repositório de modelos de ML pré-treinados e componentes reutilizáveis para o TensorFlow, que é uma estrutura popular para criar e treinar modelos de ML. Você pode encontrar modelos para processamento de imagem, texto, vídeo e áudio, bem como aprendizado de transferência e ajuste fino.
  • Model Zoo: Uma plataforma que faz a curadoria e classifica os melhores modelos de ML de código aberto para várias estruturas e tarefas. Você pode procurar modelos por categoria, estrutura, licença e classificação, e ver demonstrações, código e documentos para cada modelo.

Algumas bibliotecas de modelos não se destinam a ser personalizadas e distribuídas por meio de um aplicativo, mas são ferramentas úteis para exploração prática e descoberta como parte do ciclo de vida de desenvolvimento, como:

  • Ollama: Ollama é um mercado de modelos de ML prontos para uso para várias tarefas, como detecção de rosto, análise de sentimento ou reconhecimento de fala. Você pode navegar, testar e integrar os modelos ao seu aplicativo com apenas alguns cliques.
  • LM Studio: Lmstudio é uma ferramenta que permite criar modelos de ML personalizados a partir de seus próprios dados, usando uma interface de arrastar e soltar. Você pode escolher entre diferentes algoritmos de ML, pré-processar e visualizar seus dados e treinar e avaliar seus modelos.

Sempre que você encontrar um modelo de ML com o objetivo de usá-lo em seu aplicativo do Windows, é altamente recomendável seguir a orientação Desenvolvendo aplicativos e recursos de IA generativa responsável no Windows . Esta orientação ajudará você a entender políticas, práticas e processos de governança, identificar riscos, recomendar métodos de teste, utilizar medidas de segurança, como moderadores e filtros, e chamar a atenção para considerações específicas ao selecionar um modelo seguro e responsável para trabalhar.

Como otimizar um modelo de ML para ser executado no Windows?

Há diferentes maneiras de usar modelos de ML em aplicativos do Windows, dependendo do tipo, da origem e do formato dos modelos e do tipo de aplicativo.

Alguns dos formatos em que você encontrará modelos de ML incluem:

  • ONNX: Um padrão aberto para representar e trocar modelos de ML em diferentes estruturas e plataformas. Se você encontrar um modelo de ML pré-treinado no formato ONNX, poderá usar o ONNX Runtime (ORT) para carregar e executar o modelo em seu aplicativo do Windows. O ORT permite que você acesse os recursos de inferência acelerada por hardware do seu dispositivo e otimize o desempenho do seu modelo de ML. Se você tiver um modelo de ML pré-treinado em um formato diferente, como PyTorch ou TensorFlow, poderá convertê-lo em ONNX usando uma ferramenta de otimização de modelo como Olive. Para obter ajuda sobre o uso do Olive, consulte Ajustar o SLM com o Microsoft Olive (Série Journey para arquitetura de aplicativos de IA generativa). Para obter tutoriais sobre como criar e usar modelos ONNX, consulte Tutoriais do ONNX no GitHub. Para obter exemplos que demonstram como usar modelos ONNX em um aplicativo do Windows, consulte a Galeria de Exemplos de IA no Windows.

  • PyTorch: Um framework de aprendizagem profunda de código aberto muito popular disponível com uma interface Python e C++. Este provavelmente será o formato mais comum que você encontrará para modelos de ML. Se você quiser usar modelos PyTorch ML em seu aplicativo Windows (C# ou C++) ou em um aplicativo Web, poderá usar TorchSharp e LibTorch, que são associações .NET e C++ para a biblioteca PyTorch. TorchSharp e LibTorch permitem criar, carregar e manipular tensores, construir e executar redes neurais e salvar e carregar modelos usando o formato PyTorch. Para obter exemplos, confira TorchSharp Examples, TorchScript for Deployment, PyTorch C++ Examples. Para aplicativos Web, confira Criar um aplicativo Web com o ONNX Runtime. Para obter exemplos de como executar modelos PyTorch com DirectML, consulte a Galeria de Exemplos de IA no Windows.

  • O TensorFlow é outra biblioteca de software de código aberto popular para aprendizado de máquina e inteligência artificial usada para construir e implantar modelos de aprendizado de máquina para várias tarefas.

  • API WebNN para aplicativos Web: um padrão da Web para acessar aceleração de hardware de rede neural em navegadores, com base nas APIs WebIDL e JavaScript. Ele permite que os desenvolvedores da Web criem e executem modelos de aprendizado de máquina de forma eficiente no lado do cliente, sem depender de serviços de nuvem ou bibliotecas nativas. Veja os exemplos no GitHub Amostras WebNN usando o ONNX Runtime em IA na Galeria de Amostras do Windows.

Como faço para ajustar um modelo de ML com meus dados personalizados para execução no Windows?

AI Toolkit para o Visual Studio Code é uma extensão do VS Code que permite baixar e executar modelos de IA localmente. O AI Tookit também pode ajudá-lo com:

  • Testando modelos em um playground intuitivo ou em seu aplicativo com uma API REST.
  • Ajuste fino seu modelo de IA, tanto localmente quanto na nuvem (em uma máquina virtual) para criar novas habilidades, melhorar a confiabilidade das respostas, definir o tom e o formato da resposta.
  • Ajuste fino de modelos populares de linguagem pequena (SLMs), como Phi-3 e Mistral.
  • Implante seu recurso de IA na nuvem ou com um aplicativo executado em um dispositivo.

Como posso aproveitar a aceleração de hardware para obter melhor desempenho com recursos de IA

O DirectML é uma API de baixo nível que permite que o hardware do dispositivo Windows acelere o desempenho de modelos de ML usando a GPU ou NPU do dispositivo. Emparelhar o DirectML com o ONNX Runtime é normalmente a maneira mais simples para os desenvolvedores trazerem IA acelerada por hardware para seus usuários em escala. Saiba mais: Visão geral do DirectML.