Refinamiento por refuerzo (RFT) con modelos de Amazon Nova
Descripción general
¿Qué es el RFT?
El refinamiento por refuerzo (RFT) mejora el rendimiento del modelo al entrenarlo con señales de comentarios (puntuaciones medibles o recompensas que indican el rendimiento del modelo) en lugar de con respuestas exactas correctas. A diferencia del refinamiento supervisado (SFT), que aprende a partir de pares de entrada y salida, RFT utiliza funciones de recompensa para evaluar las respuestas del modelo y optimiza el modelo de forma iterativa para maximizar esas recompensas. Este enfoque destaca al definir el resultado exacto correcto, pero le permite medir de forma fiable la calidad de la respuesta.
Cuándo se debe usar el RFT
Use RFT cuando pueda definir criterios de éxito claros y medibles, pero resulte difícil proporcionar resultados correctos exactos para el entrenamiento. RFT es ideal para lo siguiente:
-
Tareas en las que la calidad es subjetiva o multifacética (escritura creativa, optimización del código, razonamiento complejo)
-
Escenarios con múltiples soluciones válidas en los que algunas son claramente mejores que otras
-
Aplicaciones que requieran mejoras iterativas, personalización o el cumplimiento de reglas empresariales complejas
-
Casos en los que recopilar ejemplos etiquetados de alta calidad es caro o poco práctico
Los mejores casos de uso
El RFT sobresale en dominios en los que la calidad de los resultados se puede medir objetivamente, pero las respuestas óptimas son difíciles de definir por adelantado:
-
Resolución de problemas matemáticos y generación de código
-
Razonamiento científico y análisis de datos estructurados
-
Tareas que requieren razonamiento paso a paso o resolución de problemas de varios turnos
-
Aplicaciones que equilibran varios objetivos (precisión, eficiencia, estilo)
-
Escenarios en los que el éxito se puede verificar mediante programación con resultados de ejecución o métricas de rendimiento
Modelos compatibles
Nova Lite 2.0
Información general sobre el formato de datos
Los datos de entrenamiento RFT deben seguir el formato
-
Una matriz
messagescon turnos conversacionales con los rolessystemyuser -
Un campo
reference_answerque contiene el resultado esperado o los requisitos de evaluación para el cálculo de recompensas
Limitaciones actuales
-
Solo texto
Ejemplos de formato de datos
Cada ejemplo debe estar en una sola línea del archivo JSONL, con un objeto JSON por línea.
El campo reference_answer contiene el resultado esperado o los requisitos de evaluación que la función de recompensa utiliza para puntuar la respuesta del modelo. No se limita a resultados estructurados, sino que puede contener cualquier formato que ayude a la función de recompensas a evaluar la calidad.
Recomendaciones de tamaño de conjunto de datos
Punto de partida
-
Mínimo 100 ejemplos de entrenamiento
-
Mínimo 100 ejemplos de evaluación
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.
Comenzar con un conjunto de datos pequeño le permite:
-
Validar que la función de recompensas no contenga errores
-
Confirmar que el RFT sea el enfoque adecuado para su caso de uso
-
Identificar y solucionar problemas con antelación
-
Probar el flujo de trabajo antes de escalar verticalmente
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:
-
Diferentes formatos de entrada y casos extremos
-
Asignación de patrones reales de uso de producción a partir de registros y análisis de usuarios
-
Muestras de distintos tipos de usuarios, regiones geográficas y variaciones estacionales
-
Inclusión de niveles de dificultad, desde problemas simples hasta problemas complejos
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.
Propiedades adicionales
El formato de datos del RFT admite campos personalizados que van más allá de los requisitos básicos del esquema (messages y reference_answer). Esta flexibilidad le permite agregar cualquier dato adicional que su función de recompensas necesite para una evaluación adecuada.
nota
No tiene que configurarlo en su fórmula: el formato de datos admite campos adicionales de forma inherente. Solo tiene que incluirlos en el JSON de los datos de entrenamiento para que se transiferan a la de recompensas en el campo metadata.
Propiedades adicionales comunes
Campos de metadatos de ejemplo:
-
task_id: identificador único de seguimiento -
difficulty_level: indicador de la complejidad del problema -
domain: categoría o área del asunto -
expected_reasoning_steps: número de pasos de la solución
Ejemplo con propiedades adicionales
{ "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 }
Estos campos adicionales se transfieren a la función de recompensas durante la evaluación, lo que permite aplicar una lógica de puntuación sofisticada adaptada a su caso de uso específico.
Configuración de entrenamiento
Fórmula de muestra
# Note: # This recipe can run on p5.48xlarge, p5e.48xlarge, and p5en.48xlarge instance types. run: name: "my-rft-run" # Unique run name (appears in logs and artifacts). model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://<bucket>/<data-file> # Training dataset in JSONL format. replicas: 4 # Number of total training instances. generation_replicas: 2 # Number of total instances dedicated to response generation. reward_lambda_arn: arn:aws:lambda:<region>:<account-id>:function:<function-name> ## MLFlow configs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-rft-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-rft-run" # Optional for MLFlow. Note: leave this field non-empty ## SMTJ RFT training configs training_config: max_length: 8192 # Context window (tokens) for inputs and prompt. global_batch_size: 32 # Total samples per optimizer step across all replicas (16/32/64/128/256). reasoning_effort: high # Reasoning mode: high, low, or null for non-reasoning. data: shuffle: true # Shuffle training data each epoch. rollout: # Controls how responses are generated for advantage calculation. rollout_strategy: type: off_policy_async # Asynchronous rollout for higher throughput. age_tolerance: 2 # Maximum policy age before regeneration. advantage_strategy: number_generation: 4 # Samples per prompt to estimate advantages (higher = lower variance but higher cost). generator: max_new_tokens: 6000 # Cap on tokens generated per sample. set_random_seed: true # Seed generation for reproducibility across runs. temperature: 1 # Softmax temperature for sampling. rewards: preset_reward_function: null # Preset reward functions: exact_match or null for custom. api_endpoint: lambda_arn: arn:aws:lambda:<region>:<account-id>:function:<function-name> lambda_concurrency_limit: 12 # Max concurrent Lambda invocations (throughput vs. throttling). lambda_batch_size: 128 # Number of samples per Lambda invocation. trainer: max_steps: 2 # Steps to train for. One step = global_batch_size samples. save_steps: 5 # Save a checkpoint every N steps. test_steps: 1 # Run validation every N reference model updates. refit_freq: 4 # Frequency of reference model updates. clip_ratio_high: 0.2 # PPO clip ratio for policy updates. loss_scale: 1.0 # Scaling factor for the policy loss. # RL parameters ent_coeff: 0.0 # Entropy bonus added to the policy loss (higher = more exploration). kl_loss_coef: 0.0 # Weight on the KL penalty between the current and reference policy. optim_config: # Optimizer settings. lr: 1e-6 # Learning rate. weight_decay: 0.0 # L2 regularization strength (0.0 to 1.0). adam_beta1: 0.9 adam_beta2: 0.95 peft: # Parameter-efficient fine-tuning (LoRA). peft_scheme: "lora" # Enable LoRA for PEFT. lora_tuning: alpha: 64 # LoRA scaling factor. lora_plus_lr_ratio: 64.0 # LoRA+ learning rate scaling factor (0.0 to 100.0).
Entrenamiento RFT con LLM como juez
Descripción general
Los modelos de lenguaje de gran tamaño (LLM) se utilizan cada vez más como jueces en los flujos de trabajo de refinamiento por refuerzo (RFT), ya que proporcionan señales de recompensas automatizadas que guían la optimización de los modelos. Con este enfoque, el LLM evalúa las salidas del modelo en función de requisitos específicos (ya sea la corrección, la calidad, la adherencia al estilo o la equivalencia semántica) y asigna recompensas que impulsan el proceso de aprendizaje por refuerzo.
Esto es particularmente valioso para tareas en las que las funciones de recompensas tradicionales son difíciles de definir mediante programación, como determinar si diferentes representaciones (como “1/3”, “0,333” y “un tercio”) son semánticamente equivalentes, o evaluar cualidades matizadas como la coherencia y la relevancia. Al utilizar jueces basados en LLM como funciones de recompensas, puede escalar el RFT a dominios complejos sin necesidad de una amplia anotación humana, lo que permite una iteración rápida y una mejora continua de los modelos en varios casos de uso, más allá de los problemas de alineación tradicionales.
Selección del modo de razonamiento
Modos disponibles
-
ninguno: sin razonamiento (omita el campo reasoning_effort)
-
bajo: sobrecarga de razonamiento mínima
-
alto: capacidad de razonamiento máxima (opción predeterminada cuando se especifica reasoning_effort)
nota
No hay una opción media para el RFT. Si el campo reasoning_effort no está en la configuración, el razonamiento está desactivado. Cuando el razonamiento está habilitado, debe configurar max_new_tokens en 32 768 para dar cabida a las salidas de razonamiento extendido.
Cuándo se debe usar cada modo
Utilice el razonamiento alto para:
-
Tareas analíticas complejas
-
Resolución de problemas matemáticos
-
Deducción lógica de varios pasos
-
Tareas en las que pensar paso a paso agrega valor
Utilice ninguno (omita reasoning_effort) o un razonamiento bajo para:
-
Consultas de hechos sencillas
-
Clasificaciones directas
-
Optimización de velocidad y costo
-
Preguntas y respuestas directas
Compensaciones de costo y rendimiento
Los modos de razonamiento alto aumentan lo siguiente:
-
Tiempo y costo del entrenamiento
-
Latencia y costo de la inferencia
-
Capacidad del modelo para tareas de razonamiento complejas
Validación del juez de LLM
Antes de implementar un LLM como juez en producción, compruebe que las evaluaciones del modelo del juez se ajusten al juicio humano. Esto implica:
-
Medir las tasas de acuerdo entre el juez de LLM y los evaluadores humanos sobre muestras representativas de la tarea
-
Garantizar que el acuerdo del LLM con las personas cumpla o supere las tasas de acuerdo interhumano
-
Identificar posibles sesgos en el modelo del juez
-
Crear la confianza de que la señal de recompensas guíe al modelo en la dirección deseada
Este paso de validación ayuda a garantizar que el proceso de evaluación automatizada produzca modelos que cumplan con los requisitos de calidad de producción.
Configuración de Lambda para juez de LLM
El uso de un LLM como juez es una extensión del uso de las funciones de Lambda para el aprendizaje por refuerzo con recompensas verificables (RLVR). Dentro de la función de Lambda, puede hacer una llamada a uno de los modelos alojados en Amazon Bedrock.
Requisitos de configuración importantes:
| Configuración | Requisito | Details |
|---|---|---|
| Rendimiento de Amazon Bedrock | Cuota suficiente | Asegúrese de que la cuota de rendimiento para el modelo de Amazon Bedrock utilizado sea suficiente para la carga de trabajo de entrenamiento. |
| Tiempo de espera de Lambda | Tiempo de espera ampliado | Configure el tiempo de espera de la función de Lambda en hasta un máximo de 15 minutos. La configuración predeterminada es de 3 segundos, lo que no es suficiente para las respuestas del modelo de Amazon Bedrock. |
| Simultaneidad de Lambda | Mayor simultaneidad | La función de Lambda se invoca en paralelo durante el entrenamiento. Aumente la simultaneidad para maximizar el rendimiento disponible. |
| Configuración de fórmulas | Coincidencia de la configuración de Lambda | El límite de simultaneidad debe estar configurado en la fórmula. |
Creación y ejecución de trabajos
Inicio de un trabajo de entrenamiento
Utilice la plantilla de cuaderno de trabajos de entrenamiento de SageMaker: https://docs.aws.amazon.com/sagemaker/latest/dg/nova-fine-tuning-training-job.html#nova-model-training-jobs-notebook.
Requisitos de instancias
El contenedor admite tanto el entrenamiento de rango completo como el de LoRA:
-
Entrenamiento de LoRA: 2/4/6/8 × instancias p5.48xlarge o p5en.48xlarge
-
Entrenamiento de rango completo: 2/4/6/8 × instancias p5.48xlarge (obligatorias)
Supervisión del entrenamiento
Los registros de entrenamiento incluyen métricas completas en cada paso. Categorías de métricas clave:
Métricas de recompensas
-
critic/rewards/mean,critic/rewards/max,critic/rewards/min: distribución de recompensas -
val-score/rewards/mean@1: recompensas de validación
Comportamiento del modelo
-
actor/entropy: variación de la política (mayor = más exploratoria)
Estado del entrenamiento
-
actor/pg_loss: pérdida de gradiente de la política -
actor/pg_clipfrac: frecuencia de las actualizaciones recortadas -
actor/grad_norm: magnitud del gradiente
Características de la respuesta
-
prompt_length/mean,prompt_length/max,prompt_length/min: estadísticas del token de entrada -
response_length/mean,response_length/max,response_length/min: estadísticas del token de salida -
response/aborted_ratio: porcentaje de generación incompleta (0 = todo completado)
Desempeño
-
perf/throughput: rendimiento del entrenamiento -
perf/time_per_step: tiempo por paso del entrenamiento -
timing_per_token_ms/*: tiempo de procesamiento por token
Uso de recursos
-
perf/max_memory_allocated_gb,perf/max_memory_reserved_gb: memoria de la GPU -
perf/cpu_memory_used_gb: memoria de la CPU
Uso de modelos de ajuste fino
Después de finalizar el entrenamiento, el punto de control final del modelo se guarda en la ubicación de salida especificada. La ruta del punto de control está disponible en:
-
Registros de entrenamiento
-
Archivo
manifest.jsonen la ubicación de salida de Amazon S3 (definida poroutput_s3_urien el cuaderno)
Limitaciones y prácticas recomendadas
Limitaciones
-
Tiempo de espera de Lambda: las funciones de recompensas deben completarse en 15 minutos (evita procesos fuera de control y administra los costos).
-
Solo turno único: no se admiten conversaciones de varios turnos.
-
Requisitos de datos: necesita una diversidad suficiente, ya que tiene dificultades para obtener recompensas escasas (menos del 5 % de ejemplos positivos).
-
Costo computacional: es más caro que el refinamiento supervisado.
-
Sin datos multimodales: solo se admite el tipo de datos de texto.
Prácticas recomendadas
Empezar poco a poco
-
Comience con entre 100 y 200 ejemplos.
-
Valide la corrección de la función de recompensas.
-
Escale de forma gradual en función de los resultados.
Evaluación del entrenamiento previo
-
Pruebe el rendimiento del modelo de línea de base antes del RFT.
-
Si las recompensas son del 0 % de forma constante, utilice antes el SFT para establecer las capacidades básicas
-
Si las recompensas son superiores al 95 %, es posible que el RFT no sea necesario.
Supervisión del entrenamiento
-
Haga un seguimiento del promedio de las puntuaciones y la distribución de las recompensas
-
Observe si hay sobreajuste (aumento de recompensas de entrenamiento con disminución de recompensas de validación).
-
Busque patrones preocupantes:
-
Recompensas que se estancan por debajo de 0,15
-
Aumento de la variación de las recompensas a lo largo del tiempo
-
Reducción del rendimiento de validación
-
Optimización de las funciones de recompensas
-
Ejecución en segundos (no minutos)
-
Minimice las llamadas a la API externa.
-
Use algoritmos eficientes.
-
Implemente una gestión de errores adecuada.
-
Aproveche el escalado paralelo de Lambda.
Estrategia de iteración
Si las recompensas no mejoran:
-
Ajuste el diseño de la función de recompensas.
-
Aumente la diversidad de los conjuntos de datos.
-
Agregue más ejemplos representativos.
-
Verifique que las señales de recompensas sean claras y coherentes.
Aprendizaje curricular adaptativo
El aprendizaje curricular adaptativo es una característica opcional que selecciona dinámicamente qué peticiones de entrenamiento presentar al modelo durante RFT. En lugar de entrenar de manera uniforme con todas las peticiones, el entrenador utiliza el propio modelo para predecir la dificultad de cada petición y selecciona peticiones dentro del rango de dificultad productivo, donde el modelo a veces tiene éxito y otras veces falla. Esto maximiza la variación de resultados dentro de cada grupo de despliegue de GRPO, lo que genera una señal de ventaja más sólida, una convergencia más rápida y una mayor estabilidad del entrenamiento de RL al reducir las actualizaciones ruidosas de gradientes provenientes de peticiones demasiado fáciles o demasiado difíciles.
Cómo funciona el aprendizaje curricular adaptativo
Cuando el aprendizaje curricular adaptativo está habilitado, el ciclo de entrenamiento agrega una fase de predicción y selección antes de cada paso de despliegue:
-
Predicción: el modelo predice la tasa de aprobación (o dispersión de recompensas) para cada petición candidata mediante un formato de predicción con pocos ejemplos. Tres ejemplos del paso de entrenamiento anterior (uno fácil, uno intermedio y uno difícil) proporcionan contexto de calibración.
-
Selección: las peticiones se clasifican según qué tan cercana esté su dificultad prevista al objetivo de selección (valor predeterminado: tasa de aprobación del 50 %). Las mejores peticiones se aprueban para el despliegue; el resto se descarta sin consumir recursos de computación para el despliegue.
-
Entrenamiento: el entrenamiento estándar de GRPO continúa con las peticiones seleccionadas.
-
Retroalimentación: las tasas de aprobación reales del despliegue se comparan con las predicciones. El objetivo de selección se calibra automáticamente para corregir sesgos sistemáticos en las predicciones. Un gradiente REINFORCE entrena el predictor para mejorar las predicciones futuras.
Cuándo usar el aprendizaje curricular adaptativo
El aprendizaje curricular adaptativo es más eficaz en los siguientes escenarios:
-
Desea mejorar la estabilidad del entrenamiento de RL al garantizar que cada lote de entrenamiento contenga peticiones con una variación significativa de recompensas, lo que reduce las actualizaciones ruidosas de gradientes que pueden desestabilizar el aprendizaje.
-
Ya confirmó que el RFT básico mejora su métrica objetivo.
-
Desea acelerar la convergencia al concentrar los recursos de computación de entrenamiento en las peticiones más productivas.
-
El conjunto de datos es grande (más de 5000 peticiones) y contiene muchas peticiones fuera del rango de dificultad productivo que, de otro modo, desperdiciarían recursos de computación.
Configuración del aprendizaje curricular adaptativo
Agregue el bloque adaptive_curriculum en trainer dentro de la receta para habilitar el aprendizaje curricular adaptativo:
training_config: trainer: adaptive_curriculum: enable: true # Enable adaptive curriculum prompt selection. selection_pool_multiplier: 8 # Score 8 x global_batch_size candidates, keep best global_batch_size. prediction_mode: pass_rate # "pass_rate" for discrete rewards; "spread" for continuous rewards. exemplar_history_steps: 1 # Previous training steps kept in the rolling exemplar history buffer. reinforce_coef: 0.01 # Scale factor for the REINFORCE loss that trains the predictor (0 disables). predictor_prompt_column: predictor_prompt # Dataset field with clean problem text used by the predictor. selection_lookahead_steps: 4 # Future training batches pre-approved per curriculum screening pass.
La siguiente tabla describe cada parámetro del aprendizaje curricular adaptativo:
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
enable |
Booleano | false |
Indica si se habilita la selección de peticiones del aprendizaje curricular adaptativo. |
selection_pool_multiplier |
Número entero (1–32) | 8 |
Controla cuántas peticiones candidatas se evalúan en relación con el tamaño del lote de entrenamiento. Un valor de 8 significa que se evalúan 8 × global_batch_size peticiones y se seleccionan las mejores global_batch_size. Los valores más altos ofrecen una mejor calidad de selección, pero consumen más recursos de computación para inferencia. |
prediction_mode |
Cadena | pass_rate |
Modo de predicción para la estimación de dificultad de las peticiones. Use pass_rate para tareas de recompensa discreta (por ejemplo, verificación de exactitud), en las que el predictor estima la probabilidad de obtener una respuesta correcta. Use spread para tareas de recompensa continua, en las que el predictor estima la dispersión máxima-mínima de recompensas entre despliegues. |
exemplar_history_steps |
Número entero (≥1) | 1 |
Cantidad de pasos de entrenamiento anteriores que se conservan en el búfer de historial continuo para la selección de ejemplos. El predictor utiliza ejemplos de este historial para calibrar sus predicciones con pocos ejemplos. |
reinforce_coef |
Número (≥0) | 0.01 |
Factor de escala para la pérdida de REINFORCE que entrena el predictor de tasa de aprobación. Esto habilita el aprendizaje de circuito cerrado, en el que el predictor mejora su precisión a lo largo del entrenamiento. Establezca el valor en 0 para deshabilitar el entrenamiento del predictor. |
predictor_prompt_column |
Cadena | predictor_prompt |
Nombre del campo en el conjunto de datos que contiene el texto limpio del problema utilizado como petición para el predictor. Debe ser una versión concisa del problema, sin peticiones del sistema ni formato, para que el predictor pueda evaluar rápidamente la dificultad. |
selection_lookahead_steps |
Número entero (1–16) | 4 |
Cantidad de lotes de entrenamiento futuros que se aprueban por adelantado en una sola ronda de evaluación curricular por paso. Cada ronda evalúa selection_pool_multiplier × global_batch_size candidatos por paso; los valores más altos de selection_lookahead_steps repiten esa ronda varias veces para crear una cola de peticiones aprobadas, lo que reduce la sobrecarga del predictor por paso en conjuntos de datos con peticiones cortas. En el caso de conjuntos de datos de contexto largo, donde el propio predictor consume muchos recursos (consulte la sección de recomendaciones), establezca este valor en 1 de manera que el predictor se ejecute solo una vez por paso. |
Recomendaciones para conjuntos de datos de contexto largo
El aprendizaje curricular adaptativo funciona mediante la ejecución de un predictor ligero de tasa de aprobación sobre un conjunto de peticiones candidatas y la selección del lote más productivo para el despliegue. Cuando max_prompt_length es corto (unos pocos miles de tokens o menos), el predictor se ejecuta en unos segundos por ronda de evaluación y la sobrecarga del aprendizaje curricular es insignificante. A medida que aumenta la longitud de las peticiones, el tiempo de inferencia del predictor aumenta aproximadamente de forma cuadrática (la atención es O(n²) en función de la longitud de la secuencia), por lo que la evaluación puede llegar a dominar el tiempo por paso en conjuntos de datos donde las peticiones superan aproximadamente los 8000 tokens.
nota
El aprendizaje curricular adaptativo admite valores de max_prompt_length de hasta 32 768 tokens (32K). No se admite habilitarlo en conjuntos de datos que superen esa longitud; deshabilite el aprendizaje curricular adaptativo o reduzca la longitud de las peticiones antes del entrenamiento.
La siguiente configuración mantiene el aprendizaje curricular adaptativo práctico y rentable en conjuntos de datos de contexto largo. Aplíquela en conjunto; cada configuración aborda distintos componentes del costo de evaluación.
Valores típicos de max_prompt_length |
Configuración recomendada del aprendizaje curricular adaptativo |
|---|---|
| Hasta 8000 tokens | Use los valores predeterminados: selection_pool_multiplier: 8, selection_lookahead_steps: 4. La sobrecarga de evaluación es baja y no requiere ajustes. |
| Más de 8000 y hasta 16 000 tokens | Configurar selection_lookahead_steps: 2. Esto reduce a la mitad la cantidad de rondas del predictor por paso, mientras mantiene suficientes peticiones preaprobadas en la cola para evitar la falta de despliegues. |
| Más de 16 000 y hasta 24 000 tokens | Mantenga selection_lookahead_steps: 2 y reduzca selection_pool_multiplier a 4. El conjunto más pequeño reduce a la mitad el tamaño del lote del predictor, con cierto impacto en la calidad de selección; en conjunto, estos ajustes mantienen controlado el tiempo de evaluación por paso. |
| Más de 24 000 y hasta 32 000 tokens | Use selection_pool_multiplier: 4 con selection_lookahead_steps: 1. El predictor se ejecuta una vez por paso de entrenamiento sobre un conjunto de tamaño mínimo. Esta es la configuración compatible más agresiva; no se admite superar los 32 000. |
Ejemplo de configuración ajustada para un conjunto de datos de contexto largo (peticiones de aproximadamente 24 000 a 32 000 tokens):
training_config: max_length: 32768 global_batch_size: 32 trainer: adaptive_curriculum: enable: true selection_pool_multiplier: 4 # Smaller pool keeps predictor prefill bounded. selection_lookahead_steps: 1 # Predictor runs once per training step. prediction_mode: pass_rate exemplar_history_steps: 1 reinforce_coef: 0.01 predictor_prompt_column: predictor_prompt
Preparación de datos para el aprendizaje curricular adaptativo
Cuando utilice aprendizaje curricular adaptativo, los datos de entrenamiento deben incluir un campo predictor_prompt (o el nombre de campo especificado en predictor_prompt_column) que contenga una versión concisa del texto del problema. Este campo lo utiliza el predictor de tasa de aprobación para evaluar rápidamente la dificultad de una petición sin procesar el contexto completo de la conversación.
Ejemplo de entrada JSONL con una petición para el predictor:
{ "messages": [ { "role": "system", "content": "You are a math tutor. Show your work step by step." }, { "role": "user", "content": "A train travels 120 miles in 2 hours. If it then increases speed by 50%, how far will it travel in the next 3 hours?" } ], "reference_answer": "270 miles", "predictor_prompt": "A train travels 120 miles in 2 hours. Speed increases 50%. Distance in next 3 hours?" }
Si el campo predictor_prompt no está presente, el sistema vuelve a utilizar la petición completa del campo messages.
Ejemplo de receta RFT completa con aprendizaje curricular adaptativo
El siguiente ejemplo muestra una receta LoRA RFT completa con aprendizaje curricular adaptativo habilitado:
run: name: "my-rft-adaptive-curriculum" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://<bucket>/<data-file> replicas: 4 generation_replicas: 2 reward_lambda_arn: arn:aws:lambda:<region>:<account-id>:function:<function-name> training_config: max_length: 8192 global_batch_size: 32 reasoning_effort: null # Non-reasoning mode. data: shuffle: true rollout: rollout_strategy: type: off_policy_async age_tolerance: 2 advantage_strategy: number_generation: 16 # Higher n for better advantage estimates. generator: max_new_tokens: 6000 temperature: 1.0 rewards: preset_reward_function: exact_match # Or null for custom Lambda reward. api_endpoint: lambda_arn: ${oc.select:run.reward_lambda_arn} # Reuse the top-level run.reward_lambda_arn so the two stay in sync. lambda_concurrency_limit: 12 lambda_batch_size: 128 trainer: max_steps: 500 save_steps: 50 test_steps: 25 refit_freq: 4 clip_ratio_high: 0.2 ent_coeff: 0.0 kl_loss_coef: 0.0 optim_config: lr: 1e-6 weight_decay: 0.0 peft: peft_scheme: "lora" lora_tuning: alpha: 64 lora_plus_lr_ratio: 64.0 adaptive_curriculum: enable: true selection_pool_multiplier: 8 prediction_mode: pass_rate exemplar_history_steps: 1 reinforce_coef: 0.01 predictor_prompt_column: predictor_prompt
Supervisión del aprendizaje curricular adaptativo
Cuando el aprendizaje curricular adaptativo está habilitado, se registran métricas adicionales en cada paso de entrenamiento:
-
Tasa de aprobación prevista frente a real: la tasa de aprobación media prevista para las peticiones seleccionadas se compara con la tasa de aprobación real observada después del despliegue. Una diferencia amplia indica que el predictor necesita más tiempo de calibración.
-
Objetivo de selección: objetivo de selección actual calibrado automáticamente. Comienza en 0,5 y se ajusta según la precisión de las predicciones.
-
Recuento del filtro de dominio: cantidad de peticiones excluidas porque el modelo ya las domina de forma constante.
nota
Los primeros uno o dos pasos de entrenamiento se ejecutan sin selección adaptativa (el predictor necesita al menos un paso de historial para generar ejemplos). La selección adaptativa completa comienza en el paso 3.
Capacidades avanzadas: Nova Forge
Para los usuarios que requieren capacidades avanzadas más allá de las limitaciones del RFT estándar, Nova Forge está disponible como un servicio de suscripción de pago que ofrece:
-
Soporte para conversación de varios turnos
-
Funciones de recompensas con un tiempo de ejecución superior a 15 minutos
-
Algoritmos y opciones de ajuste adicionales
-
Modificaciones de fórmulas de entrenamiento personalizadas
-
Técnicas de IA de vanguardia
Nova Forge se ejecuta en SageMaker HyperPod y se ha diseñado para ayudar a los clientes empresariales a crear sus propios modelos de frontera.
Comandos y consejos útiles
Hay disponible una colección de scripts de observabilidad
Los scripts disponibles le permiten:
-
Habilitar las notificaciones de correo electrónico para actualizar el estado de los trabajos de entrenamiento
-
Obtener estimaciones del tiempo de entrenamiento en función de las configuraciones de los trabajos
-
Obtener aproximaciones del tiempo que se espera que dure el entrenamiento para los trabajos en curso
Instalación
nota
Asegúrese de actualizar las credenciales de AWS antes de utilizar cualquiera de los siguientes scripts.
pip install boto3 git clone https://github.com/aws-samples/amazon-nova-samples.git cd amazon-nova-samples/customization/SageMakerUilts/SageMakerJobsMonitoring/
Uso básico
# Enabling email notifications for training job status updates python enable_sagemaker_job_notifs.py --email test@amazon.com test2@gmail.com --region us-east-1 --platform SMTJ Creating resources........ Please check your email for a subscription confirmation email, and click 'Confirm subscription' to start receiving job status email notifications! You'll receive the confirmation email within a few minutes.
# Obtaining training time estimates based on job configurations python get_training_time_estimate.py
# Obtaining approximations for how long training is expected to take for in-progress jobs python get-training-job-progress.py --region us-east-1 --job-name my-training-job --num-dataset-samples 1000
Consulte en esta página