Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Evaluación mediante RFT
¿Qué es la evaluación RFT?
La evaluación RFT le permite evaluar el rendimiento de su modelo mediante funciones de recompensa personalizadas antes, durante o después del entrenamiento de aprendizaje reforzado. A diferencia de las evaluaciones estándar que utilizan métricas predefinidas, la evaluación RFT le permite definir sus propios criterios de éxito mediante una función Lambda que puntúa los resultados del modelo en función de sus requisitos específicos.
¿Por qué evaluar con la RFT?
La evaluación es crucial para determinar si el proceso de ajuste fino de la RL tiene:
-
Alineación mejorada del modelo con su caso de uso específico y sus valores humanos
-
Se mantuvieron o mejoraron las capacidades del modelo en tareas clave
-
Se evitaron los efectos secundarios no deseados, como la reducción de la objetividad, el aumento de la verbosidad o la degradación del rendimiento en otras tareas
-
Cumplió sus criterios de éxito personalizados, tal como los define su función de recompensas
¿Cuándo utilizar la evaluación RFT
Utilice la evaluación RFT en los siguientes escenarios:
-
Antes de la capacitación sobre RFT: establezca métricas de referencia en su conjunto de datos de evaluación
-
Durante el entrenamiento de RFT: supervise el progreso del entrenamiento con puntos de control intermedios
-
Después de la formación en RFT: valide que el modelo final cumpla con sus requisitos
-
Comparación de modelos: evalúe varias versiones de modelos utilizando criterios de recompensa coherentes
nota
Utilice la evaluación de 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 datos de entrada
Los datos de entrada de la evaluación RFT deben seguir el formato OpenAI Reinforcement Fine-Tuning. Cada ejemplo es un objeto JSON que contiene:
-
messages— Matriz de turnos conversacionales consystemy rolesuser -
reference_answer— Los resultados esperados o los datos básicos utilizados por tu función de recompensa para puntuar
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, vídeo)
-
Conversaciones en un solo turno: 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 realiza sobre las terminaciones generadas a partir del modelo especificado
Preparando su receta de evaluación
Cuaderno de ejemplo
Para ver un ejemplo completo, consulte los cuadernos de evaluación.
Ejemplo de configuración de recetas
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 recompensa preestablecidas
Dos funciones de recompensa predefinidas (prime_codeyprime_math) de la biblioteca verl de código abierto están disponibles como capa Lambda para una fácil integración con las funciones de RFT Lambda.
Descripción general de
Estas funciones predefinidas proporcionan out-of-the-box capacidades de evaluación 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 Lambda de las nova-custom-eval-sdk versiones.
-
Publique la capa Lambda mediante la interfaz de línea de AWS comandos ()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 -
Añada la capa a la función Lambda en AWS Management Console (seleccione la preset-function-layer capa personalizada y añada también AWSSDKPandas-Python 312 para las numerosas dependencias).
-
Importe y use en su código 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 ejecutando el código comparándolo con casos de prueba y midiendo 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
-
Extracción automática de código de bloques de códigos rebajados
-
Detección de funciones y pruebas basadas en llamadas
-
Pruebe la ejecución de casos con protección de tiempo de espera
-
Comprobaciones de validación y compilación de la sintaxis
-
Informes detallados de errores con rastreos
función prime_math
Evalúa el razonamiento matemático y las capacidades de resolución de problemas con apoyo 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
-
Evaluación matemática simbólica mediante SymPy
-
Múltiples formatos de respuesta (LaTeX, texto plano, simbólico)
-
Comprobación de equivalencias matemáticas
-
Normalización y simplificación de expresiones
Requisitos del formato de los datos
Para la evaluación del código
-
Entradas: matriz de argumentos de funciones (tipos adecuados: enteros, cadenas, etc.)
-
Salidas: matriz de valores de retorno 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 LaTe X, 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 su función de recompensa con datos de muestra antes de implementarla
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 mal formados
-
Escenarios de tiempo de espera para bucles infinitos
-
Expresiones matemáticas no válidas
Creando tu función de recompensa
Requisitos de ARN de Lambda
Su ARN de Lambda debe seguir este formato:
"arn:aws:lambda:*:*:function:*SageMaker*"
Si la 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 solicitud Lambda
La función 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 content matriz anidada, que coincide con el formato de datos de entrada. El último mensaje con la función nova_assistant contiene la respuesta generada por el modelo.
Formato de respuesta Lambda
La función 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 introducido -
aggregate_reward_score— Puntuación general (normalmente de 0,0 a 1,0) -
metrics_list— Conjunto de métricas individuales con:-
name— Identificador métrico (por ejemplo, «precisión», «fluidez») -
value— Puntuación métrica (normalmente de 0,0 a 1,0) -
type— «Métrica» (para informar) o «Recompensa» (utilizada en el entrenamiento)
-
Permisos de IAM
Permisos necesarios
Su función de SageMaker ejecución debe tener permisos para invocar la función Lambda. Añada esta política a su función de SageMaker ejecución:
{ "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
La función de ejecución de la función Lambda necesita permisos básicos de ejecución de Lambda:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }
Si su función Lambda accede a otros AWS servicios (por ejemplo, S3 para datos de referencia o DynamoDB para registro), añada esos permisos a la función de ejecución de Lambda.
Ejecutar el 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 su receta: actualice la receta de muestra con su configuración:
-
model_name_or_pathConfigúrelo a la ubicación de su modelo -
lambda_arnConfigúrelo a su función de recompensa ARN -
output_s3_pathConfigúrelo en la ubicación de salida deseada -
Ajuste
inferencelos parámetros según sea necesario
Guarde la receta como
rft_eval_recipe.yaml -
-
Ejecute la evaluación: ejecute el trabajo de evaluación con el cuaderno suministrado: Cuadernos de evaluación
-
Supervise el progreso: supervise su trabajo de evaluación mediante:
-
SageMaker Consola: compruebe el estado y los registros del trabajo
-
CloudWatch Registros: vea los registros de ejecución detallados
-
Registros Lambda: Depurar problemas con la función de recompensa
-
Entender los resultados de la evaluación
Formato de salida
El trabajo de evaluación envía los resultados a la ubicación 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 de RFT es idéntico al formato de respuesta Lambda. El servicio de evaluación analiza la respuesta de la función 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 de recompensa agregada
-
Rango: normalmente de 0.0 (peor) a 1.0 (mejor), pero depende de la implementación
-
Objetivo: Un solo número que resume el rendimiento general
-
Uso: comparar modelos, realizar un seguimiento de las mejoras con respecto a la formación
Métricas individuales
-
Tipo de métrica: métricas informativas para el análisis
-
Tipo de recompensa: métricas utilizadas durante el entrenamiento de RFT
-
Interpretación: Los valores más altos generalmente indican un mejor rendimiento (a menos que diseñe métricas inversas)
Puntos de referencia de rendimiento
Lo que constituye un rendimiento «bueno» depende del caso de uso:
| Rango de puntuación | Interpretación | Action |
|---|---|---|
| 0.8 - 1.0 | Excelente | Modelo listo para su despliegue |
| 0,6 - 0,8 | Buena | Las mejoras menores pueden ser beneficiosas |
| 0,4 - 0,6 | Regular | Se necesita una mejora significativa |
| 0.0 - 0.4 | Pobre | Revise los datos de entrenamiento y la función de recompensa |
importante
Estas son pautas 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 costo-beneficio de la formación continua.
Resolución de problemas
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
| Tiempo de espera de Lambda | Cálculo complejo de recompensas | Aumente el tiempo de espera de Lambda u optimice la función |
| Permiso denegado | Faltan permisos de IAM: | Verificar que SageMaker el rol pueda invocar Lambda |
| Puntuaciones inconsistentes | Función de recompensa no determinista | Utilice semillas fijas o lógica determinista |
| Faltan resultados | No se detectaron errores de Lambda | Añada una gestión integral de errores en Lambda |
Lista de verificació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 SageMaker → Invocación a Lambda
-
Revise CloudWatch los registros 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 las funciones de recompensa básicas e itere
-
Pruebe Lambda por separado: utilice los eventos de prueba Lambda antes de la evaluación completa
-
Validar 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 recompensa junto con las versiones del modelo
-
Supervise los costos: las invocaciones a Lambda y el tiempo de cómputo afectan los costos
-
Registre exhaustivamente: utilice sentencias impresas 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
Tras completar la evaluación de la RFT:
-
Si los resultados son satisfactorios: implemente el modelo en producción
-
Si es necesaria una mejora:
-
Ajusta la función de recompensa
-
Recopila más datos de entrenamiento
-
Modifique los hiperparámetros de entrenamiento
-
Ejecute iteraciones de entrenamiento de RFT adicionales
-
-
Supervisión continua: reevalúe periódicamente con nuevos datos