Evaluación del RFT
¿Qué es la evaluación del RFT?
La evaluación del RFT le permite evaluar el rendimiento del modelo mediante funciones de recompensas personalizadas antes, durante o después del entrenamiento de aprendizaje por refuerzo. A diferencia de las evaluaciones estándar que utilizan métricas predefinidas, la evaluación del RFT le permite definir sus propios criterios de éxito mediante una función de Lambda que puntúa los resultados del modelo en función de sus requisitos específicos.
¿Por qué se debe evaluar con el RFT?
La evaluación es crucial para determinar si el proceso de refinamiento de RL:
-
Ha mejorado la alineación del modelo con su caso de uso específico y sus valores humanos.
-
Ha mantenido o mejorado las capacidades del modelo en tareas clave.
-
Ha evitado efectos secundarios no deseados, como la reducción de la objetividad, el aumento de los detalles o la degradación del rendimiento en otras tareas.
-
Ha cumplido con los criterios de éxito personalizados, tal como los define su función de recompensas.
¿Cuándo se debe utilizar la evaluación del RFT?
Utilice la evaluación del RFT en los siguientes escenarios:
-
Antes del entrenamiento RFT: establezca métricas de línea de base en su conjunto de datos de evaluación.
-
Durante el entrenamiento RFT: supervise el progreso del entrenamiento con puntos de control intermedios.
-
Después del entrenamiento RFT: valide que el modelo final cumpla con sus requisitos.
-
Comparación de modelos: evalúe varias versiones del modelo con criterios de recompensa coherentes.
nota
Utilice la evaluación del RFT cuando necesite métricas personalizadas y específicas de un dominio. Para una evaluación de uso general (precisión, perplejidad, BLEU), utilice métodos de evaluación estándar.
Requisitos del formato de los datos
Estructura de los datos de entrada
Los datos de entrada de la evaluación del RFT deben seguir el formato de refinamiento por refuerzo de OpenAI. Cada ejemplo es un objeto JSON que contiene lo siguiente:
-
messages: matriz de turnos conversacionales con los rolessystemyuser -
reference_answer: datos de salida o reales esperados que utiliza la función de recompensas para la puntuación
Ejemplo de formato de datos
{ "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Solve for x. Return only JSON like {\"x\": <number>}. Equation: 2x + 5 = 13" } ] } ], "reference_answer": { "x": 4 } }
Limitaciones actuales
-
Solo texto: no se admiten entradas multimodales (imágenes, audio, video).
-
Conversaciones de turno único: solo admite mensajes de un solo usuario (no se admiten diálogos de varios turnos).
-
Formato JSON: los datos de entrada deben estar en formato JSONL (un objeto JSON por línea).
-
Resultados del modelo: la evaluación se lleva a cabo en las terminaciones generadas a partir del modelo especificado.
Preparación de la fórmula de evaluación
Cuaderno de ejemplo
Para ver un ejemplo completo, consulte Cuadernos de evaluación.
Configuración de fórmula de muestra
run: name: nova-lite-rft-eval-job model_type: amazon.nova-lite-v1:0:300k model_name_or_path: s3://escrow_bucket/model_location # [MODIFIABLE] S3 path to your model or model identifier replicas: 1 # [MODIFIABLE] For SageMaker Training jobs only; fixed for HyperPod jobs data_s3_path: "" # [REQUIRED FOR HYPERPOD] Leave empty for SageMaker Training jobs and use TrainingInput in sagemaker python SDK output_s3_path: "" # [REQUIRED] Output artifact S3 path for evaluation results evaluation: task: rft_eval # [FIXED] Do not modify strategy: rft_eval # [FIXED] Do not modify metric: all # [FIXED] Do not modify # Inference Configuration inference: max_new_tokens: 8192 # [MODIFIABLE] Maximum tokens to generate top_k: -1 # [MODIFIABLE] Top-k sampling parameter top_p: 1.0 # [MODIFIABLE] Nucleus sampling parameter temperature: 0 # [MODIFIABLE] Sampling temperature (0 = deterministic) top_logprobs: 0 # [MODIFIABLE] Set between 1-20 to enable logprobs output # ============================================================================= # Bring Your Own Reinforcement Learning Environment # ============================================================================= rl_env: reward_lambda_arn: arn:aws:lambda:<region>:<account_id>:function:<reward-function-name>
Funciones de recompensas predefinidas
Hay dos funciones de recompensas predefinidas (prime_code y prime_math) disponibles como capa de Lambda para una integración fácil con las funciones de Lambda del RFT.
Descripción general
Estas funciones predefinidas ofrecen capacidades de evaluación listas para usar para:
-
prime_code: generación de código y evaluación de la corrección -
prime_math: evaluación del razonamiento matemático y la resolución de problemas
Configuración rápida
-
Descargue la capa de Lambda de las versiones de nova-custom-eval-sdk
. -
Publique la capa de Lambda mediante la Interfaz de la línea de comandos de AWS (AWS CLI):
aws lambda publish-layer-version \ --layer-name preset-function-layer \ --description "Preset reward function layer with dependencies" \ --zip-file fileb://universal_reward_layer.zip \ --compatible-runtimes python3.9 python3.10 python3.11 python3.12 \ --compatible-architectures x86_64 arm64 -
Agregue la capa a la función de Lambda en la Consola de administración de AWS (seleccione preset-function-layer en la capa personalizada y agregue también AWSSDKPandas-P.ython312 para dependencias de NumPy).
-
Impórtela y úsela en el código de Lambda:
from prime_code import compute_score # For code evaluation from prime_math import compute_score # For math evaluation
Función prime_code
Evalúa las tareas de generación de código de Python mediante la ejecución del código en casos de prueba y la medición de la corrección.
Ejemplo de formato de conjunto de datos de entrada
{"messages":[{"role":"user","content":"Write a function that returns the sum of two numbers."}],"reference_answer":{"inputs":["3\n5","10\n-2","0\n0"],"outputs":["8","8","0"]}} {"messages":[{"role":"user","content":"Write a function to check if a number is even."}],"reference_answer":{"inputs":["4","7","0","-2"],"outputs":["True","False","True","True"]}}
Características principales de
-
Extracción automática de código de bloques de código Markdown
-
Detección de funciones y pruebas basadas en llamadas
-
Ejecución de casos de prueba con protección de tiempo de espera
-
Comprobaciones de compilación y validación de la sintaxis
-
Informes de errores detallados con rastreos
Función prime_math
Evalúa el razonamiento matemático y las capacidades de resolución de problemas con soporte matemático simbólico.
Formato de entrada
{"messages":[{"role":"user","content":"What is the derivative of x^2 + 3x?."}],"reference_answer":"2*x + 3"}
Características principales de
-
Evaluación matemática simbólica con SymPy
-
Múltiples formatos de respuesta (LaTeX, texto sin formato, simbólico)
-
Comprobación de equivalencia matemática
-
Normalización y simplificación de expresiones
Requisitos del formato de los datos
Para la evaluación de código
-
Entradas: matriz de argumentos de funciones (tipos adecuados: enteros, cadenas, etc.)
-
Salidas: matriz de valores de devolución esperados (tipos adecuados: booleanos, números, etc.)
-
Código: debe estar en Python con definiciones de funciones claras
Para la evaluación matemática
-
Respuesta de referencia: expresión matemática o valor numérico
-
Respuesta: puede ser LaTeX, texto plano o notación simbólica
-
Equivalencia: se comprueba simbólicamente, no solo la coincidencia de cadenas
Prácticas recomendadas
-
Utilice los tipos de datos adecuados en los casos de prueba (números enteros frente a cadenas, valores booleanos frente a “verdaderos”).
-
Proporcione firmas de funciones claras en los problemas de código.
-
Incluya casos extremos en las entradas de prueba (cero, números negativos, entradas vacías).
-
Formatee las expresiones matemáticas de forma coherente en las respuestas de referencia.
-
Pruebe la función de recompensas con datos de ejemplo antes de la implementación.
Gestión de errores
Ambas funciones incluyen una sólida gestión de errores para:
-
Errores de compilación en el código generado
-
Excepciones de tiempo de ejecución durante la ejecución
-
Datos de entrada incorrectos
-
Escenarios de tiempo de espera para bucles infinitos
-
Expresiones matemáticas no válidas
Creación de la función de recompensas
Requisitos del ARN de Lambda
El ARN de Lambda debe seguir este formato:
"arn:aws:lambda:*:*:function:*SageMaker*"
Si Lambda no tiene este esquema de nombres, el trabajo fallará y mostrará este error:
[ERROR] Unexpected error: lambda_arn must contain one of: ['SageMaker', 'sagemaker', 'Sagemaker'] when running on SMHP platform (Key: lambda_arn)
Formato de la solicitud de Lambda
La función de Lambda recibe datos en este formato:
[ { "id": "sample-001", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Do you have a dedicated security team?" } ] }, { "role": "nova_assistant", "content": [ { "type": "text", "text": "As an AI developed by Company, I don't have a dedicated security team..." } ] } ], "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional security team..." } } ]
nota
La estructura del mensaje incluye la matriz content anidada, que coincide con el formato de datos de entrada. El último mensaje con el rol nova_assistant contiene la respuesta generada por el modelo.
Formato de la respuesta de Lambda
La función de Lambda debe devolver datos en este formato:
[ { "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] } ]
Campos de respuesta
-
id: debe coincidir con el ID de muestra de entrada -
aggregate_reward_score: puntuación general (normalmente de 0,0 a 1,0) -
metrics_list, matriz de métricas individuales con:-
name: identificador de la métrica (por ejemplo, “precisión”, “fluidez”) -
value: puntuación de la métrica (normalmente de 0,0 a 1,0) -
type: “Métrica” (para informes) o “Recompensa” (utilizada en el entrenamiento)
-
Permisos de IAM
Permisos necesarios
El rol de ejecución de SageMaker debe tener permisos para invocar la función de Lambda. Agregue esta política al rol de ejecución de SageMaker:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }
Rol de ejecución de Lambda
El rol de ejecución de una función de Lambda necesita permisos de ejecución de Lambda básicos:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }
Si la función de Lambda accede a otros servicios de AWS (por ejemplo, S3 para los datos de referencia o DynamoDB para el registro), agregue esos permisos al rol de ejecución de Lambda.
Ejecución del trabajo de evaluación
-
Prepare los datos: formatee los datos de evaluación de acuerdo con los requisitos de formato de los datos y cargue el archivo JSONL en S3:
s3://your-bucket/eval-data/eval_data.jsonl. -
Configure la fórmula, actualice la fórmula de muestra con la configuración:
-
Establezca
model_name_or_pathen la ubicación del modelo. -
Establezca
lambda_arnen el ARN de la función de recompensas. -
Establezca
output_s3_pathen la ubicación de salida deseada. -
Ajuste los parámetros de
inferencesegún sea necesario.
Guarde la fórmula como
rft_eval_recipe.yaml. -
-
Ejecute la evaluación, ejecute el trabajo de evaluación con el cuaderno proporcionado: Cuadernos de evaluación.
-
Supervise el progreso, supervise el trabajo de evaluación mediante:
-
Consola de SageMaker: compruebe el estado y los registros de los trabajos.
-
Registros de CloudWatch: consulte los registros de ejecución detallados.
-
Registros de Lambda: depure problemas de la función de recompensas.
-
Descripción de los resultados de la evaluación
Formato de salida
El trabajo de evaluación envía los resultados a la ubicación de S3 especificada en formato JSONL. Cada línea contiene los resultados de la evaluación de una muestra:
{ "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] }
nota
El resultado del trabajo de evaluación del RFT es idéntico al formato de la respuesta de Lambda. El servicio de evaluación analiza la respuesta de la función de Lambda sin modificaciones, lo que garantiza la coherencia entre los cálculos de recompensas y los resultados finales.
Interpretación de los resultados
Puntuación total de recompensas
-
Rango: normalmente de 0,0 (peor) a 1,0 (mejor), pero depende de la implementación
-
Propósito: un solo número que resume el rendimiento general
-
Uso: comparación de modelos, seguimiento de las mejoras con respecto al entrenamiento
Métricas individuales
-
Tipo de métrica: métricas informativas para el análisis
-
Tipo de recompensa: métricas utilizadas durante el entrenamiento RFT
-
Interpretación: unos valores más altos suelen indicar un mejor rendimiento (a menos que diseñe métricas inversas)
Puntos de referencia de rendimiento
Lo que constituye un rendimiento “bueno” depende de su caso de uso:
| Intervalo de puntuación | Interpretación | Action |
|---|---|---|
| Entre 0,8 y 1,0 | Excelente | Modelo listo para su implementación |
| Entre 0,6 y 0,8 | Buena | Podría beneficiarse de mejoras menores |
| Entre 0,4 y 0,6 | Regular | Necesita una mejora importante |
| Entre 0,0 y 0,4 | Deficiente | Revisión de los datos de entrenamiento y de la función de recompensas |
importante
Estas son unas directrices generales. Defina sus propios umbrales en función de los requisitos empresariales, el rendimiento básico del modelo, las restricciones específicas del dominio y el análisis de la relación entre costo y beneficio del entrenamiento continuo.
Solución de problemas
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
| Tiempo de espera de Lambda | Cálculo de recompensas complejo | Aumente el tiempo de espera de Lambda u optimice la función. |
| Permiso denegado | Faltan permisos de IAM: | Verifique que el rol de SageMaker puede invocar la función de Lambda. |
| Puntuaciones incoherentes | Función de recompensa no determinista | Utilice semillas fijas o lógica determinista. |
| Faltan resultados | Errores de Lambda no detectados | Agregue gestión integral de errores en Lambda. |
Lista de comprobación de depuración
-
Compruebe que los datos de entrada sigan el formato correcto con matrices de contenido anidadas.
-
Confirme que el ARN de Lambda sea correcto y que la función esté implementada.
-
Compruebe los permisos de IAM para la invocación de SageMaker → Lambda.
-
Revise los registros de CloudWatch para detectar errores de Lambda.
-
Valide que la respuesta de Lambda coincida con el formato esperado.
Prácticas recomendadas
-
Comience de forma sencilla: comience con funciones de recompensas básicas e itere.
-
Pruebe Lambda por separado: utilice los eventos de prueba de Lambda antes de la evaluación completa.
-
Valide en un conjunto de datos pequeño: ejecute la evaluación en el subconjunto antes que en el conjunto de datos completo.
-
Control de versiones: haga un seguimiento de las versiones de las funciones de recompensas junto con las versiones del modelo.
-
Supervise los costos: las invocaciones de Lambda y el tiempo de computación afectan a los costos.
-
Registre exhaustivamente: utilice instrucciones de impresión en Lambda para la depuración.
-
Establezca los tiempos de espera de forma adecuada: equilibre la paciencia y el costo.
-
Documente las métricas: defina claramente lo que mide cada métrica.
Siguientes pasos
Después de completar la evaluación del RFT:
-
Si los resultados son satisfactorios: implemente el modelo en producción.
-
Si es necesaria una mejora:
-
Ajuste la función de recompensas.
-
Recopile más datos de entrenamiento.
-
Modifique los hiperparámetros de entrenamiento.
-
Ejecute iteraciones de entrenamiento RFT adicionales.
-
-
Supervisión continua: reevalúe periódicamente con nuevos datos.