Ajuste fino de reforço (RFT) com modelos Amazon Nova - 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á.

Ajuste fino de reforço (RFT) com modelos Amazon Nova

Visão geral do

O que é RFT?

O ajuste fino de reforço (RFT) melhora o desempenho do modelo treinando em sinais de feedback — pontuações mensuráveis ou recompensas que indicam o desempenho do modelo — em vez de respostas corretas exatas. Ao contrário do ajuste fino supervisionado que aprende com pares de entrada e saída, o RFT usa funções de recompensa para avaliar as respostas do modelo e otimiza iterativamente o modelo para maximizar essas recompensas. Essa abordagem é excelente quando definir a saída exata correta é um desafio, mas você pode medir com segurança a qualidade da resposta.

Quando usar o RFT

Use o RFT quando puder definir critérios de sucesso claros e mensuráveis, mas tiver dificuldade em fornecer resultados exatos e corretos para o treinamento. É ideal para:

  • Tarefas em que a qualidade é subjetiva ou multifacetada (escrita criativa, otimização de código, raciocínio complexo)

  • Cenários com várias soluções válidas em que algumas são claramente melhores do que outras

  • Aplicativos que exigem aprimoramento iterativo, personalização ou adesão a regras de negócios complexas

  • Casos em que coletar exemplos rotulados de alta qualidade é caro ou impraticável

Melhores casos de uso

O RFT se destaca em domínios em que a qualidade da saída pode ser medida objetivamente, mas as respostas ideais são difíceis de definir com antecedência:

  • Resolução de problemas matemáticos e geração de código

  • Raciocínio científico e análise estruturada de dados

  • Tarefas que exigem step-by-step raciocínio ou solução de problemas em vários turnos

  • Aplicações que equilibram vários objetivos (precisão, eficiência, estilo)

  • Cenários em que o sucesso pode ser verificado programaticamente por meio de resultados de execução ou métricas de desempenho

Modelos compatíveis

Nova Lite 2.0

Visão geral do formato de dados

Os dados de treinamento do RFT devem seguir o formato OpenAI Reinforcement Fine-Tuning. Cada exemplo de treinamento é um objeto JSON contendo:

  • Uma messages matriz com turnos de conversação, uso system e funções user

  • Um reference_answer campo contendo o resultado esperado ou os critérios de avaliação para o cálculo da recompensa

Limitações atuais

  • Somente texto

Exemplos de formato de dados

Cada exemplo deve estar em uma única linha no arquivo JSONL, com um objeto JSON por linha.

Chemistry problem
{ "id": "chem-01", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Calculate the molecular weight of caffeine (C8H10N4O2)" } ], "reference_answer": { "molecular_weight": 194.19, "unit": "g/mol", "calculation": "8(12.01) + 10(1.008) + 4(14.01) + 2(16.00) = 194.19" } }
Math problem
{ "id": "sample-001", // Optional "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }
Code problem
{ "id": "code-002", "messages": [ { "role": "system", "content": "You are a helpful programming assistant" }, { "role": "user", "content": "Write a Python function that reverses a string without using built-in reverse methods" } ], "reference_answer": { "code": "def reverse_string(s): \n result = '' \n for i in range(len(s) - 1, -1, -1): \n result += s[i] \n return result", "test_cases": [ { "input": "hello", "expected_output": "olleh" }, { "input": "", "expected_output": "" }, { "input": "a", "expected_output": "a" }, { "input": "Python123", "expected_output": "321nohtyP" } ], "all_tests_pass": true } }

O reference_answer campo contém o resultado esperado ou os critérios de avaliação que sua função de recompensa usa para pontuar a resposta do modelo. Ela não se limita a resultados estruturados — ela pode conter qualquer formato que ajude sua função de recompensa a avaliar a qualidade.

Recomendações de tamanho do conjunto de dados

Ponto de partida

  • Mínimo de 100 exemplos de treinamento

  • Mínimo de 100 exemplos de avaliação

Abordagem que prioriza a avaliação

Antes de investir em treinamento de RFT em grande escala, avalie o desempenho básico do seu modelo:

  • Alto desempenho (> 95% de recompensa) — RFT pode ser desnecessário — seu modelo já funciona bem

  • Desempenho muito baixo (0% de recompensa) — Mude primeiro para o SFT para estabelecer os recursos básicos

  • Desempenho moderado — o RFT provavelmente é apropriado

Começar com um pequeno conjunto de dados permite que você:

  • Valide que sua função de recompensa está livre de bugs

  • Confirme se o RFT é a abordagem correta para seu caso de uso

  • Identifique e corrija problemas com antecedência

  • Teste o fluxo de trabalho antes de aumentar a escala

Depois de validado, você pode expandir para conjuntos de dados maiores para melhorar ainda mais o desempenho.

Características dos dados de treinamento efetivos

Clareza e consistência

Bons exemplos de RFT exigem dados de entrada claros e inequívocos que permitam o cálculo preciso da recompensa em diferentes saídas do modelo. Evite ruídos em seus dados, incluindo:

  • Formatação inconsistente

  • Etiquetas ou instruções contraditórias

  • Solicitações ambíguas

  • Respostas de referência conflitantes

Qualquer ambigüidade enganará o processo de treinamento e fará com que o modelo aprenda comportamentos não intencionais.

Diversidade

Seu conjunto de dados deve capturar toda a diversidade de casos de uso de produção para garantir um desempenho robusto no mundo real. Inclusão:

  • Diferentes formatos de entrada e casos extremos

  • Mapeie os padrões reais de uso da produção a partir de registros e análises de usuários

  • Amostra de todos os tipos de usuários, regiões geográficas e variações sazonais

  • Inclua níveis de dificuldade de problemas simples a complexos

Considerações sobre a função de recompensa

Crie sua função de recompensa para um treinamento eficiente:

  • Execute em segundos (não minutos)

  • Paralelize de forma eficaz com o Lambda

  • Retorne pontuações consistentes e confiáveis

  • Gerencie diferentes tipos de saídas de modelo com elegância

As funções de recompensa rápidas e escaláveis permitem uma iteração rápida e uma experimentação econômica.

Propriedades adicionais

O formato de dados RFT oferece suporte a campos personalizados além dos requisitos principais do esquema (messagesereference_answer). Essa flexibilidade permite que você adicione quaisquer dados adicionais que sua função de recompensa precise para uma avaliação adequada.

nota

Você não precisa configurar isso em sua receita — o formato de dados é inerentemente compatível com campos adicionais. Basta incluí-los em seus dados de treinamento JSON e eles serão passados para sua função de recompensa em metadata campo.

Propriedades adicionais comuns

Exemplos de campos de metadados:

  • task_id— Identificador exclusivo para rastreamento

  • difficulty_level— Indicador de complexidade do problema

  • domain— Área temática ou categoria

  • expected_reasoning_steps— Número de etapas na solução

Exemplo com propriedades adicionais

{ "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }

Esses campos adicionais são passados para sua função de recompensa durante a avaliação, permitindo uma lógica de pontuação sofisticada adaptada ao seu caso de uso específico.

Configuração do treinamento

Receita de amostra

# Note: # This recipe can run on p5.48xlarge and p5en.48xlarge instance types. run: name: "my-rft-run" # Unique run name (appears in logs/artifacts). model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://<bucket>/<data file> # Training dataset in JSONL; replicas: 4 reward_lambda_arn: "" ## SMTJ GRPO Training specific configs training_config: max_length: 8192 # Context window (tokens) for inputs+prompt; global_batch_size: 16 # Total samples per optimizer step across all replicas (16/32/64/128/256). reasoning_effort: high # Enables reasoning mode high / low / or null for non-reasoning rollout: # How responses are generated for GRPO/advantage calc. advantage_strategy: number_generation: 2 # N samples per prompt to estimate advantages (variance vs cost). generator: max_new_tokens: 6000 # Cap on tokens generated per sample set_random_seed: true # Seed generation for reproducibility across runs. temperature: 1 # Softmax temperature; top_k: 1 # Sample only from top-K logits rewards: preset_reward_function: null # Usage of reward functions built into Verl [exact_match, code_executions, math_answers] api_endpoint: lambda_arn: "" lambda_concurrency_limit: 12 # Max concurrent Lambda invocations (throughput vs. throttling). trainer: max_steps: 2 # Steps to train for. One Step = global_batch_size save_steps: 5 test_steps: 1 save_top_k: 5 # RL parameters ent_coeff: 0.0 # A bonus added to the policy loss that rewards higher-output entropy. kl_loss_coef: 0.001 # Weight on the KL penalty between the actor (trainable policy) and a frozen reference model optim_config: # Optimizer settings lr: 7e-7 # Learning rate weight_decay: 0.0 # L2 regularization strength (0.0–1.0) adam_beta1: 0.9 adam_beta2: 0.95 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 32 lora_plus_lr_ratio: 64.0 # LoRA+ learning rate scaling factor (0.0–100.0)

Treinamento de RFT usando LLM como juiz

Visão geral do

Modelos de linguagem grande (LLMs) estão sendo cada vez mais usados como juízes em fluxos de trabalho de ajuste fino de reforço (RFT), fornecendo sinais de recompensa automatizados que orientam a otimização do modelo. Nessa abordagem, um LLM avalia os resultados do modelo em relação a critérios específicos, seja avaliando a correção, a qualidade, a aderência ao estilo ou a equivalência semântica, e atribui recompensas que impulsionam o processo de aprendizado por reforço.

Isso é particularmente valioso para tarefas em que as funções de recompensa tradicionais são difíceis de definir programaticamente, como determinar se representações diferentes (como “1/3", “0,333" e “um terço”) são semanticamente equivalentes ou avaliar qualidades diferenciadas, como coerência e relevância. Ao usar juízes baseados em LLM como funções de recompensa, você pode escalar o RFT para domínios complexos sem exigir anotações humanas extensivas, permitindo uma iteração rápida e a melhoria contínua de seus modelos em diversos casos de uso, além dos problemas tradicionais de alinhamento.

Seleção do modo de raciocínio

Modos disponíveis

  • nenhum — Sem raciocínio (omita o campo reasoning_effort)

  • baixo — Sobrecarga mínima de raciocínio

  • alto — Capacidade máxima de raciocínio (padrão quando reasoning_effort é especificado)

nota

Não há opção média para RFT. Se o campo reasoning_effort estiver ausente da sua configuração, o raciocínio será desativado. Quando o raciocínio está ativado, você deve definir como 32768 max_new_tokens para acomodar saídas de raciocínio estendidas.

Quando usar cada modo

Use um bom raciocínio para:

  • Tarefas analíticas complexas

  • Resolução de problemas matemáticos

  • Dedução lógica em várias etapas

  • Tarefas em que step-by-step pensar agrega valor

Use nenhum (omita reasoning_effort) ou baixo raciocínio para:

  • Consultas factuais simples

  • Classificações diretas

  • Otimização de velocidade e custo

  • Resposta direta a perguntas

Compensações de custo e desempenho

Os modos de raciocínio mais altos aumentam:

  • Tempo e custo do treinamento

  • Latência e custo da inferência

  • Capacidade de modelar para tarefas complexas de raciocínio

Validando seu juiz de LLM

Antes de implantar um LLM-as-a-judge em produção, valide se as avaliações do modelo do juiz estão alinhadas com o julgamento humano. Isso envolve:

  • Medindo as taxas de concordância entre o juiz do LLM e os avaliadores humanos em amostras representativas de sua tarefa

  • Garantir que o acordo do LLM com humanos atenda ou exceda as taxas de concordância inter-humana

  • Identificação de possíveis vieses no modelo do juiz

  • Construindo a confiança de que o sinal de recompensa guia seu modelo na direção pretendida

Essa etapa de validação ajuda a garantir que o processo de avaliação automatizado produza modelos que atendam aos seus critérios de qualidade de produção.

Configuração Lambda para juiz de LLM

Usar um LLM como juiz é uma extensão do uso das funções Lambda para aprendizagem por reforço com recompensas verificáveis (RLVR). Dentro da função Lambda, você faz uma chamada para um dos modelos hospedados no Amazon Bedrock.

Requisitos de configuração importantes:

Configuração Requisito Detalhes
Produtividade do Amazon Bedrock Cota suficiente Certifique-se de que sua cota de produtividade para o modelo Amazon Bedrock usado seja suficiente para sua carga de trabalho de treinamento
tempo limite do Lambda Tempo limite estendido Configure o tempo limite da função Lambda em até o máximo de 15 minutos. A configuração padrão é de 3 segundos, o que é insuficiente para as respostas do modelo Amazon Bedrock
Simultaneidade do Lambda Aumento da simultaneidade O Lambda é invocado paralelamente durante o treinamento. Aumente a simultaneidade para maximizar a taxa de transferência disponível
Configuração de fórmula Combine as configurações do Lambda O limite de simultaneidade deve ser configurado em sua receita

Criação e execução de trabalhos

Começando um trabalho de treinamento

Use o modelo de caderno SageMaker AI Training Job: https://docs.aws.amazon.com/sagemaker/latest/dg/nova-fine-tuning-training-job.html#nova-model-training-jobs-notebook

Requisitos de instância

O contêiner oferece suporte ao treinamento Full-Rank e LoRa:

  • Treinamento LoRa — 2/4/6/8 × instâncias p5.48xlarge ou p5en.48xlarge

  • Treinamento completo — 2/4/6/8 × p5.48xlarge instâncias (obrigatório)

Treinamento de monitoramento

Os registros de treinamento incluem métricas abrangentes em cada etapa. Principais categorias métricas:

Métricas de recompensa

  • critic/rewards/mean,critic/rewards/max, critic/rewards/min — Distribuição de recompensas

  • val-score/rewards/mean@1— Recompensas de validação

Comportamento do modelo

  • actor/entropy— Variação da política (maior = mais exploratória)

Treinamento em saúde

  • actor/pg_loss— Perda de gradiente político

  • actor/pg_clipfrac— Frequência de atualizações recortadas

  • actor/grad_norm— Magnitude do gradiente

Características da resposta

  • prompt_length/mean,prompt_length/max, prompt_length/min — Estatísticas do token de entrada

  • response_length/mean,response_length/max, response_length/min — Estatísticas do token de saída

  • response/aborted_ratio— Taxa de geração incompleta (0 = tudo concluído)

Desempenho

  • perf/throughput— Rendimento do treinamento

  • perf/time_per_step— Tempo por etapa de treinamento

  • timing_per_token_ms/*— Tempos de processamento por token

Uso de recursos

  • perf/max_memory_allocated_gb, perf/max_memory_reserved_gb — Memória GPU

  • perf/cpu_memory_used_gb— Memória de CPU

Usando modelos ajustados

Após a conclusão do treinamento, o ponto de verificação final do modelo é salvo no local de saída especificado. O caminho do ponto de verificação está disponível em:

  • Registros de treinamento

  • manifest.jsonarquivo no local de saída do Amazon S3 (definido output_s3_uri em seu notebook)

Limitações e melhores práticas

Limitações

  • Tempo limite do Lambda — as funções de recompensa devem ser concluídas em 15 minutos (evita processos descontrolados e gerencia custos)

  • Somente em um único turno — conversas em vários turnos não são suportadas

  • Requisitos de dados — precisa de diversidade suficiente; tem dificuldades com recompensas esparsas (< 5% de exemplos positivos)

  • Custo computacional — Mais caro do que o ajuste fino supervisionado

  • Sem dados multimodais — Somente o tipo de dados de texto é suportado

Práticas recomendadas

Comece pequeno

  • Comece com 100-200 exemplos

  • Valide a exatidão da função de recompensa

  • Escale gradualmente com base nos resultados

Avaliação pré-treinamento

  • Teste o desempenho do modelo de linha de base antes do RFT

  • Se as recompensas forem consistentemente de 0%, use o SFT primeiro para estabelecer as capacidades básicas

  • Se as recompensas forem > 95%, o RFT pode ser desnecessário

Monitore o treinamento

  • Acompanhe as pontuações médias e a distribuição das recompensas

  • Cuidado com o ajuste excessivo (as recompensas de treinamento aumentam enquanto as recompensas de validação diminuem)

  • Procure padrões preocupantes:

    • Recompensas se estabilizando abaixo de 0,15

    • Aumento da variação da recompensa ao longo do tempo

    • Diminuição do desempenho de validação

Otimize as funções de recompensa

  • Execute em segundos (não minutos)

  • Minimize as chamadas externas de API

  • Use algoritmos eficientes

  • Implemente o tratamento adequado de erros

  • Aproveite as vantagens do escalonamento paralelo do Lambda

Estratégia de iteração

Se as recompensas não estiverem melhorando:

  • Ajuste o design da função de recompensa

  • Aumente a diversidade do conjunto de dados

  • Adicione mais exemplos representativos

  • Verifique se os sinais de recompensa são claros e consistentes

Capacidades avançadas: Nova Forge

Para usuários que precisam de recursos avançados além das limitações padrão de RFT, o Nova Forge está disponível como uma oferta de serviço de assinatura paga:

  • Suporte de conversação em vários turnos

  • Funções de recompensa com mais de 15 minutos de tempo de execução

  • Algoritmos adicionais e opções de ajuste

  • Modificações personalizadas na receita de treinamento

  • State-of-the-art Técnicas de IA

O Nova Forge funciona com SageMaker IA HyperPod e foi projetado para ajudar clientes corporativos a criar seus próprios modelos de fronteira.

Comandos e dicas úteis

Uma coleção de scripts de observabilidade está disponível para ajudar a monitorar o status e o progresso dos trabalhos de treinamento.

Os scripts disponíveis são:

  • Habilitando notificações por e-mail para atualizações do status do trabalho de treinamento

  • Obter estimativas de tempo de treinamento com base nas configurações do trabalho

  • Obter estimativas de quanto tempo se espera que o treinamento leve para trabalhos em andamento

Instalação

nota

Certifique-se de atualizar suas AWS credenciais antes de usar qualquer um dos scripts a seguir.

pip install boto3 git clone https://github.com/aws-samples/amazon-nova-samples.git cd amazon-nova-samples/customization/SageMakerUilts/SageMakerJobsMonitoring/

Uso básico

# Enabling email notifications for training job status updates python enable_sagemaker_job_notifs.py --email test@amazon.com test2@gmail.com --region us-east-1 --platform SMTJ Creating resources........ Please check your email for a subscription confirmation email, and click 'Confirm subscription' to start receiving job status email notifications! You'll receive the confirmation email within a few minutes.
# Obtaining training time estimates based on job configurations python get_training_time_estimate.py
# Obtaining approximations for how long training is expected to take for in-progress jobs python get-training-job-progress.py --region us-east-1 --job-name my-training-job --num-dataset-samples 1000

Consulte aqui para obter mais detalhes e exemplos.