Évaluation de votre modèle entraîné par SageMaker l'IA - 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.

Évaluation de votre modèle entraîné par SageMaker l'IA

Le but du processus d’évaluation est d’évaluer les performances du modèle entraîné par rapport à des points de référence ou à un jeu de données personnalisé. Le processus d’évaluation comprend généralement des étapes visant à créer une formule d’évaluation pointant vers le modèle entraîné, à spécifier des jeux de données et des métriques d’évaluation, à soumettre une tâche distincte pour l’évaluation et à évaluer par rapport à des points de référence standard ou à des données personnalisées. Le processus d’évaluation produira des métriques de performance stockées dans votre compartiment Amazon S3.

Note

Le processus d’évaluation décrit dans cette rubrique est un processus hors ligne. Le modèle est testé par rapport à des points de référence fixes avec des réponses prédéfinies, plutôt que d’être évalué en temps réel ou par le biais d’interactions en direct avec les utilisateurs. Pour une évaluation en temps réel, vous pouvez tester le modèle après son déploiement sur Amazon Bedrock en appelant Amazon Bedrock Runtime. APIs

Conditions préalables

Avant de commencer une tâche d’entraînement d’évaluation, notez les éléments suivants.

  • Un modèle SageMaker Amazon Nova entraîné par l'IA dont vous souhaitez évaluer les performances.

  • Recette de base Amazon Nova à des fins d’évaluation. Pour de plus amples informations, veuillez consulter Obtention de formules Amazon Nova.

Tâches de point de référence disponibles

Un exemple de package de code est disponible qui montre comment calculer les mesures de référence à l'aide de la fonctionnalité d'évaluation du SageMaker modèle pour Amazon Nova. Pour accéder aux packages de code, consultez Sample-n ova-lighteval-custom-task.

Voici une liste des points de référence standard pris en charge. Vous pouvez spécifier les points de référence suivants dans le paramètre eval_task.

Points de référence disponibles pour l’évaluation des modèles

Comparaison Modalité Description Métriques Stratégie Sous-tâche disponible
mmlu

Texte

Compréhension linguistique multitâche : teste les connaissances dans 57 domaines.

précision

zs_cot Oui
mmlu_pro Texte

MMLU – Sous-ensemble professionnel : se concentre sur les domaines professionnels tels que le droit, la médecine, la comptabilité et l’ingénierie.

précision zs_cot Non
bbh Texte

Tâches de raisonnement avancées : ensemble de problèmes difficiles qui mettent à l’épreuve des compétences cognitives et de résolution de problèmes de haut niveau.

précision fs_cot Oui
gpqa Texte

Réponses aux questions de physique générale : évalue la compréhension des concepts de physique et les capacités de résolution de problèmes connexes.

précision zs_cot Non
math Texte

Résolution de problèmes mathématiques : mesure le raisonnement mathématique dans des domaines tels que l’algèbre, le calcul et les problèmes de mots.

exact_match zs_cot Oui
strong_reject Texte

Tâche de contrôle qualité : teste la capacité du modèle à détecter et à rejeter le contenu inapproprié, préjudiciable ou incorrect.

deflection zs Oui
ifeval Texte

Évaluation suivant les instructions : évalue la précision avec laquelle un modèle suit les instructions données et exécute les tâches conformément aux spécifications.

précision zs Non
gen_qa Multimodal (image)

Évaluation personnalisée du jeu de données : vous permet de fournir votre propre ensemble de données à des fins d'analyse comparative, en comparant les résultats du modèle aux réponses de référence avec des indicateurs tels que ROUGE et BLEU. gen_qaprend en charge l'inférence d'images pour les modèles basés sur Amazon Nova Lite ou Amazon Nova Pro. Supporte également Bring-Your-Own Metrics Lambda. (Pour l'évaluation RFT, veuillez utiliser la recette d'évaluation RFT)

tout gen_qa Non
llm_judge Texte

LLM-as-a-Judge Comparaison des préférences — Utilise un modèle Nova Judge pour déterminer la préférence entre les réponses appariées (B par rapport à A) pour vos invites, en calculant la probabilité que B soit préféré à A.

tout judge Non

mm_llm_judge

Multimodal (image)

Ce nouveau benchmark se comporte de la même manière que le modèle basé sur le texte ci-dessusllm_judge. La seule différence est qu'il prend en charge l'inférence d'image.

tout judge Non

rubrique_llm_judge

Texte

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 de préférence, Rubric Judge génère de manière dynamique des critères d'évaluation personnalisés adaptés à chaque invite et attribue des scores granulaires sur plusieurs dimensions.

tout

judge

Non

aime_2024

Texte

AIME 2024 - Problèmes de l'examen de mathématiques sur invitation américain testant le raisonnement mathématique avancé et la résolution de problèmes

exact_match

zs_cot

Non

calendar_planning

Texte

Natural Plan - Planification du calendrier, test des tâches, capacités de planification pour planifier des réunions sur plusieurs jours et plusieurs personnes

exact_match

fs

Non

humaneval

Texte

HumanEval - Un ensemble de données de référence conçu pour évaluer les capacités de génération de code des grands modèles de langage

pass@1

zs Non

Configurations spécifiques à l’évaluation

Vous trouverez ci-dessous une description des principaux composants de la formule et des conseils sur la manière de les modifier en fonction de vos cas d’utilisation.

Compréhension et modification de vos formules

Configuration générale de l’exécution

run: name: eval_job_name model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod # or s3://escrow_bucket/model_location replicas: 1 data_s3_path: "" mlflow_tracking_uri: "" mlflow_experiment_name : "" mlflow_run_name : ""
  • name : nom descriptif de votre tâche d’évaluation.

  • model_type : spécifie la variante du modèle Nova à utiliser. Ne modifiez pas ce champ manuellement. Voici les options :

    • amazon. nova-micro-v1:40:128 km

    • amazon. nova-lite-v1:30:300 km

    • amazon. nova-pro-v1:30:300 km

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

  • model_name_or_path : le chemin vers le modèle de base ou le chemin s3 pour le point de contrôle post-entraîné. Voici les options :

    • nova-micro/prod

    • nova-lite/prod

    • nova-pro/prod

    • nova-lite-2/prod

    • Chemin S3 pour le chemin de point de contrôle post-entraîné (s3:customer-escrow-111122223333-smtj-<unique_id>/<training_run_name>)

      Note

      Évaluation des modèles post-entraînés

      Pour évaluer un modèle post-entraîné après une tâche d’entraînement Nova SFT, suivez ces étapes après avoir exécuté une tâche d’entraînement réussie. À la fin des journaux d’entraînement, vous verrez le message « L’entraînement est terminé ». Vous trouverez également un fichier manifest.json dans votre compartiment de sortie contenant l’emplacement de votre point de contrôle. Ce fichier sera situé dans un fichier output.tar.gz à votre emplacement S3 de sortie. Pour procéder à l’évaluation, utilisez ce point de contrôle en le définissant comme valeur pour run.model_name_or_path dans la configuration de votre formule.

  • replica: le nombre d'instances de calcul à utiliser pour l'inférence distribuée (exécution de l'inférence sur plusieurs nœuds). Définissez replica > 1 pour activer l'inférence multi-nœuds, ce qui accélère l'évaluation. Si instance_count les deux replica sont spécifiés, instance_count prévaut. Notez que les répliques multiples ne s'appliquent qu'aux tâches de SageMaker formation, et non SageMaker HyperPod.

  • data_s3_path : le chemin d’accès Amazon S3 du jeu de données d’entrée. Ce champ est obligatoire mais doit toujours être laissé vide.

  • mlflow_tracking_uri: (Facultatif) L'emplacement du serveur de MLflow suivi (uniquement nécessaire sur SMHP)

  • mlflow_experiment_name: (Facultatif) Nom de l'expérience pour regrouper les essais de machine learning associés

  • mlflow_run_name: (Facultatif) Nom personnalisé pour un entraînement spécifique effectué dans le cadre d'une expérience

Configuration d’évaluation

evaluation: task: mmlu strategy: zs_cot subtask: abstract_algebra metric: accuracy
  • task : spécifie le point de référence ou la tâche d’évaluation à utiliser. Les tâches prises en charge incluent :

    • mmlu

    • mmlu_pro

    • bbh

    • gpqa

    • math

    • strong_reject

    • gen_qa

    • ifeval

    • llm_judge

    • mm_llm_judge

    • rubric_llm_judge

    • aime_2024

    • calendar_scheduling

    • humaneval

  • strategy : définit l’approche d’évaluation.

    • zs_cot: Chaîne de pensée zéro : une approche visant à susciter de grands modèles linguistiques qui encouragent le step-by-step raisonnement sans nécessiter d'exemples explicites.

    • fs_cot: Chaîne de pensée en plusieurs points : approche qui fournit quelques exemples de step-by-step raisonnement avant de demander au modèle de résoudre un nouveau problème.

    • zs : zéro coup, approche pour résoudre un problème sans aucun exemple d’entraînement préalable.

    • gen_qa : stratégie spécifique pour apporter votre propre jeu de données.

    • judge: Stratégie spécifique à Nova LLM en tant que juge etmm_llm_judge.

  • subtask: Facultatif. Composantes spécifiques de la tâche d’évaluation. Pour obtenir la liste complète des sous-tâches, consultez Sous-tâches disponibles.

    • Vérifiez les sous-tâches prises en charge dans Tâches de référence disponibles.

    • Ce champ devrait être supprimé s’il n’y a pas de points de référence pour les sous-tâches.

  • metric : métrique d’évaluation à utiliser.

    • accuracy : pourcentage de bonnes réponses.

    • exact_match : pour un point de référence mathématique, renvoie le taux auquel les chaînes prédites en entrée correspondent exactement à leurs références.

    • deflection : pour un point de référence de rejet fort, renvoie une déflexion relative par rapport au modèle de base et aux métriques d’importance des différences.

    • all:

      Pour gen_qa, apportez votre propre point de référence de jeu de données, renvoyez les métriques suivantes :

      • rouge1 : mesure le chevauchement des unigrammes (mots uniques) entre le texte généré et le texte de référence.

      • rouge2 : mesure le chevauchement des bigrammes (deux mots consécutifs) entre le texte généré et le texte de référence.

      • rougeL : mesure la plus longue sous-séquence commune entre les textes, en tenant compte des lacunes dans la correspondance.

      • exact_match : score binaire (0 ou 1) indiquant si le texte généré correspond exactement au texte de référence, caractère par caractère.

      • quasi_exact_match : similaire à la correspondance exacte, mais plus indulgent, ignorant généralement les différences entre majuscules et minuscules, la ponctuation et les espaces.

      • f1_score : moyenne harmonique de précision et de rappel, mesurant le chevauchement des mots entre les réponses prédites et les réponses de référence.

      • f1_score_quasi : similaire à f1_score mais avec une correspondance plus souple, en utilisant une comparaison de texte normalisée qui ignore les différences mineures.

      • bleu : mesure la précision des correspondances n-grammes entre le texte généré et le texte de référence, couramment utilisé dans l’évaluation des traductions.

      Pour llm_judge etmm_llm_judge, apportez votre propre base de données de référence, renvoyez les métriques suivantes :

      • a_scores : nombre de victoires pour response_A sur les passes d’évaluation avant et arrière.

      • a_scores_stderr : erreur standard de response_A_scores pour les jugements par paires.

      • b_scores : mesure le nombre de victoires pour response_B sur les passes d’évaluation avant et arrière.

      • a_scores_stderr : erreur standard de response_B_scores pour les jugements par paires.

      • ties : nombre de jugements où response_A et response_B sont évaluées comme égales.

      • ties_stderr : erreur standard de ties pour les jugements par paires.

      • inference_error : nombre de jugements qui n’ont pas pu être correctement évalués.

      • score : score agrégé basé sur les victoires obtenues lors des passes avant et arrière pour response_B.

      • score_stderr : score agrégé basé sur les victoires obtenues lors des passes avant et arrière pour response_B.

      • inference_error_stderr : erreur type du score agrégé pour les jugements par paires.

      • winrate : probabilité que la réponse response_B soit préférée à response_A, calculée à l’aide de la probabilité de Bradley-Terry.

      • lower_rate : limite inférieure (2,5 percentile) du taux de victoire estimé à partir d’un échantillonnage d’amorçage.

      • upper_rate : limite supérieure (97,5e percentile) du taux de victoire estimé à partir d’un échantillonnage d’amorçage.

Configuration d’inférence (facultatif)

inference: max_new_tokens: 2048 top_k: -1 top_p: 1.0 temperature: 0 top_logprobs: 10 reasoning_effort: null # options: low/high to enable reasoning or null to disable reasoning
  • max_new_tokens : nombre maximum de jetons à générer. Doit être un nombre entier. (Non disponible pour le juge LLM)

  • top_k : nombre de jetons présentant la probabilité la plus élevée à prendre en compte. Doit être un nombre entier.

  • top_p : seuil de probabilité cumulé pour l’échantillonnage de jetons. Doit être une valeur à virgule flottante comprise entre 1,0 et 0,0.

  • temperature : caractère aléatoire dans la sélection des jetons (plus élevé = plus aléatoire), conservez 0 pour que le résultat soit déterministe. Type flottant, la valeur minimum est 0.

  • top_logprobs: Le nombre de meilleures probs logprobs à renvoyer dans la réponse d'inférence. Cette valeur doit être un entier compris entre 0 et 20. Les logprobs contiennent les jetons de sortie pris en compte et les probabilités de journalisation de chaque jeton de sortie renvoyé dans le contenu du message.

  • reasoning_effort: contrôle le comportement de raisonnement pour les modèles capables de raisonner. Défini reasoning_effort uniquement lorsque model_type spécifie un modèle capable de raisonner (actuellementamazon.nova-2-lite-v1:0:256k). Les options disponibles sont nulles (valeur par défaut si elle n'est pas définie ; désactive le raisonnement), faibles ou élevées.

Exemples de formules d’évaluation

Amazon Nova propose quatre types de formules d’évaluation différents. Toutes les recettes sont disponibles dans le GitHub référentiel de SageMaker HyperPod recettes Amazon.

Formules d’évaluation

    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.

    Format de formule : 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.

    Format de formule : xxx_ bring_your_own_dataset_eval.yaml.

    Apportez vos propres exigences en matière de jeux de données

    Format de fichier :

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

    • Vous devez télécharger votre ensemble de données sur un emplacement S3 auquel les tâches de SageMaker formation peuvent accéder.

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

    Exigences relatives au format du schéma - Chaque ligne du .jsonl fichier doit être un objet JSON avec les champs suivants.

    • Champs obligatoires.

      query : chaîne contenant la question ou l’instruction nécessitant une réponse.

      response : chaîne contenant le résultat attendu du modèle.

    • Champs facultatifs.

      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.

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

      metadata: chaîne contenant les métadonnées associées à l'entrée à des fins de balisage.

    Exemple d’entrée

    { "system":"You are an 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 who 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 and follow 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" }{ "system": "Image inference: ", "query": "What is the number in the image? Please just use one English word to answer.", "response": "two", "images": [ { "data": "data:image/png;Base64,iVBORw0KGgoA ..." } ] }

    Pour utiliser votre ensemble de données personnalisé, modifiez votre recette d'évaluation en ajoutant les champs obligatoires suivants sans modifier la configuration existante :

    evaluation: task: gen_qa strategy: gen_qa metric: all

    Limites

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

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

    Apportez vos propres indicateurs

    Vous pouvez utiliser vos propres indicateurs pour personnaliser entièrement le flux de travail d'évaluation de votre modèle grâce à des fonctionnalités de prétraitement, de post-traitement et de mesures personnalisées. Le prétraitement vous permet de traiter les données d'entrée avant de les envoyer au serveur d'inférence, tandis que le post-traitement vous permet de personnaliser le calcul des métriques et de renvoyer des métriques personnalisées en fonction de vos besoins.

    Suivez ces étapes pour créer vos propres indicateurs grâce au SDK d'évaluation personnalisé.

    1. Si vous ne l'avez pas encore fait, créez une AWS Lambda fonction dans votre Compte AWS premier.

    2. Téléchargez le nova-custom-eval-layer.zip fichier prédéfini depuis le GitHub référentiel. Vous pouvez utiliser ce SDK d'évaluation personnalisé open source Nova pour valider les charges utiles d'entrée et de sortie pour votre fonction personnalisée et fournir une interface unifiée pour l'intégration à l'évaluation des métriques « Bring your own » de Nova pendant l'entraînement.

    3. Téléchargez la couche Lambda personnalisée à l'aide de la commande suivante :

      aws lambda publish-layer-version \ --layer-name nova-custom-eval-layer \ --zip-file fileb://nova-custom-eval-layer.zip \ --compatible-runtimes python3.12 python3.11 python3.10 python3.9
    4. Ajoutez cette couche en tant que couche personnalisée à votre fonction Lambda, ainsi que la AWS couche requise : AWSLambdaPowertoolsPythonV3-python312-arm64 (requise pour la pydantic dépendance).

    5. Mettez à jour votre code Lambda à l'aide de l'exemple fourni, en modifiant le code selon les besoins. Cet exemple de code crée une fonction Lambda pour l'évaluation personnalisée de Nova avec des étapes de prétraitement et de post-traitement pour l'évaluation du modèle.

      from nova_custom_evaluation_sdk.processors.decorators import preprocess, postprocess from nova_custom_evaluation_sdk.lambda_handler import build_lambda_handler @preprocess def preprocessor(event: dict, context) -> dict: data = event.get('data', {}) return { "statusCode": 200, "body": { "system": data.get("system"), "prompt": data.get("prompt", ""), "gold": data.get("gold", "") } } @postprocess def postprocessor(event: dict, context) -> dict: # data is already validated and extracted from event data = event.get('data', []) inference_output = data.get('inference_output', '') gold = data.get('gold', '') metrics = [] inverted_accuracy = 0 if inference_output.lower() == gold.lower() else 1.0 metrics.append({ "metric": "inverted_accuracy_custom", "value": accuracy }) # Add more metrics here return { "statusCode": 200, "body": metrics } # Build Lambda handler lambda_handler = build_lambda_handler( preprocessor=preprocessor, postprocessor=postprocessor )
    6. Accordez à Lambda l'accès à la tâche d'évaluation. Assurez-vous que le rôle d'exécution spécifié pour la tâche d'évaluation inclut une politique qui appelle votre fonction Lambda. Voici un exemple de politique.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "LambdaAccess", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction", "Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-ARN" } } }, { "Sid": "DenyNonAWSEventSourcesForLambda", "Effect": "Deny", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction", "Condition": { "Null": { "lambda:EventSourceToken": false } } } ] }
    7. Passez en revue le schéma de charge utile Lambda. Le tableau suivant répertorie le schéma de demande et de réponse Lambda. Vous pouvez valider votre schéma à l'aide du SDK d'évaluation personnalisé Nova.

      Charge utile de la demande Lambda Charge utile de réponse Lambda
      Préprocesseur
      { "process_type": "preprocess", "data": { "system": "You are a helpful assistant", "prompt": "What is 2+2?", "gold": "4" } }
      { "statusCode": 200, "body": { "system": "You are a helpful assistant that can substitute * for addition", "prompt": "What is 2*2?", "gold": "4" } }
      Post-processeur
      { "process_type": "postprocess", "data": { "prompt": "What is 2+2?", "inference_output": "2+2=4", "gold": "4" } }
      { "statusCode": 200, "body": [ {"metric": "accuracy", "value": 1.0}, {"metric": "f1_score", "value": 1.0}, {"metric": "exact_match", "value": 1}, {"metric": "length_ratio", "value": 0.8} ] }
    8. Modifiez le fichier de recette. Voici un exemple.

      processor: lambda_arn: arn:aws:lambda:us-east-1:111122223333:function:name lambda_type: "custom_metrics" preprocessing: enabled: true postprocessing: enabled: true aggregation: average
      • lambda-arn: Amazon Resource Name (ARN) de votre fonction Lambda qui gère le prétraitement et le post-traitement.

      • lambda_type: « custom_metrics » ou « rft ».

      • preprocessing: s'il faut activer les opérations de prétraitement personnalisées.

      • postprocessing: s'il faut activer les opérations de post-traitement personnalisées.

      • aggregation: fonction d'agrégation intégrée (options valides : min, max, moyenne, somme).

    Limites

    • Bring your own metrics ne s'applique qu'aux ensembles de données de saisie de texte.

    • Les ensembles de données d'entrée multimodaux ne sont pas pris en charge.

    • L'étape de prétraitement ne traite pas le champ de métadonnées.

    Nova LLM-juge est une fonctionnalité 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 victoire basée sur la probabilité de Bradley-Terry par le biais de comparaisons par paires. Format de formule : xxx_llm_judge_eval.yaml.

    Exigences relatives à le jeu de données Nova LLM

    Format de fichier :

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

    • Vous devez télécharger votre ensemble de données sur un emplacement S3 auquel les tâches de SageMaker formation peuvent accéder.

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

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

    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.

      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

    { "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

    Limites

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

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

    • Les modèles Nova Judge sont les mêmes quelles que soient les spécifications micro/lite/pro.

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

    Nova LLM en tant que juge pour les recettes de référence multimodales (image)

    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 instructions, 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 de 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 are in each 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 identiques selon les spécifications d'Amazon Nova Micro, Amazon Nova Lite et Amazon Nova Pro.

    • 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.

    Exécution de tâches d’entraînement d’évaluation

    Commencez une tâche d’entraînement à l’aide de l’exemple de bloc-notes Jupyter ci-dessous. Veuillez vous référer au bloc-notes ci-dessous à titre d'exemple pour exécuter la tâche de formation à l'évaluation. Pour plus d'informations, voir Utiliser un estimateur SageMaker basé sur l'IA pour exécuter une tâche de formation.

    Tableaux de référence

    Avant d’exécuter le bloc-notes, reportez-vous aux tableaux de référence suivants pour sélectionner l’URI de l’image et les configurations d’instance.

    Sélection de l’URI d’image

    Formule URI de l’image

    URI de l’image d’évaluation

    708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest

    Sélection du type et du nombre d’instances

    Modèle Type de tâche Type d’instance Nombre d’instances recommandées Nombre d’instances autorisées
    Amazon Nova Micro Évaluation (SFT/DPO)

    g5.12xlarge

    1 1 à 16 ans
    Amazon Nova Lite Évaluation (SFT/DPO)

    g5.12xlarge

    1 1 à 16 ans
    Amazon Nova Pro Évaluation (SFT/DPO)

    p5.48xlarge

    1 1 à 16 ans

    Exemple de bloc-notes

    L’exemple de bloc-notes ci-après montre comment exécuter une tâche d’entraînement d’évaluation.

    # install python SDK # Do not use sagemaker v3, as sagemaker v3 introduced breaking changes !pip install sagemaker==2.254.1 import os import sagemaker,boto3 from sagemaker.inputs import TrainingInput from sagemaker.pytorch import PyTorch sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # Download recipe from https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/evaluation/nova to local # Assume the file name be `recipe.yaml` # Populate parameters # input_s3_uri = "s3://<path>/input/" # (Optional) Only used for multi-modal dataset or bring your own dataset s3 location output_s3_uri= "s3://<path>/output/" # Output data s3 location, a zip containing metrics json and tensorboard metrics files will be stored to this location instance_type = "instance_type" # ml.g5.16xlarge as example instance_count = 1 # The number of instances for inference (set instance_count > 1 for multi-node inference to accelerate evaluation) job_name = "your job name" recipe_path = "recipe path" # ./recipe.yaml as example image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest" # Do not change # (Optional) To bring your own dataset and LLM judge for evaluation # evalInput = TrainingInput( # s3_data=input_s3_uri, # distribution='FullyReplicated', # s3_data_type='S3Prefix' #) estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role, instance_type=instance_type, instance_count=instance_count, training_recipe=recipe_path, sagemaker_session=sagemaker_session, image_uri=image_uri ) estimator.fit() # If input dataset exist, pass in inputs # estimator.fit(inputs={"train": evalInput})

    Évaluation et analyse des résultats d’évaluation

    Une fois votre tâche d’évaluation terminée avec succès, vous pouvez évaluer et analyser les résultats en suivant les étapes suivantes.

    Pour évaluer et analyser les résultats, procédez comme suit.
    1. Comprenez la structure de l’emplacement de sortie. Les résultats sont stockés dans l’emplacement de sortie Amazon S3 que vous avez spécifié sous forme de fichier compressé :

      s3://your-bucket/output/benchmark-name/ └── job_name/ └── output/ └── output.tar.gz
    2. Téléchargez le fichier output.tar.gz depuis votre compartiment. Extrayez le contenu pour le révéler.

      run_name/ ├── eval_results/ | └── results_[timestamp].json │ └── inference_output.jsonl (only present for gen_qa) | └── details/ | └── model/ | └── <execution-date-time>/ | └──details_<task_name>_#_<datetime>.parquet └── tensorboard_results/ └── eval/ └── events.out.tfevents.[timestamp]
      • results_[timestamp].json : fichier JSON des métriques de sortie

      • details_<task_name>_#_<datetime>.parquet : fichier de sortie d’inférence (sauf pour strong_reject)

      • events.out.tfevents.[timestamp]- fichier TensorBoard de sortie

      • inference_output.jsonl : fichier de sortie d’inférence nettoyé (uniquement pour les tâches gen_qa)

    3. Afficher les résultats dans TensorBoard. Pour visualiser vos métriques d’évaluation :

      1. Chargez le dossier extrait dans un compartiment S3

      2. Naviguez vers SageMaker TensorBoard

      3. Sélectionnez vos « dossiers S3 »

      4. Ajoutez le chemin du dossier S3

      5. Patientez jusqu’à ce que la synchronisation soit terminée

    4. Analysez les sorties d’inférence. Toutes les tâches d’évaluation, à l’exception de llm_judge et strong_reject, comporteront les champs d’analyse suivants dans le résultat d’inférence.

      • full_prompt- L'invite utilisateur complète envoyée au modèle utilisé pour la tâche d'évaluation.

      • gold- Le champ qui contient la ou les bonnes réponses spécifiées par l'ensemble de données.

      • metrics- Le champ qui contient les métriques évaluées sur la base de l'inférence individuelle. Les valeurs nécessitant une agrégation n’auraient pas de valeur sur les sorties d’inférence individuelles.

      • predictions- Le champ qui contient la liste des résultats du modèle pour l'invite donnée.

      • pred_logits- Le champ qui contient les jetons de sortie pris en compte et les probabilités de journalisation de chaque jeton de sortie renvoyé dans le contenu du message.

      En consultant ces champs, vous pouvez déterminer la cause des différences entre les métriques et comprendre le comportement des modèles personnalisés.

      Pour llm_judge, le fichier de sortie d’inférence contient les champs suivants sous le champ des métriques par paire d’évaluations.

      • forward_output : préférences brutes de juge lors de l’évaluation dans l’ordre (response_A, response_B).

      • backward_output : préférences brutes de juge lors de l’évaluation dans l’ordre inverse (response_B, response_A).

      • Pairwise metrics : métriques calculés par paire d’évaluations avant et arrière, y compris a_scores, b_scores, ties, inference-score et score.

        Note

        Les métriques agrégées telles que winrate ne sont disponibles que dans les fichiers de résultats récapitulatifs, et non par jugement individuel.

      Pour gen_qa, le fichier inference_output.jsonl contient les champs suivants pour chaque objet JSON :

      • invite : le message final soumis au modèle

      • inférence : la sortie d’inférence brute du modèle

      • gold - La réponse cible de l'ensemble de données en entrée

      • metadata - La chaîne de métadonnées de l'ensemble de données en entrée, si elle est fournie

    Bonnes pratiques d’évaluation et dépannage

    Bonnes pratiques

    Voici une liste de bonnes pratiques pour le processus d’évaluation.

    • Organisez vos chemins de sortie par modèle et par type de référence.

    • Maintenez des conventions de dénomination cohérentes pour faciliter le suivi.

    • Enregistrez les résultats extraits dans un emplacement sécurisé.

    • Surveillez l'état de TensorBoard synchronisation pour vérifier que le chargement des données est réussi.

    Résolution des problèmes

    Vous pouvez utiliser le groupe de CloudWatch journaux /aws/sagemaker/TrainingJobs pour former les journaux d'erreurs des tâches.

    Défaillance du cœur du moteur

    Problème :

    Si vous constatez :

    RuntimeError: Engine core initialization failed.

    Cause :

    Bien qu'il s'agisse d'une erreur générale pouvant avoir plusieurs causes, elle se produit généralement lorsqu'il existe une incompatibilité entre le point de contrôle du modèle que vous essayez de charger et le type de modèle spécifié. Par exemple, vous souhaitez évaluer un point de contrôle affiné du modèle Nova 2.0 lite, mais le type de modèle que vous fournissez est de type 1.0. Par exemple amazon.nova-micro-v1:0:128k

    Le mappage correct doit être

    model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod # or s3://escrow_bucket/model_location

    Prévention :

    Vérifiez qu'model_name_or_pathil est mappé vers la droite model_type avant de soumettre le travail d'évaluation.

    Sous-tâches disponibles

    La liste suivante répertorie les sous-tâches disponibles pour l'évaluation de modèles dans plusieurs domaines, notamment MMLU (Massive Multitask Language Understanding), BBH (Big Bench Hard) et MATH. Ces sous-tâches vous permettent d’évaluer les performances de votre modèle par rapport à des capacités et à des domaines de connaissances spécifiques.

    MMLU

    MMLU_SUBTASKS = [ "abstract_algebra", "anatomy", "astronomy", "business_ethics", "clinical_knowledge", "college_biology", "college_chemistry", "college_computer_science", "college_mathematics", "college_medicine", "college_physics", "computer_security", "conceptual_physics", "econometrics", "electrical_engineering", "elementary_mathematics", "formal_logic", "global_facts", "high_school_biology", "high_school_chemistry", "high_school_computer_science", "high_school_european_history", "high_school_geography", "high_school_government_and_politics", "high_school_macroeconomics", "high_school_mathematics", "high_school_microeconomics", "high_school_physics", "high_school_psychology", "high_school_statistics", "high_school_us_history", "high_school_world_history", "human_aging", "human_sexuality", "international_law", "jurisprudence", "logical_fallacies", "machine_learning", "management", "marketing", "medical_genetics", "miscellaneous", "moral_disputes", "moral_scenarios", "nutrition", "philosophy", "prehistory", "professional_accounting", "professional_law", "professional_medicine", "professional_psychology", "public_relations", "security_studies", "sociology", "us_foreign_policy", "virology", "world_religions" ]

    BBH

    BBH_SUBTASKS = [ "boolean_expressions", "causal_judgement", "date_understanding", "disambiguation_qa", "dyck_languages", "formal_fallacies", "geometric_shapes", "hyperbaton", "logical_deduction_five_objects", "logical_deduction_seven_objects", "logical_deduction_three_objects", "movie_recommendation", "multistep_arithmetic_two", "navigate", "object_counting", "penguins_in_a_table", "reasoning_about_colored_objects", "ruin_names", "salient_translation_error_detection", "snarks", "sports_understanding", "temporal_sequences", "tracking_shuffled_objects_five_objects", "tracking_shuffled_objects_seven_objects", "tracking_shuffled_objects_three_objects", "web_of_lies", "word_sorting" ]

    Math

    MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus",

    Évaluez vos modèles Nova personnalisés à l'aide de diverses méthodes et mesures d'évaluation.