RFT en Nova 2.0
Los datos de entrenamiento del RFT siguen el formato conversacional de OpenAI. Cada ejemplo de entrenamiento es un objeto JSON que contiene mensajes, respuestas de referencia y definiciones de herramientas opcionales. En esta sección, se proporciona orientación sobre cómo preparar datos de entrenamiento efectivos para el RFT en Nova 2.0.
Temas
Formato y estructura de los datos
Cada ejemplo de entrenamiento es un objeto JSON que contiene lo siguiente:
-
messages: matriz de turnos de conversación en los que se utilizan los roles de sistema, usuario y, opcionalmente, asistente
-
reference_answer: salida esperada o criterio de evaluación para el cálculo de la recompensa
-
tools (opcional): matriz de definiciones de funciones disponibles para el modelo
-
id (opcional): identificador único para el seguimiento y la deduplicación
Cada ejemplo debe estar en una sola línea del archivo JSONL, con un objeto JSON por línea.
En el siguiente ejemplo, se muestra un problema de química con una respuesta de referencia que contiene valores de datos reales:
{ "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
El valor de reference_answer contiene valores de datos reales calculados mediante reglas específicas del dominio. La función de recompensa compara los valores de predicción del modelo con estos valores de referencia para calcular una puntuación de recompensa.
En el siguiente ejemplo, se muestra un problema matemático con los pasos de resolución:
{ "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"] } }
En el siguiente ejemplo, se muestra el uso de herramientas con el comportamiento 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" } }
Descripción del campo
Campo |
Descripción |
Notas adicionales |
Obligatorio |
|---|---|---|---|
id |
Identificador único para este ejemplo de RFT |
Cadena (por ejemplo, “sample-001”). Útil para el seguimiento y la deduplicación. |
No |
Mensajes |
Lista ordenada de mensajes de chat que definen la petición y el contexto |
Una matriz de objetos . El modelo los ve en orden. Normalmente comienza con un mensaje del sistema y luego con el usuario. |
Sí |
messages[].role |
Quién habla en el mensaje |
Valores comunes: “sistema”, “usuario” (a veces “asistente” en otros contextos). |
No |
messages[].content |
Contenido del texto del mensaje |
Cadena sin formato. Para el sistema son instrucciones, para el usuario son la tarea o entrada. |
No |
herramientas |
Especificaciones de la herramienta disponibles para el modelo en este ejemplo |
Matriz. Cada elemento define la interfaz y los metadatos de una herramienta. Los tipos pueden incluir “función” o “interno”. |
No |
reference_answer |
Salida esperada del modelo para este ejemplo |
Cadena u objeto según la tarea. Se utiliza como destino para la evaluación o el entrenamiento. |
No |
nota
Los campos personalizados adicionales (por ejemplo, task_id, difficulty_level, context_data) no se validan y se pasarán a la función de recompensas como metadatos.
Guía de hiperparámetros
Utilice los siguientes hiperparámetros recomendados en función de su enfoque de entrenamiento:
General:
-
Épocas: 1
-
Tasa de aprendizaje (lr): 1e-7
-
Número de generaciones: 8
-
Máximo de tokens nuevos: 8192
-
Tamaño del lote: 256
LoRA (adaptación de rango bajo):
-
Rango de LoRA: 32
nota
Ajuste estos valores en función del tamaño del conjunto de datos y del rendimiento de la validación. Supervise las métricas de entrenamiento para evitar el sobreajuste.
Propiedades adicionales
La configuración “additionalProperties”: true le permite incluir campos personalizados más allá de los requisitos básicos del esquema, lo que proporciona flexibilidad para agregar cualquier dato que la función de recompensas necesite para una evaluación adecuada.
Campos adicionales comunes
Puede incluir los siguientes tipos de campos adicionales:
Metadatos:
-
task_id: identificador único para el seguimiento
-
difficulty_level: indicador de complejidad del problema
-
domain: categoría o área del asunto
-
expected_reasoning_steps: número de pasos de la solución
Criterios de evaluación:
-
valuation_criteria: rúbricas de calificación específicas
-
custom_scoring_weights: importancia relativa de los diferentes aspectos
-
context_data: información básica del problema
-
external_references: enlaces a documentación o recursos relevantes
Ejemplo con propiedades adicionales
En el siguiente ejemplo, se incluyen campos de metadatos 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 }
Recomendaciones de tamaño de conjunto de datos
Punto de partida
Comience con los siguientes tamaños mínimos de conjuntos de datos:
-
Mínimo 100 ejemplos de entrenamiento
-
Mínimo 100 ejemplos de evaluación
Priorice los datos de entrada de alta calidad y una función de recompensa fiable que se ejecute de manera coherente en las respuestas del modelo.
Enfoque de priorización de la evaluación
Antes de invertir en un entrenamiento RFT a gran escala, evalúe el rendimiento de línea de base del modelo:
-
Alto rendimiento (recompensa superior al 95 %): el RFT puede no ser necesario, el modelo ya funciona bien.
-
Rendimiento muy bajo (recompensa del 0 %): cambie primero al SFT para establecer las capacidades básicas.
-
Rendimiento moderado: es probable que el RFT sea adecuado.
Este enfoque de priorización de la evaluación garantiza que la función de recompensa no tenga errores y determina si el RFT es el método adecuado para su caso de uso. Empezar poco a poco le permite familiarizarse con el flujo de trabajo del RFT, identificar y solucionar los problemas con antelación, validar su enfoque antes de escalar verticalmente y probar la fiabilidad de la función de recompensas. Una vez validado, puede ampliarlo a conjuntos de datos más grandes para mejorar aún más el rendimiento.
Características de los datos de entrenamiento eficaces
Claridad y coherencia
Los buenos ejemplos del RFT requieren datos de entrada claros e inequívocos que permitan un cálculo preciso de las recompensas en las diferentes salidas del modelo. Evite el ruido en los datos, lo que incluye lo siguiente:
-
Formato incoherente
-
Etiquetas o instrucciones contradictorias
-
Peticiones ambiguas
-
Conflictos en las respuestas de referencia
Cualquier ambigüedad inducirá a error durante el proceso de entrenamiento y provocará que el modelo aprenda comportamientos no deseados.
Diversidad
El conjunto de datos debe capturar toda la diversidad de casos de uso de producción para garantizar un rendimiento real sólido. Incluya:
-
Varios tipos de problemas y niveles de dificultad
-
Diferentes formatos de entrada y casos extremos
-
Muestras representativas de todos los escenarios esperados
Esta diversidad ayuda a evitar el sobreajuste y garantiza que el modelo gestione sin problemas las entradas desconocidas.
Consideraciones sobre la función de recompensas
Diseñe la función de recompensas para un entrenamiento eficiente:
-
Ejecución en segundos (no minutos)
-
Paralelización eficaz con Lambda
-
Devolución de puntuaciones coherentes y fiables
-
Gestión de diferentes tipos de salidas del modelo sin problemas
Las funciones de recompensas rápidas y escalables permiten una iteración rápida y una experimentación rentable a escala.