Avaliação do RFT - SageMaker Inteligência Artificial da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Avaliação do RFT

O que é avaliação RFT?

A Avaliação RFT permite que você avalie o desempenho do seu modelo usando funções de recompensa personalizadas antes, durante ou após o treinamento de aprendizado por reforço. Ao contrário das avaliações padrão que usam métricas predefinidas, o RFT Evaluation permite que você defina seus próprios critérios de sucesso por meio de uma função Lambda que pontua os resultados do modelo com base em seus requisitos específicos.

Por que avaliar com o RFT?

A avaliação é crucial para determinar se o processo de ajuste fino do RL tem:

  • Alinhamento aprimorado do modelo com seu caso de uso específico e valores humanos

  • Recursos de modelo mantidos ou aprimorados nas principais tarefas

  • Efeitos colaterais não intencionais evitados, como redução da factualidade, aumento da verbosidade ou degradação do desempenho em outras tarefas

  • Atendeu aos seus critérios de sucesso personalizados, conforme definido por sua função de recompensa

Quando usar a avaliação RFT

Use a avaliação de RFT nesses cenários:

  • Antes do treinamento de RFT: estabeleça métricas básicas em seu conjunto de dados de avaliação

  • Durante o treinamento RFT: monitore o progresso do treinamento com pontos de verificação intermediários

  • Após o treinamento de RFT: valide se o modelo final atende aos seus requisitos

  • Comparando modelos: avalie várias versões do modelo usando critérios de recompensa consistentes

nota

Use a Avaliação RFT quando precisar de métricas personalizadas e específicas do domínio. Para avaliação de propósito geral (precisão, perplexidade, BLEU), use métodos de avaliação padrão.

Requisitos de formato de dados

Estrutura de dados de entrada

Os dados de entrada da avaliação do RFT devem seguir o formato OpenAI Reinforcement Fine-Tuning. Cada exemplo é um objeto JSON contendo:

  • messages— Conjunto de turnos de conversação system e funções user

  • reference_answer— Saída esperada ou dados reais básicos usados por sua função de recompensa para pontuação

Exemplo de formato de dados

{ "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Solve for x. Return only JSON like {\"x\": <number>}. Equation: 2x + 5 = 13" } ] } ], "reference_answer": { "x": 4 } }

Limitações atuais

  • Somente texto: não há suporte para entradas multimodais (imagens, áudio, vídeo)

  • Conversas em um único turno: suporta apenas mensagens de um único usuário (sem diálogos com vários turnos)

  • Formato JSON: os dados de entrada devem estar no formato JSONL (um objeto JSON por linha)

  • Saídas do modelo: a avaliação é realizada nas conclusões geradas a partir do modelo especificado

Preparando sua receita de avaliação

Exemplo de bloco de notas

Para obter um exemplo completo, consulte Cadernos de avaliação.

Configuração da receita de amostra

run: name: nova-lite-rft-eval-job model_type: amazon.nova-lite-v1:0:300k model_name_or_path: s3://escrow_bucket/model_location # [MODIFIABLE] S3 path to your model or model identifier replicas: 1 # [MODIFIABLE] For SageMaker Training jobs only; fixed for HyperPod jobs data_s3_path: "" # [REQUIRED FOR HYPERPOD] Leave empty for SageMaker Training jobs and use TrainingInput in sagemaker python SDK output_s3_path: "" # [REQUIRED] Output artifact S3 path for evaluation results evaluation: task: rft_eval # [FIXED] Do not modify strategy: rft_eval # [FIXED] Do not modify metric: all # [FIXED] Do not modify # Inference Configuration inference: max_new_tokens: 8192 # [MODIFIABLE] Maximum tokens to generate top_k: -1 # [MODIFIABLE] Top-k sampling parameter top_p: 1.0 # [MODIFIABLE] Nucleus sampling parameter temperature: 0 # [MODIFIABLE] Sampling temperature (0 = deterministic) top_logprobs: 0 # [MODIFIABLE] Set between 1-20 to enable logprobs output # ============================================================================= # Bring Your Own Reinforcement Learning Environment # ============================================================================= rl_env: reward_lambda_arn: arn:aws:lambda:<region>:<account_id>:function:<reward-function-name>

Funções de recompensa predefinidas

Duas funções de recompensa predefinidas (prime_codeeprime_math) da biblioteca verl de código aberto estão disponíveis como uma camada Lambda para fácil integração com suas funções RFT Lambda.

Visão geral do

Essas funções predefinidas fornecem recursos out-of-the-box de avaliação para:

  • prime_code— Geração de código e avaliação de exatidão

  • prime_math— Raciocínio matemático e avaliação da resolução de problemas

Configuração rápida

  1. Baixe a camada Lambda das nova-custom-eval-sdk versões.

  2. Publique a camada Lambda usando a interface de linha de AWS comando ()AWS CLI:

    aws lambda publish-layer-version \ --layer-name preset-function-layer \ --description "Preset reward function layer with dependencies" \ --zip-file fileb://universal_reward_layer.zip \ --compatible-runtimes python3.9 python3.10 python3.11 python3.12 \ --compatible-architectures x86_64 arm64
  3. Adicione a camada à sua função Lambda no AWS Management Console ( preset-function-layerselecione a camada personalizada e também adicione AWSSDKPandas-Python 312 para dependências numéricas).

  4. Importe e use em seu código Lambda:

    from prime_code import compute_score # For code evaluation from prime_math import compute_score # For math evaluation

função prime_code

Avalia as tarefas de geração de código em Python executando o código em casos de teste e medindo a exatidão.

Exemplo de formato de conjunto de dados de entrada

{"messages":[{"role":"user","content":"Write a function that returns the sum of two numbers."}],"reference_answer":{"inputs":["3\n5","10\n-2","0\n0"],"outputs":["8","8","0"]}} {"messages":[{"role":"user","content":"Write a function to check if a number is even."}],"reference_answer":{"inputs":["4","7","0","-2"],"outputs":["True","False","True","True"]}}

Recursos principais

  • Extração automática de código de blocos de código markdown

  • Detecção de funções e testes baseados em chamadas

  • Execução de casos de teste com proteção de tempo limite

  • Verificações de validação e compilação de sintaxe

  • Relatórios detalhados de erros com rastreamentos

função prime_math

Avalia o raciocínio matemático e as capacidades de resolução de problemas com suporte matemático simbólico.

Formato de entrada

{"messages":[{"role":"user","content":"What is the derivative of x^2 + 3x?."}],"reference_answer":"2*x + 3"}

Recursos principais

  • Avaliação matemática simbólica usando SymPy

  • Vários formatos de resposta (LaTeX, texto simples, simbólico)

  • Verificação de equivalência matemática

  • Normalização e simplificação da expressão

Requisitos de formato de dados

Para avaliação de código

  • Entradas: matriz de argumentos de funções (tipos próprios: números inteiros, cadeias de caracteres, etc.)

  • Saídas: matriz de valores de retorno esperados (tipos próprios: booleanos, números, etc.)

  • Código: deve estar em Python com definições de função claras

Para avaliação matemática

  • Resposta de referência: expressão matemática ou valor numérico

  • Resposta: pode ser LaTe X, texto simples ou notação simbólica

  • Equivalência: verificada simbolicamente, não apenas correspondência de strings

Práticas recomendadas

  • Use tipos de dados adequados em casos de teste (inteiros versus strings, booleanos versus “True”)

  • Forneça assinaturas de funções claras em problemas de código

  • Inclua casos extremos nas entradas de teste (zero, números negativos, entradas vazias)

  • Formate expressões matemáticas de forma consistente nas respostas de referência

  • Teste sua função de recompensa com dados de amostra antes da implantação

Tratamento de erros

Ambas as funções incluem tratamento robusto de erros para:

  • Erros de compilação no código gerado

  • Exceções de tempo de execução durante a execução

  • Dados de entrada malformados

  • Cenários de tempo limite para loops infinitos

  • Expressões matemáticas inválidas

Criando sua função de recompensa

Requisitos do Lambda ARN

Seu ARN do Lambda deve seguir este formato:

"arn:aws:lambda:*:*:function:*SageMaker*"

Se o Lambda não tiver esse esquema de nomenclatura, o trabalho falhará com este erro:

[ERROR] Unexpected error: lambda_arn must contain one of: ['SageMaker', 'sagemaker', 'Sagemaker'] when running on SMHP platform (Key: lambda_arn)

Formato de solicitação Lambda

Sua função Lambda recebe dados neste formato:

[ { "id": "sample-001", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Do you have a dedicated security team?" } ] }, { "role": "nova_assistant", "content": [ { "type": "text", "text": "As an AI developed by Company, I don't have a dedicated security team..." } ] } ], "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional security team..." } } ]
nota

A estrutura da mensagem inclui a content matriz aninhada, correspondente ao formato dos dados de entrada. A última mensagem com função nova_assistant contém a resposta gerada pelo modelo.

Formato de resposta Lambda

Sua função Lambda deve retornar dados neste formato:

[ { "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] } ]

Campos de resposta

  • id— Deve corresponder ao ID da amostra de entrada

  • aggregate_reward_score— Pontuação geral (normalmente 0,0 a 1,0)

  • metrics_list— Conjunto de métricas individuais com:

    • name— Identificador métrico (por exemplo, “precisão”, “fluência”)

    • value— Pontuação métrica (normalmente 0,0 a 1,0)

    • type— “Métrica” (para relatórios) ou “Recompensa” (usada no treinamento)

permissões do IAM

Permissões obrigatórias

Sua função SageMaker de execução deve ter permissões para invocar sua função Lambda. Adicione essa política à sua função SageMaker de execução:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }

Função de execução do Lambda

A função de execução da sua função Lambda precisa de permissões básicas de execução do Lambda:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }

Se sua função Lambda acessar outros AWS serviços (por exemplo, S3 para dados de referência, DynamoDB para registro), adicione essas permissões à função de execução do Lambda.

Executando o trabalho de avaliação

  1. Prepare seus dados — formate seus dados de avaliação de acordo com os requisitos de formato de dados e carregue seu arquivo JSONL no S3: s3://your-bucket/eval-data/eval_data.jsonl

  2. Configure sua receita — Atualize a receita de amostra com sua configuração:

    • model_name_or_pathDefina a localização do seu modelo

    • lambda_arnDefina para sua função de recompensa ARN

    • output_s3_pathDefina o local de saída desejado

    • Ajuste inference os parâmetros conforme necessário

    Salve a receita como rft_eval_recipe.yaml

  3. Executar a avaliação — Execute o trabalho de avaliação usando o notebook fornecido: Cadernos de avaliação

  4. Monitore o progresso — Monitore seu trabalho de avaliação por meio de:

    • SageMaker Console: verifique o status e os registros do trabalho

    • CloudWatch Registros: veja registros de execução detalhados

    • Lambda Logs: Depurar problemas na função de recompensa

Entendendo os resultados da avaliação

Formato de saída

O trabalho de avaliação gera resultados para a localização especificada do S3 no formato JSONL. Cada linha contém os resultados da avaliação de uma amostra:

{ "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] }
nota

O RFT Evaluation Job Output é idêntico ao formato Lambda Response. O serviço de avaliação passa pela resposta da função Lambda sem modificação, garantindo a consistência entre seus cálculos de recompensa e os resultados finais.

Como interpretar os resultados do

Pontuação de recompensa agregada

  • Intervalo: normalmente 0,0 (pior) a 1,0 (melhor), mas depende da sua implementação

  • Objetivo: número único resumindo o desempenho geral

  • Uso: Compare modelos, acompanhe a melhoria em relação ao treinamento

Métricas individuais

  • Tipo de métrica: métricas informativas para análise

  • Tipo de recompensa: métricas usadas durante o treinamento de RFT

  • Interpretação: valores mais altos geralmente indicam melhor desempenho (a menos que você crie métricas inversas)

Benchmarks de desempenho

O que constitui um desempenho “bom” depende do seu caso de uso:

Intervalo de pontuação Interpretação Ação
0,8 - 1,0 Excelente Modelo pronto para implantação
0,6 - 0,8 Boa Pequenas melhorias podem ser benéficas
0,4 - 0,6 Razoável É necessária uma melhoria significativa
0,0 - 0,4 Pobre Revise os dados de treinamento e a função de recompensa
Importante

Essas são diretrizes gerais. Defina seus próprios limites com base nos requisitos de negócios, no desempenho do modelo básico, nas restrições específicas do domínio e na análise de custo-benefício do treinamento adicional.

Solução de problemas

Problemas comuns

Problema Causa Solução
tempo limite do Lambda Cálculo complexo de recompensas Aumente o tempo limite do Lambda ou otimize a função
Permissão negada Ausência de permissões do IAM Verifique se a SageMaker função pode invocar o Lambda
Pontuações inconsistentes Função de recompensa não determinística Use sementes fixas ou lógica determinística
Resultados ausentes Erros do Lambda não detectados Adicione tratamento abrangente de erros no Lambda

Lista de verificação de depuração

  • Verifique se os dados de entrada seguem o formato correto com matrizes de conteúdo aninhadas

  • Confirme se o ARN do Lambda está correto e se a função está implantada

  • Verifique as permissões do IAM para SageMaker → Invocação do Lambda

  • Revise CloudWatch os registros de erros do Lambda

  • Valide que a resposta do Lambda corresponde ao formato esperado

Práticas recomendadas

  • Comece de forma simples: comece com as funções básicas de recompensa e repita

  • Teste o Lambda separadamente: use os eventos de teste do Lambda antes da avaliação completa

  • Validar em um conjunto de dados pequeno: execute a avaliação no subconjunto antes do conjunto de dados completo

  • Controle de versão: acompanhe as versões da função de recompensa junto com as versões do modelo

  • Monitore os custos: as invocações do Lambda e o tempo de computação afetam os custos

  • Registre extensivamente: use instruções de impressão no Lambda para depuração

  • Defina os tempos limite de forma adequada: equilíbrio entre paciência e custo

  • Métricas do documento: defina claramente o que cada métrica mede

Próximas etapas

Depois de concluir a avaliação do RFT:

  • Se os resultados forem satisfatórios: implante o modelo na produção

  • Se for necessário melhorar:

    • Ajuste a função de recompensa

    • Colete mais dados de treinamento

    • Modifique os hiperparâmetros de treinamento

    • Execute iterações adicionais de treinamento de RFT

  • Monitoramento contínuo: reavalie periodicamente com novos dados