Geral
Como posso integrar IA na minha aplicação cliente Windows?
Integrar IA na sua aplicação Windows pode ser conseguido através de dois métodos principais: um modelo local ou um modelo baseado na cloud. Para a opção de modelo local, você tem a capacidade de utilizar um modelo pré-existente ou treinar o seu próprio usando plataformas como TensorFlow ou PyTorch e, em seguida, incorporá-lo ao seu aplicativo via OnnxRuntime. Microsoft Foundry em Windows oferece APIs para várias funções, incluindo OCR ou utilização do modelo Phi Silica. Por outro lado, hospedar seu modelo na nuvem e acessá-lo por meio de uma API REST permite que seu aplicativo permaneça simplificado, delegando tarefas que consomem muitos recursos à nuvem. Consulte Use modelos de Machine Learning na sua aplicação de Windows para mais informações.
Preciso da versão mais recente do Windows 11 e de um Copilot+ PC com NPU para usar funcionalidades de IA?
Existem muitas formas de executar cargas de trabalho de IA, tanto instalando e executando modelos localmente no seu dispositivo Windows como executando modelos baseados na cloud (ver Comece com IA no Windows), no entanto, as funcionalidades de IA suportadas pelas APIs Windows IA atualmente requerem um Copilot+ PC com uma NPU.
Quais são as melhores linguagens de programação para desenvolver IA em aplicações cliente do Windows?
Você pode usar qualquer linguagem de programação que preferir. Por exemplo, o C# é amplamente utilizado para criar aplicações clientes do Windows. Se você precisar de mais controle sobre detalhes de baixo nível, o C++ é uma excelente opção. Em alternativa, podes considerar usar Python. Também pode usar o Subsistema Windows para Linux (WSL) para executar ferramentas de IA baseadas em Linux no Windows.
Quais são os melhores frameworks de IA para aplicações clientes do Windows?
Recomendamos o uso do OnnxRuntime.
Como devo lidar com a privacidade e segurança dos dados ao usar IA em aplicações cliente do Windows?
Respeitar a privacidade e a segurança dos dados dos usuários é essencial ao desenvolver aplicativos baseados em IA. Você deve seguir as melhores práticas para o tratamento de dados, como criptografar dados confidenciais, usar conexões seguras e obter o consentimento do usuário antes de coletar dados. Você também deve ser transparente sobre como está usando os dados e dar aos usuários controle sobre seus dados. Certifique-se de ler também Aplicações e Funcionalidades de IA Generativa Responsável no Desenvolvimento no Windows.
Quais são os requisitos do sistema para executar IA nas aplicações cliente do Windows?
Os requisitos do sistema para aplicações Windows que utilizam IA dependem da complexidade do modelo de IA e da aceleração de hardware utilizada. Para modelos simples, uma CPU moderna pode ser suficiente, mas para modelos mais complexos, uma GPU ou NPU pode ser necessária. Você também deve considerar os requisitos de memória e armazenamento do seu aplicativo, bem como a largura de banda de rede necessária para serviços de IA baseados em nuvem.
Como otimizar o desempenho da IA em aplicações cliente do Windows?
Para otimizar o desempenho da IA nas aplicações Windows, deve considerar a utilização de aceleração por hardware, como GPUs ou NPUs, para acelerar a inferência dos modelos. Os portáteis Windows Copilot+ são otimizados para cargas de trabalho de IA e podem proporcionar um aumento significativo de desempenho para tarefas de IA. Consultar também a visão geral do Foundry Toolkit para Visual Studio Code.
Posso usar modelos de IA pré-treinados na minha aplicação cliente Windows?
Sim, pode usar modelos de IA pré-treinados na sua aplicação Windows. Você pode baixar modelos pré-treinados da internet ou usar um serviço de IA baseado em nuvem para acessar modelos pré-treinados. Em seguida, você pode integrar esses modelos em seu aplicativo usando uma estrutura como OnnxRuntime.
O que é DirectML?
O DirectML é uma API de baixo nível para aprendizado de máquina que fornece aceleração de GPU para tarefas comuns de aprendizado de máquina em uma ampla gama de hardware e drivers suportados, incluindo todas as GPUs compatíveis com DirectX 12 de fornecedores como AMD, Intel, NVIDIA e Qualcomm.
O que é ONNX?
Open Neural Network Exchange, ou ONNX, é um formato de padrão aberto para representar modelos de ML. Estruturas de modelo de ML populares, como PyTorch, TensorFlow, SciKit-Learn, Keras, Chainer, MATLAB, etc., podem ser exportadas ou convertidas para o formato ONNX padrão. Uma vez no formato ONNX, o modelo pode ser executado em uma variedade de plataformas e dispositivos. ONNX é adequado para se utilizar um modelo de ML num formato diferente daquele em que foi treinado.
O que é ORT?
OnnxRuntime, ou ORT, é uma ferramenta de tempo de execução unificada para executar modelos em diferentes estruturas (PyTorch, TensorFlow, etc) que suporta aceleradores de hardware (CPUs de dispositivos, GPUs ou NPUs).
Como o ONNX difere de outras estruturas de ML, como PyTorch ou TensorFlow?
O PyTorch e o TensorFlow são usados para desenvolver, treinar e executar modelos de aprendizagem profunda usados em aplicações de IA. O PyTorch é frequentemente usado para pesquisa, o TensorFlow é frequentemente usado para implantação do setor e o ONNX é um formato de troca de modelo padronizado que preenche a lacuna, permitindo que você alterne entre estruturas conforme necessário e compatível entre plataformas.
O que é uma NPU? Em que se diferencia de uma CPU ou GPU?
Uma Unidade de Processamento Neural, ou NPU, é um chip de IA dedicado projetado especificamente para executar tarefas de IA. O foco de uma NPU difere do de uma CPU ou GPU. Uma Unidade Central de Processamento, ou CPU, é o processador primário de um computador, responsável pela execução de instruções e cálculos de uso geral. Uma Unidade de Processamento Gráfico, ou GPU, é um processador especializado projetado para renderizar gráficos e otimizado para processamento paralelo. É capaz de renderizar imagens complexas para edição de vídeo e tarefas de jogos.
As NPUs são projetadas para acelerar algoritmos de aprendizado profundo e podem remover parte do trabalho da CPU ou GPU de um computador, para que o dispositivo possa trabalhar de forma mais eficiente. As NPUs são criadas especificamente para acelerar tarefas de redes neurais. Eles se destacam no processamento de grandes quantidades de dados em paralelo, tornando-os ideais para tarefas comuns de IA, como reconhecimento de imagem ou processamento de linguagem natural. Por exemplo, durante uma tarefa de reconhecimento de imagem, a NPU pode ser responsável pela deteção de objetos ou aceleração de imagem, enquanto a GPU assume a responsabilidade pela renderização da imagem.
Como posso descobrir que tipo de CPU, GPU ou NPU meu dispositivo tem?
Para verificar o tipo de CPU, GPU ou NPU do seu dispositivo Windows e como está a funcionar, abra o Gestor de Tarefas (Ctrl + Shift + Esc), depois selecione o separador Performance e poderá ver a CPU, Memória, Wi-Fi, GPU e/ou NPU da sua máquina listados, juntamente com informações sobre a sua velocidade, taxa de utilização e outros dados.
O que é o Windows ML?
Windows ML (Machine Learning) permite que a sua aplicação utilize uma cópia partilhada a nível de sistema do ONNX Runtime (ORT, ver acima) e adiciona suporte para descarregar dinamicamente fornecedores específicos execution providers (EPs), para que a inferência do seu modelo possa ser otimizada para a grande variedade de CPUs, GPUs e NPUs no Windows sem exigir que a tua aplicação tenha de carregar runtimes pesados ou EPs.
Conceitos úteis de IA
O que é um Large Language Model (LLM)?
Um LLM é um tipo de modelo de Machine Learning (ML) conhecido pela capacidade de alcançar geração e compreensão de linguagem de uso geral. LLMs são redes neurais artificiais que adquirem capacidades aprendendo relações estatísticas a partir de grandes quantidades de documentos de texto durante um processo de treinamento computacionalmente intensivo autosupervisionado e semisupervisionado. LLMs são frequentemente usados para Geração de Texto, uma forma de IA generativa que, dado algum texto de entrada, gera palavras (ou tokens) que são mais propensas a criar frases coerentes e contextualmente relevantes como resultado. Existem também Modelos de Linguagem Pequena (SLMs) que têm menos parâmetros e capacidade mais limitada, mas podem ser mais eficientes (exigindo menos recursos computacionais), econômicos e ideais para domínios específicos.
O que é o treino de modelos de aprendizagem automática?
Em Machine Learning, o treino de modelos envolve alimentar um conjunto de dados num modelo (um LLM ou SLM), permitindo-lhe aprender a partir dos dados para que o modelo possa fazer previsões ou decisões baseadas nesses dados, reconhecendo padrões. Também pode envolver o ajuste iterativo dos parâmetros do modelo para otimizar seu desempenho.
O que é Inferencing?
O processo de usar um modelo de aprendizado de máquina treinado para fazer previsões ou classificações em dados novos e invisíveis é chamado de "Inferência". Uma vez que um modelo de linguagem tenha sido treinado em um conjunto de dados, aprendendo seus padrões e relacionamentos subjacentes, ele está pronto para aplicar esse conhecimento a cenários do mundo real. A inferência é o momento da verdade de um modelo de IA, um teste de quão bem ele pode aplicar as informações aprendidas durante o treinamento para fazer uma previsão ou resolver uma tarefa. O processo de uso de um modelo existente para inferência é diferente da fase de treinamento, que requer o uso de dados de treinamento e validação para desenvolver o modelo e ajustar seus parâmetros.
O que é o ajuste fino do modelo de ML?
O ajuste fino é uma etapa crucial no aprendizado de máquina, onde um modelo pré-treinado é adaptado para executar uma tarefa específica. Em vez de treinar um modelo do zero, o ajuste fino começa com um modelo existente (geralmente treinado em um grande conjunto de dados) e ajusta seus parâmetros usando um conjunto de dados menor e específico da tarefa. Através do ajuste fino, o modelo aprende recursos específicos da tarefa, mantendo o conhecimento geral adquirido durante o pré-treinamento, resultando em melhor desempenho para aplicações específicas.
O que é engenharia de prompt?
A engenharia imediata é uma abordagem estratégica usada com IA generativa para moldar o comportamento e as respostas de um modelo de linguagem. Envolve-se na elaboração cuidadosa de prompts de entrada ou consultas para alcançar o resultado desejado de um modelo de linguagem (como GPT-3 ou GPT-4). Ao projetar um prompt eficaz, você pode orientar um modelo de ML para produzir o tipo de resposta desejado. As técnicas incluem ajustar a redação, especificar o contexto ou usar códigos de controle para influenciar a saída do modelo.
O que é aceleração de hardware (em relação ao treinamento de modelo de ML)?
A aceleração de hardware refere-se ao uso de hardware de computador especializado projetado para acelerar aplicativos de IA além do que é possível com CPUs de uso geral. A aceleração de hardware melhora a velocidade, a eficiência energética e o desempenho geral de tarefas de aprendizado de máquina, como modelos de treinamento, previsão ou transferência de computação para componentes de hardware dedicados que se destacam no processamento paralelo para cargas de trabalho de aprendizado profundo. GPUs e NPUs são exemplos de aceleradores de hardware.
Quais são as diferenças entre um Cientistas de Dados, um Engenheiro de ML e um Desenvolvedor de Aplicações que quer aplicar funcionalidades de IA na sua aplicação?
O processo de criação e utilização de modelos de ML envolve três funções principais: Cientistas de Dados: Responsável por definir o problema, coletar e analisar os dados, escolher e treinar o algoritmo de ML e avaliar e interpretar os resultados. Utilizam ferramentas como Python, R, Jupyter Notebook, TensorFlow, PyTorch e scikit-learn para realizar estas tarefas. Engenheiros de ML: Responsável pela implantação, monitoramento e manutenção dos modelos de ML em ambientes de produção. Utilizam ferramentas como Docker, Kubernetes, Azure ML, AWS SageMaker e Google Cloud AI Platform para garantir a escalabilidade, fiabilidade e segurança dos modelos de ML. Desenvolvedores de aplicativos: Responsável pela integração dos modelos de ML na lógica do aplicativo, UI e UX. Utilizam ferramentas como o Microsoft Foundry no Windows, OnnxRuntime ou APIs REST e processam a entrada do utilizador e a saída do modelo. Cada função envolve diferentes responsabilidades e habilidades, mas a colaboração e a comunicação entre essas funções são necessárias para alcançar os melhores resultados. Dependendo do tamanho e da complexidade do projeto, essas funções podem ser desempenhadas pela mesma pessoa ou por equipes diferentes.