Ajuste fino por reforço (RFT) com modelos do Amazon Nova
Visão geral
O que é o RFT?
O ajuste fino por reforço (RFT) melhora o desempenho do modelo treinando com sinais de feedback (pontuações mensuráveis ou recompensas que indicam o desempenho do modelo) em vez de com 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 de forma iterativa o modelo para maximizar essas recompensas. Essa abordagem se destaca quando a definição exata da saída correta é difícil, mas a avaliação da qualidade da resposta é confiável.
Quando usar o RFT
Use o RFT quando você 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
-
Aplicações 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 avaliada objetivamente, mas as respostas ideais são difíceis de definir de antemão:
-
Resolução de problemas matemáticos e geração de código
-
Raciocínio científico e análise de dados estruturados
-
Tarefas que exigem raciocínio passo a passo 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 de forma programática 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
-
Uma matriz de
messagescom turnos de conversação usando os perfissystemeuser -
Um campo
reference_answercontendo 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.
O campo reference_answer 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. Ele não se limita a resultados estruturados. Ele 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): o RFT pode ser desnecessário, pois seu modelo já tem um bom desempenho
-
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 que o RFT é a abordagem certa para o seu caso de uso
-
Identifique e corrija problemas com antecedência
-
Teste o fluxo de trabalho antes de aumentar a escala verticalmente
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
-
Rótulos ou instruções contraditórios
-
Prompts ambíguos
-
Respostas de referência conflitantes
Qualquer ambiguidade induzirá o processo de treinamento ao erro, fazendo com que o modelo aprenda comportamentos indesejados.
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 de borda
-
Mapear padrões reais de uso em produção de logs e analytics de usuários
-
Amostra de todos os tipos de usuários, regiões geográficas e variações sazonais
-
Incluir níveis de dificuldade de problemas simples a complexos
Considerações sobre a função de recompensa
Projete sua função de recompensa para um treinamento eficiente:
-
Execute em segundos (não em minutos)
-
Paralelize de forma eficaz com o Lambda
-
Retorne pontuações consistentes e confiáveis
-
Lide com diferentes tipos de saídas de modelo de forma resiliente
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 de RFT é compatível com campos personalizados além dos requisitos principais do esquema (messages e reference_answer). Essa flexibilidade permite que você adicione quaisquer dados adicionais de que sua função de recompensa precise para uma avaliação adequada.
nota
Você não precisa configurar isso em sua fórmula. 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 no campo metadata.
Propriedades comuns adicionais
Campos de metadados de exemplo:
-
task_id: identificador único de rastreamento -
difficulty_level: indicador de complexidade do problema -
domain: área ou categoria do assunto -
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
Exemplo de fórmula
# 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: arn:aws:lambda:<region>:<account-id>:function:<function-name> ## MLFlow configs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-rft-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-rft-run" # Optional for MLFlow. Note: leave this field non-empty ## 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 preset reward functions [exact_match] api_endpoint: lambda_arn: arn:aws:lambda:<region>:<account-id>:function:<function-name> 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 # 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: 5e-5 # 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 o LLM como avaliador
Visão geral
Os grandes modelos de linguagem (LLMs) estão sendo cada vez mais usados como avaliadores em fluxos de trabalho de ajuste fino por 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 exatidã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 de forma programática, como determinar se representações diferentes (como “1/3”, “0,333” e “um terço”) são semanticamente equivalentes, ou avaliar qualidades subjetivas, como coerência e relevância. Ao usar avaliadores 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
-
none: sem raciocínio (omita o campo reasoning_effort)
-
low: sobrecarga mínima de raciocínio
-
high: capacidade máxima de raciocínio (padrão quando reasoning_effort é especificado)
nota
Não há a opção medium para o RFT. Se o campo reasoning_effort estiver ausente da sua configuração, o raciocínio será desabilitado. Quando o raciocínio está habilitado, você deve definir max_new_tokens como 32.768 para acomodar saídas de raciocínio estendidas.
Quando usar cada modo
Use o raciocínio high para:
-
Tarefas analíticas complexas
-
Resolução de problemas matemáticos
-
Dedução lógica de várias etapas
-
Tarefas em que o pensamento passo a passo agrega valor
Use raciocínio none (omita reasoning_effort) ou low para:
-
Consultas factuais simples
-
Classificações diretas
-
Velocidade e otimização de custos
-
Respostas diretas a perguntas
Compensações de custo e desempenho
Os modos de raciocínio mais altos aumentam:
-
O tempo e o custo do treinamento
-
A latência e o custo da inferência
-
A capacidade de modelar para tarefas complexas de raciocínio
Validação do seu LLM como avaliador
Antes de implantar um LLM como avaliador na produção, valide se as avaliações do modelo do avaliador estão alinhadas com a avaliação humana. Isso envolve:
-
Avaliar as taxas de concordância entre o LLM como avaliador e os avaliadores humanos em amostras representativas de sua tarefa
-
Garantir que a concordância do LLM com humanos atinja ou supere as taxas de concordância entre humanos
-
Identificar possíveis vieses no modelo do avaliador
-
Criar 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 do Lambda para o LLM como avaliador
Usar um LLM como avaliador é uma extensão do uso das funções do Lambda para aprendizado por reforço com recompensas verificáveis (RLVR). Dentro da função do Lambda, você faz uma chamada para um dos modelos hospedados no Amazon Bedrock.
Requisitos de configuração importantes:
| Configuração | Requisito | Detalhes |
|---|---|---|
| Throughput do Amazon Bedrock | Cota suficiente | Certifique-se de que sua cota de throughput para o modelo do Amazon Bedrock usado seja suficiente para sua workload de treinamento |
| tempo limite do Lambda | Tempo limite estendido | Configure o tempo limite da função do Lambda em até o máximo de 15 minutos. A configuração padrão é de 3 segundos, o que é insuficiente para as respostas dos modelos do Amazon Bedrock |
| Simultaneidade do Lambda | Aumento da simultaneidade | O Lambda é invocado paralelamente durante o treinamento. Aumente a simultaneidade para maximizar o throughput disponível |
| Configuração de fórmula | Correspondência das configurações do Lambda | O limite de simultaneidade deve ser configurado em sua fórmula |
Criação e execução de tarefas
Início de uma tarefa de treinamento
Use o modelo do caderno de tarefas de treinamento do SageMaker: 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 é compatível com o treinamento de full-rank e LoRA:
-
Treinamento LoRA: 2/4/6/8 × instâncias p5.48xlarge ou p5en.48xlarge
-
Treinamento de full-rank: 2/4/6/8 × instâncias p5.48xlarge (obrigatório)
Monitoramento do treinamento
Os logs 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)
Integridade do treinamento
-
actor/pg_loss: perda de gradiente de política -
actor/pg_clipfrac: frequência de atualizações cortadas -
actor/grad_norm: magnitude do gradiente
Características das respostas
-
prompt_length/mean,prompt_length/max,prompt_length/min: estatísticas dos tokens de entrada -
response_length/mean,response_length/max,response_length/min: estatísticas dos tokens de saída -
response/aborted_ratio: taxa de geração incompleta (0 = tudo concluído)
desempenho
-
perf/throughput: throughput 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 da GPU -
perf/cpu_memory_used_gb: memória da CPU
Uso de 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:
-
Logs de treinamento
-
Arquivo
manifest.jsonno local de saída do Amazon S3 (definido poroutput_s3_uriem seu caderno)
Limitações e práticas recomendadas
Limitações
-
Tempo limite do Lambda: as funções de recompensa devem ser concluídas em até 15 minutos (evita processos descontrolados e gerencia custos)
-
Somente um único turno: conversas em vários turnos não são compatíveis
-
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
-
Nenhum dado multimodal: somente o tipo de dados de texto é compatível
Práticas recomendadas
Comece devagar
-
Comece com 100 a 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 poderá ser desnecessário
Monitorar o treinamento
-
Acompanhe as pontuações médias e a distribuição das recompensas
-
Observe o sobreajuste (as recompensas de treinamento aumentam enquanto as recompensas de validação diminuem)
-
Procure padrões de atenção:
-
Recompensas se estabilizando abaixo de 0,15
-
Aumento da variação da recompensa ao longo do tempo
-
Queda no desempenho de validação
-
Otimizar as funções de recompensa
-
Execute em segundos (não em minutos)
-
Minimize as chamadas de API externas
-
Use algoritmos eficientes
-
Implemente o tratamento adequado de erros
-
Aproveite as vantagens da escalabilidade paralela do Lambda
Estratégia de iteração
Se as recompensas não estiverem melhorando:
-
Ajuste o design da função de recompensa
-
Aprimore a diversidade do conjunto de dados
-
Adicione mais exemplos representativos
-
Verifique se os sinais de recompensa são claros e consistentes
Recursos avançados: Nova Forge
Para usuários que precisam de recursos avançados além das limitações padrão do RFT, o Nova Forge está disponível como uma oferta de serviço de assinatura paga:
-
Compatível com conversa de 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 das fórmulas de treinamento
-
Técnicas de IA de última geração
O Nova Forge é executado no SageMaker HyperPod e foi projetado para ajudar clientes empresariais a criar seus próprios modelos de fronteira.
Comandos e dicas úteis
Uma coleção de scripts de observabilidade
Os scripts disponíveis são:
-
Habilitar notificações por e-mail para atualizações do status da tarefa de treinamento
-
Obter estimativas de tempo de treinamento com base nas configurações da tarefa
-
Obter estimativas da duração do treinamento para tarefas em andamento
Instalação
nota
Certifique-se de atualizar suas credenciais da AWS 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