Exemples de formules d’évaluation - Amazon SageMaker AI

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.

Exemples de formules d’évaluation

Amazon Nova propose quatre types de recettes d'évaluation, disponibles dans le GitHub référentiel de HyperPod recettes.

Ces formules vous permettent d’évaluer les capacités fondamentales des modèles Amazon Nova grâce à une suite complète de points de référence basés uniquement sur le texte. Elles sont fournies au format xxx_general_text_benchmark_eval.yaml.

Ces formules vous permettent d’utiliser votre propre jeu de données à des fins d’analyse comparative et de comparer les résultats du modèle aux réponses de référence à l’aide de différents types de métriques. Elles sont fournies au format xxx_bring_your_own_dataset_eval.yaml.

Voici les exigences relatives à l’apport de votre propre jeu de données :

  • Exigences en matière de format de fichier d’entrée

    • Vous devez inclure un seul fichier gen_qa.jsonl contenant des exemples d’évaluation.

    • Votre ensemble de données doit être téléchargé sur un emplacement S3 où SageMaker AI Training Job peut y accéder.

    • Le fichier doit suivre le format de schéma requis pour un jeu de données de questions/réponses général.

  • Exigences de format de schéma : chaque ligne du fichier JSONL doit être un objet JSON avec les champs suivants :

    • query : chaîne contenant la question ou l’instruction nécessitant une réponse (obligatoire)

    • response : chaîne contenant le résultat attendu du modèle (obligatoire)

    • system : chaîne contenant l’invite système qui définit le comportement, le rôle ou la personnalité du modèle d’IA avant qu’il ne traite la requête (facultatif)

    • metadata: (Facultatif) Chaîne contenant les métadonnées associées à l'entrée à des fins de balisage.

Voici un exemple d’entrée « apportez votre propre jeu de données » :

{ "system":"You are a english major with top marks in class who likes to give minimal word responses: ", "query":"What is the symbol that ends the sentence as a question", "response":"?" } { "system":"You are a pattern analysis specialist that provides succinct answers: ", "query":"What is the next number in this series? 1, 2, 4, 8, 16, ?", "response":"32" } { "system":"You have great attention to detail that follows instructions accurately: ", "query":"Repeat only the last two words of the following: I ate a hamburger today and it was kind of dry", "response":"of dry" }

Pour utiliser votre jeu de données personnalisé, modifiez votre formule d’évaluation avec les champs obligatoires suivants, sans modifier le contenu :

evaluation: task: gen_qa strategy: gen_qa metric: all

Les limites suivantes s'appliquent :

  • Un seul fichier JSONL est autorisé par évaluation.

  • Le fichier doit suivre strictement le schéma défini.

  • Limite de longueur du contexte : pour chaque échantillon de l'ensemble de données, la longueur du contexte (y compris le système et les invites de requête) doit être inférieure à 3,5 ko.

Amazon Nova LLM-juge est une caractéristique d’évaluation des modèles qui vous permet de comparer la qualité des réponses d’un modèle aux réponses d’un modèle de référence à l’aide d’un jeu de données personnalisé. Il accepte un jeu de données contenant des invites, des réponses de base et des réponses de challenger, puis utilise un modèle Nova Judge pour fournir une métrique du taux de réussite basée sur la probabilité de Bradley-Terry avec des comparaisons par paires.

Les formules sont fournies au format xxx_llm_judge_eval.yaml.

Les exigences liées à LLM-juge sont les suivantes :

  • Exigences en matière de format de fichier d’entrée

    • Incluez un seul fichier llm_judge.jsonl contenant des exemples d’évaluation. Le fichier doit être nommé llm_judge.jsonl.

    • Votre ensemble de données doit être téléchargé vers un emplacement S3 auquel SageMaker AI HyperPod RIG peut accéder.

    • Le fichier doit respecter le format de schéma requis pour le jeu de données llm_judge.jsonl.

    • Le jeu de données d’entrée doit garantir que tous les enregistrements ont une longueur de contexte inférieure à 12 000.

  • Exigences de format de schéma : chaque ligne du fichier JSONL doit être un objet JSON avec les champs suivants :

    • prompt : chaîne contenant l’invite de la réponse générée (obligatoire).

    • response_A : chaîne contenant la réponse de base.

    • response_B : chaîne contenant la réponse alternative comparée à la réponse de base.

Voici un exemple d’entrée LLM-juge  :

{ "prompt": "What is the most effective way to combat climate change?", "response_A": "The most effective way to combat climate change is through a combination of transitioning to renewable energy sources and implementing strict carbon pricing policies. This creates economic incentives for businesses to reduce emissions while promoting clean energy adoption.", "response_B": "We should focus on renewable energy. Solar and wind power are good. People should drive electric cars. Companies need to pollute less." } { "prompt": "Explain how a computer's CPU works", "response_A": "CPU is like brain of computer. It does math and makes computer work fast. Has lots of tiny parts inside.", "response_B": "A CPU (Central Processing Unit) functions through a fetch-execute cycle, where instructions are retrieved from memory, decoded, and executed through its arithmetic logic unit (ALU). It coordinates with cache memory and registers to process data efficiently using binary operations." } { "prompt": "How does photosynthesis work?", "response_A": "Plants do photosynthesis to make food. They use sunlight and water. It happens in leaves.", "response_B": "Photosynthesis is a complex biochemical process where plants convert light energy into chemical energy. They utilize chlorophyll to absorb sunlight, combining CO2 and water to produce glucose and oxygen through a series of chemical reactions in chloroplasts." }

Pour utiliser votre jeu de données personnalisé, modifiez votre formule d’évaluation avec les champs obligatoires suivants, sans modifier le contenu :

evaluation: task: llm_judge strategy: judge metric: all

Les limites suivantes s'appliquent :

  • Un seul fichier JSONL est autorisé par évaluation.

  • Le fichier doit suivre strictement le schéma défini.

  • Les modèles Amazon Nova Judge sont identiques pour toutes les caractéristiques de la famille de modèles (à savoir, Lite, Micro et Pro).

  • Les modèles de juges personnalisés ne sont actuellement pas pris en charge.

  • Limite de longueur du contexte : pour chaque échantillon de l'ensemble de données, la longueur du contexte (y compris le système et les invites de requête) doit être inférieure à 7 ko.

Nova LLM Judge pour multimodal (image), abréviation de Nova MM_LLM Judge, est une fonctionnalité d'évaluation de modèle qui vous permet de comparer la qualité des réponses d'un modèle à celles d'un modèle de référence à l'aide d'un ensemble de données personnalisé. Il accepte un ensemble de données contenant des invites, des réponses de base et des réponses aux challengers, ainsi que des images sous forme de chaîne codée en Base64, puis utilise un modèle Nova Judge pour fournir une métrique du taux de victoire basée sur la probabilité de Bradley-Terry par le biais de comparaisons par paires. Format de formule : xxx_mm_llm_judge _eval.yaml.

Exigences relatives à le jeu de données Nova LLM

Format de fichier :

  • Fichier mm_llm_judge.jsonl unique contenant des exemples d’évaluation. Le nom du fichier doit être exactllm_judge.jsonl.

  • Vous devez télécharger votre ensemble de données sur un emplacement S3 où les SageMaker professionnels de formation peuvent y accéder.

  • Le fichier doit respecter le format de schéma requis pour le jeu de données mm_llm_judge.

  • L'ensemble de données en entrée doit garantir que tous les enregistrements ont une longueur de contexte inférieure à 12 k, à l'exception de l'attribut de l'image.

Format de schéma : chaque ligne du fichier .jsonl doit être un objet JSON avec les champs suivants.

  • Champs obligatoires.

    prompt : chaîne contenant l’invite de réponse générée.

    images: Tableau contenant une liste d'objets avec des attributs de données (les valeurs sont des chaînes d'image codées en Base64).

    response_A : chaîne contenant la réponse de base.

    response_B : chaîne contenant la réponse alternative comparée à la réponse de base.

Exemple d’entrée

Pour des raisons de lisibilité, l'exemple suivant inclut de nouvelles lignes et une indentation, mais dans le jeu de données actuel, chaque enregistrement doit figurer sur une seule ligne.

{ "prompt": "what is in the image?", "images": [ { "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..." } ], "response_A": "a dog.", "response_B": "a cat.", } { "prompt": "how many animals in echo of the images?", "images": [ { "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..." }, { "data": "data:image/jpeg;Base64,/DKEafe3gihn..." } ], "response_A": "The first image contains one cat and the second image contains one dog", "response_B": "The first image has one aminal and the second has one animal", }

Pour utiliser votre jeu de données personnalisé, modifiez votre formule d’évaluation avec les champs obligatoires suivants, sans modifier le contenu :

evaluation: task: mm_llm_judge strategy: judge metric: all

Limites

  • Un seul fichier .jsonl est autorisé par évaluation.

  • Le fichier doit suivre strictement le schéma défini.

  • Les modèles Nova MM Judge ne prennent en charge que les références d'image.

  • Les modèles Nova MM Judge sont les mêmes pour toutes les spécifications d'Amazon Nova Lite.

  • Les modèles de juges personnalisés ne sont actuellement pas pris en charge.

  • L'URI de l'image Amazon S3 n'est pas prise en charge.

  • L'ensemble de données en entrée doit garantir que tous les enregistrements ont une longueur de contexte inférieure à 12 k, à l'exception de l'attribut images.

Rubric Judge est un modèle d' LLM-as-a-judgeévaluation amélioré basé sur Nova 2.0 Lite. Contrairement au modèle de juge original qui ne fournit que des verdicts préférentiels (A>B, B>A ou égalité), Rubric Judge génère dynamiquement des critères d'évaluation personnalisés adaptés à chaque invite et attribue des scores granulaires sur plusieurs dimensions.

Fonctionnalités clés :

  • Génération de critères dynamiques : crée automatiquement des dimensions d'évaluation pertinentes en fonction de l'invite de saisie

  • Notation pondérée : attribue des poids d'importance à chaque critère pour refléter leur importance relative

  • Évaluation granulaire : fournit des scores détaillés sur une base binaire (vrai/faux) ou sur une échelle (1 à 5) pour chaque critère

  • Indicateurs de qualité : calcule des scores de qualité continus (échelle de 0 à 1) qui quantifient l'ampleur des différences entre les réponses

Exemple de critère généré par le modèle :

price_validation: description: "The response includes validation to ensure price is a positive value." type: "scale" weight: 0.3

Le modèle évalue les deux réponses par rapport à tous les critères générés, puis utilise ces scores au niveau des critères pour éclairer sa décision de préférence finale.

Configuration de la recette

Recette de Rubric Judge

Activez Rubric Judge task: rubric_llm_judge en définissant votre recette :

run: name: nova-eval-job-name # [MODIFIABLE] Unique identifier for your evaluation job model_type: amazon.nova-2-lite-v1:0:256k # [FIXED] Rubric Judge model type model_name_or_path: "nova-lite-2/prod" # [FIXED] Path to model checkpoint or identifier replicas: 1 # [MODIFIABLE] Number of replicas for SageMaker Training job data_s3_path: "" # [FIXED] Leave empty for SageMaker Training job output_s3_path: "" # [FIXED] Leave empty for SageMaker Training job evaluation: task: rubric_llm_judge # [FIXED] Evaluation task - enables Rubric Judge strategy: judge # [FIXED] Evaluation strategy metric: all # [FIXED] Metric calculation method inference: max_new_tokens: 12000 # [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)
Recette originale de LLM as a Judge (à titre de comparaison)

Le modèle de juge original utilise task: llm_judge :

run: name: eval-job-name # [MODIFIABLE] Unique identifier for your evaluation job model_type: amazon.nova-micro-v1:0:128k # [FIXED] Model type model_name_or_path: "nova-micro/prod" # [FIXED] Path to model checkpoint or identifier replicas: 1 # [MODIFIABLE] Number of replicas for SageMaker Training job data_s3_path: "" # [FIXED] Leave empty for SageMaker Training job output_s3_path: "" # [FIXED] Leave empty for SageMaker Training job evaluation: task: llm_judge # [FIXED] Original judge task strategy: judge # [FIXED] Evaluation strategy metric: all # [FIXED] Metric calculation method inference: max_new_tokens: 12000 # [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)

Format du jeu de données d'entrée

Le format du jeu de données en entrée est identique à celui du modèle de juge d'origine :

Champs obligatoires :

  • prompt: chaîne contenant l'invite de saisie et les instructions

  • response_A: chaîne contenant la sortie du modèle de référence

  • response_B: chaîne contenant la sortie du modèle personnalisé

Exemple de jeu de données (format JSONL) :

{"prompt": "What is the most effective way to combat climate change?", "response_A": "The most effective way to combat climate change is through a combination of transitioning to renewable energy sources and implementing strict carbon pricing policies. This creates economic incentives for businesses to reduce emissions while promoting clean energy adoption.", "response_B": "We should focus on renewable energy. Solar and wind power are good. People should drive electric cars. Companies need to pollute less."} {"prompt": "Explain how a computer's CPU works", "response_A": "CPU is like brain of computer. It does math and makes computer work fast. Has lots of tiny parts inside.", "response_B": "A CPU (Central Processing Unit) functions through a fetch-execute cycle, where instructions are retrieved from memory, decoded, and executed through its arithmetic logic unit (ALU). It coordinates with cache memory and registers to process data efficiently using binary operations."} {"prompt": "How does photosynthesis work?", "response_A": "Plants do photosynthesis to make food. They use sunlight and water. It happens in leaves.", "response_B": "Photosynthesis is a complex biochemical process where plants convert light energy into chemical energy. They utilize chlorophyll to absorb sunlight, combining CO2 and water to produce glucose and oxygen through a series of chemical reactions in chloroplasts."}

Exigences relatives au format :

  • Chaque entrée doit être un objet JSON d'une seule ligne

  • Séparez les entrées par de nouvelles lignes

  • Suivez le nom exact des champs, comme indiqué dans les exemples

Résultat de l'évaluation

Structure de sortie

Rubric Judge produit des métriques d'évaluation améliorées par rapport au modèle de juge original :

{ "config_general": { "lighteval_sha": "string", "num_fewshot_seeds": "int", "max_samples": "int | null", "job_id": "int", "start_time": "float", "end_time": "float", "total_evaluation_time_secondes": "string", "model_name": "string", "model_sha": "string", "model_dtype": "string | null", "model_size": "string" }, "results": { "custom|rubric_llm_judge_judge|0": { "a_scores": "float", "a_scores_stderr": "float", "b_scores": "float", "b_scores_stderr": "float", "ties": "float", "ties_stderr": "float", "inference_error": "float", "inference_error_stderr": "float", "score": "float", "score_stderr": "float", "weighted_score_A": "float", "weighted_score_A_stderr": "float", "weighted_score_B": "float", "weighted_score_B_stderr": "float", "score_margin": "float", "score_margin_stderr": "float", "winrate": "float", "lower_rate": "float", "upper_rate": "float" } }, "versions": { "custom|rubric_llm_judge_judge|0": "int" } }
Nouveaux indicateurs dans Rubric Judge

Les six indicateurs suivants sont propres à Rubric Judge et fournissent une évaluation précise de la qualité :

Métrique

Description

Score pondéré A

Note de qualité normalisée moyenne pour Response_A pour tous les critères d'évaluation générés par le modèle. Les scores sont pondérés en fonction de l'importance du critère et normalisés sur une échelle de 0 à 1 (plus haut = meilleure qualité)

Score_pondéré_A_Stderr

Erreur type de la moyenne pour Weighted_Score_A, indiquant une incertitude statistique

Score pondéré B

Note de qualité normalisée moyenne pour Response_B pour tous les critères d'évaluation générés par le modèle. Les scores sont pondérés en fonction de l'importance du critère et normalisés sur une échelle de 0 à 1 (plus haut = meilleure qualité)

Score_pondéré_B_Stderr

Erreur type de la moyenne pour Weighted_Score_B, indiquant une incertitude statistique

score_margin

Différence entre les scores pondérés (calculée comme Weighted_Score_A - Weighted_Score_B). Plage : -1,0 à 1,0. Positif = Response_A est meilleur ; négatif = Response_B est meilleur ; proche de zéro = qualité similaire

score_margin_stderr

Erreur type de la moyenne pour score_margin, indiquant une incertitude dans la mesure de la différence de qualité

Comprendre les indicateurs de score pondérés

Objectif : Les scores pondérés fournissent des mesures de qualité continues qui complètent les verdicts de préférence binaires, permettant ainsi de mieux comprendre les performances du modèle.

Principales différences par rapport au juge initial :

  • Juge d'origine : affiche uniquement des préférences discrètes (A>B, B>A, A=B)

  • Rubric Judge : affiche à la fois les préférences ET les scores de qualité continus (échelle de 0 à 1) sur la base de critères personnalisés

Interprétation de score_margin :

  • score_margin = -0.128: Response_B a obtenu 12,8 points de pourcentage de plus que Response_A

  • |score_margin| < 0.1: faible différence de qualité (décision serrée)

  • |score_margin| > 0.2: différence de qualité claire (décision prise en toute confiance)

Cas d'utilisation :

  • Amélioration du modèle : identifiez les domaines spécifiques dans lesquels votre modèle est sous-performant

  • Quantification de la qualité : mesurez l'ampleur des écarts de performance, pas seulement win/loss les ratios

  • Évaluation de la confiance : faites la distinction entre des décisions serrées et des différences de qualité claires

Important

Les verdicts finaux sont toujours basés sur les étiquettes de préférence explicites du modèle du juge afin de préserver le raisonnement holistique et de garantir une atténuation appropriée des biais de position grâce forward/backward à l'évaluation. Les scores pondérés servent d'outils d'observabilité et ne remplacent pas le verdict principal.

Méthodologie de calcul

Les scores pondérés sont calculés selon le processus suivant :

  • Extraire les données des critères : analyse la sortie YAML du juge pour extraire les scores et les pondérations des critères

  • Normaliser les scores :

    • Critères de type échelle (1-5) : normaliser à 0-1 en calculant (score - 1) / 4

    • Critères binaires (vrai/faux) : Convertir en 1,0/0,0

  • Appliquer des pondérations : multipliez chaque score normalisé par son critère de pondération

  • Agrégat : additionnez tous les scores pondérés pour chaque réponse

  • Calculer la marge : Calculer score_margin = weighted_score_A - weighted_score_B

Exemple : si Response_A a une somme pondérée de 0,65 et Response_B a une somme pondérée de 0,78, ce score_margin serait -0,13, ce qui indique que Response_B est de 13 points de pourcentage plus élevée en termes de qualité pour tous les critères pondérés.

Support du modèle de raisonnement

La prise en charge des modèles de raisonnement permet une évaluation à l'aide de modèles Nova capables de raisonner qui effectuent un raisonnement interne explicite avant de générer des réponses finales. Cette fonctionnalité utilise le contrôle au niveau de l'API via le reasoning_effort paramètre pour activer ou désactiver dynamiquement la fonctionnalité de raisonnement, améliorant potentiellement la qualité des réponses pour les tâches analytiques complexes.

Modèles pris en charge :

  • amazon.nova-2-lite-v 1:0:256 k

Configuration de la recette

Activez le raisonnement en ajoutant le reasoning_effort paramètre à la inference section de votre recette :

run: name: eval-job-name # [MODIFIABLE] Unique identifier for your evaluation job model_type: amazon.nova-2-lite-v1:0:256k # [FIXED] Must be a reasoning-supported model model_name_or_path: nova-lite-2/prod # [FIXED] Path to model checkpoint or identifier replicas: 1 # [MODIFIABLE] Number of replicas for SageMaker Training job data_s3_path: "" # [MODIFIABLE] Leave empty for SageMaker Training job; optional for SageMaker HyperPod job output_s3_path: "" # [MODIFIABLE] Output path for SageMaker HyperPod job (not compatible with SageMaker Training jobs) evaluation: task: mmlu # [MODIFIABLE] Evaluation task strategy: generate # [MODIFIABLE] Evaluation strategy metric: all # [MODIFIABLE] Metric calculation method inference: reasoning_effort: high # [MODIFIABLE] Enables reasoning mode; options: low/medium/high or null to disable max_new_tokens: 200 # [MODIFIABLE] Maximum tokens to generate top_k: 50 # [MODIFIABLE] Top-k sampling parameter top_p: 1.0 # [MODIFIABLE] Nucleus sampling parameter temperature: 0 # [MODIFIABLE] Sampling temperature (0 = deterministic)
Utilisation du paramètre reasoning_effort

Le reasoning_effort paramètre contrôle le comportement de raisonnement des modèles capables de raisonner.

Prérequis :

  • Compatibilité des modèles : définie reasoning_effort uniquement lorsqu'model_typeun modèle capable de raisonner est spécifié (actuellement) amazon.nova-2-lite-v1:0:256k

  • Gestion des erreurs : l'utilisation reasoning_effort avec des modèles non pris en charge échouera avec ConfigValidationError: "Reasoning mode is enabled but model '{model_type}' does not support reasoning. Please use a reasoning-capable model or disable reasoning mode."

Options disponibles :

Option

Comportement

Limite de jetons

Cas d’utilisation

null (par défaut)

Désactive le mode raisonnement

N/A

Évaluation standard sans frais de raisonnement

bas

Permet de raisonner avec des contraintes

4 000 jetons pour le raisonnement interne

Scénarios nécessitant un raisonnement concis ; optimisations en termes de rapidité et de coût

haut

Permet de raisonner sans contraintes

Aucune limite symbolique au raisonnement interne

Problèmes complexes nécessitant une analyse et un step-by-step raisonnement approfondis

Quand activer le raisonnement

Utilisez le mode raisonnement (lowmedium, ouhigh) pour :

  • Tâches complexes de résolution de problèmes (mathématiques, énigmes logiques, codage)

  • Questions analytiques en plusieurs étapes nécessitant un raisonnement intermédiaire

  • Tâches pour lesquelles des explications ou des step-by-step réflexions détaillées améliorent la précision

  • Scénarios dans lesquels la qualité de réponse est privilégiée par rapport à la vitesse

Utilisez le mode non raisonné (omettre le paramètre) pour :

  • Questions et réponses simples ou questions factuelles

  • Tâches d'écriture créative

  • Lorsque des temps de réponse plus rapides sont essentiels

  • Analyse comparative des performances où les frais de raisonnement doivent être exclus

  • Optimisation des coûts lorsque le raisonnement n'améliore pas les performances des tâches

Résolution des problèmes

Erreur : « Le mode raisonnement est activé mais le modèle ne prend pas en charge le raisonnement »

Cause : le reasoning_effort paramètre est défini sur une valeur non nulle, mais la valeur spécifiée model_type ne permet pas de raisonner.

Résolution :

  • Vérifiez que le type de votre modèle est amazon.nova-2-lite-v1:0:256k

  • Si vous utilisez un modèle différent, passez à un modèle capable de raisonner ou supprimez le reasoning_effort paramètre de votre recette