Évaluation de votre modèle entraîné
Une formule d’évaluation est un fichier de configuration YAML qui définit la manière dont votre tâche d’évaluation des modèles Amazon Nova est exécutée. Avec cette formule, vous pouvez évaluer les performances d’un modèle de base ou entraîné par rapport à des points de référence courants ou à vos propres jeux de données personnalisés. Les métriques peuvent être stockées dans Amazon S3 ou TensorBoard. L’évaluation fournit des métriques quantitatives qui vous aident à évaluer les performances du modèle dans le cadre de différentes tâches afin de déterminer si une personnalisation supplémentaire est nécessaire.
L’évaluation des modèles est un processus hors ligne, dans le cadre duquel les modèles sont testés par rapport à des points de référence fixes avec des réponses prédéfinies. Ils ne sont pas évalués en temps réel ni par rapport aux interactions réelles des utilisateurs. Pour les évaluations en temps réel, vous pouvez tester le modèle après son déploiement sur Amazon Bedrock en appelant les API d’exécution Amazon Bedrock.
Rubriques
Tâches de point de référence disponibles
Un exemple de package de code est disponible qui illustre comment calculer les métriques de référence à l’aide de la caractéristique d’évaluation des modèles SageMaker AI pour Amazon Nova. Pour accéder aux packages de code, consultez sample-Nova-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 :
Comparaison |
Modalité |
Description |
Métriques |
Strategy |
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 |
zs_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 |
Texte |
Évaluation personnalisée du jeu de données : vous permet de fournir votre propre jeu de données à des fins d’analyse comparative, et de comparer les sorties du modèle aux réponses de référence avec des métriques telles que ROUGE et BLEU. |
Tout |
gen_qa |
Non |
mmmu |
Multimodale |
Compréhension multidisciplinaire et multimodale massive (MMMU) : indice de référence de niveau universitaire comprenant des questions à choix multiples et ouvertes provenant de 30 disciplines. |
précision |
zs_cot |
Oui |
llm_judge |
Texte |
Comparaison des préférences LLM-juge : 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 |
humaneval |
Texte |
HumanEval : jeu de données de points de référence conçu pour évaluer les capacités de génération de code de grands modèles de langage. |
pass@1 |
zs |
Non |
Les sous-tâches mmlu suivantes sont disponibles :
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" ]
Les sous-tâches bbh suivantes sont disponibles :
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" ]
Les sous-tâches math suivantes sont disponibles :
MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus", ]
Compréhension des paramètres de la formule
Configuration d’exécution
Vous trouverez ci-dessous une configuration d’exécution générale et une explication des paramètres impliqués.
run: name: eval_job_name model_type: amazon.nova-micro-v1:0:128k model_name_or_path: nova-micro/prod replicas: 1 data_s3_path: "" output_s3_path: s3://output_path
-
name: nom descriptif de votre tâche d’évaluation (obligatoire). Ceci permet d’identifier votre tâche dans la console AWS. -
model_type: spécifie la variante du modèle Amazon Nova à utiliser (obligatoire). Ne modifiez pas ce champ manuellement. Les options incluent :-
amazon.nova-micro-v1:0:128k -
amazon.nova-lite-v1:0:300k -
amazon.nova-pro-v1:0:300k
-
-
model_name_or_path: chemin vers le modèle de base ou le chemin S3 pour le point de contrôle post-entraîné (obligatoire). Les options incluent :-
nova-micro/prod -
nova-lite/prod -
nova-pro/prod -
(chemin S3 pour le chemin de point de contrôle post-entraîné)
s3://<escrow bucket>/<job id>/outputs/checkpoints
-
-
replicas: nombre d’instances de calcul à utiliser pour l’entraînement distribué (obligatoire). Vous devez définir cette valeur sur 1, car les nœuds multiples ne sont pas pris en charge. -
data_s3_path: chemin S3 vers le jeu de données d’entrée (obligatoire). Laissez ce paramètre vide, sauf si vous utilisez la formule « apportez votre propre jeu de données » ou LLM-juge. -
output_s3_path: chemin S3 pour stocker les artefacts d’évaluation de sortie (obligatoire). Notez que le compartiment S3 de sortie doit être créé par le même compte que celui qui crée la tâche.
Configuration d’évaluation
Vous trouverez ci-dessous une configuration d’évaluation des modèles et une explication des paramètres impliqués.
evaluation: task: mmlu strategy: zs_cot subtask: mathematics metric: accuracy
-
task: spécifie le point de référence ou la tâche d’évaluation à utiliser (obligatoire).Liste de tâches prises en charge :
-
mmlu
-
mmlu_pro
-
bbh
-
gpqa
-
math
-
strong_reject
-
gen_qa
-
ifeval
-
mmmu
-
llm_judge
-
humaneval
-
-
strategy: définit l’approche d’évaluation (obligatoire) :-
zs_cot : chaîne de pensée en zéro coup : approche d’invite pour les grands modèles de langage, qui encourage le raisonnement étape par étape sans nécessiter d’exemples explicites.
-
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 vos propres formules de jeux de données.
-
judge : stratégie spécifique aux formules Amazon Nova LLM-juge.
-
-
subtask: spécifie une sous-tâche spécifique pour certaines tâches d’évaluation (facultatif et amovible). Supprimez ceci de votre formule si votre tâche ne comporte aucune sous-tâche. -
metric: métrique d’évaluation à utiliser (obligatoire).-
accuracy : pourcentage de bonnes réponses
-
exact_match : renvoie le taux auquel les chaînes prédites en entrée correspondent exactement à leurs références (pour un point de référence
math). -
deflection : renvoie la déflexion relative par rapport au modèle de base et la différence entre les métriques de signification (pour un point de référence
strong reject). -
pass@1 : métrique utilisée pour mesurer le pourcentage de cas où la prédiction la plus fiable du modèle correspond à la bonne réponse (pour un point de référence
humaneval). -
all: renvoie les métriques suivantes :-
Pour
gen_qaet « apportez votre propre point de référence de jeu de données », renvoie 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_judgeet « apportez votre propre point de référence de jeu de données », renvoie 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: nombre de victoires pourresponse_Bsur les passes d’évaluation avant et arrière. -
b_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 des égalités pour les jugements par paires. -
inference_error: nombre de jugements qui n’ont pas pu être correctement évalués. -
inference_error_stderr: erreur standard d’inférence entre les jugements. -
score: score agrégé basé sur les victoires obtenues lors des passes avant et arrière pourresponse_B. -
score_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.
-
-
-
Configuration d’inférence
Vous trouverez ci-dessous une configuration d’inférence et une explication des paramètres impliqués. Tous les paramètres sont facultatifs.
inference: max_new_tokens: 200 top_k: -1 top_p: 1.0 temperature: 0
-
max_new_tokens: nombre maximum de jetons à générer. Il doit s’agir d’un nombre entier. -
top_k: nombre de jetons présentant la probabilité la plus élevée à prendre en compte. Il doit s’agir d’un nombre entier. -
top_p: seuil de probabilité cumulé pour l’échantillonnage de jetons. Il doit s’agir d’une valeur flottante comprise entre 0 et 1 inclus. -
temperature: imprévisibilité dans la sélection des jetons. Plus les valeurs sont élevées, plus le caractère aléatoire est élevé. Utilisez 0 pour rendre les résultats déterministes. Il doit s’agir d’une valeur flottante d’au minimum 0.
Notez que pour humaneval, nous recommandons la configuration d’inférence suivante :
inference: top_k: 1 max_new_tokens: 1600 temperature: 0.0
Exemples de formules d’évaluation
Amazon Nova propose quatre types de formules d’évaluation, disponibles dans le référentiel GitHub des formules HyperPod.
Formules de point de référence de texte général
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.
Formules générales de points de référence multimodaux
Ces formules vous permettent d’évaluer les capacités fondamentales des modèles Amazon Nova à travers une suite complète de points de référence multimodaux. Elles sont fournies au format xxx_general_multi_modal_benchmark_eval.yaml.
Formules de points de référence Apportez vos propres jeux de données
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.jsonlcontenant des exemples d’évaluation. -
Vous devez charger votre jeu de données dans un emplacement S3 auquel les tâches d’entraînement SageMaker AI peuvent 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)
-
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 limitations 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 exemple du jeu de données, la longueur du contexte (y compris les invites système et de requête) doit être inférieure à 3 500 jetons
Formule de points de référence Amazon Nova LLM-juge
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
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.jsonlcontenant des exemples d’évaluation. Le fichier doit être nomméllm_judge.jsonl. -
Vous devez charger votre jeu de données dans un emplacement S3 auquel le RIG HyperPod SageMaker AI 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 limitations 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 exemple du jeu de données, la longueur du contexte (y compris les invites système et de requête) doit être inférieure à 7 000 jetons
Démarrage d’une tâche d’évaluation
Vous trouverez ci-dessous une suggestion de configuration du type d’instance d’évaluation et du type de modèle :
# Install Dependencies (Helm - https://helm.sh/docs/intro/install/) curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh # Install the HyperPod CLI git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git git checkout -b release_v2 cd sagemaker-hyperpod-cli pip install . # Verify the installation hyperpod --help # Connect to a HyperPod Cluster hyperpod connect-cluster --cluster-namecluster-name# Submit the Job using the recipe for eval # Namespace by default should be kubeflow hyperpod start-job [--namespacenamespace] --recipe evaluation/nova/nova_micro_p5_48xl_general_text_benchmark_eval --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest", "recipes.run.name":custom-run-name, "recipes.run.model_type":model_type, "recipes.run.model_name_or_path" "model name or finetune checkpoint s3uri, "recipes.run.data_s3_path":s3 for input data only for genqa and llm_judge, must be full S3 path that include filename, }' # List jobs hyperpod list-jobs [--namespacenamespace] [--all-namespaces] # Getting Job details hyperpod get-job --job-namejob-name[--namespacenamespace] [--verbose] # Listing Pods hyperpod list-pods --job-namejob-name--namespacenamespace# Cancel Job hyperpod cancel-job --job-namejob-name[--namespacenamespace]
Vous devriez également être en mesure de consulter le statut de la tâche via la console du cluster Amazon EKS.
Accès aux résultats d’évaluation et analyse
Une fois votre tâche d’évaluation terminée avec succès, vous pouvez accéder aux résultats et les analyser à l’aide des informations de cette section. Sur la base de ce qui est défini dans la formule output_s3_path (par exemple, s3://output_path/), la structure de sortie est la suivante :
job_name/ ├── eval-result/ │ └── 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]
Les résultats des métriques sont stockés dans l’emplacement de sortie S3 s3://output_path/job_name/eval-result/result-timestamp.json spécifié.
Les résultats Tensorboard sont stockés dans le chemin S3 s3://output_path/job_name/eval-tensorboard-result/eval/event.out.tfevents.epoch+ip.
Toutes les sorties d’inférence, à l’exception de llm_judge et de strong_reject, sont stockées dans le chemin S3 s3://output_path/job_name/eval-result/details/model/taskname.parquet.
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
Pour visualiser vos métriques d’évaluation dans Tensorboard, suivez les étapes ci-après :
-
Accédez à SageMaker AI Tensorboard.
-
Sélectionnez les dossiers S3.
-
Ajoutez le chemin de votre dossier S3, par exemple
s3://output_path/job-name/eval-tensorboard-result/eval. -
Patientez jusqu’à ce que la synchronisation soit terminée.
Les séries temporelles, les scalaires et les visualisations de texte sont disponibles.
Nous recommandons les bonnes pratiques suivantes :
-
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 synchronisation de TensorBoard pour vérifier que le chargement des données est réussi.
Vous pouvez trouver les journaux d’erreurs des tâches HyperPod dans le groupe de journaux CloudWatch /aws/sagemaker/Clusters/cluster-id.