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á.
RFT em Nova 2.0
Os dados de treinamento da RFT seguem o formato conversacional OpenAI. Cada exemplo de treinamento é um objeto JSON contendo 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 contendo o seguinte:
-
mensagens: uma série de turnos de conversação usando funções de sistema, usuário e, opcionalmente, de assistente
-
reference_answer: Resultado esperado ou critérios de avaliação para o cálculo da recompensa
-
ferramentas (opcional): matriz de definições de funções disponíveis para o modelo
-
id (opcional): identificador exclusivo para rastreamento e desduplicação
Cada exemplo deve estar em uma única linha no arquivo JSONL, com um objeto JSON por linha.
O exemplo a seguir mostra um problema de química com uma resposta de referência contendo valores verdadeiros fundamentais:
{ "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 reais básicos calculados usando regras específicas do domínio. Sua função de recompensa compara os valores previstos do modelo com esses valores de referência para calcular uma pontuação de recompensa.
O exemplo a seguir mostra um problema matemático 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 |
Description |
Notas adicionais |
Obrigatório |
|---|---|---|---|
id |
Identificador exclusivo para este exemplo de RFT |
Cadeia de caracteres (por exemplo, “sample-001"). Útil para rastreamento e desduplicação. |
Não |
mensagens |
Lista ordenada de mensagens de bate-papo 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 com o usuário. |
Sim |
mensagens [] .role |
Quem está falando na mensagem |
Valores comuns: “sistema”, “usuário” (às vezes “assistente” em outros contextos) |
Não |
mensagens [] .content |
O conteúdo do texto da mensagem |
Corda simples. Para o sistema, são as instruções, para o usuário, é a tarefa ou 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 “função” ou “interna”. |
Sim |
resposta_referência |
A saída esperada do modelo para este exemplo |
Cadeia de caracteres ou objeto, dependendo da tarefa. Usado como alvo 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.
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 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 exclusivo para rastreamento
-
difficty_level: indicador de complexidade do problema
-
domínio: Área temática ou categoria
-
expected_reasoning_steps: Número de etapas na solução
Critérios de avaliação:
-
evaluation_criteria: rubricas de avaliação específicas
-
custom_scoring_weights: Importância relativa de diferentes aspectos
-
context_data: Informações básicas sobre o problema
-
external_references: Links para documentação ou recursos relevantes
Exemplo com propriedades adicionais
O exemplo a seguir 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 — 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 de avaliação em primeiro lugar 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 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
-
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:
-
Vários tipos de problemas e níveis de dificuldade
-
Diferentes formatos de entrada e casos extremos
-
Amostras representativas de todos os cenários esperados
Essa diversidade ajuda a evitar sobreajustes e garante que o modelo manipule entradas desconhecidas com elegância.
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 em grande escala.