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.
Evalúe con puntadores preestablecidos y personalizados
Cuando se utiliza el tipo de evaluación Custom Scorer, SageMaker Evaluation admite dos puntuadores integrados (también denominados «funciones de recompensa») Prime Math y Prime Code tomados de la biblioteca de formación de volcengine/verl RL
Puntuadores integrados
Prime Math
El mejor anotador de matemáticas espera un conjunto de datos JSONL personalizado de entradas que contenga una pregunta matemática como la prompt/query respuesta correcta como verdad fundamental. El conjunto de datos puede tener cualquiera de los formatos compatibles que se mencionan en. Formatos de conjuntos de datos compatibles para Bring-Your-Own-Dataset tareas (BYOD)
Ejemplo de entrada en un conjunto de datos (ampliado para mayor claridad):
{ "system":"You are a math expert: ", "query":"How many vertical asymptotes does the graph of $y=\\frac{2}{x^2+x-6}$ have?", "response":"2" # Ground truth aka correct answer }
Código principal
El evaluador de código principal espera un conjunto de datos JSONL personalizado compuesto por entradas que contengan un problema de codificación y casos de prueba especificados en el campo. metadata Estructura los casos de prueba con el nombre de función esperado para cada entrada, las entradas de muestra y las salidas esperadas.
Ejemplo de entrada en un conjunto de datos (ampliado para mayor claridad):
{ "system":"\\nWhen tackling complex reasoning tasks, you have access to the following actions. Use them as needed to progress through your thought process.\\n\\n[ASSESS]\\n\\n[ADVANCE]\\n\\n[VERIFY]\\n\\n[SIMPLIFY]\\n\\n[SYNTHESIZE]\\n\\n[PIVOT]\\n\\n[OUTPUT]\\n\\nYou should strictly follow the format below:\\n\\n[ACTION NAME]\\n\\n# Your action step 1\\n\\n# Your action step 2\\n\\n# Your action step 3\\n\\n...\\n\\nNext action: [NEXT ACTION NAME]\\n\\n", "query":"A number N is called a factorial number if it is the factorial of a positive integer. For example, the first few factorial numbers are 1, 2, 6, 24, 120,\\nGiven a number N, the task is to return the list/vector of the factorial numbers smaller than or equal to N.\\nExample 1:\\nInput: N = 3\\nOutput: 1 2\\nExplanation: The first factorial number is \\n1 which is less than equal to N. The second \\nnumber is 2 which is less than equal to N,\\nbut the third factorial number is 6 which \\nis greater than N. So we print only 1 and 2.\\nExample 2:\\nInput: N = 6\\nOutput: 1 2 6\\nExplanation: The first three factorial \\nnumbers are less than equal to N but \\nthe fourth factorial number 24 is \\ngreater than N. So we print only first \\nthree factorial numbers.\\nYour Task: \\nYou don't need to read input or print anything. Your task is to complete the function factorialNumbers() which takes an integer N as an input parameter and return the list/vector of the factorial numbers smaller than or equal to N.\\nExpected Time Complexity: O(K), Where K is the number of factorial numbers.\\nExpected Auxiliary Space: O(1)\\nConstraints:\\n1<=N<=10^{18}\\n\\nWrite Python code to solve the problem. Present the code in \\n```python\\nYour code\\n```\\nat the end.", "response": "", # Dummy string for ground truth. Provide a value if you want NLP metrics like ROUGE, BLEU, and F1. ### Define test cases in metadata field "metadata": { "fn_name": "factorialNumbers", "inputs": ["5"], "outputs": ["[1, 2]"] } }
Puntuadores personalizados (traiga sus propias métricas)
Personalice completamente el flujo de trabajo de evaluación de sus modelos con una lógica de posprocesamiento personalizada que le permita calcular métricas personalizadas adaptadas a sus necesidades. Debe implementar su marcador personalizado como una función AWS Lambda que acepte las respuestas del modelo y devuelva las puntuaciones de recompensa.
Ejemplo de carga útil de entrada Lambda
Su AWS Lambda personalizada espera entradas en el formato OpenAI. Ejemplo:
{ "id": "123", "messages": [ { "role": "user", "content": "Do you have a dedicated security team?" }, { "role": "assistant", "content": "As an AI developed by Amazon, I do not have a dedicated security team..." } ], "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional security team..." } }
Ejemplo de carga útil de salida Lambda
El contenedor SageMaker de evaluación espera que sus respuestas de Lambda sigan este formato:
{ "id": str, # Same id as input sample "aggregate_reward_score": float, # Overall score for the sample "metrics_list": [ # OPTIONAL: Component scores { "name": str, # Name of the component score "value": float, # Value of the component score "type": str # "Reward" or "Metric" } ] }
Definición de Lambda personalizada
Usa el siguiente esquema como punto de partida para tu propia función.
def lambda_handler(event, context): return lambda_grader(event) def lambda_grader(samples: list[dict]) -> list[dict]: """ Args: Samples: List of dictionaries in OpenAI format Example input: { "id": "123", "messages": [ { "role": "user", "content": "Do you have a dedicated security team?" }, { "role": "assistant", "content": "As an AI developed by Company, I do not have a dedicated security team..." } ], # This section is the same as your training dataset "reference_answer": { "compliant": "No", "explanation": "As an AI developed by Company, I do not have a traditional security team..." } } Returns: List of dictionaries with reward scores: { "id": str, # Same id as input sample "aggregate_reward_score": float, # Overall score for the sample "metrics_list": [ # OPTIONAL: Component scores { "name": str, # Name of the component score "value": float, # Value of the component score "type": str # "Reward" or "Metric" } ] } """
Campos de entrada y salida
Campos de entrada
| Campo | Description (Descripción) | Notas adicionales |
|---|---|---|
| id | Identificador único de la muestra | El eco volvió a aparecer en la salida. Formato de cadena |
| Mensajes | Historial de chat ordenado en formato OpenAI | Matriz de objetos de mensajes |
| mensajes [] .role | Orador del mensaje | Valores comunes: «usuario», «asistente», «sistema» |
| mensajes [] .contenido | Contenido textual del mensaje | Cadena sin formato |
| metadatos | Información en formato libre para facilitar la calificación | Objeto; campos opcionales transferidos de los datos de entrenamiento |
Campos de salida
| Campo | Description (Descripción) | Notas adicionales |
|---|---|---|
| id | El mismo identificador que la muestra de entrada | Debe coincidir con la entrada |
| agregate_reward_score | Puntuación general de la muestra | Flotación (p. ej., 0,0—1,0 o rango definido por la tarea) |
| Lista_de_métricas | Puntuaciones de los componentes que componen el agregado | Matriz de objetos métricos |
Permisos necesarios
Asegúrese de que la función de SageMaker ejecución que utiliza para ejecutar la evaluación tenga AWS permisos Lambda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }
Asegúrese AWS de que la función de ejecución de la función Lambda tenga los permisos básicos de ejecución de Lambda, así como los permisos adicionales que pueda necesitar para cualquier llamada descendente. AWS
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }