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.
Tópicos
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.