View a markdown version of this page

RFT no Nova 2.0 - Amazon Nova

RFT no Nova 2.0

Os dados de treinamento de RFT seguem o formato conversacional da OpenAI. Cada exemplo de treinamento é um objeto JSON que contém mensagens, respostas de referência e definições de ferramentas opcionais. Esta seção fornece orientação sobre como preparar dados de treinamento eficazes para RFT no Nova 2.0.

Formato e estrutura de dados

Cada exemplo de treinamento é um objeto JSON que contém o seguinte:

  • messages: uma matriz de turnos de conversação usando perfis de sistema, usuário e, opcionalmente, de assistente

  • reference_answer: resultado esperado ou critérios de avaliação para o cálculo da recompensa

  • tools (opcional): matriz de definições de funções disponíveis para o modelo

  • id (opcional): identificador único para rastreamento e desduplicação

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

O seguinte exemplo mostra um problema de química com uma resposta de referência contendo valores de verdade fundamental:

{ "id": "chem-001", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C" } ], "reference_answer": { "donor_bond_counts": 2, "acceptor_bond_counts": 4, "explanation": "Calculated using Lipinski's rule of five: N-H groups (2 donors), N and O atoms with lone pairs (4 acceptors)" } }
nota

O reference_answer contém valores de verdade fundamental calculados usando regras específicas do domínio. Sua função de recompensa compara os valores de predição do modelo com esses valores de referência para calcular uma pontuação de recompensa.

O seguinte exemplo mostra um problema de matemática com etapas de solução:

{ "id": "math-001", "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"] } }

O exemplo a seguir mostra o uso da ferramenta com o comportamento esperado:

{ "id": "tool-001", "messages": [ { "role": "system", "content": "You are a helpful game master assistant" }, { "role": "user", "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier." } ], "tools": [ { "type": "function", "function": { "name": "StatRollAPI", "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.", "parameters": { "type": "object", "properties": { "modifier": { "description": "An integer representing the modifier to apply to the total of the stat roll.", "type": "integer" } }, "required": ["modifier"] } } } ], "reference_answer": { "tool_called": "StatRollAPI", "tool_parameters": { "modifier": 2 }, "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value" } }

Descrições do campo

Campo

Descrição

Notas adicionais

Obrigatório

id

Identificador único para este exemplo de RFT

String (por exemplo, “sample-001”). Útil para rastreamento e desduplicação.

Não

mensagens

Lista ordenada de mensagens de chat que definem o prompt e o contexto

Matriz de objetos . O modelo os vê em ordem. Normalmente começa com uma mensagem do sistema, e depois o usuário.

Sim

messages[].role

Quem está falando na mensagem

Valores comuns: “system”, “user” (às vezes “assistant” em outros contextos)

Não

messages[].content

O conteúdo do texto da mensagem

String simples. Para o sistema, são as instruções, para o usuário, é a tarefa ou a entrada.

Não

ferramentas

Especificações da ferramenta disponíveis para o modelo durante este exemplo

Matriz. Cada item define a interface e os metadados de uma ferramenta. Os tipos podem incluir “function” ou “internal”.

Não

reference_answer

A saída esperada do modelo para este exemplo

String ou objeto, dependendo da tarefa. Usado como destino para avaliação ou treinamento.

Não

nota

Todos os campos personalizados adicionais (por exemplo, task_id, difficty_level, context_data) não são validados e serão passados para sua função de recompensa como metadados.

Orientações de hiperparâmetros

Use os seguintes hiperparâmetros recomendados com base em sua abordagem de treinamento:

Geral:

  • Épocas: 1

  • Taxa de aprendizado (lr): 1e-7

  • Número de gerações: 8

  • Máximo de novos tokens: 8.192

  • Tamanho do lote: 256

LoRA (Low-Rank Adaptation):

  • Classificação LoRA: 32

nota

Ajuste os valores com base no tamanho do conjunto de dados e no desempenho de validação. Monitore as métricas de treinamento para evitar sobreajuste.

Propriedades adicionais

A configuração “additionalProperties”: true permite que você inclua campos personalizados além dos requisitos principais do esquema, oferecendo flexibilidade para adicionar quaisquer dados de que sua função de recompensa precise para uma avaliação adequada.

Campos adicionais comuns

Você pode incluir os seguintes tipos de campos adicionais:

Metadados:

  • task_id: identificador único de rastreamento

  • difficty_level: indicador de complexidade do problema

  • domain: área ou categoria do assunto

  • expected_reasoning_steps: número de etapas na solução

Critérios de avaliação:

  • evaluation_criteria: parâmetros de classificação específicos

  • custom_scoring_weights: importância relativa de diferentes aspectos

  • context_data: informações contextuais sobre o problema

  • external_references: links para documentação ou recursos relevantes

Exemplo com propriedades adicionais

O seguinte exemplo inclui campos de metadados personalizados:

{ "id": "algebra_001", "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 }

Recomendações de tamanho do conjunto de dados

Ponto de partida

Comece com os seguintes tamanhos mínimos de conjunto de dados:

  • Mínimo de 100 exemplos de treinamento

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

Priorize dados de entrada de alta qualidade e uma função de recompensa confiável que seja executada de forma consistente nas respostas do modelo.

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 (recompensa superior a 95%): 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

Essa abordagem que prioriza a avaliação garante que sua função de recompensa esteja livre de erros e determine se o RFT é o método certo para seu caso de uso. Começar aos poucos permite que você se familiarize com o fluxo de trabalho do RFT, identifique e corrija problemas com antecedência, valide sua abordagem antes de aumentar a escala verticalmente e teste a confiabilidade da função de recompensa. 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:

  • Vários tipos de problemas e níveis de dificuldade

  • Diferentes formatos de entrada e casos de borda

  • Exemplos representativos de todos os cenários esperados

Essa diversidade ajuda a evitar o sobreajuste e garante que o modelo processe entradas desconhecidas de forma resiliente.

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 em grande escala.