Compartilhar via


Testar e avaliar cargas de trabalho de IA no Azure

Este artigo se concentra em dois aspectos distintos: avaliar os modelos e testar todo o sistema. A avaliação e o teste geralmente são usados de forma intercambiável, mas devem ser considerados processos separados que usam conjuntos de dados distintos.

A avaliação é uma atividade iterativa que você faz durante a fase de desenvolvimento. Ele se concentra na experimentação para encontrar o melhor modelo com o nível certo de ajuste. Em seguida, avalie o modelo com base em várias métricas.

O teste inclui a verificação de todo o sistema quando uma alteração é introduzida, incluindo o modelo ajustado e componentes que não são de IA. A meta é validar se a carga de trabalho atende aos destinos identificados e atende às expectativas do usuário. Também é uma estratégia de gerenciamento de alterações não negociável que impede regressões de qualidade.

Ambas as práticas são acopladas na implementação real. Todo o processo inclui enviar solicitações para o modelo, avaliar suas respostas e tomar uma decisão de ir ou no-go com base nos dados de teste. Embora o processo não seja negociável antes da produção, recomendamos que você conduza o processo em produção usando uma combinação de dados reais e sintéticos.

O foco principal aqui é em soluções criadas usando IA generativa, especialmente cenários usando modelos de base. Para obter diretrizes aplicáveis a modelos de treinamento e ajuste fino, vá em frente para Diretrizes para testar o treinamento do modelo e o ajuste fino.

Usar métricas de qualidade para avaliação de modelo

Estabeleça uma qualidade de modelo de linha de base e medida usando métricas que se alinham às suas metas de negócios.

Tenha processos que avaliam e quantifiquem os resultados da experiência do usuário em relação a um conjunto de métricas. Por exemplo, o Aterramento avalia se a resposta de um modelo generativo tem suporte no contexto fornecido, em vez de fabricada. Suponha que um escritório de advocacia desenvolva um assistente de IA que cita estatutos. Sem a validação adequada, ela pode ser extraída de documentos desatualizados ou mal classificados, resultando em sérias consequências. Uma pontuação de base alta ajuda a garantir que a saída do modelo permaneça alinhada com o material de origem confiável.

Selecione e priorize as métricas com base em seu caso de uso específico, monitore-as continuamente e use-as como portões de decisão para ajuste e implantação do modelo. Evite depender de uma única métrica, use uma combinação para capturar diferentes dimensões de qualidade. Por exemplo, mesmo que um modelo demonstre uma base forte, ele ainda poderá produzir saídas tendenciosas. Incorpore avaliações de imparcialidade para resultados mais equilibrados e responsáveis.

Para obter informações sobre métricas, consulte Descrições de métricas de avaliação de monitoramento e casos de uso.

Usar os dados corretos para avaliação

Refinar seu modelo por meio de um processo iterativo usando dados de avaliação. Esse conjunto de dados, geralmente chamado de conjunto de dados dourado , consiste em pares de entrada-saída confiáveis, normalmente criados ou validados por humanos. Ele serve como o parâmetro de comparação objetivo para avaliar o desempenho do modelo em relação às métricas de qualidade definidas.

Verifique se o conjunto de dados é representativo do domínio ou da tarefa, com exemplos diversos e de alta qualidade e ruído mínimo. Um tamanho de exemplo limitado pode levar a uma qualidade de avaliação ruim, portanto, considere gerar dados sintéticos quando os dados de exemplo não tiverem diversidade ou cobertura suficientes para melhorar o equilíbrio e a integridade.

Validar fluxos de trabalho agente

À medida que as arquiteturas estão evoluindo para usar a IA, a funcionalidade que antes era tratada pelo código determinístico agora é descarregada para agentes de IA. Esses agentes tomam decisões com frequência com comportamento dinâmico.

Considere um aplicativo agente em que o próprio orquestrador é implementado como um agente. Ao contrário da orquestração tradicional, os agentes podem invocar ferramentas, interpretar prompts, colaborar com outros agentes e se adaptar em tempo real, tornando-os mais flexíveis, mas mais difíceis de validar.

Esse tipo de arquitetura apresenta novos desafios para teste e avaliação. Como os agentes operam não deterministicamente, os testes estáticos tradicionais são insuficientes. A estratégia de teste deve validar o fluxo completo da entrada do usuário para a resposta final, incluindo recuperação de dados de aterramento , invocação de ferramentas e geração de resposta. Por exemplo

  • Verifique se os agentes estão chamando ferramentas externas, APIs e outros agentes corretamente. Use dependências simuladas para validar se os dados são passados corretamente. Simule falhas de ferramenta ou agente para testar a confiabilidade no comportamento.

  • Projete testes baseados em cenários usando prompts predefinidos e saídas esperadas. Como as saídas podem variar, avalie os resultados usando a pontuação automatizada com outro modelo. Use também a revisão baseada em humanos, especialmente para tarefas confidenciais ou subjetivas.

  • Integre ferramentas de segurança de conteúdo para detectar saídas prejudiciais, tendenciosas ou inadequadas. Inclua exercícios de agrupamento vermelhos para identificar comportamentos inesperados ou vulnerabilidades de jailbreak. Monitore a imparcialidade, a transparência e a conformidade com os padrões éticos.

Do ponto de vista das ferramentas, considere o SDK de Avaliação de IA do Azure, que dá suporte a verificações como:

  • Resolução de intenção: o agente/orquestrador entende corretamente a solicitação do usuário?
  • Precisão de chamada de ferramenta: as ferramentas corretas são chamadas, com os parâmetros certos?
  • Adesão à tarefa: a saída final está alinhada com a tarefa atribuída e as etapas de raciocínio anteriores?

Além disso, realize o desempenho regular e o teste de carga. Avalie a capacidade do agente de dimensionar sob solicitações simultâneas, lidar com longos caminhos de execução e gerenciar interações entre vários agentes. Monitore continuamente as regressões na lógica e no desempenho à medida que o sistema evolui por meio de versões iterativas.

Testar os aspectos de segurança

Proteja fluxos de trabalho agente controlando o acesso, validando todas as entradas e monitorando o comportamento do agente para evitar ações incorretas ou não intencionais.

  • Teste de jailbreak. Sempre teste para tentativas de fuga de prisão. Os invasores normalmente direcionam a camada de orquestração primeiro, que analisa e encaminha solicitações para o modelo. Se as entradas mal-intencionadas não forem filtradas, elas poderão comprometer o comportamento do modelo.

  • Segurança de conteúdo. Em aplicativos baseados em chat, execute os prompts do usuário e o contexto de aterramento por meio de um serviço de segurança de conteúdo.

  • Segurança do ponto de extremidade. Para interfaces RESTful, imponha autenticação forte e teste completamente os controles de segurança para impedir o acesso não autorizado.

Há outras bibliotecas de software livre disponíveis, como Scikit-learn, módulo torch.testing do PyTorch, FairML para teste de parcialidade e imparcialidade e Análise de Modelo do TensorFlow para avaliação de modelo.

Troca. Testar esse código tem implicações de custo. Por exemplo, se você usar o Azure OpenAI para hospedar seu ponto de extremidade de inferência, o teste de estresse será uma prática comum que pode ajudá-lo a determinar os limites do sistema. No entanto, o Azure OpenAI cobra por cada chamada, o que pode tornar caro o teste de estresse extensivo. Uma maneira de otimizar os encargos é usar PTUs não utilizadas do Azure OpenAI em um ambiente de teste. Como alternativa, você pode simular o ponto de extremidade de inferência usando ferramentas como o Proxy de Desenvolvimento.

Testar o comportamento determinístico

Em algumas arquiteturas, você pode usar a lógica determinística para habilitar a orquestração. Por exemplo, em vez de um orquestrador de agente não determinístico, você pode optar por ter um orquestrador que usa código estático para gerenciar o fluxo de execução, como interpretar a intenção do usuário, consultar o índice para aterrar dados e chamar o ponto de extremidade de inferência do modelo.

Do ponto de vista do teste, trate esse código como qualquer componente crítico do sistema: executar desempenho, confiabilidade e testes funcionais, especialmente em sua lógica de roteamento. Aplique o teste de unidade a componentes determinísticos, especialmente se você estiver usando estruturas de agente como Kernel Semântico da Microsoft ou LangChain. Esses testes validam modelos de prompt, lógica de seleção de ferramentas, formatação de dados e árvores de decisão isoladas da variabilidade do runtime.

Testar o ponto de extremidade de inferência

Os pontos de extremidade de inferência expõem seus modelos generativos por meio de APIs REST e devem ser testados além da precisão do modelo. Se você estiver usando plataformas PaaS ou servidores auto-hospedados, teste o ponto de extremidade como qualquer outro ponto de extremidade para garantir confiabilidade, escalabilidade e segurança.

  • Teste funcional e de integração. Valide a manipulação de solicitações, a estrutura de resposta e a integração com outros componentes.

  • Desempenho e teste de carga. Simule condições realistas para avaliar a taxa de transferência, a latência e o uso de recursos. Para pontos de extremidade de inferência de PaaS, concentre-se em métricas de nível de token (tokens/s ou tokens/min), que são mais significativas do que os tamanhos de solicitação tradicionais de APIs REST.

  • Dimensionamento e otimização de GPU. Teste sob carga variável para determinar a configuração de dimensionamento automático ou SKU de GPU correta. Evite o excesso de provisionamento monitorando o uso real da GPU.

    Compensação. Os SKUs de GPU são caros. É importante verificar continuamente se os recursos de GPU são subutilizados e rightsize-os, quando possível. Depois de fazer ajustes, teste o uso de recursos para manter o equilíbrio entre eficiência de custos e otimização de desempenho.

  • Tratamento de falhas. Simule a limitação, como erros HTTP 429, tempos limite de back-end e indisponibilidade do serviço. Valide se o cliente lida com novas tentativas, retiradas e interrupções de circuito adequadamente.

  • Segurança e segurança de conteúdo. Para pontos de extremidade públicos ou auto-hospedados, execute testes de penetração e valide os controles de acesso. Use ferramentas de moderação de conteúdo como a Segurança de Conteúdo de IA do Azure para testar e filtrar entrada/saída não segura.

Testar o fluxo de trabalho de dados de aterramento

A relevância de um modelo de IA generativo depende da qualidade e integridade de seus dados de aterramento. Os dados de aterramento podem ser propagados para o modelo usando pipelines de processamento de dados. Esses dados são pré-processados, agrupados e indexados antes de atingir o modelo. O modelo consulta o índice em tempo real durante a interação do usuário, tornando o desempenho de indexação e a precisão críticos para a experiência do usuário. Integre o teste antecipadamente e mantenha-o em todo o ciclo de vida do sistema.

Pipelines de dados mal testados podem levar a resultados inconsistentes e preocupações entre cortes, como violações de segurança. Para garantir uma experiência de alta qualidade, teste todo o fluxo de dados, incluindo documentos de origem, pré-processamento, lógica de orquestração e o próprio índice. As principais considerações de teste incluem:

  • Teste funcional e de integração. Valide se todos os dados são carregados corretamente e completamente. Verifique se o pipeline manipula dados ausentes, vazios ou sintéticos conforme o esperado.

  • Compatibilidade de esquema de índice. Testar alterações de esquema para garantir a compatibilidade com versões anteriores. Qualquer alteração de campo ou documento deve preservar o suporte para formatos de dados mais antigos.

  • Pré-processamento e teste de orquestração. A preparação de dados de aterramento envolve pré-processamento, agrupamento e inserção de computação, geralmente orquestrados por ferramentas como conjuntos de habilidades do Azure AI Search. Teste o pipeline de orquestração para garantir que todas as etapas sejam executadas corretamente e que os dados resultantes sejam precisos e relevantes.

  • Atualização de dados e verificações de qualidade. Inclua testes para dados obsoletos, incompatibilidades de controle de versão, artefatos sintéticos e tabelas vazias ou parciais. Atualize as consultas ou as configurações de índice conforme necessário para refletir os dados mais atuais e limpos.

  • Teste de carga de índice. Os índices podem se comportar de forma diferente sob cargas variadas. Teste o desempenho da consulta em cenários de uso realistas para informar decisões sobre escala, SKUs de computação e requisitos de armazenamento.

  • Teste de segurança. Se os documentos forem particionados com controles de acesso, teste rigorosamente esses controles. Verifique se cada usuário ou função acessa apenas o conteúdo permitido para manter a confidencialidade e a conformidade.

Diretrizes para teste de treinamento de modelo e ajuste fino

Semelhante aos modelos de IA generativos, use vários tipos de testes em diferentes estágios do ciclo de vida de desenvolvimento e em diferentes componentes e fluxos do sistema. Por mais prático que seja, desenvolva ativos de carga de trabalho com testes em mente. Por exemplo, ao executar a manipulação de dados e remodelar os dados de origem para engenharia de recursos, siga as boas práticas de codificação e certifique-se de estruturar o código para dar suporte ao teste.

Avaliar o modelo

Aplique uma estratégia de base durante o treinamento de modelo para medir e comparar a qualidade do modelo. Avalie o desempenho de várias combinações de modelos, parâmetros e recursos usando métricas bem definidas. Essas métricas fornecem pontuações objetivas e controladas por dados que você pode comparar iterativamente entre versões e configurações para identificar o modelo de melhor desempenho.

Para obter mais informações, consulte Regressão/previsão de métricas.

Dados a serem avaliados e testados

Particione dados de origem em três conjuntos de dados distintos: treinamento, avaliação e teste. Use o conjunto de dados de treinamento para criar o modelo, o conjunto de dados de avaliação para ajustá-lo e o conjunto de dados de teste para validar o desempenho final.

Verifique se cada conjunto de dados contém dados de alta qualidade para reduzir o ruído. Use casos de teste em pipelines de dados para impor a qualidade e complemente com dados sintéticos quando amostras reais são limitadas, em domínios como detecção de fraude, em que instâncias de fraude reais são raras e fornecem dados limitados para treinar modelos confiáveis.

Mantenha todos os conjuntos de dados separados e não sobrepostos para manter a objetividade e evitar viés em previsões. Não reutilize dados de treinamento para dados de avaliação ou avaliação para testes.

Testando o treinamento e o fluxo de trabalho de ajuste fino

  • Tecnologias de pipeline de dados. Combine testes funcionais, de carga e de desempenho usando dados sintéticos para avaliar a escalabilidade e tomar decisões informadas sobre dimensionamento ou adequação do produto, SKUs necessárias e integração do sistema.

  • Fluxo de trabalho de ingestão. Teste os pipelines ETL/ELT de ponta a ponta para garantir que eles ingeram dados de forma confiável e se os dados são de alta qualidade. Além disso, teste a integração com todos os sistemas conectados e monitore as dependências externas. Use dados sintéticos para validar o processamento de ponta a ponta, especialmente para cargas de trabalho complexas ou de alto volume.

    Teste trabalhos agendados para validar que as tarefas de ingestão são concluídas a tempo e retornar volumes esperados.

  • Qualidade dos dados na ingestão. Verifique se a limpeza e o processamento de dados incluem testes para confirmar se a manipulação de dados funciona conforme o esperado. Inclua verificações de integridade, atualização, consistência de esquema, exclusividade e relevância. Verifique também se os dados estruturados são ingeridos sem duplicatas, valores ausentes ou entradas inválidas.

  • Integridade do recurso e do rótulo. Valide se os recursos são calculados corretamente e os rótulos atribuídos com precisão, especialmente ao usar regras complexas. Verifique se há vazamento de dados para impedir que informações futuras ou derivadas de rótulos contaminem os dados de treinamento. Além disso, verifique se as divisões de dados são apropriadas para evitar amostras tendenciosas ou sobrepostas porque mesmo vazamento sutil pode prejudicar o desempenho do modelo.

  • Teste de hiperparâmetro. O teste de hiperparâmetro é um processo iterativo em que os parâmetros de modelo são ajustados para atender às metas de precisão com base no caso de uso da carga de trabalho. Isso envolve o treinamento repetidamente em dados selecionados e a avaliação em dados de teste para validar o desempenho. Comece com um conjunto de dados menor para avaliar rapidamente o comportamento do modelo e dimensionar o teste para o conjunto completo. Esteja atento à troca entre a precisão do modelo e o custo computacional e o tempo necessários para treinamento e avaliação repetidos.

  • Qualidade do código. Ao treinar modelos usando código personalizado, como com script PyTorch, execute testes de carga durante a fase de design para avaliar os requisitos de computação e selecionar SKUs apropriadas. Use testes de unidade para capturar regressões durante o desenvolvimento e depender de testes manuais quando a automação não for viável. Como esses scripts são executados em fluxos de trabalho, adicione testes de integração para verificar se os scripts são executados de forma confiável dentro do pipeline.

  • Ponto de extremidade de inferência. Essa API REST fornece acesso ao modelo de machine learning treinado para fazer previsões. O modelo é implantado em um ambiente com um ponto de extremidade que pode receber dados de entrada em tempo real ou em lote, processá-lo e retornar previsões. Assim como qualquer outra API, verifique se o ponto de extremidade de inferência passa por testes funcionais, de desempenho e de segurança e validam que ele retorna resultados precisos, manipula a carga esperada e permanece seguro contra uso indevido.

  • Teste de site ao vivo. Estenda o teste funcional para o sistema ativo. Execute testes agendados para validar volumes de dados, detectar registros ausentes ou duplicados e confirmar a atualização de dados. Use dados sintéticos para validar com segurança transformações de ponta a ponta e lógica em condições de produção. Incorpore testes A/B para avaliar novas experiências e evitar regressões de qualidade antes da implantação completa. Configure o alerta para disparar a investigação imediata quando os testes falharem.

Integre o teste de dados em pipelines de CI/CD automatizando testes funcionais e de unidade, especialmente durante alterações de código ou atualizações de pipeline. Adicione verificações de qualidade antes de treinar novamente e use implantações lado a lado para testar com segurança na produção. Configure alertas para falhas de teste ou anomalias de ingestão.

Observação

O teste e o monitoramento servem a propósitos diferentes. Realize testes para avaliar possíveis alterações no sistema, normalmente antes de implementar qualquer alteração. Realize o monitoramento continuamente para avaliar a integridade geral do sistema.

Teste de decadência do modelo

Todos os modelos se degradam ao longo do tempo devido a alterações internas e externas na carga de trabalho. Esse declínio na qualidade do modelo, conhecido como decadência do modelo, pode ocorrer de duas maneiras:

  • O descompasso de dados ocorre quando os dados de entrada são alterados, tornando o modelo desatualizado. Por exemplo, um modelo que prevê padrões de votação torna-se irrelevante devido a mudanças demográficas após o redistritamento.

  • O descompasso de conceito ocorre quando as condições externas mudam, fazendo com que as previsões do modelo não reflitam mais a realidade. Por exemplo, um modelo que prevê tendências de vendas se torna irrelevante porque há uma mudança no comportamento do consumidor depois que um concorrente inicia um novo produto.

Para detectar a decadência, use o teste automatizado para comparar previsões com os resultados reais e monitore o descompasso usando métricas estatísticas. Os comentários do usuário, por exemplo, usando polegares para cima/para baixo, também são um sinal valioso para identificar problemas. Quando uma possível decadência é detectada, a equipe de operações deve alertar os cientistas de dados para investigar e determinar as causas raiz e as próximas etapas.

Ferramentas de teste

Considere estes recursos do Azure:

Próximas etapas