Por que migrar LLMs é mais difícil do que parece
Novos Modelos de Linguagem de Grande Escala (LLMs) surgem com frequência cada vez maior. Nenhum modelo mantém desempenho de pico para sempre em um determinado caso de uso — e, na prática, equipes de engenharia acabam precisando migrar de família de modelos ou simplesmente atualizar para uma versão mais recente dentro da mesma família. Sem um processo estruturado, essa transição vira uma fonte de instabilidade em produção.
Para endereçar esse problema, a AWS publicou o Generative AI Model Agility Solution: um framework de ponta a ponta para migração e atualização de LLMs em aplicações de IA generativa. A proposta é oferecer um processo padronizado, reutilizável e com métricas quantificáveis, cobrindo desde a preparação dos dados até os critérios de aprovação final da migração.
Visão geral da solução
O núcleo da abordagem é dividido em três etapas principais:
- Avaliação do modelo de origem (source model)
- Migração e otimização de prompts para o modelo de destino (target model), usando a Amazon Bedrock Prompt Optimization e a ferramenta Metaprompt da Anthropic
- Avaliação do modelo de destino

O tempo total estimado para uma migração seguindo esse framework varia de dois dias a duas semanas, dependendo da complexidade do caso de uso. Entre os destaques da solução estão: opções variadas de frameworks de avaliação, otimização automatizada de prompts, comparação de modelos por custo, latência e qualidade, além de exemplos prontos para aplicação imediata.
Preparação do conjunto de dados
Um conjunto de dados de avaliação com amostras de alta qualidade é peça fundamental no processo. Para a maioria dos casos de uso, as amostras precisam incluir respostas de referência (ground truths). Para outros cenários, é possível usar métricas que não dependem de ground truth — como relevância da resposta, fidelidade, toxicidade e viés.
Os campos sugeridos para cada amostra incluem: o prompt usado no modelo de origem, os inputs do prompt (perguntas e contexto, por exemplo, em casos de Geração Aumentada por Recuperação — RAG), configurações de invocação do modelo (temperatura, top_p, top_k), as respostas de referência, a saída do modelo de origem, latência, e tokens de entrada e saída (usados para cálculo de custo).
A qualidade dos ground truths é crítica: eles devem ser validados não apenas quanto à correção factual, mas também quanto ao alinhamento com os critérios e a orientação de especialistas no domínio (SMEs — Subject Matter Experts).
Seleção de frameworks e métricas de avaliação
Após coletar os dados, o próximo passo é escolher as métricas de avaliação adequadas ao caso de uso. Além da avaliação humana por especialistas, a AWS recomenda métricas automatizadas por serem mais escaláveis, objetivas e sustentáveis a longo prazo.

A solução trabalha com dois tipos de métricas automatizadas:
- Métricas predefinidas: disponíveis em frameworks como Ragas, DeepEval e Amazon Bedrock Evaluations, ou baseadas em algoritmos clássicos de Processamento de Linguagem Natural (PLN).
- Métricas customizadas: definidas pelo usuário para tarefas ou domínios específicos, geralmente usando o LLM como juiz imparcial com um prompt personalizado.
Seleção do modelo de destino
A escolha do LLM adequado exige considerar múltiplos fatores: modalidades de entrada e saída (texto, código, multimodal), tamanho da janela de contexto, custo por inferência ou token, métricas de desempenho (latência e throughput), qualidade das saídas, especialização em domínio, opções de hospedagem e requisitos de privacidade e segurança dos dados.
Após uma filtragem inicial com base nessas características, a recomendação é realizar benchmarks em tarefas específicas. O Amazon Bedrock oferece acesso a diversos LLMs por meio de uma API unificada, o que simplifica a experimentação e comparação de modelos — além de ajudar a evitar o aprisionamento a um único fornecedor (vendor lock-in).
Migração de prompts
A solução apresenta duas ferramentas automatizadas para migração e otimização de prompts:
Amazon Bedrock Prompt Optimization
A Amazon Bedrock Prompt Optimization é uma ferramenta disponível no Amazon Bedrock que otimiza automaticamente prompts escritos pelos usuários. Ela reduz o esforço de engenharia de prompts ao migrar workloads de outros provedores para o Amazon Bedrock.
É possível utilizá-la de duas formas:
- Opção A — Console do Amazon Bedrock: acesse o gerenciamento de prompts, crie um novo template, insira o prompt do modelo de origem, defina variáveis com duplas chaves (
{{variavel}}), selecione o modelo de destino e clique em “Optimize” para gerar o prompt otimizado. - Opção B — API do Bedrock: envie uma requisição
OptimizePromptpara o endpoint de runtime do Agents for Amazon Bedrock. O stream de resposta retorna dois eventos:analyzePromptEvent(análise do prompt original) eoptimizedPromptEvent(prompt otimizado gerado).
O código de exemplo para uso via API é o seguinte:
import boto3
# Set values here
TARGET_MODEL_ID = "anthropic.claude-3-sonnet-20240229-v1:0" # Model to optimize for. For model IDs, see https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html
PROMPT = "Please summarize this text: " # Prompt to optimize
def get_input(prompt):
return {
"textPrompt": {
"text": prompt
}
}
def handle_response_stream(response):
try:
event_stream = response['optimizedPrompt']
for event in event_stream:
if 'optimizedPromptEvent' in event:
print("========================== OPTIMIZED PROMPT ======================\n")
optimized_prompt = event['optimizedPromptEvent']
print(optimized_prompt)
else:
print("========================= ANALYZE PROMPT =======================\n")
analyze_prompt = event['analyzePromptEvent']
print(analyze_prompt)
except Exception as e:
raise e
if __name__ == '__main__':
client = boto3.client('bedrock-agent-runtime')
try:
response = client.optimize_prompt(
input=get_input(PROMPT),
targetModelId=TARGET_MODEL_ID
)
print("Request ID:", response.get("ResponseMetadata").get("RequestId"))
print("========================== INPUT PROMPT ======================\n")
print(PROMPT)
handle_response_stream(response)
except Exception as e:
raise e
Ferramenta Metaprompt da Anthropic
O Metaprompt é uma ferramenta de otimização de prompts da Anthropic em que o próprio Claude é instruído a escrever templates de prompts em nome do usuário, com base em uma tarefa ou objetivo. O processo consiste em especificar o template de prompt bruto, explicar a tarefa, definir as variáveis de entrada e o formato de saída esperado, e então executar o Metaprompt com um LLM Claude (como o Claude-3-Sonnet).
O resultado é um novo template com instruções otimizadas seguindo as boas práticas do Claude — incluindo uso de tags XML e reagrupamento de instruções para maior clareza. Para implementar esse processo, a AWS disponibiliza um Jupyter Notebook de migração de prompts no repositório de código.
Geração de resultados e avaliação
A geração de respostas durante a migração é um processo iterativo: diferentes versões de prompts, diferentes LLMs e diferentes configurações são comparados para identificar a melhor combinação. Como boa prática, a AWS recomenda usar o método padrão de invocação dos modelos do Amazon Bedrock (disponível no repositório de código de migração) para capturar metadados como latência, tempo até o primeiro token (TTFT — Time to First Token), tokens de entrada e de saída.
A avaliação foca em três categorias principais de métricas:
- Acurácia e qualidade: usando frameworks automatizados como Ragas (precisão, recall, correção e similaridade da resposta), DeepEval (relevância, fidelidade, toxicidade e viés) e Amazon Bedrock Evaluations (acurácia, fidelidade, utilidade, coerência lógica, nocividade, entre outros), além de avaliação humana por especialistas.
- Latência: latência total (do prompt à resposta final) e TTFT (tempo até o primeiro token gerado), especialmente relevante em aplicações conversacionais em tempo real.
- Custo: calculado com base no número de tokens de entrada e saída multiplicado pelo preço por token, conforme a tabela de preços do Amazon Bedrock.
O notebook de geração de relatório comparativo disponível no repositório permite gerar automaticamente uma visão consolidada do modelo de origem versus o modelo de destino, com tabelas lado a lado de tokens médios, custo médio e latência média.
Otimização contínua
Otimização de prompts
Para melhorar a qualidade das respostas, a AWS recomenda conduzir uma análise de erros estruturada. Após coletar os insights da análise e o feedback dos especialistas, inicia-se um ciclo iterativo de otimização de prompts. As técnicas disponíveis incluem: engenharia de prompts para incorporar critérios específicos nas instruções, aprendizado com poucos exemplos (few-shot learning) para definir formato e exemplos de resposta, incorporação de meta-informações de contexto, e pré ou pós-processamento para reforçar o formato de saída.
Otimização de latência
Duas abordagens principais são indicadas para reduzir a latência:
- Otimização de prompts para respostas mais curtas: adicionar instruções que evitem respostas longas, explicações desnecessárias ou palavras de preenchimento reduz diretamente o número de tokens de saída e, consequentemente, a latência.
- Throughput provisionado: adquirir throughput provisionado no Amazon Bedrock garante um nível mais alto de capacidade dedicada, o que pode reduzir a latência e previne requisições throttled.
Ciclo de vida da melhoria e uso em produção
A AWS destaca que dificilmente um LLM candidato atinge seu melhor desempenho sem nenhuma otimização. Por isso, o ciclo de melhoria — que inclui otimização de prompts, geração de respostas, avaliação de métricas, análise de erros, verificação de amostras e atualização do dataset — deve ser planejado como parte integrante do processo.
A solução pode ser aplicada em duas fases do ciclo de vida de uma aplicação de IA generativa em produção: na migração completa de LLM (quando um novo modelo é adotado) e no monitoramento e garantia de qualidade contínuos (usando o mesmo processo de avaliação e coleta de ground truth estabelecido durante a migração).
Dicas e lições aprendidas
- Critérios de aprovação: os dados, critérios de avaliação e critérios de sucesso devem ser definidos no início e não alterados durante o processo.
- Qualidade dos dados: as amostras devem ter quantidade e qualidade suficientes para uma avaliação confiável, com ground truths totalmente alinhados com os critérios dos especialistas.
- Seleção de modelos: antes de iniciar os experimentos, utilize recursos como o site de benchmarking Artificial Analysis para uma comparação holística de qualidade, desempenho e preço entre os candidatos.
- Trade-offs entre desempenho e custo: um modelo com desempenho ligeiramente inferior pode ser a escolha mais inteligente se a diferença de custo for substancial e a diferença de qualidade for mínima.
- Técnicas de otimização: engenharia de prompts e throughput provisionado podem fechar a diferença de desempenho entre modelos e devem ser considerados como parte do processo de avaliação.
O repositório completo da solução está disponível no AWS Generative AI Model Agility Code Repo no GitHub.
Fonte
AWS Generative AI Model Agility Solution: A comprehensive guide to migrating LLMs for generative AI production (https://aws.amazon.com/blogs/machine-learning/aws-generative-ai-model-agility-solution-a-comprehensive-guide-to-migrating-llms-for-generative-ai-production/)
Leave a Reply