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
Rubriques
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. |
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-dessus |
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 |
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.jsondans votre compartiment de sortie contenant l’emplacement de votre point de contrôle. Ce fichier sera situé dans un fichieroutput.tar.gzà votre emplacement S3 de sortie. Pour procéder à l’évaluation, utilisez ce point de contrôle en le définissant comme valeur pourrun.model_name_or_pathdans 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éfinissezreplica> 1 pour activer l'inférence multi-nœuds, ce qui accélère l'évaluation. Siinstance_countles deuxreplicasont spécifiés,instance_countpré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_judgeetmm_llm_judge, apportez votre propre base de données de référence, renvoyez les métriques suivantes :-
a_scores: nombre de victoires pourresponse_Asur les passes d’évaluation avant et arrière. -
a_scores_stderr: erreur standard deresponse_A_scorespour les jugements par paires. -
b_scores: mesure le nombre de victoires pourresponse_Bsur les passes d’évaluation avant et arrière. -
a_scores_stderr: erreur standard deresponse_B_scorespour les jugements par paires. -
ties: nombre de jugements oùresponse_Aetresponse_Bsont évaluées comme égales. -
ties_stderr: erreur standard detiespour 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 pourresponse_B. -
score_stderr: score agrégé basé sur les victoires obtenues lors des passes avant et arrière pourresponse_B. -
inference_error_stderr: erreur type du score agrégé pour les jugements par paires. -
winrate: probabilité que la réponseresponse_Bsoit 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éfinireasoning_effortuniquement lorsquemodel_typespé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.jsonlunique contenant des exemples d’évaluation. Le nom du fichier doit être exactementgen_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
.jsonlest 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é.
-
Si vous ne l'avez pas encore fait, créez une AWS Lambda fonction dans votre Compte AWS premier.
-
Téléchargez le
nova-custom-eval-layer.zipfichier 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. -
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 -
Ajoutez cette couche en tant que couche personnalisée à votre fonction Lambda, ainsi que la AWS couche requise :
AWSLambdaPowertoolsPythonV3-python312-arm64(requise pour lapydanticdépendance). -
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 ) -
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.
-
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} ] } -
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-Terryxxx_llm_judge_eval.yaml.
Exigences relatives à le jeu de données Nova LLM
Format de fichier :
-
Fichier
llm_judge.jsonlunique contenant des exemples d’évaluation. Le nom du fichier doit être exactementllm_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
.jsonlest 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-Terryxxx_mm_llm_judge_eval.yaml.
Exigences relatives à le jeu de données Nova LLM
Format de fichier :
-
Fichier
mm_llm_judge.jsonlunique 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
.jsonlest 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 (setinstance_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.
-
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 -
Téléchargez le fichier
output.tar.gzdepuis 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 pourstrong_reject) -
events.out.tfevents.[timestamp]- fichier TensorBoard de sortie -
inference_output.jsonl: fichier de sortie d’inférence nettoyé (uniquement pour les tâchesgen_qa)
-
-
Afficher les résultats dans TensorBoard. Pour visualiser vos métriques d’évaluation :
-
Chargez le dossier extrait dans un compartiment S3
-
Naviguez vers SageMaker TensorBoard
-
Sélectionnez vos « dossiers S3 »
-
Ajoutez le chemin du dossier S3
-
Patientez jusqu’à ce que la synchronisation soit terminée
-
-
Analysez les sorties d’inférence. Toutes les tâches d’évaluation, à l’exception de
llm_judgeetstrong_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 comprisa_scores,b_scores,ties,inference-scoreetscore.Note
Les métriques agrégées telles que
winratene sont disponibles que dans les fichiers de résultats récapitulatifs, et non par jugement individuel.
Pour
gen_qa, le fichierinference_output.jsonlcontient 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.