View a markdown version of this page

RFT en Nova 2.0 - Amazon Nova

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.

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.

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.