

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Valutazione del modello, invio di un lavoro
<a name="model-customize-open-weight-evaluation"></a>

Questa sezione descrive la valutazione di modelli personalizzati a peso aperto. Ti consente di iniziare una procedura dettagliata del processo di valutazione e invio del lavoro. Sono disponibili risorse aggiuntive per casi d'uso più avanzati di invio di lavori di valutazione.

**Topics**
+ [Nozioni di base](model-customize-evaluation-getting-started.md)
+ [Tipi di valutazione e Job Submission](model-customize-evaluation-types.md)
+ [Formati delle metriche di valutazione](model-customize-evaluation-metrics-formats.md)
+ [Formati di set di dati supportati per attività Bring-Your-Own-Dataset (BYOD)](model-customize-evaluation-dataset-formats.md)
+ [Valuta con punteggi preimpostati e personalizzati](model-customize-evaluation-preset-custom-scorers.md)

# Nozioni di base
<a name="model-customize-evaluation-getting-started"></a>

## Invia un lavoro di valutazione tramite SageMaker Studio
<a name="model-customize-evaluation-studio"></a>

### Passaggio 1: accedi alla valutazione dalla tua scheda modello
<a name="model-customize-evaluation-studio-step1"></a>

Dopo aver personalizzato il modello, accedi alla pagina di valutazione dalla scheda del modello.

Per informazioni sull'allenamento con modelli personalizzati a pesi aperti: [https://docs.aws.amazon.com/sagemaker/latest/dg/model- .html customize-open-weight-job](https://docs.aws.amazon.com/sagemaker/latest/dg/model-customize-open-weight-job.html)

SageMaker visualizza il tuo modello personalizzato nella scheda I miei modelli:

![\[pagina della scheda modello registrata\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/getting-started-registered-model-card.png)


Scegli Visualizza la versione più recente, quindi scegli Valuta:

![\[Pagina di personalizzazione del modello\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/getting-started-evaluate-from-model-card.png)


### Fase 2: Invia il tuo Job di valutazione
<a name="model-customize-evaluation-studio-step2"></a>

Scegli il pulsante Invia e invia il tuo lavoro di valutazione. Questo invia un lavoro di benchmark MMLU minimo.

Per informazioni sui tipi di processi di valutazione supportati, vedere. [Tipi di valutazione e Job Submission](model-customize-evaluation-types.md)

![\[Pagina di invio del lavoro di valutazione\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/getting-started-benchmark-submission.png)


### Fase 3: Monitora lo stato di avanzamento del tuo Job di valutazione
<a name="model-customize-evaluation-studio-step3"></a>

L'avanzamento del lavoro di valutazione viene monitorato nella scheda Fasi di valutazione:

![\[Lo stato di avanzamento del processo di valutazione\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/getting-started-benchmark-tracking.png)


### Fase 4: Visualizzazione dei risultati del Job di valutazione
<a name="model-customize-evaluation-studio-step4"></a>

I risultati del lavoro di valutazione vengono visualizzati nella scheda Risultati della valutazione:

![\[Le metriche del tuo lavoro di valutazione\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/getting-started-benchmark-results.png)


### Fase 5: Visualizza le valutazioni completate
<a name="model-customize-evaluation-studio-step5"></a>

Il lavoro di valutazione completato viene visualizzato nella scheda Valutazioni del modello:

![\[I tuoi lavori di valutazione completati\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/getting-started-benchmark-completed-model-card.png)


## Invia il tuo lavoro di valutazione tramite SageMaker Python SDK
<a name="model-customize-evaluation-sdk"></a>

### Passaggio 1: crea il tuo BenchMarkEvaluator
<a name="model-customize-evaluation-sdk-step1"></a>

Passa il modello addestrato registrato, la posizione di output AWS S3 e l'ARN della MLFlow risorsa e quindi `BenchMarkEvaluator` inizializzali.

```
from sagemaker.train.evaluate import BenchMarkEvaluator, Benchmark  
  
evaluator = BenchMarkEvaluator(  
    benchmark=Benchmark.MMLU,  
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",  
    s3_output_path="s3://<bucket-name>/<prefix>/eval/",  
    mlflow_resource_arn="arn:aws:sagemaker:<region>:<account-id>:mlflow-tracking-server/<tracking-server-name>",  
    evaluate_base_model=False  
)
```

### Fase 2: Invia il tuo Job di valutazione
<a name="model-customize-evaluation-sdk-step2"></a>

Chiama il `evaluate()` metodo per inviare il lavoro di valutazione.

```
execution = evaluator.evaluate()
```

### Fase 3: Monitora lo stato di avanzamento del tuo Job di valutazione
<a name="model-customize-evaluation-sdk-step3"></a>

Richiama il `wait()` metodo di esecuzione per ottenere un aggiornamento in tempo reale sullo stato di avanzamento del lavoro di valutazione.

```
execution.wait(target_status="Succeeded", poll=5, timeout=3600)
```

### Fase 4: Visualizzazione dei risultati del Job di valutazione
<a name="model-customize-evaluation-sdk-step4"></a>

Richiama il `show_results()` metodo per visualizzare i risultati del lavoro di valutazione.

```
execution.show_results()
```

# Tipi di valutazione e Job Submission
<a name="model-customize-evaluation-types"></a>

## Analisi comparativa con set di dati standardizzati
<a name="model-customize-evaluation-benchmarking"></a>

Utilizza il tipo Benchmark Evaluation per valutare la qualità del tuo modello su set di dati di benchmark standardizzati, inclusi set di dati popolari come MMLU e BBH.


| Benchmark | Set di dati personalizzato supportato | Modalità | Description | Metriche | Strategia | Sottoattività disponibile | 
| --- | --- | --- | --- | --- | --- | --- | 
| mmlu | No | Testo | Massive Multitask Language Understanding (MMLU) - Verifica la conoscenza di 57 materie. | accuratezza | zs\$1cot | Sì | 
| mmlu\$1pro | No | Testo | MMLU - Sottoinsieme professionale - Incentrato su domini professionali come legge, medicina, contabilità e ingegneria. | accuratezza | zs\$1cot | No | 
| bbh | No | 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 | fs\$1cot | Sì | 
| gpqa | No | Testo | Risposta a domande di fisica generale - Valuta la comprensione di concetti di fisica e le relative capacità di risoluzione dei problemi. | accuratezza | zs\$1cot | No | 
| matematica | No | Testo | Risoluzione di problemi matematici - Misura il ragionamento matematico su argomenti quali algebra, calcolo e problemi testuali. | exact\$1match | zs\$1cot | Sì | 
| strong\$1reject | No | Testo | Attività di controllo della qualità: verifica la capacità del modello di rilevare e rifiutare contenuti inappropriati, dannosi o errati. | deflection | zs | Sì | 
| ifeval | No | 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 | 

Per ulteriori informazioni sui formati BYOD, vedere. [Formati di set di dati supportati per attività Bring-Your-Own-Dataset (BYOD)](model-customize-evaluation-dataset-formats.md)

### Sottoattività disponibili
<a name="model-customize-evaluation-benchmarking-subtasks"></a>

Di seguito sono elencate le sottoattività disponibili per la valutazione del modello in più domini, tra cui MMLU (Massive Multitask Language Understanding), BBH (Big Bench Hard) e MATH. StrongReject Queste sottoattività consentono di valutare le prestazioni del modello in base a funzionalità e aree di conoscenza specifiche.

**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"
]
```

**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"
]
```

**Sottoattività matematiche**

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

**StrongReject Sottoattività**

```
STRONG_REJECT_SUBTASKS = [
    "gcg_transfer_harmbench", 
    "gcg_transfer_universal_attacks",
    "combination_3", 
    "combination_2", 
    "few_shot_json", 
    "dev_mode_v2",
    "dev_mode_with_rant",
    "wikipedia_with_title", 
    "distractors",
    "wikipedia",
     "style_injection_json", 
    "style_injection_short",
    "refusal_suppression", 
    "prefix_injection", 
    "distractors_negated",
    "poems", 
    "base64", 
    "base64_raw", "
    base64_input_only",
    "base64_output_only", 
    "evil_confidant", 
    "aim", 
    "rot_13",
    "disemvowel", 
    "auto_obfuscation", 
    "auto_payload_splitting", 
    "pair",
    "pap_authority_endorsement", 
    "pap_evidence_based_persuasion",
    "pap_expert_endorsement", 
    "pap_logical_appeal", 
    "pap_misrepresentation"
]
```

### Invia il tuo lavoro di riferimento
<a name="model-customize-evaluation-benchmarking-submit"></a>

------
#### [ SageMaker Studio ]

![\[Una configurazione minima per il benchmarking tramite Studio SageMaker\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/benchmark-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
from sagemaker.train.evaluate import get_benchmarks
from sagemaker.train.evaluate import BenchMarkEvaluator

Benchmark = get_benchmarks()

# Create evaluator with MMLU benchmark
evaluator = BenchMarkEvaluator(
benchmark=Benchmark.MMLU,
model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
s3_output_path="s3://<bucket-name>/<prefix>/",
evaluate_base_model=False
)

execution = evaluator.evaluate()
```

Per ulteriori informazioni sull'invio di lavori di valutazione tramite SageMaker Python SDK, consulta: [https://sagemaker.readthedocs.io/en/stable/model\$1customization/evaluation.html](https://sagemaker.readthedocs.io/en/stable/model_customization/evaluation.html)

------

## Valutazione del Large Language Model as a Judge (LLMAJ)
<a name="model-customize-evaluation-llmaj"></a>

Utilizza la valutazione LLM-as-a-judge (LLMAJ) per sfruttare un altro modello di frontiera per valutare le risposte del modello target. Puoi utilizzare i modelli AWS Bedrock come giudici chiamando l'`create_evaluation_job`API per avviare il processo di valutazione.

[Per ulteriori informazioni sui modelli di arbitro supportati, consulta: -supported.html https://docs.aws.amazon.com/bedrock/ latest/userguide/models](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html)

È possibile utilizzare 2 diversi formati metrici per definire la valutazione:
+ Metriche **integrate: sfrutta le metriche** integrate di AWS Bedrock per analizzare la qualità delle risposte di inferenza del modello. [Per ulteriori informazioni, consulta: - .html https://docs.aws.amazon.com/bedrock/ latest/userguide/model evaluation-type-judge-prompt](https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation-type-judge-prompt.html)
+ **Metriche personalizzate:** definisci le tue metriche personalizzate nel formato metrico personalizzato di Bedrock Evaluation per analizzare la qualità delle risposte di inferenza del tuo modello utilizzando le tue istruzioni. [Per ulteriori informazioni, vedete: - -formats.html https://docs.aws.amazon.com/bedrock/ latest/userguide/model evaluation-custom-metrics-prompt](https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation-custom-metrics-prompt-formats.html)

### Invia un job LLMAJ con metriche integrate
<a name="model-customize-evaluation-llmaj-builtin"></a>

------
#### [ SageMaker Studio ]

![\[Una configurazione minima per il benchmarking LLMAJ tramite Studio SageMaker\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/llmaj-as-judge-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
from sagemaker.train.evaluate import LLMAsJudgeEvaluator

evaluator = LLMAsJudgeEvaluator(
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    evaluator_model="<bedrock-judge-model-id>",
    dataset="s3://<bucket-name>/<prefix>/<dataset-file>.jsonl",
    builtin_metrics=["<builtin-metric-1>", "<builtin-metric-2>"],
    s3_output_path="s3://<bucket-name>/<prefix>/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

Per ulteriori informazioni sull'invio di lavori di valutazione tramite SageMaker Python SDK, consulta: [https://sagemaker.readthedocs.io/en/stable/model\$1customization/evaluation.html](https://sagemaker.readthedocs.io/en/stable/model_customization/evaluation.html)

------

### Invia un job LLMAJ con metriche personalizzate
<a name="model-customize-evaluation-llmaj-custom"></a>

Definisci le tue metriche personalizzate:

```
{
    "customMetricDefinition": {
        "name": "PositiveSentiment",
        "instructions": (
            "You are an expert evaluator. Your task is to assess if the sentiment of the response is positive. "
            "Rate the response based on whether it conveys positive sentiment, helpfulness, and constructive tone.\n\n"
            "Consider the following:\n"
            "- Does the response have a positive, encouraging tone?\n"
            "- Is the response helpful and constructive?\n"
            "- Does it avoid negative language or criticism?\n\n"
            "Rate on this scale:\n"
            "- Good: Response has positive sentiment\n"
            "- Poor: Response lacks positive sentiment\n\n"
            "Here is the actual task:\n"
            "Prompt: {{prompt}}\n"
            "Response: {{prediction}}"
        ),
        "ratingScale": [
            {"definition": "Good", "value": {"floatValue": 1}},
            {"definition": "Poor", "value": {"floatValue": 0}}
        ]
    }
}
```

Per ulteriori informazioni, consulta: [https://docs.aws.amazon.com/bedrock/latest/userguide/model- -formats.html evaluation-custom-metrics-prompt](https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation-custom-metrics-prompt-formats.html)

------
#### [ SageMaker Studio ]

![\[Carica la metrica personalizzata tramite Metriche personalizzate > Aggiungi metriche personalizzate\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/custom-llmaj-metrics-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
evaluator = LLMAsJudgeEvaluator(
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    evaluator_model="<bedrock-judge-model-id>",
    dataset="s3://<bucket-name>/<prefix>/<dataset-file>.jsonl",
    custom_metrics=custom_metric_dict = {
        "customMetricDefinition": {
            "name": "PositiveSentiment",
            "instructions": (
                "You are an expert evaluator. Your task is to assess if the sentiment of the response is positive. "
                "Rate the response based on whether it conveys positive sentiment, helpfulness, and constructive tone.\n\n"
                "Consider the following:\n"
                "- Does the response have a positive, encouraging tone?\n"
                "- Is the response helpful and constructive?\n"
                "- Does it avoid negative language or criticism?\n\n"
                "Rate on this scale:\n"
                "- Good: Response has positive sentiment\n"
                "- Poor: Response lacks positive sentiment\n\n"
                "Here is the actual task:\n"
                "Prompt: {{prompt}}\n"
                "Response: {{prediction}}"
            ),
            "ratingScale": [
                {"definition": "Good", "value": {"floatValue": 1}},
                {"definition": "Poor", "value": {"floatValue": 0}}
            ]
        }
    },
    s3_output_path="s3://<bucket-name>/<prefix>/",
    evaluate_base_model=False
)
```

------

## Scorer personalizzati
<a name="model-customize-evaluation-custom-scorers"></a>

Definisci la tua funzione di punteggio personalizzata per avviare un processo di valutazione. Il sistema fornisce due marcatori integrati: Prime math e Prime code. Puoi anche utilizzare la tua funzione scorer. Puoi copiare direttamente il codice della funzione scorer o portare la tua definizione di funzione Lambda utilizzando l'ARN associato. Per impostazione predefinita, entrambi i tipi di scorer producono risultati di valutazione che includono metriche standard come F1 score, ROUGE e BLEU.

Per ulteriori informazioni sui marcatori integrati e personalizzati e sui rispettivi requisiti/contratti, vedere. [Valuta con punteggi preimpostati e personalizzati](model-customize-evaluation-preset-custom-scorers.md)

### Registra il tuo set di dati
<a name="model-customize-evaluation-custom-scorers-register-dataset"></a>

Porta il tuo set di dati per lo scorer personalizzato registrandolo come Hub Content Dataset. SageMaker 

------
#### [ SageMaker Studio ]

In Studio, carica il tuo set di dati utilizzando la pagina Datasets dedicata.

![\[Set di dati di valutazione registrato in Studio SageMaker\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/dataset-registration-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

In SageMaker Python SDK, carica il tuo set di dati utilizzando la pagina Datasets dedicata.

```
from sagemaker.ai_registry.dataset import DataSet

dataset = DataSet.create(
    name="your-bring-your-own-dataset",
    source="s3://<bucket-name>/<prefix>/<dataset-file>.jsonl"
)
dataset.refresh()
```

------

### Invia un lavoro di scorer integrato
<a name="model-customize-evaluation-custom-scorers-builtin"></a>

------
#### [ SageMaker Studio ]

![\[Scegli tra esecuzioni di codice o risposte matematiche per un punteggio personalizzato integrato\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/builtin-scorer-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
from sagemaker.train.evaluate import CustomScorerEvaluator
from sagemaker.train.evaluate import get_builtin_metrics

BuiltInMetric = get_builtin_metrics()

evaluator_builtin = CustomScorerEvaluator(
    evaluator=BuiltInMetric.PRIME_MATH,
    dataset="arn:aws:sagemaker:<region>:<account-id>:hub-content/<hub-content-id>/DataSet/your-bring-your-own-dataset/<version>",
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

Seleziona da `BuiltInMetric.PRIME_MATH` o `BuiltInMetric.PRIME_CODE` per Built-In Scoring.

------

### Invia un lavoro di marcatore personalizzato
<a name="model-customize-evaluation-custom-scorers-custom"></a>

Definisci una funzione di ricompensa personalizzata. Per ulteriori informazioni, consulta [Scorer personalizzati (Bring Your Own Metrics)](model-customize-evaluation-preset-custom-scorers.md#model-customize-evaluation-custom-scorers-byom).

**Registra la funzione di ricompensa personalizzata**

------
#### [ SageMaker Studio ]

![\[Passa a SageMaker Studio > Assets > Evaluator > Crea valutatore > Crea funzione di ricompensa\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/custom-scorer-submission-sagemaker-studio.png)


![\[Inviate il lavoro di valutazione Custom Scorer facendo riferimento alla funzione di ricompensa preimpostata registrata in Custom Scorer > Metriche personalizzate\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/custom-scorer-benchmark-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
from sagemaker.ai_registry.evaluator import Evaluator
from sagemaker.ai_registry.air_constants import REWARD_FUNCTION

evaluator = Evaluator.create(
    name = "your-reward-function-name",
    source="/path_to_local/custom_lambda_function.py",
    type = REWARD_FUNCTION
)
```

```
evaluator = CustomScorerEvaluator(
    evaluator=evaluator,
    dataset="s3://<bucket-name>/<prefix>/<dataset-file>.jsonl",
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

------

# Formati delle metriche di valutazione
<a name="model-customize-evaluation-metrics-formats"></a>

Valutazione della qualità del modello in base a questi formati metrici:
+ Riepilogo della valutazione del modello
+ MLFlow
+ TensorBoard

## Riepilogo della valutazione del modello
<a name="model-customize-evaluation-metrics-summary"></a>

Quando invii il lavoro di valutazione, specifichi una posizione di output AWS S3. SageMaker carica automaticamente il file.json di riepilogo della valutazione nella posizione. Il percorso S3 di riepilogo del benchmark è il seguente:

```
s3://<your-provide-s3-location>/<training-job-name>/output/output/<evaluation-job-name>/eval_results/
```

**Passa la posizione S3 AWS **

------
#### [ SageMaker Studio ]

![\[Passa alla posizione dell'artefatto di output (AWS URI S3)\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/s3-output-path-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
evaluator = BenchMarkEvaluator(
    benchmark=Benchmark.MMLU,
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/eval/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

------

Leggilo direttamente `.json` dalla posizione AWS S3 o visualizzato automaticamente nell'interfaccia utente:

```
{
  "results": {
    "custom|gen_qa_gen_qa|0": {
      "rouge1": 0.9152812653966208,
      "rouge1_stderr": 0.003536439199232507,
      "rouge2": 0.774569918517409,
      "rouge2_stderr": 0.006368825746765958,
      "rougeL": 0.9111255645823356,
      "rougeL_stderr": 0.003603841524881021,
      "em": 0.6562150055991042,
      "em_stderr": 0.007948251702846893,
      "qem": 0.7522396416573348,
      "qem_stderr": 0.007224355240883467,
      "f1": 0.8428757602152095,
      "f1_stderr": 0.005186300690881584,
      "f1_score_quasi": 0.9156170336744968,
      "f1_score_quasi_stderr": 0.003667700152375464,
      "bleu": 100.00000000000004,
      "bleu_stderr": 1.464411857851008
    },
    "all": {
      "rouge1": 0.9152812653966208,
      "rouge1_stderr": 0.003536439199232507,
      "rouge2": 0.774569918517409,
      "rouge2_stderr": 0.006368825746765958,
      "rougeL": 0.9111255645823356,
      "rougeL_stderr": 0.003603841524881021,
      "em": 0.6562150055991042,
      "em_stderr": 0.007948251702846893,
      "qem": 0.7522396416573348,
      "qem_stderr": 0.007224355240883467,
      "f1": 0.8428757602152095,
      "f1_stderr": 0.005186300690881584,
      "f1_score_quasi": 0.9156170336744968,
      "f1_score_quasi_stderr": 0.003667700152375464,
      "bleu": 100.00000000000004,
      "bleu_stderr": 1.464411857851008
    }
  }
}
```

![\[Esempi di metriche prestazionali per un benchmark gen-qa personalizzato visualizzato in Studio SageMaker\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/gen-qa-metrics-visualization-sagemaker-studio.png)


## MLFlow registrazione
<a name="model-customize-evaluation-metrics-mlflow"></a>

**Fornisci la tua SageMaker MLFlow risorsa ARN**

SageMaker Studio utilizza l' MLFlow app predefinita che viene fornita su ogni dominio Studio quando si utilizza la funzionalità di personalizzazione del modello per la prima volta. SageMaker Studio utilizza l'ARN associato all' MLflow app predefinita per l'invio del lavoro di valutazione.

Puoi anche inviare il tuo lavoro di valutazione e fornire esplicitamente un ARN di MLFlow risorsa per trasmettere le metriche a detto server/app tracciamento associato per l'analisi in tempo reale.

**SageMaker SDK Python**

```
evaluator = BenchMarkEvaluator(
    benchmark=Benchmark.MMLU,
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/eval/",
    mlflow_resource_arn="arn:aws:sagemaker:<region>:<account-id>:mlflow-tracking-server/<tracking-server-name>",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

Visualizzazione metrica a livello di modello e di sistema:

![\[Errore e precisione a livello di modello di esempio per l'attività di benchmarking MMLU\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/model-metrics-mlflow.png)


![\[Esempi di metriche integrate per l'attività di benchmarking LLMAJ\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/llmaj-metrics-mlflow.png)


![\[Esempi di metriche a livello di sistema per l'attività di benchmarking MMLU\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/system-metrics-mlflow.png)


## TensorBoard
<a name="model-customize-evaluation-metrics-tensorboard"></a>

Invia il tuo lavoro di valutazione con una postazione di output S3 AWS . SageMaker carica automaticamente un TensorBoard file nella posizione.

SageMaker carica il TensorBoard file su AWS S3 nella seguente posizione:

```
s3://<your-provide-s3-location>/<training-job-name>/output/output/<evaluation-job-name>/tensorboard_results/eval/
```

**Passa la posizione AWS S3 come segue**

------
#### [ SageMaker Studio ]

![\[Passa alla posizione dell'artefatto di output (AWS URI S3)\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/s3-output-path-submission-sagemaker-studio.png)


------
#### [ SageMaker Python SDK ]

```
evaluator = BenchMarkEvaluator(
    benchmark=Benchmark.MMLU,
    model="arn:aws:sagemaker:<region>:<account-id>:model-package/<model-package-name>/<version>",
    s3_output_path="s3://<bucket-name>/<prefix>/eval/",
    evaluate_base_model=False
)

execution = evaluator.evaluate()
```

------

**Esempio di metriche a livello di modello**

![\[SageMaker TensorBoard visualizzazione dei risultati di un lavoro di benchmarking\]](http://docs.aws.amazon.com/it_it/sagemaker/latest/dg/images/metrics-in-tensorboard.png)


# Formati di set di dati supportati per attività Bring-Your-Own-Dataset (BYOD)
<a name="model-customize-evaluation-dataset-formats"></a>

I tipi Custom Scorer e di LLM-as-judge valutazione richiedono un file JSONL del set di dati personalizzato che si trova in S3. AWS È necessario fornire il file come file JSON Lines conforme a uno dei seguenti formati supportati. Gli esempi contenuti in questo documento sono stati ampliati per motivi di chiarezza.

Ogni formato ha le sue sfumature, ma come minimo tutti richiedono un prompt da parte dell'utente.


**Campi obbligatori**  

| Campo | Richiesto | 
| --- | --- | 
| Richiesta dell'utente | Sì | 
| Prompt di sistema | No | 
| Verità fondamentale | Solo per Custom Scorer | 
| Categoria | No | 

**1. Formato OpenAI**

```
{
    "messages": [
        {
            "role": "system",    # System prompt (looks for system role)
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",       # Query (looks for user role)
            "content": "Hello!"
        },
        {
            "role": "assistant",  # Ground truth (looks for assistant role)
            "content": "Hello to you!"
        }
    ]
}
```

**2. SageMaker **Valutazione

```
{
   "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":"?", # Ground truth
   "category": "Grammar"
}
```

**3. HuggingFace Completamento rapido**

Sono supportati sia i formati standard che quelli conversazionali.

```
# Standard

{
    "prompt" : "What is the symbol that ends the sentence as a question", # Query
    "completion" : "?" # Ground truth
}

# Conversational
{
    "prompt": [
        {
            "role": "user", # Query (looks for user role)
            "content": "What is the symbol that ends the sentence as a question"
        }
    ],
    "completion": [
        {
            "role": "assistant", # Ground truth (looks for assistant role)
            "content": "?"
        }
    ]
}
```

**4. HuggingFace Preferenza**

Support sia per il formato standard (stringa) che per il formato conversazionale (array di messaggi).

```
# Standard: {"prompt": "text", "chosen": "text", "rejected": "text"}
{
     "prompt" : "The sky is", # Query
     "chosen" : "blue", # Ground truth
     "rejected" : "green"
}

# Conversational:
{
    "prompt": [
        {
            "role": "user", # Query (looks for user role)
            "content": "What color is the sky?"
        }
    ],
    "chosen": [
        {
            "role": "assistant", # Ground truth (looks for assistant role)
            "content": "It is blue."
        }
    ],
    "rejected": [
        {
            "role": "assistant",
            "content": "It is green."
        }
    ]
}
```

**5. Formato Verl**

Il formato Verl (sia i formati attuali che quelli precedenti) è supportato per i casi d'uso del reinforcement learning. Documenti Verl come riferimento: [https://verl.readthedocs.io/en/latest/preparation/prepare\$1data.html](https://verl.readthedocs.io/en/latest/preparation/prepare_data.html)

Gli utenti del formato VERL in genere non forniscono una risposta di base. Se vuoi comunque fornirne una, usa uno dei campi `extra_info.answer` oppure`reward_model.ground_truth`; ha la `extra_info` precedenza.

SageMaker conserva i seguenti campi specifici di Verl come metadati, se presenti:
+ `id`
+ `data_source`
+ `ability`
+ `reward_model`
+ `extra_info`
+ `attributes`
+ `difficulty`

```
# Newest VERL format where `prompt` is an array of messages.
{
  "data_source": "openai/gsm8k",
  "prompt": [
    {
      "content": "You are a helpful math tutor who explains solutions to questions step-by-step.",
      "role": "system"
    },
    {
      "content": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May? Let's think step by step and output the final answer after \"####\".",
      "role": "user"
    }
  ],
  "ability": "math",
  "extra_info": {
    "answer": "Natalia sold 48/2 = <<48/2=24>>24 clips in May.\nNatalia sold 48+24 = <<48+24=72>>72 clips altogether in April and May.\n#### 72",
    "index": 0,
    "question": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?",
    "split": "train"
  },
  "reward_model": {
    "ground_truth": "72" # Ignored in favor of extra_info.answer
  }
}

# Legacy VERL format where `prompt` is a string. Also supported.
{
  "data_source": "openai/gsm8k",
  "prompt": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May? Let's think step by step and output the final answer after \"####\".",
  "extra_info": {
    "answer": "Natalia sold 48/2 = <<48/2=24>>24 clips in May.\nNatalia sold 48+24 = <<48+24=72>>72 clips altogether in April and May.\n#### 72",
    "index": 0,
    "question": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?",
    "split": "train"
  }
}
```

# Valuta con punteggi preimpostati e personalizzati
<a name="model-customize-evaluation-preset-custom-scorers"></a>

Quando si utilizza il tipo di valutazione Custom Scorer, SageMaker Evaluation supporta due scorer integrati (denominati anche «funzioni di ricompensa») Prime Math e Prime Code presi dalla libreria di formazione [volcengine/verl RL](https://github.com/volcengine/verl), o il proprio scorer personalizzato implementato come funzione Lambda.

## Scorer integrati
<a name="model-customize-evaluation-builtin-scorers"></a>

**Prime Math**

Prime Math Scorer si aspetta un set di dati JSONL personalizzato contenente una domanda di matematica e la prompt/query risposta corretta come verità fondamentale. Il set di dati può essere uno dei formati supportati menzionati in. [Formati di set di dati supportati per attività Bring-Your-Own-Dataset (BYOD)](model-customize-evaluation-dataset-formats.md)

Esempio di inserimento del set di dati (ampliato per maggiore chiarezza):

```
{
    "system":"You are a math expert: ",
    "query":"How many vertical asymptotes does the graph of $y=\\frac{2}{x^2+x-6}$ have?",
    "response":"2" # Ground truth aka correct answer
}
```

**Codice principale**

Il primo code scorer prevede un set di dati JSONL personalizzato di voci contenenti un problema di codifica e casi di test specificati nel campo. `metadata` Struttura i casi di test con il nome della funzione previsto per ogni voce, gli input di esempio e gli output previsti.

Esempio di inserimento del set di dati (ampliato per maggiore chiarezza):

```
{
    "system":"\\nWhen tackling complex reasoning tasks, you have access to the following actions. Use them as needed to progress through your thought process.\\n\\n[ASSESS]\\n\\n[ADVANCE]\\n\\n[VERIFY]\\n\\n[SIMPLIFY]\\n\\n[SYNTHESIZE]\\n\\n[PIVOT]\\n\\n[OUTPUT]\\n\\nYou should strictly follow the format below:\\n\\n[ACTION NAME]\\n\\n# Your action step 1\\n\\n# Your action step 2\\n\\n# Your action step 3\\n\\n...\\n\\nNext action: [NEXT ACTION NAME]\\n\\n",
    "query":"A number N is called a factorial number if it is the factorial of a positive integer. For example, the first few factorial numbers are 1, 2, 6, 24, 120,\\nGiven a number N, the task is to return the list/vector of the factorial numbers smaller than or equal to N.\\nExample 1:\\nInput: N = 3\\nOutput: 1 2\\nExplanation: The first factorial number is \\n1 which is less than equal to N. The second \\nnumber is 2 which is less than equal to N,\\nbut the third factorial number is 6 which \\nis greater than N. So we print only 1 and 2.\\nExample 2:\\nInput: N = 6\\nOutput: 1 2 6\\nExplanation: The first three factorial \\nnumbers are less than equal to N but \\nthe fourth factorial number 24 is \\ngreater than N. So we print only first \\nthree factorial numbers.\\nYour Task:  \\nYou don't need to read input or print anything. Your task is to complete the function factorialNumbers() which takes an integer N as an input parameter and return the list/vector of the factorial numbers smaller than or equal to N.\\nExpected Time Complexity: O(K), Where K is the number of factorial numbers.\\nExpected Auxiliary Space: O(1)\\nConstraints:\\n1<=N<=10^{18}\\n\\nWrite Python code to solve the problem. Present the code in \\n```python\\nYour code\\n```\\nat the end.",
    "response": "", # Dummy string for ground truth. Provide a value if you want NLP metrics like ROUGE, BLEU, and F1.
    ### Define test cases in metadata field
    "metadata": {
        "fn_name": "factorialNumbers",
        "inputs": ["5"],
        "outputs": ["[1, 2]"]
    }
}
```

## Scorer personalizzati (Bring Your Own Metrics)
<a name="model-customize-evaluation-custom-scorers-byom"></a>

Personalizza completamente il flusso di lavoro di valutazione del modello con una logica di post-elaborazione personalizzata che ti consente di calcolare metriche personalizzate su misura per le tue esigenze. È necessario implementare lo scorer personalizzato come una funzione AWS Lambda che accetta le risposte del modello e restituisce punteggi di ricompensa.

### Esempio di payload di ingresso Lambda
<a name="model-customize-evaluation-custom-scorers-lambda-input"></a>

La tua AWS Lambda personalizzata prevede input nel formato OpenAI. Esempio:

```
{
    "id": "123",
    "messages": [
        {
            "role": "user",
            "content": "Do you have a dedicated security team?"
        },
        {
            "role": "assistant",
            "content": "As an AI developed by Amazon, I do not have a dedicated security team..."
        }
    ],
    "reference_answer": {
        "compliant": "No",
        "explanation": "As an AI developed by Company, I do not have a traditional security team..."
    }
}
```

### Esempio di payload di uscita Lambda
<a name="model-customize-evaluation-custom-scorers-lambda-output"></a>

Il contenitore di SageMaker valutazione si aspetta che le risposte Lambda seguano questo formato:

```
{
    "id": str,                              # Same id as input sample
    "aggregate_reward_score": float,        # Overall score for the sample
    "metrics_list": [                       # OPTIONAL: Component scores
        {
            "name": str,                    # Name of the component score
            "value": float,                 # Value of the component score
            "type": str                     # "Reward" or "Metric"
        }
    ]
}
```

### Definizione Lambda personalizzata
<a name="model-customize-evaluation-custom-scorers-lambda-definition"></a>

[Trova un esempio di scorer personalizzato completamente implementato con input di esempio e output previsto su: - .html\$1 -example https://docs.aws.amazon.com/sagemaker/ latest/dg/nova implementing-reward-functions nova-reward-llm-judge](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html#nova-reward-llm-judge-example)

Utilizzate lo scheletro seguente come punto di partenza per la vostra funzione.

```
def lambda_handler(event, context):
    return lambda_grader(event)

def lambda_grader(samples: list[dict]) -> list[dict]:
    """
    Args:
        Samples: List of dictionaries in OpenAI format
            
        Example input:
        {
            "id": "123",
            "messages": [
                {
                    "role": "user",
                    "content": "Do you have a dedicated security team?"
                },
                {
                    "role": "assistant",
                    "content": "As an AI developed by Company, I do not have a dedicated security team..."
                }
            ],
            # This section is the same as your training dataset
            "reference_answer": {
                "compliant": "No",
                "explanation": "As an AI developed by Company, I do not have a traditional security team..."
            }
        }
        
    Returns:
        List of dictionaries with reward scores:
        {
            "id": str,                              # Same id as input sample
            "aggregate_reward_score": float,        # Overall score for the sample
            "metrics_list": [                       # OPTIONAL: Component scores
                {
                    "name": str,                    # Name of the component score
                    "value": float,                 # Value of the component score
                    "type": str                     # "Reward" or "Metric"
                }
            ]
        }
    """
```

### Campi di input e output
<a name="model-customize-evaluation-custom-scorers-fields"></a>

**Campi di input**


| Campo | Description | Note aggiuntive | 
| --- | --- | --- | 
| id | Identificatore univoco per il campione | Ripreso in uscita. Formato delle stringhe | 
| messages | Cronologia chat ordinata in formato OpenAI | Matrice di oggetti di messaggio | 
| messages [] .role | Relatore del messaggio | Valori comuni: «utente», «assistente», «sistema» | 
| messaggi [] .content | Contenuto testuale del messaggio | Stringa normale | 
| metadati | Informazioni in formato libero per facilitare la valutazione | Oggetto; campi opzionali trasmessi dai dati di addestramento | 

**Campi di output**


**Campi di output**  

| Campo | Description | Note aggiuntive | 
| --- | --- | --- | 
| id | Stesso identificatore del campione di input | Deve corrispondere all'input | 
| aggregate\$1reward\$1score | Punteggio complessivo del campione | Float (ad esempio, 0,0—1,0 o intervallo definito dall'attività) | 
| metrics\$1list | Punteggi dei componenti che compongono l'aggregato | Matrice di oggetti metrici | 

### Autorizzazioni richieste
<a name="model-customize-evaluation-custom-scorers-permissions"></a>

Assicurati che il ruolo di SageMaker esecuzione che usi per eseguire la valutazione disponga delle autorizzazioni AWS Lambda.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": "arn:aws:lambda:region:account-id:function:function-name"
        }
    ]
}
```

Assicurati che il ruolo di esecuzione della tua funzione AWS Lambda disponga delle autorizzazioni di esecuzione Lambda di base, oltre alle autorizzazioni aggiuntive che potresti richiedere per qualsiasi chiamata downstream. AWS 

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}
```