Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo concentra-se em dois aspetos distintos: avaliar os modelos e testar todo o sistema. A avaliação e o teste são frequentemente utilizados de forma intercambiável, mas devem ser considerados processos separados que utilizam 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 afinação. Em seguida, avalie o modelo com base em várias métricas.
Os testes incluem a verificação de todo o sistema quando uma alteração é introduzida, incluindo o modelo ajustado e componentes não IA. O objetivo é validar se a carga de trabalho atende às metas identificadas e atende às expectativas dos usuários. É também uma estratégia inegociável de gestão de mudanças que evita regressões de qualidade.
Ambas as práticas estão associadas na implementação real. Todo o processo inclui o envio de solicitações para o modelo, a avaliação de suas respostas e a tomada de uma decisão de ir ou no-go com base nos dados do teste. Embora o processo seja inegociável antes da produção, recomendamos que você conduza o processo na produção usando uma combinação de dados reais e sintéticos.
O foco principal aqui é em soluções construídas usando IA generativa, particularmente cenários usando modelos de fundação. Para obter orientações aplicáveis a modelos de treinamento e ajuste fino, pule para Orientação para treinamento e ajuste fino de modelos de teste.
Use métricas de qualidade para avaliação de modelos
Estabeleça uma linha de base e meça a qualidade do modelo usando métricas alinhadas com suas metas de negócios.
Ter processos que avaliem e quantifiquem resultados da experiência do usuário em relação a um conjunto de métricas. Por exemplo, o Groundedness avalia se a resposta de um modelo generativo é suportada pelo contexto fornecido, em vez de fabricada. Suponhamos que um escritório de advocacia desenvolva um assistente de IA que cite estatutos. Sem a devida validação, pode basear-se em documentos desatualizados ou mal classificados, resultando em sérias consequências. Uma pontuação de aterramento alta ajuda a garantir que a saída do modelo permaneça alinhada com o material de origem confiável.
Selecione e priorize métricas com base em seu caso de uso específico, monitore-as continuamente e use-as como portas de decisão para ajuste e implantação de modelos. 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 forte fundamentação, ele ainda pode produzir resultados tendenciosos. Incorporar avaliações de equidade para resultados mais equilibrados e responsáveis.
Para obter informações sobre métricas, consulte Monitoramento de descrições de métricas de avaliação e casos de uso.
Use os dados corretos para avaliação
Refine seu modelo através de um processo iterativo usando dados de avaliação. Este conjunto de dados, muitas vezes referido como o conjunto de dados dourado consiste em pares de entrada-saída confiáveis, normalmente criados ou validados por seres humanos. Ele serve como referência objetiva para avaliar o desempenho do modelo em relação a métricas de qualidade definidas.
Certifique-se de que o conjunto de dados é representativo do domínio ou tarefa, com exemplos diversificados e de alta qualidade e ruído mínimo. Um tamanho de amostra limitado pode levar a uma má qualidade da avaliação, por isso considere gerar dados sintéticos quando os dados da amostra não tiverem diversidade ou cobertura suficientes para melhorar o equilíbrio e a completude.
Validar fluxos de trabalho agenticos
À medida que as arquiteturas estão evoluindo para usar IA, a funcionalidade que antes era manipulada por código determinístico agora é descarregada para agentes de IA. Estes agentes tomam decisões muitas vezes com comportamento dinâmico.
Considere um aplicativo agentic onde 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 adaptar-se em tempo real, tornando-os mais flexíveis, mas mais difíceis de validar.
Este tipo de arquitetura introduz novos desafios para testes e avaliação. Como os agentes operam de forma não determinística, os testes estáticos tradicionais são insuficientes. A estratégia de teste deve validar o fluxo completo desde a entrada do usuário até a resposta final, incluindo a recuperação de dados de aterramento , a invocação da ferramenta e a geração de resposta. Por exemplo
Verifique se os agentes estão chamando ferramentas externas, APIs e outros agentes corretamente. Use dependências fictícias para validar que os dados são passados corretamente. Simule falhas de ferramentas ou agentes 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 sensíveis ou subjetivas.
Integre ferramentas de segurança de conteúdo para detetar saídas prejudiciais, tendenciosas ou inadequadas. Inclua exercícios de red teaming para identificar comportamentos inesperados ou vulnerabilidades de jailbreak. Monitorar a equidade, 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 da chamada da 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 testes regulares de desempenho e 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 aspetos de segurança
Proteja os fluxos de trabalho do agente controlando o acesso, validando todas as entradas e monitorando o comportamento do agente para evitar uso indevido ou ações não intencionais.
Teste de jailbreak. Teste sempre para tentativas de jailbreak. Normalmente, os atacantes visam primeiro a camada de orquestração, que analisa e encaminha solicitações para o modelo. Se entradas maliciosas não forem filtradas, elas podem comprometer o comportamento do modelo.
Segurança de conteúdo. Em aplicativos baseados em bate-papo, execute prompts do usuário e contexto de aterramento por meio de um serviço de segurança de conteúdo.
Segurança de endpoint. Para interfaces RESTful, imponha autenticação forte e teste completamente os controles de segurança para evitar acesso não autorizado.
Existem outras bibliotecas de código aberto disponíveis, como o Scikit-learn, o módulo torch.testing do PyTorch, o FairML para testes de viés e equidade e o TensorFlow Model Analysis para avaliação de modelos.
Compensação. Testar este código tem implicações em termos de custos. Por exemplo, se você usar o Azure OpenAI para hospedar seu ponto de extremidade de inferência, o teste de esforço é 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 os testes de esforço extensivos caros. Uma maneira de otimizar as cobranças é 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 Dev Proxy.
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 fundamentar dados e chamar o ponto de extremidade de inferência do modelo.
De uma perspetiva de teste, trate esse código como qualquer componente crítico do sistema: execute testes de desempenho, confiabilidade e funcionais, especialmente em sua lógica de roteamento. Aplique testes de unidade a componentes determinísticos, especialmente se você estiver usando estruturas de agente como o 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, isolados da variabilidade do tempo de execução.
Testar o ponto final 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. Quer esteja a utilizar plataformas PaaS ou servidores auto-alojados, teste o ponto de extremidade como qualquer outro ponto de extremidade para garantir fiabilidade, escalabilidade e segurança.
Testes funcionais e de integração. Valide o tratamento de solicitações, a estrutura de resposta e a integração com outros componentes.
Testes de desempenho e 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 PaaS, concentre-se em métricas no nível de token (tokens/seg 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 o SKU da GPU ou a configuração de dimensionamento automático correta. Evite o provisionamento excessivo monitorando o uso real da GPU.
Compensação. Os SKUs de GPU são caros. É importante verificar continuamente se os recursos da GPU estão subutilizados e dimensioná-los corretamente, 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 seu cliente lida com tentativas, backoff e circuit breaking adequadamente.
Segurança e proteção de conteúdos. Para endpoints 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 do Azure AI, para testar e filtrar entradas/saídas inseguras.
Testar o fluxo de trabalho de dados de aterramento
A relevância de um modelo de IA generativa depende da qualidade e integridade de seus dados de fundamentação. Os dados de aterramento podem ser semeados para o modelo usando pipelines de processamento de dados. Esses dados são pré-processados, fragmentados e indexados antes de chegar ao modelo. O modelo consulta o índice em tempo real durante a interação do usuário, tornando o desempenho e a precisão da indexação críticos para a experiência do usuário. Integre os testes antecipadamente e mantenha-os durante todo o ciclo de vida do sistema.
Pipelines de dados mal testados podem levar a resultados inconsistentes e preocupações transversais, 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:
Testes funcionais e de integração. Valide se todos os dados são carregados corretamente e completamente. Verifique se o pipeline lida com dados ausentes, vazios ou sintéticos conforme o esperado.
Compatibilidade do esquema de índice. Teste as 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.
Testes de pré-processamento e orquestração. A preparação de dados de aterramento envolve pré-processamento, fragmentação e incorporação de computação, muitas vezes orquestrada 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.
Verificação da atualidade dos dados e da qualidade. Inclua testes para dados obsoletos, incompatibilidades de versionamento, artefatos sintéticos e tabelas vazias ou parciais. Atualize consultas ou 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 variáveis. Teste o desempenho da consulta em cenários de uso realistas para informar decisões sobre dimensionamento, SKUs de computação e requisitos de armazenamento.
Testes de segurança. Se os documentos forem particionados com controles de acesso, teste rigorosamente esses controles. Certifique-se de que cada usuário ou função acesse apenas o conteúdo permitido para manter a confidencialidade e a conformidade.
Orientação para treinamento e ajuste fino de modelos de teste
Semelhante aos modelos de IA generativa, use vários tipos de testes em diferentes estágios do ciclo de vida de desenvolvimento e em diferentes componentes e fluxos do sistema. Tanto quanto prático, desenvolva ativos de carga de trabalho com testes em mente. Por exemplo, quando você executa a manipulação de dados e remodela os dados de origem para engenharia de recursos, siga as boas práticas de codificação e garanta que estrutura o código para dar suporte a testes.
Avaliar o modelo
Aplique uma estratégia de linha de base durante o treinamento do 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 orientadas por dados que você pode comparar iterativamente entre versões e configurações para identificar o modelo com melhor desempenho.
Para obter mais informações, consulte Métricas de regressão/previsão.
Dados a avaliar e testar
Particione os 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.
Certifique-se de que cada conjunto de dados contém dados de alta qualidade para reduzir o ruído. Use casos de teste em pipelines de dados para reforçar a qualidade e complemente com dados sintéticos quando amostras reais são limitadas, em domínios como deteção de fraude, onde instâncias reais de fraude 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 distorções nas previsões. Não reutilize dados de treinamento para avaliação ou dados de avaliação para testes.
Testando o fluxo de trabalho de treinamento e 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ários e integração do sistema.
Fluxo de trabalho de ingestão. Teste pipelines ETL/ELT de ponta a ponta para garantir que eles ingeram dados de forma confiável e que os dados sejam de alta qualidade. Além disso, teste a integração com todos os sistemas conectados e monitore 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 se as tarefas de ingestão são concluídas a tempo e retornar os volumes esperados.
Qualidade dos dados sobre a ingestão. Verifique se a limpeza e o processamento de dados incluem testes para confirmar se a manipulação de dados funciona como pretendido. Inclua verificações de integridade, atualização, consistência do esquema, exclusividade e relevância. Verifique também se os dados estruturados são ingeridos sem duplicatas, valores ausentes ou entradas inválidas.
Integridade de recursos e rótulos. 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 evitar 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, pois mesmo vazamentos sutis podem prejudicar o desempenho do modelo.
Teste de hiperparâmetros. O teste de hiperparâmetros é um processo iterativo em que os parâmetros do modelo são ajustados para atender às metas de precisão com base no caso de uso da sua carga de trabalho. Isso envolve treinamento repetido em dados selecionados e 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, em seguida, dimensione o teste para o conjunto completo. Esteja atento ao compromisso entre a precisão do modelo e o custo computacional e o tempo necessário para treinamento e avaliação repetidos.
Qualidade do código. Ao treinar modelos usando código personalizado, como com o script PyTorch, execute testes de carga durante a fase de projeto para avaliar os requisitos de computação e selecionar SKUs apropriados. Use testes de unidade para detetar regressões durante o desenvolvimento e confie em 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 final de inferência. Essa API REST fornece acesso ao modelo de aprendizado de máquina 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á-los e retornar previsões. Como qualquer outra API, certifique-se de que o ponto de extremidade de inferência passe por testes funcionais, de desempenho e de segurança, valide se ele retorna resultados precisos, lida com a carga esperada e permanece seguro contra uso indevido.
Testes no local ao vivo. Estenda os testes funcionais para o sistema ativo. Execute testes agendados para validar volumes de dados, detetar registros ausentes ou duplicados e confirmar a atualização dos 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 acionar a investigação imediata quando os testes falharem.
Integre testes 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 do retreinamento 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.
Nota
Os testes e a monitorização servem diferentes propósitos. Realize testes para avaliar possíveis alterações no sistema, normalmente antes de implementar quaisquer alterações. Realizar monitoramento continuamente para avaliar a integridade geral do sistema.
Teste de decaimento do modelo
Todos os modelos se degradam com o tempo devido a mudanças internas e externas na carga de trabalho. Esse declínio na qualidade do modelo, conhecido como decaimento do modelo, pode ocorrer de duas maneiras:
O desvio de dados acontece quando os dados de entrada mudam, 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.
A deriva do 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 torna-se irrelevante porque há uma mudança no comportamento do consumidor depois que um concorrente lança um novo produto.
Para detetar o decaimento, use testes automatizados para comparar previsões com resultados reais e monitore desvios usando métricas estatísticas. O feedback dos utilizadores, por exemplo, com os polegares para cima/baixo, é também um sinal valioso para a identificação de problemas. Quando o decaimento potencial é detetado, a equipe de operações deve alertar os cientistas de dados para investigar e determinar as causas e as próximas etapas.
Ferramentas de teste
Considere estes recursos do Azure:
Coletor de dados do Azure Machine Learning para registro em tempo real de dados de entrada/saída para modelos implantados em pontos de extremidade online gerenciados ou do Kubernetes.
Azure Machine Learning Model Monitoring para monitoramento automatizado comparando dados de inferência em tempo real com conjuntos de dados de referência para rastrear desvios e outras métricas de desempenho. Consulte as práticas recomendadas para obter mais recomendações.