Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Évaluez à l'aide de marqueurs prédéfinis et personnalisés
Lorsque vous utilisez le type d'évaluation Custom Scorer, SageMaker Evaluation prend en charge deux marqueurs intégrés (également appelés « fonctions de récompense ») Prime Math et Prime Code extraits de la bibliothèque d'entraînement volcengine/verl RL
Scorers intégrés
Prime Math
Le meilleur marqueur mathématique attend un jeu de données JSONL personnalisé contenant une question mathématique prompt/query et la bonne réponse comme vérité de base. L'ensemble de données peut être dans l'un des formats pris en charge mentionnés dansFormats de jeu de données pris en charge pour les tâches Bring-Your-Own-Dataset (BYOD).
Exemple d'entrée dans un jeu de données (développé pour plus de clarté) :
{ "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 }
Code Prime
Le lecteur de code principal attend un ensemble de données JSONL personnalisé contenant des entrées contenant un problème de codage et des cas de test spécifiés dans le champ. metadata Structurez les scénarios de test avec le nom de fonction attendu pour chaque entrée, des exemples d'entrées et des sorties attendues.
Exemple d'entrée dans un jeu de données (développé pour plus de clarté) :
{ "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]"] } }
Scorateurs personnalisés (apportez vos propres statistiques)
Personnalisez entièrement le flux de travail d'évaluation de votre modèle grâce à une logique de post-traitement personnalisée qui vous permet de calculer des métriques personnalisées adaptées à vos besoins. Vous devez implémenter votre score personnalisé sous la forme d'une fonction AWS Lambda qui accepte les réponses du modèle et renvoie les scores de récompense.
Exemple de charge utile d'entrée Lambda
Votre AWS Lambda personnalisé attend des entrées au format OpenAI. Exemple :
{ "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..." } }
Exemple de charge utile de sortie Lambda
Le conteneur SageMaker d'évaluation s'attend à ce que vos réponses Lambda suivent le format suivant :
{ "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" } ] }
Définition Lambda personnalisée
Trouvez un exemple de scorer personnalisé entièrement implémenté avec des exemples d'entrées et de sorties attendues sur : https://docs.aws.amazon.com/sagemaker/latest/dg/nova- implementing-reward-functions .html# -example nova-reward-llm-judge
Utilisez le squelette suivant comme point de départ pour votre propre fonction.
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" } ] } """
Champs d'entrée et de sortie
Champs de saisie
| Champ | Description | Informations complémentaires |
|---|---|---|
| id | Identifiant unique pour l'échantillon | Répertorié dans la sortie. Format de chaîne |
| messages | Historique des discussions ordonné au format OpenAI | Tableau d'objets de message |
| messages [] .role | Intervenant du message | Valeurs communes : « utilisateur », « assistant », « système » |
| messages [] .content | Contenu textuel du message | Chaîne de texte brut |
| metadata | Informations sous forme libre pour faciliter le classement | Objet ; champs facultatifs transmis à partir des données d'entraînement |
Champs de sortie
| Champ | Description | Informations complémentaires |
|---|---|---|
| id | Identifiant identique à celui de l'échantillon d'entrée | Doit correspondre à l'entrée |
| score de récompense agrégé | Note globale pour l'échantillon | Valeur flottante (par exemple, 0,0-1,0 ou plage définie par la tâche) |
| liste_métriques | Scores des composants qui constituent l'agrégat | Tableau d'objets métriques |
Autorisations nécessaires
Assurez-vous que le rôle SageMaker d'exécution que vous utilisez pour exécuter l'évaluation dispose des autorisations AWS Lambda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" } ] }
Assurez-vous que le rôle d'exécution de votre fonction AWS Lambda dispose des autorisations d'exécution Lambda de base, ainsi que des autorisations supplémentaires dont vous pourriez avoir besoin pour tout appel en aval. AWS
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }