Valutazione di un modello addestrato
Una ricetta di valutazione è un file di configurazione YAML che definisce la modalità di esecuzione di un processo di valutazione dei modelli Amazon Nova. Con questa ricetta è possibile valutare le prestazioni di un modello di base o addestrato rispetto a benchmark comuni o a set di dati personalizzati. Le metriche possono essere archiviate in Amazon S3 o TensorBoard. La valutazione fornisce metriche quantitative che permettono di valutare le prestazioni di un modello in varie attività per determinare se sono necessarie ulteriori personalizzazioni.
La valutazione dei modelli è un processo offline, in cui i modelli vengono testati rispetto a benchmark fissi con risposte predefinite. Non vengono valutati in tempo reale o in base alle interazioni attive degli utenti. Per le valutazioni in tempo reale è possibile valutare un modello dopo averlo implementato su Amazon Bedrock chiamando le API di runtime di Amazon Bedrock.
Argomenti
Attività di benchmarking disponibili
È disponibile un pacchetto di codice di esempio che dimostra come calcolare le metriche di benchmarking utilizzando la funzionalità di valutazione dei modelli SageMaker AI per Amazon Nova. Per accedere ai pacchetti di codice, consulta sample-Nova-lighteval-custom-task
Di seguito è riportato un elenco dei benchmark standard di settore supportati e disponibili. È possibile specificare i benchmark seguenti nel parametro eval_task:
Benchmark |
Modalità |
Descrizione |
Metriche |
Strategia |
Sottoattività disponibile |
|---|---|---|---|---|---|
mmlu |
Testo |
Massive Multitask Language Understanding (MMLU) - Verifica la conoscenza di 57 materie. |
accuratezza |
zs_cot |
Sì |
mmlu_pro |
Testo |
MMLU - Sottoinsieme professionale - Incentrato su domini professionali come legge, medicina, contabilità e ingegneria. |
accuratezza |
zs_cot |
No |
bbh |
Testo |
Attività di ragionamento avanzato - Una raccolta di problemi impegnativi che mettono alla prova le capacità cognitive e di risoluzione dei problemi di livello superiore. |
accuratezza |
zs_cot |
Sì |
gpqa |
Testo |
Risposta a domande di fisica generale - Valuta la comprensione di concetti di fisica e le relative capacità di risoluzione dei problemi. |
accuratezza |
zs_cot |
No |
matematica |
Testo |
Risoluzione di problemi matematici - Misura il ragionamento matematico su argomenti quali algebra, calcolo e problemi testuali. |
exact_match |
zs_cot |
Sì |
strong_reject |
Testo |
Attività di controllo della qualità - Verifica la capacità del modello di rilevare e rifiutare contenuti inappropriati, dannosi o errati. |
deflection |
zs |
Sì |
IFEval |
Testo |
Valutazione che segue istruzioni - Misura la precisione con cui un modello segue le istruzioni fornite e completa le attività secondo le specifiche. |
accuratezza |
zs |
No |
gen_qa |
Testo |
Valutazione dei set di dati personalizzati - Consente di utilizzare uno specifico set di dati per il benchmarking, confrontando gli output del modello con le risposte di riferimento con metriche come ROUGE e BLEU. |
tutto |
gen_qa |
No |
mmmu |
Multimodale |
Massive Multidiscipline Multimodal Understanding (MMMU) - Benchmark a livello universitario che comprende domande a scelta multipla e a risposta aperta relative a 30 discipline. |
accuratezza |
zs_cot |
Sì |
llm_judge |
Testo |
Confronto delle preferenze LLM-as-a-judge - Utilizza un modello Nova Judge per determinare la preferenza tra risposte accoppiate (B rispetto ad A) per i prompt, calcolando la probabilità che B venga preferita ad A. |
tutto |
judge |
No |
humaneval |
Testo |
HumanEval - Un set di dati di benchmark progettato per valutare le capacità di generazione di codice di modelli linguistici di grandi dimensioni |
pass@1 |
zs |
No |
Sono disponibili le seguenti sottoattività 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" ]
Sono disponibili le seguenti sottoattività 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" ]
Sono disponibili le seguenti sottoattività math:
MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus", ]
Informazioni sui parametri delle ricette
Configurazione run
Di seguito è riportata una configurazione di tipo run generale con una spiegazione dei parametri coinvolti.
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: (obbligatorio) un nome descrittivo per il processo di valutazione. Consente di identificare il processo nella console AWS. -
model_type: (obbligatorio) specifica la variante del modello Amazon Nova da utilizzare. Non modificare manualmente questo campo. Le opzioni includono:-
amazon.nova-micro-v1:0:128k -
amazon.nova-lite-v1:0:300k -
amazon.nova-pro-v1:0:300k
-
-
model_name_or_path: (obbligatorio) il percorso del modello di base o il percorso S3 per il checkpoint post-addestrato. Le opzioni includono:-
nova-micro/prod -
nova-lite/prod -
nova-pro/prod -
(Percorso S3 per il checkpoint post-addestrato)
s3://<escrow bucket>/<job id>/outputs/checkpoints
-
-
replicas: (obbligatorio) il numero di istanze di calcolo da utilizzare per l’addestramento distribuito. È necessario impostare questo valore su 1, perché la modalità multinodo non è supportata. -
data_s3_path: (obbligatorio) il percorso S3 del set di dati di input. Lascia vuoto questo parametro, se non in caso di utilizzo di una ricetta Bring Your Own Dataset o LLM-as-a-judge. -
output_s3_path: (obbligatorio) il percorso S3 per archiviare gli artefatti di valutazione dell’output. Il bucket S3 di output deve essere creato dallo stesso account che crea il processo.
Configurazione evaluation
Di seguito è riportata una configurazione di tipo evaluation del modello con una spiegazione dei parametri coinvolti.
evaluation: task: mmlu strategy: zs_cot subtask: mathematics metric: accuracy
-
task: (obbligatorio) specifica il benchmark o l’attività di valutazione da utilizzare.Elenco delle attività supportate:
-
mmlu
-
mmlu_pro
-
bbh
-
gpqa
-
matematica
-
strong_reject
-
gen_qa
-
ifeval
-
mmmu
-
llm_judge
-
humaneval
-
-
strategy: (obbligatorio) definisce l’approccio di valutazione:-
zs_cot: Zero-shot Chain-of-Thought - Un approccio per creare prompt per modelli linguistici di grandi dimensioni che incoraggia il ragionamento passo dopo passo senza richiedere esempi espliciti.
-
zs: Zero-shot - Un approccio per risolvere un problema senza esempi di addestramento precedenti.
-
gen_qa: una strategia specifica per ricette di tipo Bring Your Own Dataset.
-
judge: una strategia specifica per ricette di tipo Amazon Nova LLM-as-a-judge.
-
-
subtask: (facoltativo e rimovibile) specifica una determinata sottoattività per alcune attività di valutazione. Rimuovila dalla tua ricetta se la tua attività non include sottoattività. -
metric: (obbligatorio) la metrica di valutazione da utilizzare.-
accuracy: percentuale di risposte corrette
-
exact_match: (per il benchmark
math), restituisce la velocità con cui le stringhe previste nell’input corrispondono esattamente ai loro riferimenti. -
deflection: (per il benchmark
strong reject), restituisce la deviazione relativa rispetto al modello di base e la differenza nelle metriche di significatività. -
pass@1: (per il benchmark
humaneval) è una metrica utilizzata per misurare la percentuale di casi in cui la previsione con la massima affidabilità del modello corrisponde alla risposta corretta. -
all: restituisce le seguenti metriche:-
Per un benchmark Bring Your Own Dataset e
gen_qa, restituisce le seguenti metriche:-
rouge1: misura la sovrapposizione di unigrammi (parole singole) tra il testo generato e quello di riferimento. -
rouge2: misura la sovrapposizione di bigrammi (due parole consecutive) tra il testo generato e quello di riferimento. -
rougeL: misura la sottosequenza comune più lunga tra testi, tenendo conto di lacune nella corrispondenza. -
exact_match: punteggio binario (0 oppure 1) che indica se il testo generato corrisponde esattamente al testo di riferimento, carattere per carattere. -
quasi_exact_match: simile alla corrispondenza esatta, ma meno rigida, in genere ignora le differenze tra maiuscole e minuscole, punteggiatura e spazi. -
f1_score: media armonica di precisione e richiamo, che misura la sovrapposizione di parole tra le risposte previste e quelle di riferimento. -
f1_score_quasi: simile a f1_score, ma con una corrispondenza meno rigida, utilizza un confronto di testo normalizzato che ignora differenze minori. -
bleu: misura la precisione delle corrispondenze in n-grammi tra il testo generato e quello di riferimento, comunemente utilizzate nella valutazione delle traduzioni.
-
-
Per un benchmark Bring Your Own Dataset e
llm_judge, restituisce le seguenti metriche:-
a_scores: numero di vittorie perresponse_Anei passaggi di valutazione avanti e indietro. -
a_scores_stderr: errore standard diresponse_A scoresnei giudizi a coppie. -
b_scores: numero di vittorie perresponse_Bnei passaggi di valutazione avanti e indietro. -
b_scores_stderr: errore standard diresponse_B scoresnei giudizi a coppie. -
ties: numero di giudizi in cuiresponse_Aeresponse_Bsono valutati in modo uguale. -
ties_stderr: errore standard di ties nei giudizi a coppie. -
inference_error: numero di giudizi che non è stato possibile valutare correttamente. -
inference_error_stderr: errore standard degli errori di inferenza nei i giudizi. -
score: punteggio aggregato basato sulle vittorie nei passaggi avanti e indietro perresponse_B. -
score_stderr: errore standard del punteggio aggregato nei giudizi a coppie. -
winrate: la probabilità che response_B venga preferito rispetto a response_a calcolato utilizzando la probabilità di Bradley-Terry. -
lower_rate: limite inferiore (percentile 2,5) del tasso di successo stimato derivante dal campionamento bootstrap.
-
-
-
Configurazione inference
Di seguito è riportata una configurazione di tipo inference con una spiegazione dei parametri coinvolti. Tutti i parametri sono opzionali:
inference: max_new_tokens: 200 top_k: -1 top_p: 1.0 temperature: 0
-
max_new_tokens: il numero massimo di token da generare. Deve essere un numero intero. -
top_k: il numero di token con la più alta probabilità da considerare. Deve essere un numero intero. -
top_p: la soglia di probabilità cumulativa per il campionamento tramite token. Deve essere un valore decimale compreso tra 0,0 e 1,0, entrambi inclusi. -
temperature: casualità nella selezione dei token. Valori più grandi introducono una maggiore casualità. Usa 0 per rendere deterministici i risultati. Deve essere un valore decimale minimo pari a 0.
Per humaneval è consigliabile la configurazione inference seguente:
inference: top_k: 1 max_new_tokens: 1600 temperature: 0.0
Esempi di ricette di valutazione
Amazon Nova offre quattro tipi di ricette di valutazione, disponibili nel repository GitHub delle ricette HyperPod.
Ricette di benchmark testuali generali
Queste ricette consentono di valutare le funzionalità fondamentali dei modelli Amazon Nova attraverso una suite completa di benchmark di solo testo. Sono fornite nel formato xxx_general_text_benchmark_eval.yaml.
Ricetta di benchmark multimodale generale
Queste ricette consentono di valutare le funzionalità fondamentali dei modelli Amazon Nova attraverso una suite completa di benchmark in multimodalità. Sono fornite nel formato xxx_general_multi_modal_benchmark_eval.yaml.
Ricetta di benchmark Bring Your Own Dataset
Queste ricette consentono di utilizzare un set di dati personalizzato per il benchmarking e confrontare i risultati del modello con risposte di riferimento utilizzando diversi tipi di metriche. Sono fornite nel formato xxx_bring_your_own_dataset_eval.yaml.
Di seguito sono riportati i requisiti per Bring Your Own Data:
-
Requisiti relativi al formato dei file
-
È necessario includere un singolo file
gen_qa.jsonlcontenente esempi di valutazione. -
Il set di dati deve essere caricato in una posizione S3 accessibile da parte del job di addestramento di SageMaker AI.
-
Il file deve seguire il formato dello schema richiesto per un set di dati di domande e risposte generico.
-
-
Requisiti del formato dello schema - Ogni riga del file JSONL deve essere un oggetto JSON con i campi seguenti:
-
query: (obbligatorio) stringa contenente la domanda o l’istruzione che richiede una risposta -
response: (obbligatorio) stringa contenente l’output del modello previsto -
system: (facoltativo) stringa contenente il prompt di sistema che imposta il comportamento, il ruolo o la personalità del modello di intelligenza artificiale prima che elabori la query
-
Ecco un esempio di inserimento Bring Your Own Dataset
{ "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" }
Per utilizzare un set di dati personalizzato, modifica la ricetta di valutazione con i seguenti campi obbligatori, senza modificare alcun contenuto:
evaluation: task: gen_qa strategy: gen_qa metric: all
Si applicano le limitazioni seguenti:
-
È consentito un solo file JSONL per valutazione.
-
Il file deve seguire rigorosamente lo schema definito.
-
Limite di lunghezza del contesto: per ogni campione del set di dati, la lunghezza del contesto (inclusi i prompt di query e di sistema) deve essere inferiore a 3.500
Ricetta di benchmark Amazon Nova LLM-as-a-judge
Amazon Nova LLM-as-a-judge è una funzionalità di valutazione del modello che consente ai clienti di confrontare la qualità delle risposte di un modello con una risposta del modello di base su un set di dati personalizzato. Comprende un set di dati con prompt, risposte di base e risposte di richiesta di verifica e utilizza un modello Nova Judge per fornire una metrica del tasso di successo basata sulla probabilità di Bradley-Terry
Le ricette sono fornite nel formato xxx_llm_judge_eval.yaml.
Di seguito sono riportati i requisiti per LLM-as-a-judge:
-
Requisiti relativi al formato dei file
-
È necessario includere un singolo file
llm_judge.jsonlcontenente esempi di valutazione. Il nome del file deve esserellm_judge.jsonl. -
Il set di dati deve essere caricato in una posizione S3 accessibile da parte del RIG di SageMaker AI HyperPod.
-
Il file deve seguire il formato dello schema richiesto per il set di dati
llm_judge.jsonl. -
Il set di dati di input deve garantire che tutti i record abbiano una lunghezza di contesto inferiore a 12.000.
-
-
Requisiti del formato dello schema - Ogni riga del file JSONL deve essere un oggetto JSON con i campi seguenti:
-
prompt: (obbligatorio) una stringa contenente il prompt per la risposta generata. -
response_A: una stringa contenente la risposta di base. -
response_B: una stringa contenente la risposta alternativa da confrontare con la risposta di base.
-
Ecco un esempio di inserimento LLM-as-a-judge
{ "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." }
Per utilizzare un set di dati personalizzato, modifica la ricetta di valutazione con i seguenti campi obbligatori, senza modificare alcun contenuto:
evaluation: task: llm_judge strategy: judge metric: all
Si applicano le limitazioni seguenti:
-
È consentito un solo file JSONL per valutazione.
-
Il file deve seguire rigorosamente lo schema definito.
-
I modelli Amazon Nova Judge sono gli stessi per tutte le specifiche delle famiglie di modelli (ovvero Lite, Micro e Pro).
-
Al momento i modelli Judge personalizzati non sono supportati.
-
Limite di lunghezza del contesto: per ogni campione del set di dati, la lunghezza del contesto (inclusi i prompt di query e di sistema) deve essere inferiore a 7.000
Avvio di un processo di valutazione
Di seguito viene fornita una configurazione consigliata del tipo di istanza di valutazione e del tipo di modello:
# 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]
Dovrebbe essere anche possibile visualizzare lo stato del processo tramite la console del cluster Amazon EKS.
Accesso e analisi dei risultati di valutazione
Una volta completato correttamente il processo di valutazione, è possibile accedere ai risultati e analizzarli utilizzando le informazioni contenute in questa sezione. In base al valore output_s3_path (ad esempio s3://output_path/) definito nella ricetta, la struttura di output è la seguente:
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]
I risultati delle metriche vengono archiviati nella posizione di output S3 s3://output_path/job_name/eval-result/result-timestamp.json specificata.
I risultati di Tensorboard vengono archiviati nel percorso S3 s3://output_path/job_name/eval-tensorboard-result/eval/event.out.tfevents.epoch+ip.
Tutti gli output di inferenza, ad eccezione di llm_judge e strong_reject, vengono archiviati nel percorso S3 s3://output_path/job_name/eval-result/details/model/taskname.parquet.
Per gen_qa, il file inference_output.jsonl contiene i seguenti campi per ogni oggetto JSON:
-
prompt - Il prompt finale inviato al modello
-
inference - L’output di inferenza non elaborato del modello
Per visualizzare le metriche di valutazione in Tensorboard, completa la seguente procedura:
-
Accedi a SageMaker AI Tensorboard.
-
Seleziona Cartelle S3.
-
Aggiungi il percorso della cartella S3, ad esempio
s3://output_path/job-name/eval-tensorboard-result/eval. -
Attendi il completamento della sincronizzazione.
Sono disponibili le visualizzazioni delle serie temporali, degli scalari e del testo.
È preferibile seguire le best practice seguenti:
-
Mantieni i percorsi di output organizzati per modello e tipo di benchmark.
-
Mantieni convenzioni di denominazione coerenti per semplificare il monitoraggio.
-
Salva i risultati estratti in una posizione sicura.
-
Monitora lo stato di sincronizzazione di TensorBoard per garantire il caricamento corretto dei dati.
I log degli errori dei processi HyperPod sono disponibili nel gruppo di log /aws/sagemaker/Clusters/cluster-id di CloudWatch.