

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

# Personalizzazione di Amazon Nova su SageMaker HyperPod
<a name="nova-hp"></a>

Puoi personalizzare i modelli Amazon Nova, inclusi i modelli Nova 2.0 migliorati, utilizzando [le ricette di Amazon Nova](nova-model-recipes.md) e addestrarli su Hyperpod. Una ricetta è un file di configurazione YAML che fornisce dettagli all' SageMaker IA su come eseguire il processo di personalizzazione del modello. SageMaker HyperPod supporta due tipi di servizi: Forge e non-Forge.

Hyperpod offre elaborazione ad alte prestazioni con istanze GPU ottimizzate e storage FSx Amazon for Lustre, monitoraggio affidabile attraverso l'integrazione con strumenti TensorBoard come la gestione flessibile dei checkpoint per il miglioramento iterativo, l'implementazione senza interruzioni su Amazon Bedrock per l'inferenza e una formazione distribuita efficiente e scalabile a più nodi, il tutto in sinergia per fornire alle organizzazioni un ambiente sicuro, performante e flessibile per personalizzare i modelli Nova in base alle loro specifiche esigenze aziendali.

La personalizzazione di Amazon Nova su SageMaker HyperPod archivia gli artefatti del modello, inclusi i checkpoint del modello, in un bucket Amazon S3 gestito dal servizio. Gli artefatti nel bucket gestito dal servizio sono crittografati con chiavi gestite dall'intelligenza artificiale. SageMaker AWS KMS I bucket Amazon S3 gestiti dal servizio attualmente non supportano la crittografia dei dati tramite chiavi KMS gestite dal cliente. È possibile utilizzare questa posizione di checkpoint per processi di valutazione o per l’inferenza Amazon Bedrock.

I prezzi standard possono essere applicati per le istanze di calcolo, lo storage Amazon S3 e Lustre. FSx Per i dettagli sui prezzi, consulta i [prezzi di Hyperpod, i prezzi](https://aws.amazon.com/sagemaker-ai/pricing/) di [Amazon S3 FSx ](https://aws.amazon.com/s3/pricing/) [e i prezzi di](https://aws.amazon.com/fsx/lustre/pricing/) Lustre.

## Requisiti di calcolo per i modelli Amazon Nova 1
<a name="nova-hp-compute-1"></a>

Le tabelle seguenti riassumono i requisiti computazionali e la formazione per i lavori di formazione sull' SageMaker intelligenza artificiale per i modelli Nova 1.0.


**Preaddestramento**  

| Modello | Lunghezza della sequenza | Nodi | Istanza | Accelerator | 
| --- |--- |--- |--- |--- |
| Amazon Nova Micro | 8,192 | 8 | ml.p5.48xlarge | GPU H100 | 
| Amazon Nova Lite | 8,192 | 16 | ml.p5.48xlarge | GPU H100 | 
| Amazon Nova Pro | 8,192 | 12 | ml.p5.48xlarge | GPU H100 | 


**Ottimizzazione diretta delle preferenze (DPO)**  

| Modello | Lunghezza della sequenza | Numero di nodi | Istanza | Accelerator | 
| --- |--- |--- |--- |--- |
| Ottimizzazione diretta delle preferenze (completa) | 32,768 | 2, 4 o 6 | ml.p5.48xlarge | GPU H100 | 
| Ottimizzazione diretta delle preferenze (LoRA) | 32,768 | 2, 4 o 6 | ml.p5.48xlarge | GPU H100 | 


**Fine-tuning**  

| Modello | Tecnica | Lunghezza della sequenza | Numero di nodi | Istanza | Accelerator | 
| --- |--- |--- |--- |--- |--- |
| Amazon Nova 1 Micro |  Fine-tuning supervisionato (LoRA)  | 65.536 | 2 | ml.p5.48xlarge | GPU H100 | 
| Amazon Nova 1 Micro |  Fine-tuning supervisionato (completo)  | 65.536 | 2 | ml.p5.48xlarge | GPU H100 | 
| Amazon Nova 1 Lite |  Fine-tuning supervisionato (LoRA)  | 32,768 | 4 | ml.p5.48xlarge | GPU H100 | 
| Amazon Nova 1 Lite |  Fine-tuning supervisionato (completo)  | 65.536 | 4 | ml.p5.48xlarge | GPU H100 | 
| Amazon Nova 1 Pro |  Fine-tuning supervisionato (LoRA)  | 65.536 | 6 | ml.p5.48xlarge | GPU H100 | 
| Amazon Nova 1 Pro |  Fine-tuning supervisionato (completo)  | 65.536 | 6 | ml.p5.48xlarge | GPU H100 | 


**Distillazione**  

| Modello | Nodi | Istanza | 
| --- |--- |--- |
| Distillazione di modelli per il post-addestramento | 1 | ml.r5.24xlarge | 


**Valutazione**  

| Modello | Lunghezza della sequenza | Nodi | Istanza | Accelerator | 
| --- |--- |--- |--- |--- |
| Ricetta di benchmark testuali generali | 8,192 | 1 | ml.p5.48xlarge | GPU H100 | 
| Ricetta di benchmark Bring-Your-Own-Dataset (gen\$1qa) | 8,192 | 1 | ml.p5.48xlarge | GPU H100 | 
| Ricetta Amazon Nova LLM-as-a-judge | 8,192 | 1 | ml.p5.48xlarge | GPU H100 | 
| Benchmark testuali standard | 8,192 | 1 | ml.p5.48xlarge | GPU H100 | 
| Valutazione dei set di dati personalizzati | 8,192 | 1 | ml.p5.48xlarge | GPU H100 | 
| Benchmark multimodali | 8,192 | 1 | ml.p5.48xlarge | GPU H100 | 


**Ottimizzazione delle policy prossimali**  

| Modello | Numero di istanze del modello di critica | Numero di istanze del modello di ricompensa | Numero di istanze del modello di ancoraggio | Addestramento attori | Generazione attori | Numero di istanze | Ore totali per esecuzione | Ore P5 | Tipo di istanza | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| Amazon Nova Micro | 1 | 1 | 1 | 2 | 2 | 7 | 8 | 56 | ml.p5.48xlarge | 
| Amazon Nova Lite | 1 | 1 | 1 | 2 | 2 | 7 | 16 | 112 | ml.p5.48xlarge | 
| Amazon Nova Pro | 1 | 1 | 1 | 6 | 2 | 11 | 26 | 260 | ml.p5.48xlarge | 

**Topics**
+ [Requisiti di calcolo per i modelli Amazon Nova 1](#nova-hp-compute-1)
+ [SDK Nova Forge](nova-hp-forge-sdk.md)
+ [Guida ai comandi SageMaker HyperPod essenziali di Amazon](nova-hp-essential-commands-guide.md)
+ [Creazione di un cluster SageMaker HyperPod EKS con un gruppo di istanze ristrette (RIG)](nova-hp-cluster.md)
+ [Accesso e configurazione di Nova Forge per](nova-forge-hp-access.md)
+ [Formazione per i modelli Amazon Nova](nova-hp-training.md)
+ [Ottimizzazione dei modelli Amazon Nova su SageMaker HyperPod](nova-hp-fine-tune.md)
+ [Valutazione di un modello addestrato](nova-hp-evaluate.md)
+ [Monitoraggio dei lavori con HyperPod MLflow](nova-hp-mlflow.md)

# SDK Nova Forge
<a name="nova-hp-forge-sdk"></a>

Nova Forge SDK è un SDK Python completo che fornisce un'interfaccia programmatica unificata per l'intero ciclo di vita della personalizzazione del modello Amazon Nova. L'SDK semplifica la personalizzazione del modello offrendo un'unica API coerente per la formazione, la valutazione, il monitoraggio, la distribuzione e l'inferenza su piattaforme Amazon SageMaker e Amazon Bedrock.

Per ulteriori informazioni, consulta [SDK Nova Forge](nova-forge-sdk.md).

# Guida ai comandi SageMaker HyperPod essenziali di Amazon
<a name="nova-hp-essential-commands-guide"></a>

Amazon SageMaker HyperPod offre ampie funzionalità da riga di comando per la gestione dei flussi di lavoro di formazione. Questa guida descrive i comandi essenziali per le operazioni più comuni, dalla connessione al cluster al monitoraggio dell'avanzamento dei lavori.

**Prerequisiti**  
Prima di utilizzare questi comandi, assicuratevi di aver completato la seguente configurazione:
+ SageMaker HyperPod cluster con RIG creato (tipicamente in us-east-1)
+ Output: bucket Amazon S3 creato per gli artefatti di addestramento
+ Ruoli IAM configurati con autorizzazioni appropriate
+ Dati di allenamento caricati nel formato JSONL corretto
+ FSx per Lustre sync completata (verifica nei log del cluster al primo processo)

**Topics**
+ [Installazione della CLI di Recipe](#nova-hp-essential-commands-guide-install)
+ [Connessione al cluster](#nova-hp-essential-commands-guide-connect)
+ [Avvio di un lavoro di formazione](#nova-hp-essential-commands-guide-start-job)
+ [Verifica dello stato del lavoro](#nova-hp-essential-commands-guide-status)
+ [Monitoraggio dei registri dei lavori](#nova-hp-essential-commands-guide-logs)
+ [Elenco delle offerte di lavoro attive](#nova-hp-essential-commands-guide-list-jobs)
+ [Annullare un lavoro](#nova-hp-essential-commands-guide-cancel-job)
+ [Esecuzione di un processo di valutazione](#nova-hp-essential-commands-guide-evaluation)
+ [Problemi comuni](#nova-hp-essential-commands-guide-troubleshooting)

## Installazione della CLI di Recipe
<a name="nova-hp-essential-commands-guide-install"></a>

Vai alla directory principale del tuo repository di ricette prima di eseguire il comando di installazione.

**Usa il repository Hyperpodrecipes se utilizzi tecniche di personalizzazione Non Forge, per la personalizzazione basata su Forge fai riferimento al repository di ricette specifico di forge.**  
Esegui i seguenti comandi per installare la SageMaker HyperPod CLI:

**Nota**  
Assicurati di non trovarti in un ambiente conda /anaconda/miniconda attivo o in un altro ambiente virtuale  
Se lo sei, esci dall'ambiente usando:  
`conda deactivate`per ambienti conda/anaconda/miniconda
`deactivate`per ambienti virtuali Python

 Se utilizzi una tecnica di personalizzazione Non Forge, scaricala sagemaker-hyperpod-recipes come mostrato di seguito:

```
git clone -b release_v2 https://github.com/aws/sagemaker-hyperpod-cli.git
cd sagemaker-hyperpod-cli
pip install -e .
cd ..
root_dir=$(pwd)
export PYTHONPATH=${root_dir}/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nemo/nemo_framework_launcher/launcher_scripts:$PYTHONPATH
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
```

Se sei un **abbonato a Forge,** dovresti scaricare le ricette utilizzando la procedura indicata di seguito.

```
mkdir NovaForgeHyperpodCLI
cd NovaForgeHyperpodCLI
aws s3 cp s3://nova-forge-c7363-206080352451-us-east-1/v1/ ./ --recursive
pip install -e .

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
```

**Suggerimento**  
Per utilizzare un [nuovo ambiente virtuale prima dell'](https://docs.python.org/3/library/venv.html)esecuzione`pip install -e .`, esegui:  
`python -m venv nova_forge`
`source nova_forge/bin/activate`
La riga di comando verrà ora visualizzata (nova\$1forge) all'inizio del prompt
Ciò garantisce che non vi siano dipendenze concorrenti quando si utilizza la CLI

**Scopo**: perché lo facciamo? `pip install -e .`

Questo comando installa la SageMaker HyperPod CLI in modalità modificabile, che consente di utilizzare ricette aggiornate senza reinstallarle ogni volta. Consente inoltre di aggiungere nuove ricette che la CLI può selezionare automaticamente.

## Connessione al cluster
<a name="nova-hp-essential-commands-guide-connect"></a>

Connect la SageMaker HyperPod CLI al cluster prima di eseguire qualsiasi job:

```
export AWS_REGION=us-east-1 &&  hyperpod connect-cluster --cluster-name <your-cluster-name> --region us-east-1
```

**Importante**  
Questo comando crea un file di contesto (`/tmp/hyperpod_context.json`) richiesto dai comandi successivi. Se visualizzi un errore relativo a questo file non trovato, esegui nuovamente il comando connect.

**Suggerimento**: puoi configurare ulteriormente il cluster in modo che utilizzi sempre lo spazio dei `kubeflow` nomi aggiungendo l'`--namespace kubeflow`argomento al comando come segue:

```
export AWS_REGION=us-east-1 && \
hyperpod connect-cluster \
--cluster-name <your-cluster-name> \
--region us-east-1 \
--namespace kubeflow
```

Ciò consente di risparmiare la fatica di aggiungere il comando `-n kubeflow` in ogni comando quando si interagisce con i job.

## Avvio di un lavoro di formazione
<a name="nova-hp-essential-commands-guide-start-job"></a>

**Nota**  
Se state eseguendo dei PPO/RFT lavori, assicuratevi di aggiungere le impostazioni del selettore di etichette `src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/cluster/k8s.yaml` in modo che tutti i pod siano programmati sullo stesso nodo.  

```
label_selector:
  required:
    sagemaker.amazonaws.com/instance-group-name:
      - <rig_group>
```

Avvia un processo di formazione utilizzando una ricetta con sostituzioni facoltative dei parametri:

```
hyperpod start-job -n kubeflow \
--recipe fine-tuning/nova/nova_1_0/nova_micro/SFT/nova_micro_1_0_p5_p4d_gpu_lora_sft \
--override-parameters '{
"instance_type": "ml.p5.48xlarge",
    "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest"
  }'
```

**Output previsto**:

```
Final command: python3 <path_to_your_installation>/NovaForgeHyperpodCLI/src/hyperpod_cli/sagemaker_hyperpod_recipes/main.py recipes=fine-tuning/nova/nova_micro_p5_gpu_sft cluster_type=k8s cluster=k8s base_results_dir=/local/home/<username>/results cluster.pullPolicy="IfNotPresent" cluster.restartPolicy="OnFailure" cluster.namespace="kubeflow" container="708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-SFT-DATAMIX-latest"

Prepared output directory at /local/home/<username>/results/<job-name>/k8s_templates
Found credentials in shared credentials file: ~/.aws/credentials
Helm script created at /local/home/<username>/results/<job-name>/<job-name>_launch.sh
Running Helm script: /local/home/<username>/results/<job-name>/<job-name>_launch.sh

NAME: <job-name>
LAST DEPLOYED: Mon Sep 15 20:56:50 2025
NAMESPACE: kubeflow
STATUS: deployed
REVISION: 1
TEST SUITE: None
Launcher successfully generated: <path_to_your_installation>/NovaForgeHyperpodCLI/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nova/k8s_templates/SFT

{
 "Console URL": "https://us-east-1.console.aws.amazon.com/sagemaker/home?region=us-east-1#/cluster-management/<your-cluster-name>"
}
```

## Verifica dello stato del lavoro
<a name="nova-hp-essential-commands-guide-status"></a>

Monitora i tuoi lavori in esecuzione usando kubectl:

```
kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep <your-job-name>)
```

**Comprensione degli stati dei pod**  
La tabella seguente illustra gli stati comuni dei pod:


| Stato | Description | 
| --- |--- |
| `Pending` | Pod accettato ma non ancora programmato su un nodo o in attesa che le immagini del contenitore vengano estratte | 
| `Running` | Pod associato a un nodo con almeno un contenitore in esecuzione o in fase di avvio | 
| `Succeeded` | Tutti i contenitori sono stati completati correttamente e non verranno riavviati | 
| `Failed` | Tutti i contenitori sono terminati e almeno uno è terminato con un errore | 
| `Unknown` | Lo stato del pod non può essere determinato (in genere a causa di problemi di comunicazione tra i nodi) | 
| `CrashLoopBackOff` | Errore ripetuto del container; Kubernetes si ritira dai tentativi di riavvio | 
| `ImagePullBackOff` / `ErrImagePull` | Impossibile estrarre l'immagine del contenitore dal registro | 
| `OOMKilled` | Contenitore terminato per superamento dei limiti di memoria | 
| `Completed` | Job o Pod completato correttamente (completamento del lavoro in batch) | 

**Suggerimento**  
Usa il `-w` flag per guardare gli aggiornamenti sullo stato del pod in tempo reale. Premi `Ctrl+C` per interrompere la visione.

## Monitoraggio dei registri dei lavori
<a name="nova-hp-essential-commands-guide-logs"></a>

È possibile visualizzare i registri in tre modi:

**Usando CloudWatch**  
I tuoi log sono disponibili nel tuo AWS account che contiene Hyperpodcluster in. CloudWatch Per visualizzarli nel browser, vai alla CloudWatch home page del tuo account e cerca il nome del cluster. Ad esempio, se il cluster fosse chiamato, `my-hyperpod-rig` il gruppo di log avrebbe il prefisso:
+ **Gruppo di log**: `/aws/sagemaker/Clusters/my-hyperpod-rig/{UUID}`
+ Una volta entrato nel gruppo di log, puoi trovare il tuo registro specifico utilizzando l'ID dell'istanza del nodo, ad esempio -`hyperpod-i-00b3d8a1bf25714e4`.
  + `i-00b3d8a1bf25714e4`here rappresenta il nome del computer Hyperpodfriendly su cui è in esecuzione il processo di formazione. **Ricordiamo come nell'`kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep my-cpt-run)`output del comando precedente abbiamo catturato una colonna chiamata NODE.**
  + L'esecuzione del nodo «master» in questo caso era in esecuzione su hyperpod `i-00b3d8a1bf25714e4` e quindi useremo quella stringa per selezionare il gruppo di log da visualizzare. Seleziona quello che dice `SagemakerHyperPodTrainingJob/rig-group/[NODE]`

**Utilizzo di CloudWatch Insights**  
Se hai il nome del tuo lavoro a portata di mano e non desideri seguire tutti i passaggi precedenti, puoi semplicemente interrogare tutti i log sottostanti `/aws/sagemaker/Clusters/my-hyperpod-rig/{UUID}` per trovare il registro individuale.

CPT:

```
fields @timestamp, @message, @logStream, @log
| filter @message like /(?i)Starting CPT Job/
| sort @timestamp desc
| limit 100
```

Per completare il lavoro, sostituire con `Starting CPT Job` `CPT Job completed`

Quindi puoi fare clic sui risultati e scegliere quello che dice «Epoch 0" poiché sarà il tuo nodo principale.

**Usando il AWS CLI**  
Puoi scegliere di seguire i tuoi tronchi usando il AWS CLI. Prima di farlo, controlla che la tua AWS CLI versione utilizzi`aws --version`. Si consiglia inoltre di utilizzare questo script di utilità che aiuta a tracciare i log in tempo reale nel terminale

**per V1:**

```
aws logs get-log-events \
--log-group-name /aws/sagemaker/YourLogGroupName \
--log-stream-name YourLogStream \
--start-from-head | jq -r '.events[].message'
```

**per V2:**

```
aws logs tail /aws/sagemaker/YourLogGroupName \
 --log-stream-name YourLogStream \
--since 10m \
--follow
```

## Elenco delle offerte di lavoro attive
<a name="nova-hp-essential-commands-guide-list-jobs"></a>

Visualizza tutti i lavori in esecuzione nel tuo cluster:

```
hyperpod list-jobs -n kubeflow
```

**Output di esempio:**

```
{
  "jobs": [
    {
      "Name": "test-run-nhgza",
      "Namespace": "kubeflow",
      "CreationTime": "2025-10-29T16:50:57Z",
      "State": "Running"
    }
  ]
}
```

## Annullare un lavoro
<a name="nova-hp-essential-commands-guide-cancel-job"></a>

Interrompi un processo in esecuzione in qualsiasi momento:

```
hyperpod cancel-job --job-name <job-name> -n kubeflow
```

**Trovare il nome del lavoro**  
**Opzione 1: dalla tua ricetta**

Il nome del lavoro è specificato nel `run` blocco della ricetta:

```
run:
  name: "my-test-run"                        # This is your job name
  model_type: "amazon.nova-micro-v1:0:128k"
  ...
```

**Opzione 2: dal comando list-jobs**

Usa `hyperpod list-jobs -n kubeflow` e copia il `Name` campo dall'output.

## Esecuzione di un processo di valutazione
<a name="nova-hp-essential-commands-guide-evaluation"></a>

Valuta un modello addestrato o un modello base utilizzando una ricetta di valutazione.

**Prerequisiti**  
Prima di eseguire i lavori di valutazione, assicuratevi di disporre di:
+ Controlla l'URI di Amazon S3 dal file `manifest.json` del tuo processo di formazione (per i modelli addestrati)
+ Set di dati di valutazione caricato su Amazon S3 nel formato corretto
+ Percorso di output Amazon S3 per i risultati della valutazione

**Comando**  
Esegui il comando seguente per avviare un processo di valutazione:

```
hyperpod start-job -n kubeflow \
  --recipe evaluation/nova/nova_2_0/nova_lite/nova_lite_2_0_p5_48xl_gpu_bring_your_own_dataset_eval \
  --override-parameters '{
    "instance_type": "p5.48xlarge",
    "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest",
    "recipes.run.name": "<your-eval-job-name>",
    "recipes.run.model_name_or_path": "<checkpoint-s3-uri>",
    "recipes.run.output_s3_path": "s3://<your-bucket>/eval-results/",
    "recipes.run.data_s3_path": "s3://<your-bucket>/eval-data.jsonl"
  }'
```

**Descrizioni dei parametri**:
+ `recipes.run.name`: nome univoco per il lavoro di valutazione
+ `recipes.run.model_name_or_path`: URI Amazon S3 da `manifest.json` o percorso del modello base (ad es.) `nova-micro/prod`
+ `recipes.run.output_s3_path`: posizione Amazon S3 per i risultati della valutazione
+ `recipes.run.data_s3_path`: posizione Amazon S3 del set di dati di valutazione

**Suggerimenti:**
+ **Ricette specifiche per ogni modello**: ogni modello di taglia (micro, lite, pro) ha una propria ricetta di valutazione
+ **Valutazione del modello di base**: utilizza i percorsi del modello di base (ad esempio`nova-micro/prod`) anziché il checkpoint URIs per valutare i modelli di base

**Formato dei dati di valutazione**  
**Formato di input (JSONL**):

```
{
  "metadata": "{key:4, category:'apple'}",
  "system": "arithmetic-patterns, please answer the following with no other words: ",
  "query": "What is the next number in this series? 1, 2, 4, 8, 16, ?",
  "response": "32"
}
```

**Formato di output:**

```
{
  "prompt": "[{'role': 'system', 'content': 'arithmetic-patterns, please answer the following with no other words: '}, {'role': 'user', 'content': 'What is the next number in this series? 1, 2, 4, 8, 16, ?'}]",
  "inference": "['32']",
  "gold": "32",
  "metadata": "{key:4, category:'apple'}"
}
```

**Descrizioni dei campi**:
+ `prompt`: input formattato inviato al modello
+ `inference`: risposta generata dal modello
+ `gold`: Risposta corretta prevista dal set di dati di input
+ `metadata`: metadati opzionali trasmessi dall'input

## Problemi comuni
<a name="nova-hp-essential-commands-guide-troubleshooting"></a>
+ `ModuleNotFoundError: No module named 'nemo_launcher'`, potresti dover aggiungere `nemo_launcher` al tuo percorso Python in base a dove `hyperpod_cli` è installato. Comando di esempio:

  ```
  export PYTHONPATH=<path_to_hyperpod_cli>/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nemo/nemo_framework_launcher/launcher_scripts:$PYTHONPATH
  ```
+ `FileNotFoundError: [Errno 2] No such file or directory: '/tmp/hyperpod_current_context.json'`indica che non hai eseguito il comando hyperpod connect cluster.
+ Se non vedi il tuo lavoro pianificato, ricontrolla se l'output della tua SageMaker HyperPod CLI contiene questa sezione con i nomi dei lavori e altri metadati. In caso contrario, reinstalla Helm Chart eseguendo:

  ```
  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
  ```

# Creazione di un cluster SageMaker HyperPod EKS con un gruppo di istanze ristrette (RIG)
<a name="nova-hp-cluster"></a>

Per personalizzare un modello su Hyperpod, è necessario configurare l'infrastruttura necessaria. Per i dettagli sulla configurazione di un cluster SageMaker HyperPod EKS con un gruppo di istanze ristrette (RIG), visitate il [workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/dcac6f7a-3c61-4978-8344-7535526bf743/en-US), che fornisce una guida dettagliata del processo di configurazione.

# Accesso e configurazione di Nova Forge per
<a name="nova-forge-hp-access"></a>

Per configurare Amazon Nova Forge per l'utilizzo con Jobs, devi:
+ Abbonati ad Amazon Nova Forge
+ Configura un cluster

**Topics**
+ [Abbonati ad Amazon Nova Forge](nova-forge-subscribing.md)
+ [Configura l'infrastruttura](nova-forge-hyperpod-setup.md)
+ [AI responsabile](nova-forge-responsible-ai.md)

# Abbonati ad Amazon Nova Forge
<a name="nova-forge-subscribing"></a>

Per accedere alle funzionalità di Amazon Nova Forge, completa i seguenti passaggi:

1. Verifica l'accesso dell'amministratore all' AWS account.

1. Passa alla console SageMaker AI e richiedi l'accesso ad Amazon Nova Forge.

1. Attendi che il team di Amazon Nova invii un'e-mail di conferma dopo l'approvazione della richiesta di abbonamento.

1. Etichetta il tuo ruolo di esecuzione con il `forge-subscription` tag. Questo tag è necessario per accedere alle funzionalità e ai checkpoint di Amazon Nova Forge. Aggiungi il seguente tag al tuo ruolo di esecuzione:
   + Chiave: `forge-subscription`
   + Valore: `true`

**Nota**  
Le funzionalità standard di Amazon Nova rimangono disponibili senza un abbonamento a Forge. Amazon Nova Forge è progettato per creare modelli di frontiera personalizzati con controllo e flessibilità in tutte le fasi di addestramento dei modelli.

# Configura l'infrastruttura
<a name="nova-forge-hyperpod-setup"></a>

Una volta approvato l'abbonamento ad Amazon Nova Forge, configura l'infrastruttura necessaria per utilizzare le funzionalità abilitate per Forge. [Per istruzioni dettagliate sulla creazione di un cluster EKS con un gruppo di istanze ristrette (RIG), segui le istruzioni del workshop.](https://catalog.us-east-1.prod.workshops.aws/workshops/dcac6f7a-3c61-4978-8344-7535526bf743/en-US)

# AI responsabile
<a name="nova-forge-responsible-ai"></a>

**Impostazioni di moderazione dei contenuti**: i clienti di Amazon Nova Forge hanno accesso a Impostazioni di moderazione dei contenuti personalizzabili (CCMS) per i modelli Amazon Nova Lite 1.0 e Pro 1.0. CCMS ti consente di adattare i controlli di moderazione dei contenuti per allinearli ai tuoi requisiti aziendali specifici, mantenendo al contempo le protezioni essenziali e responsabili dell'IA. Per determinare se il tuo caso d'uso aziendale è idoneo per CCMS, contatta il tuo account manager Amazon Web Services.

Amazon Nova Forge fornisce un kit di strumenti per l'intelligenza artificiale responsabile che include dati di formazione, benchmark di valutazione e controlli di runtime per aiutarti ad allineare i tuoi modelli alle linee guida sull'intelligenza artificiale responsabile di Amazon Nova.

**Dati di formazione**: la categoria «RAI» nella miscelazione dei dati contiene casi e scenari che enfatizzano i principi dell'intelligenza artificiale responsabile, le considerazioni sulla sicurezza e l'implementazione responsabile della tecnologia. Utilizzali per allineare i tuoi modelli in modo responsabile durante la formazione preliminare continua.

**Valutazioni**: sono disponibili attività di benchmark per testare la capacità del modello di rilevare e rifiutare contenuti inappropriati, dannosi o errati. Utilizzate queste valutazioni per misurare la differenza tra le prestazioni del modello base e le prestazioni del modello personalizzato.

**Controlli di runtime**: per impostazione predefinita, il runtime di Amazon Nova controlla le risposte moderate del modello durante l'inferenza. Per modificare questi controlli per il tuo caso aziendale specifico, richiedi le impostazioni di moderazione dei contenuti personalizzabili (CCMS) contattando il tuo account manager di Amazon Web Services.

## Responsabilità condivisa per la sicurezza
<a name="shared-responsibility"></a>

La sicurezza è una responsabilità condivisa tra Amazon Web Services e i nostri clienti. La modifica del modello di base o l'utilizzo di corsi di formazione continua per migliorare le prestazioni in un caso d'uso specifico possono influire sulla sicurezza, sull'equità e su altre proprietà del nuovo modello.

Utilizziamo un metodo di adattamento affidabile per ridurre al minimo le modifiche alla sicurezza, all'equità e ad altre protezioni integrate nei nostri modelli di base, riducendo al minimo l'impatto sulle prestazioni del modello per attività per le quali il modello non è stato personalizzato.

L'utente è responsabile di:
+ End-to-end test delle loro applicazioni su set di dati rappresentativi dei loro casi d'uso
+ Decidere se i risultati dei test soddisfano le loro aspettative specifiche in termini di sicurezza, equità e altre proprietà, nonché l'efficacia complessiva

Per ulteriori informazioni, consulta la Guida all'uso responsabile dell'IA di Amazon Web Services, la Policy sull'IA responsabile di Amazon Web Services, la Politica di utilizzo AWS accettabile e i Termini di AWS servizio per i servizi che intendi utilizzare.

## Impostazioni di moderazione dei contenuti personalizzabili (CCMS)
<a name="ccms"></a>

CCMS consente di adattare i controlli pertinenti ai requisiti aziendali, mantenendo al contempo controlli essenziali e non configurabili che garantiscono un uso responsabile dell'intelligenza artificiale.

Queste impostazioni consentono la generazione di contenuti attraverso tre configurazioni disponibili:
+ Solo sicurezza
+ Sicurezza, contenuti sensibili e correttezza combinati
+ Tutte le categorie combinate

Le quattro categorie di moderazione dei contenuti sono:

1. **Sicurezza**: copre attività pericolose, armi e sostanze controllate

1. **Contenuti sensibili**: includono parolacce, nudità e bullismo

1. **Equità**: affronta pregiudizi e considerazioni culturali

1. **Sicurezza**: coinvolge criminalità informatica, malware e contenuti dannosi

Indipendentemente dalla configurazione CCMS, Amazon Amazon Nova applica controlli essenziali e non configurabili per garantire un uso responsabile dell'intelligenza artificiale, come i controlli per prevenire danni ai bambini e preservare la privacy.

### Consigli per l'uso di CCMS
<a name="ccms-recommendations"></a>

Quando si utilizza CCMS, si consiglia di utilizzare il Continuous Pre Training (CPT) e di iniziare da un checkpoint di allineamento precedente alla RAI (Pre-training-Early o) anziché dal checkpoint. PRE-TRAINING-Mid PRE-TRAINING-Final GA/FINAL Questi checkpoint non sono stati sottoposti a formazione sulla sicurezza né sono stati orientati verso comportamenti RAI specifici, il che consente di personalizzarli in modo più efficiente in base ai requisiti di moderazione dei contenuti.

**Suggerimento**: quando utilizzi CCMS con il mixaggio dei dati, valuta la possibilità di modificare la percentuale della categoria «rai» nella configurazione nova\$1data per allinearla ai tuoi requisiti specifici di moderazione dei contenuti.

### Disponibilità
<a name="ccms-availability"></a>

Il CCMS è attualmente disponibile per i clienti approvati che utilizzano:
+ Modelli Nova Lite 1.0 e Pro 1.0
+ Inferenza su richiesta di Amazon Bedrock
+ La regione us-east-1 (Virginia settentrionale)

Per abilitare CCMS per i tuoi modelli Forge, contatta il tuo account manager Amazon Web Services.

# Formazione per i modelli Amazon Nova
<a name="nova-hp-training"></a>

La formazione dei modelli Amazon Nova SageMaker HyperPod supporta diverse tecniche, tra cui Continued Pre-Training (CPT), Supervised Fine-Tuning (SFT) e Reinforcement Fine-Tuning (RFT). Ogni tecnica soddisfa esigenze di personalizzazione diverse e può essere applicata a diverse versioni del modello Amazon Nova.

**Topics**
+ [Preaddestramento continuo (CPT)](nova-cpt.md)

# Preaddestramento continuo (CPT)
<a name="nova-cpt"></a>

La formazione continua (CPT) è una tecnica di formazione che estende la fase di pre-formazione di un modello base esponendolo a testo aggiuntivo senza etichetta proveniente da domini o corpora specifici. A differenza della messa a punto supervisionata, che richiede coppie di input-output etichettate, il CPT si basa su documenti non elaborati per aiutare il modello ad acquisire una conoscenza più approfondita di nuovi domini, apprendere la terminologia e gli schemi di scrittura specifici del dominio e adattarsi a particolari tipi di contenuti o aree tematiche.

Questo approccio è particolarmente utile quando si dispone di grandi volumi (decine di miliardi di token) di dati di testo specifici del dominio, come documenti legali, letteratura medica, documentazione tecnica o contenuti aziendali proprietari, e si desidera che il modello sviluppi la fluidità nativa in quel dominio. In genere, dopo la fase CPT, il modello deve essere sottoposto a ulteriori fasi di ottimizzazione delle istruzioni per consentire al modello di utilizzare le nuove conoscenze acquisite e completare attività utili.

**Modelli supportati**  
Il CPT è disponibile per i seguenti modelli Amazon Nova:
+ Nova 1.0 (Micro, Lite, Pro)
+ Nova 2.0 (versione leggera)

Scegliete Nova 1.0 quando si applica quanto segue:
+ Il tuo caso d'uso richiede una comprensione linguistica standard senza ragionamenti avanzati.
+ Desiderate ottimizzare per ridurre i costi di formazione e inferenza.
+ Il tuo obiettivo è insegnare al modello conoscenze e comportamenti specifici del dominio piuttosto che compiti di ragionamento complessi.
+ Hai già convalidato le prestazioni su Nova 1.0 e non hai bisogno di funzionalità aggiuntive.

**Nota**  
Il modello più grande non è sempre migliore. Considerate il compromesso tra costi e prestazioni e i vostri requisiti aziendali specifici nella scelta tra i modelli Nova 1.0 e Nova 2.0.

# CPT su Nova 1.0
<a name="nova-cpt-1"></a>

È consigliabile utilizzare CPT nei seguenti scenari:
+ In presenza di dati non etichettati su larga scala, specifici di un dominio (ad esempio, medicina o finanza).
+ In presenza di un modello che debba mantenere le funzionalità linguistiche generali, migliorando al contempo i contenuti specifici del dominio.
+ In caso si intenda migliorare le prestazioni zero-shot e few-shot in aree specializzate, senza eseguire il fine-tuning esteso e specifico per attività.

**Requisiti per il formato dei dati**  
È consigliabile attenersi alle seguenti caratteristiche del set di dati durante l’esecuzione di CPT:
+ **Diversità**: i dati devono coprire un’ampia gamma di espressioni all’interno del dominio di destinazione per evitare l’overfitting.
+ **Rappresentazione**: i dati devono riflettere la distribuzione a cui viene sottoposto il modello durante l’inferenza.
+ **Pulizia**: rumore e ridondanza dei dati possono ridurre le prestazioni. La deduplicazione e la normalizzazione del testo migliorano l’addestramento dei modelli.
+ **Dimensionamento**: i set di dati più grandi sono utili ma, oltre una certa soglia (ad esempio, l’esecuzione di più epoch su dati limitati), aumentano i rischi di overfitting.

I set di dati di addestramento e convalida devono essere file JSONL secondo il formato mostrato di seguito, in cui ogni riga contiene un oggetto JSON che rappresenta una conversazione con i campi e la struttura richiesti. Ecco un esempio:

```
{"text": "AWS stands for Amazon Web Services"}
{"text": "Amazon SageMaker is a fully managed machine learning service"}
{"text": "Amazon Bedrock is a fully managed service for foundation models"}
```

Le voci di testo devono contenere contenuti fluidi in modo naturale e di alta qualità che rappresentino il dominio di destinazione.

**Convalida di set di dati**  
Per convalidare il set di dati prima di inviare il processo CPT, verifica le seguenti condizioni:
+ Ogni riga deve contenere un oggetto JSON valido.
+ Ogni oggetto ha un campo “text” che contiene dati di tipo stringa.
+ Non sono presenti campi diversi da “text”.
+ Il file è un’estensione `.jsonl`.

**Tempi di addestramento**  
La quantità di tempo dedicata all’addestramento dipende in larga misura dalla dimensione del set di dati, dal numero di istanze utilizzate e dal modello da addestrare. I tempi di addestramento dovrebbero essere scalabili in modo lineare. La tabella seguente mostra alcuni esempi di tempi di addestramento per vari modelli.


| Tipo di modello | GBS | Numero di campioni nel set di dati | Numero di istanze P5 | `max_length` value | Tempo di addestramento approssimativo in ore | 
| --- |--- |--- |--- |--- |--- |
| Amazon Nova Micro | 256 | 100.000 | 8 | 8,192 | 4 | 
| Amazon Nova Lite | 256 | 100.000 | 16 | 8,192 | 4 | 
| Amazon Nova Pro | 256 | 100.000 | 24 | 8,192 | 10 | 

I set di dati di addestramento e convalida devono essere file JSONL nel formato mostrato di seguito, in cui ogni riga contiene un oggetto JSON che rappresenta una conversazione con i campi e la struttura richiesti.

I parametri di Amazon Nova disponibili per l’ottimizzazione con CPT includono:
+ **Configurazione run**
  + `name`: un nome descrittivo per il job di addestramento. Questo aiuta a identificare il tuo lavoro in. Console di gestione AWS
  + `model_type`: la variante del modello Amazon Nova da utilizzare. Le opzioni disponibili sono `amazon.nova-micro-v1:0:128k`, `amazon.nova-lite-v1:0:300k` oppure `amazon.nova-pro-v1:0:300k`.
  + `model_name_or_path`: il percorso del modello di base da utilizzare per l’addestramento. Le opzioni disponibili sono `nova-micro/prod`, `nova-lite/prod`, `nova-pro/prod` o il percorso S3 per il checkpoint post-addestramento (`s3://customer-escrow-bucket-unique_id/training_run_name`).
  + `replicas`: il numero di istanze di calcolo da utilizzare per l’addestramento distribuito. I valori disponibili variano in base al modello scelto. Amazon Nova Micro supporta 2, 4 oppure 8 repliche. Amazon Nova Lite supporta 4, 8, 16 oppure 32 repliche. Amazon Nova Pro supporta 6, 12 oppure 24 repliche.
  + `data_s3_path`: la posizione S3 del set di dati di addestramento, ovvero un file JSONL. Questo file deve risiedere nella stessa Account AWS regione del cluster. Tutte le posizioni S3 fornite devono trovarsi nello stesso account e nella stessa Regione.
  + `validation_data_s3_path`: (facoltativo) la posizione S3 del set di dati di convalida, ovvero un file JSONL. Questo file deve trovarsi nello stesso account e nella stessa Regione del cluster. Tutte le posizioni S3 fornite devono trovarsi nello stesso account e nella stessa Regione.
  + `output_s3_path`: La posizione S3 in cui sono archiviati il manifesto e TensorBoard i log. Tutte le posizioni S3 fornite devono trovarsi nello stesso Account AWS e nella stessa Regione AWS.
+ **Configurazione di addestramento**
  + `max_length`: la lunghezza massima della sequenza in token. Determina la dimensione della finestra di contesto per l’addestramento. Il valore massimo supportato è di 8.192 token per CPT.

    Sequenze più lunghe migliorano l’efficienza di addestramento a scapito di maggiori requisiti di memoria. È consigliabile che il parametro `max_length` corrisponda alla distribuzione dei dati.
+ **Impostazioni di addestramento**
  + `global_batch_size`: il numero totale di campioni di addestramento elaborati insieme in un unico passaggio avanti o indietro su tutti i dispositivi e i worker.

    Questo valore moltiplica la dimensione del batch per dispositivo e il numero di dispositivi. Influisce sulla stabilità dell’addestramento e sul throughput. È consigliabile iniziare con un batch di dimensioni idonee per la memoria e quindi aumentare verticalmente. Per i dati specifici del dominio, batch di dimensioni maggiori potrebbero rendere i gradienti eccessivamente uniformi.
  + `max_epochs`: il numero di passaggi completi nel set di dati di addestramento.

    In generale, set di dati di dimensioni maggiori richiedono meno epoch per la convergenza, mentre set di dati di dimensioni minori prevedono più epoch. È consigliabile regolare il numero di epoch in base alla dimensione dei dati per evitare l’overfitting.
+ **Impostazioni del modello**
  + `hidden_dropout`: la probabilità di eliminare output di stato nascosti. Aumenta questo valore di circa 0,0-0,2 per ridurre l’overfitting su set di dati più piccoli. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `attention_dropout`: la probabilità di eliminare pesi di attenzione. Questo parametro può agevolare la generalizzazione. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `ffn_dropout`: la probabilità di eliminare output di rete feed-forward. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
+ **Configurazione optimizer**
  + `lr`: il tasso di apprendimento, che controlla la dimensione del passaggio durante l’ottimizzazione. Sono consigliabili valori compresi tra 1e-6 e 1e-4 per ottenere buone prestazioni. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `name`: l’algoritmo dell’ottimizzatore. Attualmente è supportato solo `distributed_fused_adam`.
  + `weight_decay`: la potenza di regolarizzazione L2. Valori maggiori (compresi tra 0,01 e 0,1) aumentano la regolarizzazione.
  + `warmup_steps`: il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Migliora la stabilità dell’addestramento. I valori validi sono compresi tra 1 e 20, entrambi inclusi.
  + `min_lr`: il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, entrambi inclusi, ma devono essere inferiori al tasso di apprendimento.

**Ricetta CPT**  
Di seguito è riportata una ricetta per CPT.

```
## Run config
run:
  name: "my-cpt-run"             # A descriptive name for your training job
  model_type: "amazon.nova-lite-v1:0:300k"  # Model variant specification, do not change
  model_name_or_path: "nova-lite/prod"      # Base model path, do not change
  replicas: 4                     # Number of compute instances for training, allowed values are 4, 8, 16
  data_s3_path: [S3_PATH_TO_TRAIN_DATASET]
  validation_data_s3_path: (OPTIONAL)[S3_PATH_TO_VALIDATION_DATASET]
  output_s3_path: [S3_PATH_TO_STORE_MANIFEST]

## Training specific configs
training_config:
  max_length: 8192               # Maximum context window size (tokens).
  global_batch_size: 256           # Global batch size, allowed values are 32, 64, 128, 256.

  trainer:
      max_epochs: 2                # Number of training epochs

  model:
      hidden_dropout: 0.0          # Dropout for hidden states, must be between 0.0 and 1.0
      attention_dropout: 0.0       # Dropout for attention weights, must be between 0.0 and 1.0
      ffn_dropout: 0.0             # Dropout for feed-forward networks, must be between 0.0 and 1.0

      optim:
        lr: 1e-5                 # Learning rate
        name: distributed_fused_adam  # Optimizer algorithm, do not change
        adam_w_mode: true        # Enable AdamW mode
        eps: 1e-06               # Epsilon for numerical stability
        weight_decay: 0.0        # L2 regularization strength, must be between 0.0 and 1.0
        betas:                   # Adam optimizer betas, must be between 0.0 and 1.0
          - 0.9
          - 0.999
        sched:
          warmup_steps: 10     # Learning rate warmup steps
          constant_steps: 0    # Steps at constant learning rate
          min_lr: 1e-6         # Minimum learning rate, must be lower than lr
```

**Limitazioni**  
CPT presenta le seguenti limitazioni:
+ I set di dati multimodali non sono supportati.
+ I checkpoint intermedi non vengono salvati per la valutazione e non è possibile riprendere da un checkpoint intermedio. Viene salvato solo l’ultimo checkpoint.

# Ottimizzazione dei modelli Amazon Nova su SageMaker HyperPod
<a name="nova-hp-fine-tune"></a>

Le seguenti tecniche mostrano come ottimizzare i modelli Amazon Nova 2. SageMaker HyperPod

**Topics**
+ [Fine-tuning supervisionato (SFT)](nova-fine-tune.md)
+ [Ottimizzazione diretta delle preferenze (DPO)](nova-dpo.md)
+ [Ottimizzazione prossimale delle policy (PPO)](nova-ppo.md)

# Fine-tuning supervisionato (SFT)
<a name="nova-fine-tune"></a>

Il processo di formazione SFT consiste in due fasi principali:
+ **Preparazione dei dati**: segui le linee guida stabilite per creare, pulire o riformattare i set di dati nella struttura richiesta. Assicurati che gli input, gli output e le informazioni ausiliarie (come tracce di ragionamento o metadati) siano allineati e formattati correttamente.
+ **Configurazione dell'addestramento**: definisci come verrà addestrato il modello. Quando viene utilizzata, questa configurazione è scritta in un file di ricette YAML che include:
  + Percorsi di origine dei dati (set di dati di formazione e convalida)
  + Iperparametri chiave (epoche, frequenza di apprendimento, dimensione del batch)
  + Componenti opzionali (parametri di allenamento distribuiti, ecc.)

## Confronto e selezione dei modelli Nova
<a name="nova-model-comparison"></a>

Amazon Nova 2.0 è un modello addestrato su un set di dati più ampio e diversificato rispetto ad Amazon Nova 1.0. I miglioramenti includono:
+ **Capacità di ragionamento avanzate con supporto della** modalità di ragionamento esplicito
+ Prestazioni **multilingue più ampie in altre lingue**
+ **Prestazioni migliorate su attività complesse,** tra cui la codifica e l'uso degli strumenti
+ **Gestione estesa del contesto** con maggiore precisione e stabilità a lunghezze di contesto più lunghe

## Quando usare Nova 1.0 rispetto a Nova 2.0
<a name="nova-model-selection"></a>

Scegli Amazon Nova 1.0 quando:
+ Il caso d'uso richiede una comprensione linguistica standard senza ragionamenti avanzati
+ Le prestazioni sono già state convalidate su Amazon Nova 1.0 e non sono necessarie funzionalità aggiuntive

# SFT su Nova 1.0
<a name="nova-sft-1"></a>

Il fine-tuning supervisionato (SFT, Supervised Fine-Tuning) è il processo in base al quale viene fornita una raccolta di coppie prompt-risposta a un modello di fondazione per migliorare le prestazioni di un modello preaddestrato su un’attività specifica. Gli esempi etichettati sono formattati come coppie prompt-risposta e formulati come istruzioni. Questo processo di fine-tuning modifica i pesi del modello.

È consigliabile utilizzare SFT in presenza di dati specifici del dominio che richiedono di fornire coppie prompt-risposta specifiche per risultati ottimali.

I set di dati di input per l’addestramento e la convalida devono risiedere in bucket di proprietà del cliente, non in bucket escrow o bucket S3 gestiti dal servizio.

## Requisiti dei dati
<a name="nova-sft-1-data-requirements"></a>

Per SFT a dimensionalità completa e Low-Rank Adapter (LoRA), i dati devono seguire il [formato operativo di Amazon Bedrock Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html). Per esempi e vincoli di questo formato, consulta [Preparing data for fine-tuning Understanding models](https://docs.aws.amazon.com/nova/latest/userguide/fine-tune-prepare-data-understanding.html).

Per convalidare il formato del set di dati prima dell’invio, è consigliabile utilizzare lo [script di convalida dal repository di esempi di Amazon Bedrock](https://github.com/aws-samples/amazon-nova-samples/blob/main/customization/bedrock-finetuning/understanding/dataset_validation/nova_ft_dataset_validator.py). Questo strumento di convalida aiuta a garantire che i file JSONL rispettino le specifiche di formato richieste e a identificare eventuali problemi potenziali prima di inviare il processo di fine-tuning.

I parametri di Amazon Nova disponibili per l’ottimizzazione con SFT sono i seguenti:
+ **Configurazione run**
  + `name`: un nome descrittivo per il job di addestramento. Questo aiuta a identificare il tuo lavoro in. Console di gestione AWS
  + `model_type`: la variante del modello Amazon Nova da utilizzare. Le opzioni disponibili sono `amazon.nova-micro-v1:0:128k`, `amazon.nova-lite-v1:0:300k` oppure `amazon.nova-pro-v1:0:300k`.
  + `model_name_or_path`: il percorso del modello di base da utilizzare per l’addestramento. Seleziona il modello da utilizzare tra `nova-micro/prod`, `nova-lite/prod`, `nova-pro/prod` o il percorso S3 per il checkpoint post-addestramento (`s3://<escrow bucket>/<job id>/outputs/checkpoints`).
  + `replicas`: il numero di istanze di calcolo da utilizzare per l’addestramento distribuito. I valori disponibili variano in base al modello scelto. Amazon Nova Micro supporta 2, 4 oppure 8 repliche. Amazon Nova Lite supporta 4, 8, 16 oppure 32 repliche. Amazon Nova Pro supporta 6, 12 oppure 24 repliche.
  + `data_s3_path`: la posizione S3 del set di dati di addestramento, ovvero un file JSONL. Questo file deve risiedere nella stessa Account AWS regione del cluster. Tutte le posizioni S3 nel percorso S3 fornito devono trovarsi nello stesso account e nella stessa Regione.
  + `validation_data_s3_path`: (facoltativo) la posizione S3 del set di dati di convalida, ovvero un file JSONL. Questo file deve trovarsi nello stesso account e nella stessa Regione del cluster. Tutte le posizioni S3 nel percorso S3 fornito devono trovarsi nello stesso account e nella stessa Regione.
  + `output_s3_path`: La posizione S3 in cui sono archiviati il manifesto e TensorBoard i log. Tutte le posizioni S3 nel percorso S3 fornito devono trovarsi nello stesso account e nella stessa Regione.
+ **Configurazione di addestramento**
  + `max_length`: la lunghezza massima della sequenza in token. Determina la dimensione della finestra di contesto per l’addestramento. Il valore massimo supportato è di 65.536 token per SFT.

    Sequenze più lunghe migliorano l’efficienza di addestramento a scapito di maggiori requisiti di memoria. È consigliabile che il parametro `max_length` corrisponda alla distribuzione dei dati. 
+ **Impostazioni di addestramento**
  + `max_epochs`: il numero di passaggi completi nel set di dati di addestramento.

    In generale, set di dati di dimensioni maggiori richiedono meno epoch per la convergenza, mentre set di dati di dimensioni minori prevedono più epoch. È consigliabile regolare il numero di epoch in base alla dimensione dei dati.
+ **Impostazioni del modello**
  + `hidden_dropout`: la probabilità di eliminare output di stato nascosti. Aumenta questo valore di circa 0,0-0,2 per ridurre l’overfitting su set di dati più piccoli. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `attention_dropout`: la probabilità di eliminare pesi di attenzione. Questo parametro può agevolare la generalizzazione. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `ffn_dropout`: la probabilità di eliminare output di rete feed-forward. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
+ **Configurazione optimizer**
  + `lr`: il tasso di apprendimento, che controlla la dimensione del passaggio durante l’ottimizzazione. I valori validi sono compresi tra 1e-6 e 1e-3, entrambi inclusi. Sono consigliabili valori compresi tra 1e-6 e 1e-4 per ottenere buone prestazioni.
  + `name`: l’algoritmo dell’ottimizzatore. Attualmente è supportato solo `distributed_fused_adam`.
  + `weight_decay`: la potenza di regolarizzazione L2. Valori maggiori (compresi tra 0,01 e 0,1) aumentano la regolarizzazione.
  + `warmup_steps`: il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Migliora la stabilità dell’addestramento. I valori validi sono compresi tra 1 e 20, entrambi inclusi.
  + `min_lr`: il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, entrambi inclusi, ma devono essere inferiori al tasso di apprendimento.

## Avvio rapido con una ricetta per SFT a dimensionalità completa
<a name="nova-sft-1-quick-start"></a>

Di seguito è riportata una ricetta per l'SFT completo destinata all'avvio rapido di un job SFT su un cluster. SageMaker HyperPod Questa ricetta presuppone inoltre che vi siate connessi al SageMaker HyperPod cluster utilizzando le credenziali corrette. AWS 

```
run:
  name: "my-sft-micro-job" # gets appended with a unique ID for HP jobs
  model_type: "amazon.nova-micro-v1:0:128k"
  model_name_or_path: "nova-micro/prod"
  replicas: 2
  data_s3_path: s3:Replace with your S3 bucket name/input.jsonl
  validation_data_s3_path: [OPTIONAL] s3:your S3 bucket name/input.jsonl
  output_s3_path: [S3_PATH_TO_STORE_MANIFEST]

## training specific configs
training_config:
  max_length: 32768
  save_steps: 100000
  replicas: ${recipes.run.replicas}
  micro_batch_size: 1
  task_type: sft
  global_batch_size: 64
  weights_only: True
  allow_percentage_invalid_samples: 10

  exp_manager:
    exp_dir: null
    create_wandb_logger: False
    create_tensorboard_logger: True
      project: null
      name: null
    checkpoint_callback_params:
      monitor: step
      save_top_k: 10
      mode: max
      every_n_train_steps: ${recipes.training_config.save_steps}
      save_last: True
    create_early_stopping_callback: True
    early_stopping_callback_params:
      min_delta: 0.001
      mode: min
      monitor: "val_loss"
      patience: 2

  trainer:
    log_every_n_steps: 1
    max_epochs: -1
    max_steps: 16
    limit_test_batches: 0
    gradient_clip_val: 1.0
    num_nodes: ${recipes.training_config.replicas}

  model:
    hidden_dropout: 0.0 # Dropout probability for hidden state transformer.
    attention_dropout: 0.0 # Dropout probability in the attention layer.
    ffn_dropout: 0.0 # Dropout probability in the feed-forward layer.
    sequence_parallel: True
    optim:
      lr: 1e-5
      name: distributed_fused_adam
      bucket_cap_mb: 10
      contiguous_grad_buffer: False
      overlap_param_sync: False
      contiguous_param_buffer: False
      overlap_grad_sync: False
      adam_w_mode: true
      eps: 1e-06
      weight_decay: 0.0
      betas:
        - 0.9
        - 0.999
      sched:
        name: CosineAnnealing
        warmup_steps: 10
        constant_steps: 0
        min_lr: 1e-6

    mm_cfg:
      llm:
        freeze: false
      image_projector:
        freeze: true
        require_newline: true
      video_projector:
        freeze: true
        require_newline: false

    peft:
      peft_scheme: null

    training_validation:
      loader:
        args:
          data_loader_workers: 1
          prefetch_factor: 2
      collator:
        args:
          force_image_at_turn_beginning: false
```

## Esempio di ricetta per SFT a dimensionalità completa
<a name="nova-sft-1-sample-recipe"></a>

Di seguito è riportato un esempio di ricetta per il processo SFT a dimensionalità completa con tutti i componenti configurati correttamente.

```
## Run config
run:
    name: "my-sft-run"              # A descriptive name for your training job
    model_type: "amazon.nova-lite-v1:0:300k"  # Model variant specification
    model_name_or_path: "nova-lite/prod"      # Base model path
    replicas: 4                     # Number of compute instances for training
    data_s3_path: s3:Replace with your S3 bucket name/input.jsonl
    validation_data_s3_path: [OPTIONAL] s3:your S3 bucket name/input.jsonl
    output_s3_path: [S3_PATH_TO_STORE_MANIFEST]

## Training specific configs
training_config:
    max_length: 32768               # Maximum context window size (tokens)

    trainer:
        max_epochs: 2               # Number of training epochs

    model:
        hidden_dropout: 0.0          # Dropout for hidden states
        attention_dropout: 0.0       # Dropout for attention weights
        ffn_dropout: 0.0             # Dropout for feed-forward networks

        optim:
            lr: 1e-5                 # Learning rate
            name: distributed_fused_adam  # Optimizer algorithm
            adam_w_mode: true        # Enable AdamW mode
            eps: 1e-06               # Epsilon for numerical stability
            weight_decay: 0.0        # L2 regularization strength
            betas:                   # Adam optimizer betas
                - 0.9
                - 0.999
            sched:
                warmup_steps: 10     # Learning rate warmup steps
                constant_steps: 0    # Steps at constant learning rate
                min_lr: 1e-6         # Minimum learning rate

        peft:
            peft_scheme: null        # Set to null for full-parameter fine-tuning
```

## Limitazioni
<a name="nova-sft-1-limitations"></a>

La pubblicazione di metriche su Weights & Biases non è supportata.

Per regolare gli iperparametri, segui le istruzioni riportate in [Selecting hyperparameters](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-hyperparameters.html).

## Fine-tuning efficiente in termini di parametri (PEFT)
<a name="nova-fine-tune-peft"></a>

Il fine-tuning efficiente in termini di parametri (PEFT, Parameter-Efficient Fine-Tuning) prevede il riaddestramento di un numero limitato di pesi aggiuntivi per adattare un modello di fondazione a nuovi domini o attività. In particolare, il processo PEFT Low-Rank Adapter (LoRA) esegue in modo efficiente il fine-tuning dei modelli di fondazione introducendo matrici di pesi addestrabili a bassa dimensionalità in livelli specifici del modello, riducendo il numero di parametri addestrabili e mantenendo la qualità del modello.

Un adattatore PEFT LoRA amplia il modello di fondazione incorporando livelli di adattatori leggeri che modificano i pesi del modello durante l’inferenza, mantenendo intatti i parametri del modello originale. Questo approccio è anche considerato una delle tecniche di fine-tuning più convenienti. Per ulteriori informazioni, consulta [Fine-tune models with adapter inference components](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-adapt.html).

È consigliabile utilizzare il processo PEFT di tipo LoRA nei seguenti scenari:
+ Per iniziare con una procedura di addestramento rapida.
+ Le prestazioni del modello base sono già soddisfacenti. In questo caso, l’obiettivo di PEFT LoRA è quello di migliorare le sue capacità in molteplici attività correlate, come la sintesi testuale o la traduzione linguistica. Le proprietà di regolarizzazione di PEFT LoRA contribuiscono a prevenire l’overfitting e riducono il rischio che il modello “dimentichi” il dominio di origine. Ciò garantisce che il modello rimanga versatile e adattabile a varie applicazioni.
+ Per eseguire scenari di fine-tuning delle istruzioni con set di dati relativamente piccoli. PEFT LoRA offre prestazioni migliori con set di dati di dimensioni ridotte e specifici per attività rispetto a set di dati più ampi e più grandi.
+ In presenza di set di dati di grandi dimensioni ed etichettati che superano i limiti di personalizzazione di Amazon Bedrock. In questo caso, puoi utilizzare LoRa PEFT sull' SageMaker intelligenza artificiale per generare risultati migliori.
+ Se hai già ottenuto risultati promettenti tramite la messa a punto di Amazon Bedrock, LoRa PEFT in SageMaker AI può aiutarti a ottimizzare ulteriormente gli iperparametri del modello.

I parametri Amazon Nova disponibili per PEFT LoRA includono:
+ **Configurazione run**
  + `name`: un nome descrittivo per il job di addestramento. Questo aiuta a identificare il tuo lavoro in. Console di gestione AWS
  + `model_type`: la variante del modello Nova da utilizzare. Le opzioni disponibili sono `amazon.nova-micro-v1:0:128k`, `amazon.nova-lite-v1:0:300k` oppure `amazon.nova-pro-v1:0:300k`.
  + `model_name_or_path`: il percorso del modello di base da utilizzare per l’addestramento. Seleziona il modello da utilizzare. Le opzioni disponibili sono `nova-micro/prod`, `nova-lite/prod`, `nova-pro/prod` o il percorso S3 per il checkpoint post-addestramento (`s3://<escrow bucket>/<job id>/outputs/checkpoints`).
  + `replicas`: il numero di istanze di calcolo da utilizzare per l’addestramento distribuito. I valori disponibili variano in base al modello utilizzato. Amazon Nova Micro supporta 2, 4 oppure 8 repliche. Amazon Nova Lite supporta 4, 8, 16 oppure 32 repliche. Amazon Nova Pro supporta 6, 12 oppure 24 repliche.
  + `output_s3_path`: La posizione S3 in cui sono archiviati il manifesto e TensorBoard i log. Tutte le posizioni S3 nel percorso S3 fornito devono trovarsi nello stesso account e nella stessa Regione.
+ **Configurazione di addestramento**
  + `max_length`: la lunghezza massima della sequenza in token. Determina la dimensione della finestra di contesto per l’addestramento. Il valore massimo supportato è di 65.536 token per PEFT LoRA.

    Sequenze più lunghe migliorano l’efficienza di addestramento a scapito di maggiori requisiti di memoria. È consigliabile che il parametro `max_length` corrisponda alla distribuzione dei dati.
+ **Impostazioni di addestramento**
  + `max_epochs`: il numero di passaggi completi nel set di dati di addestramento. È possibile impostare `max_steps` oppure `max_epochs`, ma non è consigliabile impostare entrambi i parametri. Il valore massimo è 5.

    In generale, set di dati di dimensioni maggiori richiedono meno epoch per la convergenza, mentre set di dati di dimensioni minori prevedono più epoch. È consigliabile regolare il numero di epoch in base alla dimensione dei dati.
+ **Impostazioni del modello**
  + `hidden_dropout`: la probabilità di eliminare output di stato nascosti. Aumenta questo valore di circa 0,0-0,2 per ridurre l’overfitting su set di dati più piccoli. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `attention_dropout`: la probabilità di eliminare pesi di attenzione. Questo parametro può agevolare la generalizzazione. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `ffn_dropout`: la probabilità di eliminare output di rete feed-forward. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
+ **Configurazione optimizer**
  + `lr`: il tasso di apprendimento, che controlla la dimensione del passaggio durante l’ottimizzazione. Sono consigliabili valori compresi tra 1e-6 e 1e-4 per ottenere buone prestazioni. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `name`: l’algoritmo dell’ottimizzatore. Attualmente è supportato solo `distributed_fused_adam`.
  + `weight_decay`: la potenza di regolarizzazione L2. Valori maggiori (compresi tra 0,01 e 0,1) aumentano la regolarizzazione.
  + `warmup_steps`: il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Migliora la stabilità dell’addestramento. I valori validi sono compresi tra 1 e 20, entrambi inclusi.
  + `min_lr`: il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, entrambi inclusi, ma devono essere inferiori al tasso di apprendimento.
+ **Parametri di configurazione LoRA**
  + `peft_scheme`: impostato su `lora` per abilitare l’adattamento a bassa dimensionalità. 
  + `alpha`: il fattore di dimensionamento per i pesi LoRA. In genere è impostato sullo stesso valore di `adapter_dim`.
  + `adaptor_dropout`: il parametro di regolarizzazione per LoRA.

### Ricetta per PEFT
<a name="nova-sft-1-peft-recipe"></a>

Di seguito è riportata una ricetta per PEFT LoRA.

```
## Run config
run:
    name: "my-lora-run"             # A descriptive name for your training job
    model_type: "amazon.nova-lite-v1:0:300k"  # Model variant specification
    model_name_or_path: "nova-lite/prod"      # Base model path
    replicas: 4                     # Number of compute instances for training
    output_s3_path: [S3_PATH_TO_STORE_MANIFEST]

## Training specific configs
training_config:
    max_length: 32768               # Maximum context window size (tokens)

    trainer:
        max_epochs: 2               # Number of training epochs

    model:
        hidden_dropout: 0.0          # Dropout for hidden states
        attention_dropout: 0.0       # Dropout for attention weights
        ffn_dropout: 0.0             # Dropout for feed-forward networks

        optim:
            lr: 1e-5                 # Learning rate
            name: distributed_fused_adam  # Optimizer algorithm
            adam_w_mode: true        # Enable AdamW mode
            eps: 1e-06               # Epsilon for numerical stability
            weight_decay: 0.0        # L2 regularization strength
            betas:                   # Adam optimizer betas
                - 0.9
                - 0.999
            sched:
                warmup_steps: 10     # Learning rate warmup steps
                constant_steps: 0    # Steps at constant learning rate
                min_lr: 1e-6         # Minimum learning rate

        peft:
            peft_scheme: "lora"      # Enable LoRA for parameter-efficient fine-tuning
            lora_tuning:
                loraplus_lr_ratio: 8.0  # LoRA+ learning rate scaling factor
                alpha: 32            # Scaling factor for LoRA weights
                adapter_dropout: 0.01  # Regularization for LoRA parameters
```

### Risoluzione dei problemi
<a name="nova-sft-1-troubleshooting"></a>

Utilizza le informazioni seguenti per risolvere i problemi che possono verificarsi:
+ Il set di dati di input per l’addestramento e la convalida deve risiedere in bucket di proprietà del cliente, non in bucket escrow o bucket S3 gestiti dal servizio.
+ Se ricevete un errore Region not found in AWS CLI, inviate nuovamente il lavoro con la regione anteposta al comando start-job. Ad esempio: `AWS_REGION=us-east-1 hyperpod start-job ...Job Parameters`.
+ Per regolare gli iperparametri, segui le istruzioni riportate in [Selecting hyperparameters](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-hyperparameters.html).

# Ottimizzazione diretta delle preferenze (DPO)
<a name="nova-dpo"></a>

L’ottimizzazione diretta delle preferenze (DPO, Direct Preference Optimization) è un metodo di fine-tuning efficiente per i modelli di fondazione che utilizza dati di confronto accoppiati per allineare gli output del modello alle preferenze umane. Questo approccio consente l’ottimizzazione diretta del comportamento del modello sulla base di feedback umano in merito alle risposte considerate più appropriate.

Sono disponibili processi DPO a dimensionalità completa e LoRA (Low Rank Adapter).

**Requisiti per il formato dei dati**  
Per DPO a dimensionalità completa e LoRA, i requisiti di formato dei dati di addestramento sono simili a quelli di SFT. Tuttavia, per DPO, l’interazione finale deve avere coppie di preferenze. Di seguito viene riportato un esempio del formato dei dati per DPO:

```
// N-1 turns same as SFT format
{
    "role": "assistant",
    "candidates": [
        {
            "content": [
                {
                    "text": "..."
                } // content list can contain multiple 'text' objects
            ],
            "preferenceLabel": "preferred"
        },
        {
            "content": [
                {
                    "text": "..."
                } // content list can contain multiple 'text' objects
            ],
            "preferenceLabel": "non-preferred"
        }
    ]
}
```

Ecco un altro esempio di testo per DPO completa:

```
{
    "system": [
        {
            "text": "..."
        }
    ],
    "messages":[
        {
            "role": "user",
            "content": [
                {
                    "text": "..."
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "text": "..."
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "text": "..."
                }
            ]
        },
        {
            "role": "assistant",
            "candidates": [
                {
                    "content": [
                        {
                            "text": "..."
                        }
                    ],
                    "preferenceLabel": "preferred"
                },
                {
                    "content": [
                        {
                            "text": "..."
                        }
                    ],
                    "preferenceLabel": "non-preferred"
                }
            ]
        }
    ],
}
```

Ecco un esempio di immagine per DPO completa:

```
{
    "system": [
        {
            "text": "..."
        }
    ],
    "messages":[
        {
            "role": "user",
            "content": [
                {
                    "text": "..."
                },
                {
                    "text": "..."
                },
                {
                    "image": {
                        "format": "jpeg",
                        "source": {
                            "s3Location": {
                                "uri": "s3://your-bucket/your-path/your-image.jpg",
                                "bucketOwner": "your-aws-account-id"
                            }
                        }
                    }
                } // "content" can have multiple "text" and "image" objects.
                 // max image count is 10
            ]
        },
        {
            "role": "assistant",
            "content": [
                {
                    "text": "..."
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "text": "..."
                },
                {
                    "text": "..."
                },
                {
                    "image": {
                        "format": "jpeg",
                        "source": {
                            "s3Location": {
                                "uri": "s3://your-bucket/your-path/your-image.jpg",
                                "bucketOwner": "your-aws-account-id"
                            }
                        }
                    }
                } // "content" can have multiple "text" and "image" objects.
                 // max image count is 10
            ]
        },
        {
            "role": "assistant",
            "candidates": [
                {
                    "content": [
                        {
                            "text": "..."
                        }
                    ],
                    "preferenceLabel": "preferred"
                },
                {
                    "content": [
                        {
                            "text": "..."
                        }
                    ],
                    "preferenceLabel": "non-preferred"
                }
            ]
        }
    ],
}
```

Si applicano altri vincoli sui set di dati di input. Per ulteriori informazioni, consulta [Dataset constraints](https://docs.aws.amazon.com/nova/latest/userguide/fine-tune-prepare-data-understanding.html#custom-fine-tune-constraints). È consigliabile includere un minimo di 1.000 coppie di preferenze per un addestramento efficace. Dati sulle preferenze di alta qualità generano risultati più efficienti.

È consigliabile utilizzare DPO nei seguenti scenari:
+ Ottimizzazione per output soggettivi che richiedono l’allineamento a specifiche preferenze umane.
+ Regolazione del tono, dello stile o delle caratteristiche del contenuto del modello in base ai modelli di risposta desiderati.
+ Miglioramenti mirati apportati a un modello esistente sulla base del feedback degli utenti e dell’analisi degli errori.
+ Mantenimento di un livello costante di qualità dell’output in diversi casi d’uso.
+ Implementazione di guardrail di sicurezza attraverso modelli di risposta preferiti.
+ Addestramento con apprendimento per rinforzo senza ricompense.
+ Utilizzo di soli dati di preferenza anziché dati classificati o etichettati.
+ Miglioramento del modello in attività di allineamento articolate, come disponibilità, innocuità e onestà.

## DPO a dimensionalità completa
<a name="customize-fine-tune-hyperpod-dpo-fr"></a>

I parametri di Amazon Nova disponibili per DPO a dimensionalità completa sono i seguenti:
+ **Configurazione run**
  + `name`: un nome descrittivo per il job di addestramento. Questo aiuta a identificare il tuo lavoro in. Console di gestione AWS
  + `model_type`: la variante del modello Nova da utilizzare. Le opzioni disponibili sono `amazon.nova-micro-v1:0:128k`, `amazon.nova-lite-v1:0:300k` oppure `amazon.nova-pro-v1:0:300k`.
  + `model_name_or_path`: il percorso del modello di base. Seleziona il modello da utilizzare tra `nova-micro/prod`, `nova-lite/prod`, `nova-pro/prod` o il percorso S3 per il checkpoint post-addestramento (`s3://<escrow bucket>/<job id>/outputs/checkpoints`).
  + `replicas`: il numero di istanze di calcolo da utilizzare per l’addestramento distribuito. I valori disponibili variano in base al modello scelto. Amazon Nova Micro supporta 2, 4 oppure 8 repliche. Amazon Nova Lite supporta 4, 8, 16 oppure 32 repliche. Amazon Nova Pro supporta 6, 12 oppure 24 repliche.
  + `data_s3_path`: la posizione S3 del set di dati di addestramento, ovvero un file JSONL. Questo file deve trovarsi nello stesso account e nella stessa Regione del cluster. Tutte le posizioni S3 fornite devono trovarsi nello stesso account e nella stessa Regione.
  + `validation_data_s3_path`: la posizione S3 del set di dati di convalida, ovvero un file JSONL. Questo file deve trovarsi nello stesso Account AWS e nella stessa Regione del cluster. Tutte le posizioni S3 fornite devono trovarsi nello stesso account e nella stessa Regione.
+ **Configurazione di addestramento**
  + `max_length`: la lunghezza massima della sequenza in token. Determina la dimensione della finestra di contesto per l’addestramento. Il valore massimo supportato è di 32.768 token per DPO.

    Sequenze più lunghe migliorano l’efficienza di addestramento a scapito di maggiori requisiti di memoria. È consigliabile che il parametro `max_length` corrisponda alla distribuzione dei dati.
+ **Impostazioni di addestramento**
  + `max_epochs`: il numero di passaggi completi nel set di dati di addestramento.

    In generale, set di dati di dimensioni maggiori richiedono meno epoch per la convergenza, mentre set di dati di dimensioni minori prevedono più epoch. È consigliabile regolare il numero di epoch in base alla dimensione dei dati.
+ **Impostazioni del modello**
  + `hidden_dropout`: la probabilità di eliminare output di stato nascosti. Aumenta questo valore di circa 0,0-0,2 per ridurre l’overfitting su set di dati più piccoli. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `attention_dropout`: la probabilità di eliminare pesi di attenzione. Questo parametro può agevolare la generalizzazione. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `ffn_dropout`: la probabilità di eliminare output di rete feed-forward. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
+ **Configurazione optimizer**
  + `lr`: il tasso di apprendimento, che controlla la dimensione del passaggio durante l’ottimizzazione. Sono consigliabili valori compresi tra 1e-6 e 1e-4 per ottenere buone prestazioni. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `name`: l’algoritmo dell’ottimizzatore. Attualmente è supportato solo `distributed_fused_adam`.
  + `weight_decay`: la potenza di regolarizzazione L2. Valori maggiori (compresi tra 0,01 e 0,1) aumentano la regolarizzazione.
  + `warmup_steps`: il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Migliora la stabilità dell’addestramento. I valori validi sono compresi tra 1 e 20, entrambi inclusi.
  + `min_lr`: il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, entrambi inclusi, ma devono essere inferiori al tasso di apprendimento.
+ **Configurazione DPO**
  + `beta`: determina quanto il modello deve adattarsi ai dati di addestramento o al modello originale. I valori validi sono compresi tra 0,001 e 0,5, entrambi inclusi.

    Specifica valori maggiori (ad esempio 0,5) per preservare meglio il comportamento del modello di riferimento e apprendere più lentamente nuove preferenze. Specifica valori minori (ad esempio 0,01-0,05) per apprendere più rapidamente nuove preferenze, con il rischio di divergere dal comportamento del modello di riferimento.

**Ricetta per DPO a dimensionalità completa**  
Di seguito è riportata una ricetta per DPO a dimensionalità completa

```
## Run config
run:
  name: "my-dpo-micro-job"             # A descriptive name for your training job
  model_type: "amazon.nova-micro-v1:0:128k"  # Model variant specification, do not change
  model_name_or_path: "nova-micro/prod"      # Base model path, do not change
  replicas: 2                     # Number of compute instances for training, allowed values are 2, 4, 8
  data_s3_path: s3:Replace with your S3 bucket name/input.jsonl
  validation_data_s3_path: [OPTIONAL] s3:your S3 bucket name/input.jsonl
  output_s3_path: [S3_PATH_TO_STORE_MANIFEST]

## Training specific configs
training_config:
  max_length: 32768               # Maximum context window size (tokens).
  global_batch_size: 64           # Global batch size, allowed values are 16, 32, 64.

  trainer:
    max_epochs: 2                # Number of training epochs

  model:
    hidden_dropout: 0.0          # Dropout for hidden states, must be between 0.0 and 1.0
    attention_dropout: 0.0       # Dropout for attention weights, must be between 0.0 and 1.0
    ffn_dropout: 0.0             # Dropout for feed-forward networks, must be between 0.0 and 1.0

    optim:
      lr: 1e-5                 # Learning rate
      name: distributed_fused_adam  # Optimizer algorithm, do not change
      adam_w_mode: true        # Enable AdamW mode
      eps: 1e-06               # Epsilon for numerical stability
      weight_decay: 0.0        # L2 regularization strength, must be between 0.0 and 1.0
      betas:                   # Adam optimizer betas, must be between 0.0 and 1.0
        - 0.9
        - 0.999
      sched:
        warmup_steps: 10     # Learning rate warmup steps
        constant_steps: 0    # Steps at constant learning rate
        min_lr: 1e-6         # Minimum learning rate, must be lower than lr

    dpo_cfg:
        beta: 0.1               # Strength of preference enforcement. Limits: [0.001, 0.5]

    peft:
        peft_scheme: null        # Disable LoRA, trigger full rank fine tuning
```

## DPO LoRA
<a name="customize-fine-tune-hyperpod-dpo-lora"></a>

I parametri di Amazon Nova disponibili per DPO a bassa dimensionalità sono i seguenti:
+ **Configurazione run**
  + `name`: un nome descrittivo per il job di addestramento. Questo aiuta a identificare il tuo lavoro in Console di gestione AWS.
  + `model_type`: la variante del modello Nova da utilizzare. Le opzioni disponibili sono `amazon.nova-micro-v1:0:128k`, `amazon.nova-lite-v1:0:300k` oppure `amazon.nova-pro-v1:0:300k`.
  + `model_name_or_path`: il percorso del modello di base. Seleziona il modello da utilizzare tra `nova-micro/prod`, `nova-lite/prod`, `nova-pro/prod` o il percorso S3 per il checkpoint post-addestramento (`s3://<escrow bucket>/<job id>/outputs/checkpoints`).
  + `replicas`: il numero di istanze di calcolo da utilizzare per l’addestramento distribuito. I valori disponibili variano in base al modello scelto. Amazon Nova Micro supporta 2, 4 oppure 8 repliche. Amazon Nova Lite supporta 4, 8, 16 oppure 32 repliche. Amazon Nova Pro supporta 6, 12 oppure 24 repliche.
+ **Configurazione di addestramento**
  + `max_length`: la lunghezza massima della sequenza in token. Determina la dimensione della finestra di contesto per l’addestramento. Il valore massimo supportato è di 32.768 token per DPO.

    Sequenze più lunghe migliorano l’efficienza di addestramento a scapito di maggiori requisiti di memoria. È consigliabile che il parametro `max_length` corrisponda alla distribuzione dei dati.
+ **Impostazioni di addestramento**
  + `max_epochs`: il numero di passaggi completi nel set di dati di addestramento.

    In generale, set di dati di dimensioni maggiori richiedono meno epoch per la convergenza, mentre set di dati di dimensioni minori prevedono più epoch. È consigliabile regolare il numero di epoch in base alla dimensione dei dati.
+ **Impostazioni del modello**
  + `hidden_dropout`: la probabilità di eliminare output di stato nascosti. Aumenta questo valore di circa 0,0-0,2 per ridurre l’overfitting su set di dati più piccoli. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `attention_dropout`: la probabilità di eliminare pesi di attenzione. Questo parametro può agevolare la generalizzazione. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `ffn_dropout`: la probabilità di eliminare output di rete feed-forward. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
+ **Configurazione optimizer**
  + `lr`: il tasso di apprendimento, che controlla la dimensione del passaggio durante l’ottimizzazione. Sono consigliabili valori compresi tra 1e-6 e 1e-4 per ottenere buone prestazioni. I valori validi sono compresi tra 0 e 1, entrambi inclusi.
  + `name`: l’algoritmo dell’ottimizzatore. Attualmente è supportato solo `distributed_fused_adam`.
  + `weight_decay`: la potenza di regolarizzazione L2. Valori maggiori (compresi tra 0,01 e 0,1) aumentano la regolarizzazione.
  + `warmup_steps`: il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Migliora la stabilità dell’addestramento. I valori validi sono compresi tra 1 e 20, entrambi inclusi.
  + `min_lr`: il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, entrambi inclusi, ma devono essere inferiori al tasso di apprendimento.
+ **Configurazione DPO**
  + `beta`: determina quanto il modello deve adattarsi ai dati di addestramento o al modello originale. I valori validi sono compresi tra 0,001 e 0,5, entrambi inclusi.

    Specifica valori maggiori (ad esempio 0,5) per preservare meglio il comportamento del modello di riferimento e apprendere più lentamente nuove preferenze. Specifica valori minori (ad esempio 0,01-0,05) per apprendere più rapidamente nuove preferenze, con il rischio di divergere dal comportamento del modello di riferimento.
+ **Parametri di configurazione LoRA**
  + `peft_scheme`: impostato su `lora` per abilitare Low-Rank Adaptation, che genera un modello di output più efficiente e di dimensioni ridotte. Sono disponibili anche queste proprietà specifiche di LoRA:
    + `alpha`: il fattore di dimensionamento per i pesi LoRA. In genere è impostato sullo stesso valore di `adapter_dim`.
    + `adapter_dropout`: il parametro di regolarizzazione per i parametri LoRA.

**Ricetta per DPO LoRA**  
Di seguito è riportata una ricetta per DPO LoRA.

```
## Run config
run:
    name: "my-lora-run"             # A descriptive name for your training job
    model_type: "amazon.nova-lite-v1:0:300k"  # Model variant specification, do not change
    model_name_or_path: "nova-lite/prod"      # Base model path, do not change
    replicas: 4                     # Number of compute instances for training. All supported values: {4, 8, 16}
    data_s3_path: s3:Replace with your S3 bucket name/input.jsonl
    validation_data_s3_path: [OPTIONAL] s3:your S3 bucket name/input.jsonl
    output_s3_path: [S3_PATH_TO_STORE_MANIFEST]

## Training specific configs
training_config:
    max_length: 16384               # Maximum context window size (tokens). Should be between [1024, 32768] and multiple of 1024.
                                    # Note: Image dataset for DPO has a limit on 20k samples and 16384 max_length
    global_batch_size: 64           # Total samples per step. Limits: {16, 32, 64, 128, 256}

    trainer:
        max_epochs: 2               # Number of training epochs

    model:
        hidden_dropout: 0.0          # Dropout for hidden states. Limits: [0.0, 1.0]
        attention_dropout: 0.0       # Dropout for attention weights. Limits: [0.0, 1.0]
        ffn_dropout: 0.0             # Dropout for feed-forward networks. Limits: [0.0, 1.0]

        optim:
            lr: 1e-5                 # Learning rate
            name: distributed_fused_adam  # Optimizer algorithm, do not change
            adam_w_mode: true        # Enable AdamW mode
            eps: 1e-08               # Epsilon for numerical stability
            weight_decay: 0.01       # L2 regularization strength
            betas:                   # Adam optimizer betas. Limits: [0.0, 1.0]
                - 0.9
                - 0.999
            sched:
                warmup_steps: 10     # Learning rate warmup steps
                constant_steps: 0    # Steps at constant learning rate
                min_lr: 1e-6         # Minimum learning rate

        dpo_cfg:
            beta: 0.01               # Strength of preference enforcement. Limits: [0.001, 0.5]

        peft:
            peft_scheme: "lora"      # Enable LoRA for parameter-efficient fine-tuning
            lora_tuning:
                loraplus_lr_ratio: 20.0  # LoRA+ learning rate scaling factor. Limits: [0.0, 100.0]
                alpha: 64            # Scaling factor for LoRA weights. [32, 64, 96, 128, 160, 192]
                adapter_dropout: 0.01  # Regularization for LoRA parameters. Limits: [0.0, 1.0]
```

**Limitazioni**  
DPO presenta le seguenti limitazioni:
+ I checkpoint intermedi non vengono salvati per la valutazione e non è possibile riprendere da un checkpoint intermedio. Viene salvato solo l’ultimo checkpoint.
+ Per regolare gli iperparametri, segui le istruzioni riportate in [Selecting hyperparameters](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-hyperparameters.html).

# Ottimizzazione prossimale delle policy (PPO)
<a name="nova-ppo"></a>

L’ottimizzazione prossimale delle policy (PPO, Proximal Policy Optimization) è il processo di utilizzo di diversi modelli di machine learning per addestrare e assegnare un punteggio a un modello. I seguenti modelli fanno parte del processo PPO:
+ **Modello di policy o addestramento attori**: un modello di fine-tuning supervisionato (SFT) che viene sottoposto a fine-tuning e aggiornato a ogni epoch. Gli aggiornamenti vengono effettuati campionando prompt, generando completamenti e aggiornando i pesi utilizzando un obiettivo sostitutivo limitato. Ciò limita la modifica della redditività dei log per token in modo che ogni fase della policy sia *prossimale* a quella precedente, preservando la stabilità dell’addestramento.
+ **Modello di generazione attori**: un modello che genera completamenti o risposte a prompt da giudicare in base al modello di ricompensa e al modello di critica. I pesi di questo modello vengono aggiornati in base al modello di addestramento attori o al modello di policy di ogni epoch.
+ **Modello di ricompensa**: un modello con pesi ibernati che viene utilizzato per calcolare il punteggio modello di generazione attori.
+ **Modello di critica**: un modello con pesi non ibernati che viene utilizzato per calcolare il punteggio modello di generazione attori. Questo punteggio viene spesso visto come una stima della ricompensa totale che l’attore riceve quando genera i token rimanenti.
+ **Modello di ancoraggio**: un modello SFT con pesi ibernati utilizzato per calcolare la divergenza KL tra il modello di addestramento attori e il modello di base. Il modello di ancoraggio garantisce che gli aggiornamenti al modello di attore non siano troppo drastici rispetto al modello di base. Cambiamenti drastici possono portare a instabilità o a una riduzione delle prestazioni.

I dati di addestramento devono essere in formato JSONL, in cui ogni riga contiene un singolo oggetto JSON che rappresenta un esempio di addestramento. Ecco un esempio:

```
{
    "turns": ["string", "string", ...], // Required
    "turns_to_mask": [integer, integer, ...], // Required
    "reward_category": "string", // Required
    "meta_data": {} // Optional
}
```
+ `turns` è un array di stringhe di conversazione che rappresentano la sequenza di dialogo. Questa riga contiene prompt di sistema, messaggi utente e risposte dei bot. I messaggi utente in genere terminano con “Bot:”, a indicare dove inizia l’output del modello. Ad esempio, `[["System prompt"], ["User: Question Bot:"], ["Bot response"]]`.
+ `turns_to_mask` è un array di indici basati su 0 che identificano quali interazioni non devono ricevere aggiornamenti del gradiente. Le interazioni mascherate sono in genere prompt di sistema e interazioni utente. Ad esempio, `[0, 1, 3]` maschera il prompt di sistema e i messaggi utente (il primo e il terzo messaggio).
+ `reward_category` è una stringa che identifica gli aspetti delle prestazioni del modello da valutare. Viene utilizzato per selezionare la categoria del modello di ricompensa appropriata durante l’addestramento. Sono disponibili le seguenti categorie di ricompense: `default`, `math`, `coding`, `if`, `rag` e `rai`.
+ `meta_data` è un oggetto opzionale che contiene informazioni contestuali o dati reali di riferimento. Ciò può includere identificatori, informazioni sulla fonte o contesto della conversazione. La struttura è flessibile in base alle esigenze del set di dati.

Di seguito è riportato un record di esempio:

```
{
    "turns": ["You are a helpful AI assistant.",
        "User: What is ML? Bot:",
        "Machine learning is...", "User: Examples? Bot:",
        "Email spam filtering is..."
    ],
    "turns_to_mask": [0, 1, 3],
    "reward_category": "default",
    "meta_data": {
        "messages": [{
                "role": "system",
                "content": "You are a helpful AI assistant."
            },
            {
                "role": "user",
                "content": "What is ML?"
            },
            {
                "role": "assistant",
                "content": "Machine learning is..."
            },
            {
                "role": "user",
                "content": "Examples?"
            },
            {
                "role": "assistant",
                "content": "Email spam filtering is..."
            }
        ]
    }
}
```

Il framework di modellazione delle ricompense implementa l’ottimizzazione multidimensionale su obiettivi di categorie distinti per favorire una convergenza efficace dei modelli. La categoria di ricompensa deve essere selezionata in base all’attività per cui il modello deve essere ottimizzato. 

È consigliabile seguire queste linee guida per scegliere il framework più adatto alle attività:
+ `default`: un ottimizzatore generico per attività di conversazione standard e interazioni di base. Utilizzato per conversazioni e discussioni generiche, attività di scrittura di base, risposte a domande semplici e query non specializzate. 

  Ecco un esempio:

  ```
  {
      "turns": ["Write a summary of climate change"],
      "turns_to_mask": [0],
      "reward_category": "default"
  }
  ```
+ `math`: un ottimizzatore specializzato per calcoli matematici e attività di ragionamento numerico. Utilizzato per la risoluzione di problemi matematici, calcoli aritmetici, equazioni algebriche, problemi geometrici e analisi statistiche.

  Ecco un esempio:

  ```
  {
      "turns": ["Calculate the derivative of x²"],
      "turns_to_mask": [0],
      "reward_category": "math"
  }
  ```
+ `coding`: una categoria dedicata per le query relative alla programmazione e allo sviluppo di software. Utilizzato per attività di implementazione di codice, assistenza al debug, progettazione di algoritmi, documentazione tecnica e domande sull’architettura di sistema.

  Ecco un esempio:

  ```
  {
      "turns": ["Write a function to check if a string is palindrome"],
      "turns_to_mask": [0],
      "reward_category": "coding"
  }
  ```
+ `if`: Una categoria per attività che richiedono un'esecuzione e una step-by-step guida procedurali precise. Utilizzata per procedure in più fasi, istruzioni sequenziali, scomposizione di attività complesse e documentazione dei processi.

  Ecco un esempio:

  ```
  {
      "turns": ["Provide steps to deploy a web application"],
      "turns_to_mask": [0],
      "reward_category": "if"
  }
  ```
+ `rag`: una categoria di ricompensa per le attività che richiedono la risposta a query basate specificamente sulle informazioni contestuali recuperate. Utilizzata quando le risposte devono essere derivate direttamente dai materiali di riferimento forniti, sintetizzando contenuti fattuali senza andare oltre l’ambito delle informazioni recuperate, garantendo che le risposte siano fondate sul contesto fornito anziché su conoscenze generali.

  Ecco un esempio:

  ```
  {
              "turns": ["The Synthesis Report integrates findings from all six IPCC assessment cycles, revealing that global surface temperature has increased 1.1°C from 1850-1900 to 2011-2020, with human activities unequivocally identified as the cause of this warming. Alarmingly, current policies put the world on track for 3.2°C warming by 2100. The document identifies 5 key climate system "tipping points" approaching and emphasizes that greenhouse gas emissions must decline 43% by 2030 (compared to 2019 levels) to limit warming to 1.5°C. Climate-related risks will escalate with every increment of warming, with loss and damage disproportionately affecting vulnerable populations. Despite some progress, climate adaptation remains uneven with significant gaps, and financial flows continue to fall below levels needed for mitigation goals.",
              "What were the key findings of the latest IPCC climate report?"],
              "turns_to_mask": [0, 0],
              "reward_category": "rag"
              }
  ```
+ `rai`: una categoria di ricompensa per le attività che richiedono l’applicazione di principi di IA responsabile come equità, trasparenza ed etica. Utilizzata per valutare potenziali bias nei sistemi di intelligenza artificiale, garantire considerazioni sulla privacy, affrontare dilemmi etici e promuovere principi di progettazione inclusivi.

  Ecco un esempio:

  ```
  {
              "turns": ["Identify potential bias concerns when developing a loan approval algorithm and suggest mitigation strategies"],
              "turns_to_mask": [0],
              "reward_category": "rai"
              }
  ```

**Interazioni di mascheramento**  
Nei set di dati di addestramento, il parametro `turns_to_mask` è fondamentale per controllare quali interazioni di conversazione ricevono aggiornamenti in base al gradiente durante l’addestramento. Questo array di indici determina quali parti del dialogo il modello dovrebbe imparare a generare e quali parti devono essere trattate solo come contesto. Un mascheramento adeguato assicura che il modello apprenda i modelli di risposta appropriati, evitando al contempo l’addestramento su prompt di sistema o input dell’utente che potrebbero compromettere le prestazioni.

Per il mascheramento è consigliabile seguire queste indicazioni:
+ **Mascherare sempre l’indice 0** - I prompt di sistema non dovrebbero mai ricevere aggiornamenti del gradiente.
+ **Mascherare sempre le interazioni degli utenti** - Impedire al modello di imparare a generare input da parte dell’utente.
+ **Coerenza dei modelli** - Utilizzare schemi di mascheramento identici per strutture di conversazione simili, ad esempio (0, 1, 3, 5) per dialoghi con più interazioni.
+ **Addestramento selettivo** - Mascherare le risposte iniziali dei bot per concentrare l’addestramento sul miglioramento delle risposte finali.
+ **Chain-of-thought conservazione**: durante l'addestramento sulle sequenze di ragionamento si alternano solo il sistema e l'utente.
+ **Filtro di qualità** - Mascherare le risposte degli assistenti di bassa qualità per evitare una riduzione delle prestazioni.
+ **Ottimizzazione del contesto** - Verificare che le interazioni mascherate non rimuovano il contesto essenziale necessario per le risposte successive.

La chiave per un mascheramento efficace è il monitoraggio delle metriche di addestramento e delle prestazioni di convalida per determinare se la strategia di mascheramento preserva il contesto necessario, concentrando al contempo gli aggiornamenti del gradiente sugli output del modello desiderati.

**Abilitare la perdita di divergenza KL**  
Per abilitare la perdita di divergenza KL, il server di ancoraggio deve essere abilitato a calcolare la divergenza della policy corrente rispetto alla distribuzione originale. È necessario specificare il tipo di perdita KL e i coefficienti devono essere di un valore diverso da zero. Valori di coefficienti più elevati evitano che il modello si discosti troppo dalla policy originale, con minori modifiche alle prestazioni generali. Valori di coefficienti più ridotti consentono deviazioni maggiori rispetto alla policy precedente, con conseguente miglioramento delle prestazioni delle metriche di riferimento, ma con un impatto sulle prestazioni generali.

```
ppo_anchor:
  max_length: 8192
  trainer:
    num_nodes: ${recipes.run.cm_replicas}
  model:
    global_batch_size: 32

ppo_actor_train:
  model:
    ######## Use KL in actor loss ########
    kl_loss_type: low_var_kl
    kl_loss_coeff: 0.1

    ######## Use KL in reward model ######
    kl_reward_penalty_coeff: 0.1
```

**Tasso di apprendimento**  
Il tasso di apprendimento per i modelli di critica e di policy può essere modificato, con 3e-6 come scelta bilanciata predefinita. Tassi di apprendimento più elevati determinano in genere instabilità nell’addestramento, che possono essere individuate tramite picchi nella divergenza KL e comportamenti irregolari delle policy. Tassi di apprendimento ridotti possono causare problemi di convergenza e rallentamento dell’apprendimento, evidenziati da ricompense stagnanti e aggiornamenti minimi delle policy. Il monitoraggio regolare della divergenza KL, del punteggio di ricompensa e della perdita di valore aiuta a capire se modificare il tasso di apprendimento durante l’addestramento.

```
ppo_critic:
  model:
    optim:
      lr: 3e-6

ppo_actor_train:
  model:
    optim:
      lr: 3e-06
```

**Dimensioni batch globali**  
Le dimensioni batch globali influiscono in modo significativo sulle prestazioni del processo PPO in Amazon Nova, con batch di dimensioni maggiori che generalmente migliorano la stabilità dell’addestramento e la stima del gradiente, consentendo al contempo un’elaborazione parallela più efficiente. Tuttavia, batch di dimensioni eccessive possono determinare rendimenti decrescenti ed essere limitati dalla memoria disponibile, il che richiede un attento equilibrio tra il tasso di apprendimento e altri iperparametri.

```
ppo_actor_train:
  model:
    global_batch_size: 160
```

I parametri di Amazon Nova disponibili per l’ottimizzazione con PPO includono:
+ **Configurazione run**
  + `actor_train_replicas`: il numero di istanze di calcolo utilizzate per il modello di addestramento attori. I valori disponibili variano in base al modello scelto. Amazon Nova Micro supporta 1 oppure 2 repliche. Amazon Nova Lite supporta 1, 2 oppure 4 repliche. Amazon Nova Pro supporta 3, 6 oppure 12 repliche.
  + `rm_replicas`: il numero di istanze di calcolo utilizzate per il modello di ricompensa. È consigliabile utilizzare una sola replica per qualsiasi dimensione del modello.
  + `cm_replicas`: il numero di istanze di calcolo utilizzate per il modello di critica. È consigliabile utilizzare una sola replica per qualsiasi dimensione del modello.
  + `actor_generation_replicas`: il numero di istanze di calcolo utilizzate per la generazione attori. I valori disponibili variano in base al modello scelto. Amazon Nova Micro supporta 1 replica. Amazon Nova Lite supporta 1 oppure 2 repliche. Amazon Nova Pro supporta 1 oppure 2 repliche.
  + `am_replicas`: il numero di istanze di calcolo utilizzate per il modello di ancoraggio. È consigliabile utilizzare una sola replica per qualsiasi dimensione del modello.
+ **Configurazione di addestramento attori (configurazione di policy)**
  + `max_steps`: il numero massimo di fasi per eseguire il fine-tuning o addestrare il modello di addestramento attori. Qui, una fase è definita come implementazione, seguita dall’addestramento del modello di addestramento attori con un numero `global_batch_size` di campioni. Un’epoch è definita come `global_batch_size * trajectory_buffer_scale`.

    Il valore scelto qui varia in base al caso d’uso e alla complessità del set di dati. È consigliabile iniziare con 65 epoch o 520 passaggi, ovvero il numero di epoch moltiplicato per il valore di `trajectory_buffer_scale`. Tuttavia, alcune attività richiedono un periodo di addestramento di PPO più esteso per ottenere le stesse prestazioni.

    Per PPO, le metriche di addestramento, come la saturazione del punteggio del modello di ricompensa e la durata media delle azioni rilevate dalla console [ml-flow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server.html), possono aiutare a identificare i punti ottimali per la valutazione.
  + `actor_model_max_length`: la lunghezza massima dei dati di input che vengono inviati al componente di generazione attori per generare completamenti.
  + `reward_model_max_length`: la lunghezza massima dei dati di input inviati al server di ricompensa per ottenere punteggi di completamento.
  + `trajectory_buffer_scale`: questo buffer rappresenta il numero di implementazioni generate utilizzando il vecchio modello di addestramento attori (policy) prima di aggiornare i pesi e generare le nuove implementazioni. I valori supportati sono 1, 2, 4, 8 e 16.

    Se `trajectory_buffer_scale` è 1, l’addestramento segue la policy. Significa che le implementazioni vengono generate con i pesi dei modelli più aggiornati, ma il throughput ne risente. Se è 16, il modello si discosta leggermente dalla policy, ma il throughput è maggiore. È consigliabile iniziare con 8 per ogni modello.
  + `kl_reward_penalty_coeff`: questo è il termine di divergenza KL che garantisce che gli aggiornamenti non siano troppo drastici e che la policy non si discosti troppo dalla base o dal modello SFT.
  + `kl_loss_coeff`: questo valore controlla in che misura la penalità di divergenza KL influisce sull’obiettivo generale di addestramento in PPO.
  + `kl_loss_type`: questo valore specifica come calcolare la divergenza tra le distribuzioni di policy attuali e quelle di riferimento. I valori di `kl_loss_types` disponibili sono `kl` (divergenza KL standard), `mse` (errore quadratico medio), `abs` (differenza assoluta tra probabilità logaritmiche) e `low_var_kl` (approssimazione KL a bassa varianza).
  + `model.clip_ratio`: il coefficiente di limitazione dell’attore (ε) in PPO è un iperparametro che limita le modifiche che la policy può subire durante ogni aggiornamento.
  + `model.optim.lr`: il tasso di apprendimento utilizzato per l’addestramento basato sulla perdita del modello surrogato nel modello di attore. 
  + `model.lam`: parte del processo di stima dei vantaggi. Un valore λ più elevato conferisce più peso ai premi a lungo termine ma con varianza maggiore, mentre un valore λ ridotto si concentra maggiormente sui premi immediati con varianza inferiore, ma maggiori bias.
  + `model.ent_coeff`: la perdita di entropia in PPO favorisce l’esplorazione penalizzando la policy quando diventa troppo deterministica (ovvero, quando sceglie sempre le stesse azioni con elevata fiducia).
+ **Configurazione del modello di ricompensa**
  + `global_batch_size`: la dimensione del batch per calcolare il punteggio dei completamenti utilizzando il modello di ricompensa. Se `ppo_actor_train.model.global_batch_size` è maggiore di `ppo_reward.model.global_batch_size`, vengono elaborati in più batch. `ppo_actor_train.model.global_batch_size % ppo_reward.model.global_batch_size` deve essere uguale a 0.
  + `max_length`: la lunghezza massima del contesto del modello di ricompensa. Deve essere uguale a `ppo_actor_train.model.max_length`.
+ **Configurazione del modello di critica**
  + `global_batch_size`: la dimensione di batch del valore del modello di critica. Il modello di critica fornisce stime di valore per ogni token nelle risposte fornite dal modello di attore. La dimensione di batch viene utilizzata sia per l’inferenza che per l’addestramento.

    `ppo_actor_train.model.global_batch_size % ppo_critic.model.global_batch_size` deve essere uguale a 0 e `ppo_actor_train.model.global_batch_size * ppo_actor_train.model.trajectory_buffer_size % ppo_critic.model.global_batch_size == 0`.
  + `max_length`: la lunghezza massima del contesto del modello di critica. Deve essere uguale a `ppo_actor_train.model.max_length`.
  + `model.optim.lr`: il tasso di apprendimento utilizzato per l’addestramento basato sulla perdita del modello surrogato nel modello di attore.
+ **Configurazione del modello di ancoraggio**
  + `global_batch_size`: la dimensione di batch per la generazione del logp del modello SFT o di ancoraggio ibernato. `ppo_actor_train.model.global_batch_size % ppo_anchor.model.global_batch_size` deve essere uguale a 0.
  + `max_length`: la lunghezza massima del contesto del modello di ricompensa. Deve essere uguale a `ppo_actor_train.model.max_length`.
+ **Configurazione del modello di generazione attori**
  + `actor_model_max_length`: la lunghezza massima del contesto del componente di generazione del modello di attore. Deve essere uguale a `ppo_actor_train.model.max_length`.

**Ricetta per PPO**  
Di seguito è riportata una ricetta per PPO.

```
## Run config
run:
  name: ndry-ppo-pro
  model_type: amazon.nova-pro-v1:0:300k
  model_name_or_path: nova-pro/prod
  data_s3_path: s3://testing/train.jsonl # Your training data S3 path

  actor_train_replicas: 6 # Actor train model replicas
  rm_replicas: 1 # Reward model replicas
  cm_replicas: 1 # Critic model replicas
  actor_generation_replicas: 2 # Actor generation model replicas
  am_replicas: 1 # Anchor model replicas

## Training config for each PPO component
ppo_reward:
  max_length: 8192 # model architecture max length
  trainer:
    num_nodes: ${recipes.run.rm_replicas}
  model:
    global_batch_size: 16

ppo_critic:
  max_length: 8192
  trainer:
    num_nodes: ${recipes.run.cm_replicas}
  model:
    global_batch_size: 16
    optim:
      lr: 3e-6
      name: distributed_fused_adam
      adam_w_mode: true
      eps: 1e-06
      weight_decay: 0.0
      betas:
        - 0.9
        - 0.999

ppo_anchor:
  max_length: 8192
  trainer:
    num_nodes: ${recipes.run.am_replicas}
  model:
    global_batch_size: 16

ppo_actor_generation:
  actor_model_max_length: 8192
  trainer:
    num_nodes: ${recipes.run.actor_generation_replicas}

ppo_actor_train:
  max_length: 8192
  max_steps: 520 # Stopping criteria Desired epoch num * trajectory_buffer_scale
  actor_model_max_length: 8192 # truncate input data to max length
  reward_model_max_length: 8192 # truncate input data to max length
  trajectory_buffer_scale: 8
  trainer:
    num_nodes: ${recipes.run.actor_train_replicas}
  model:
    global_batch_size: 160
    ent_coeff: 0
    clip_ratio: 0.2
    lam: 1
    kl_loss_coeff: 0.0
    kl_loss_type: low_var_kl
    kl_reward_penalty_coeff: 0.0
    hidden_dropout: 0.0 # Dropout probability for hidden state transformer.
    attention_dropout: 0.0 # Dropout probability in the attention layer.
    ffn_dropout: 0.0 # Dropout probability in the feed-forward layer.
    optim:
      lr: 3e-06
      name: distributed_fused_adam # only this one is available for p0.
      adam_w_mode: true
      eps: 1e-08
      weight_decay: 0.0
      betas:
        - 0.9
        - 0.999
```

**Limitazioni**  
PPO presenta le seguenti limitazioni:
+ I checkpoint intermedi non vengono salvati per la valutazione e non è possibile riprendere da un checkpoint intermedio. Viene salvato solo l’ultimo checkpoint.
+ I set di dati multimodali non sono supportati.
+ I job di addestramento non vengono arrestati automaticamente. È necessario interrompere il lavoro utilizzando la SageMaker HyperPod CLI.
+ Le metriche di formazione critiche non sono supportate su. TensorBoard
+ Per regolare gli iperparametri, segui le istruzioni riportate in [Selecting hyperparameters](https://docs.aws.amazon.com/nova/latest/userguide/customize-fine-tune-hyperparameters.html).

# Valutazione di un modello addestrato
<a name="nova-hp-evaluate"></a>

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 TensorBoard S3 o. 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, puoi valutare il modello dopo averlo distribuito su Amazon Bedrock richiamando il runtime di Amazon Bedrock. APIs

**Importante**  
Il contenitore di valutazione supporta solo i checkpoint prodotti dalla stessa piattaforma di formazione. I checkpoint creati con SageMaker HyperPod possono essere valutati solo utilizzando il flusso di lavoro di SageMaker HyperPod valutazione e i checkpoint creati con i lavori di SageMaker formazione possono essere valutati solo utilizzando il flusso di lavoro di valutazione dei SageMaker lavori di formazione. Il tentativo di valutare un checkpoint da una piattaforma diversa avrà esito negativo.

**Topics**
+ [Attività di benchmarking disponibili](customize-fine-tune-evaluate-available-tasks.md)
+ [Informazioni sui parametri delle ricette](customize-fine-tune-evaluate-understand-modify.md)
+ [Esempi di ricette di valutazione](customize-fine-tune-evaluate-recipe-examples.md)
+ [Avvio di un processo di valutazione](customize-fine-tune-evaluate-start-job.md)
+ [Accesso e analisi dei risultati di valutazione](customize-fine-tune-evaluate-access-results.md)

# Attività di benchmarking disponibili
<a name="customize-fine-tune-evaluate-available-tasks"></a>

È disponibile un pacchetto di codice di esempio che dimostra come calcolare le metriche di benchmark utilizzando la funzionalità di valutazione del modello SageMaker AI per Amazon Nova. [Per accedere ai pacchetti di codice, consulta sample-N. ova-lighteval-custom-task](https://github.com/aws-samples/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à | Description | Metriche | Strategia | Sottoattività disponibile | 
| --- |--- |--- |--- |--- |--- |
| mmlu | Testo | Massive Multitask Language Understanding (MMLU) - Verifica la conoscenza di 57 materie. | accuratezza | zs\$1cot | Sì | 
| mmlu\$1pro | Testo | MMLU - Sottoinsieme professionale - Incentrato su domini professionali come legge, medicina, contabilità e ingegneria. | accuratezza | zs\$1cot | 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\$1cot | 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\$1cot | No | 
| matematica | Testo | Risoluzione di problemi matematici - Misura il ragionamento matematico su argomenti quali algebra, calcolo e problemi testuali. | exact\$1match | zs\$1cot | Sì | 
| strong\$1reject | 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\$1qa | 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\$1qa | No | 
| llm\$1judge | Testo | LLM-as-a-Judge Confronto delle preferenze: utilizza un modello Nova Judge per determinare la preferenza tra le risposte accoppiate (B rispetto a A) ai prompt, calcolando la probabilità che B sia preferito ad A. | tutto | judge | No | 
| humaneval | Testo | HumanEval - Un set di dati di riferimento progettato per valutare le capacità di generazione di codice di modelli linguistici di grandi dimensioni | pass@1 | zs | No | 
|  mm\$1llm\$1judge  |  Multimodale (immagine)  |  Questo nuovo benchmark si comporta allo stesso modo del precedente benchmark basato su testo. `llm_judge` L'unica differenza è che supporta l'inferenza delle immagini.  |  tutto  |  judge  |  No  | 
|  rubric\$1llm\$1judge  | Testo |  Rubric Judge è un modello di valutazione avanzato LLM-as-a-judge basato su Nova 2.0 Lite. A differenza del [modello di arbitro originale](https://aws.amazon.com/blogs/machine-learning/evaluating-generative-ai-models-with-amazon-nova-llm-as-a-judge-on-amazon-sagemaker-ai/) che fornisce solo verdetti di preferenza, Rubric Judge genera dinamicamente criteri di valutazione personalizzati su misura per ogni richiesta e assegna punteggi granulari su più dimensioni.  |  tutto  |  judge  |  No  | 
|  aime\$12024  | Testo |  AIME 2024 - American Invitational Mathematics Examination: problemi relativi alla verifica del ragionamento matematico avanzato e alla risoluzione dei problemi  |  exact\$1match  |  zs\$1cot  | No | 
|  calendario\$1pianificazione  | Testo |  Natural Plan - Calendar - Pianificazione delle attività, test delle attività, capacità di pianificazione per la pianificazione di riunioni su più giorni e più persone  |  exact\$1match  |  fs  | 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
<a name="customize-fine-tune-evaluate-understand-modify"></a>

**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
  mlflow_tracking_uri: ""
  mlflow_experiment_name : ""
  mlflow_run_name : ""
```
+ `name`: (obbligatorio) un nome descrittivo per il processo di valutazione. Questo aiuta a identificare il tuo lavoro nella AWS console.
+ `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`
  + `amazon.nova-2-lite-v1:0:256k`
+ `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`
  + `nova-lite-2/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.
+ `mlflow_tracking_uri`: (Opzionale) ARN del server di MLflow tracciamento per tracciare MLFlow esecuzioni/esperimenti. Assicurati di avere il permesso di accedere al server di tracciamento dal SageMaker ruolo di esecuzione AI

**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\$1pro
  + bbh
  + gpqa
  + matematica
  + strong\$1reject
  + gen\$1qa
  + ifeval
  + llm\$1judge
  + humaneval
  + mm\$1llm\$1judge
  + rubric\$1llm\$1judge
  + aime\$12024
  + calendario\$1programmazione
  + humaneval
+ `strategy`: (obbligatorio) definisce l’approccio di valutazione:
  + zs\$1cot: Zero-shot Chain-of-Thought - Un approccio per suggerire modelli linguistici di grandi dimensioni che incoraggia il ragionamento senza richiedere esempi espliciti. step-by-step
  + zs: Zero-shot - Un approccio per risolvere un problema senza esempi di addestramento precedenti.
  + gen\$1qa: una strategia specifica per ricette di tipo Bring Your Own Dataset.
  + judge: una strategia specifica per Amazon Nova LLM come Judge e mm\$1llm\$1judge.
+ `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\$1match: (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\$1score, 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.
    + Inoltre`mm_llm_judge`, porta il tuo `llm_judge` benchmark personale per il set di dati, restituisci le seguenti metriche:
      + `a_scores`: numero di vittorie per `response_A` nei passaggi di valutazione avanti e indietro.
      + `a_scores_stderr`: errore standard di `response_A scores` nei giudizi a coppie.
      + `b_scores`: numero di vittorie per `response_B` nei passaggi di valutazione avanti e indietro.
      + `b_scores_stderr`: errore standard di `response_B scores` nei giudizi a coppie.
      + `ties`: numero di giudizi in cui `response_A` e `response_B` sono 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 per `response_B`.
      + `score_stderr`: errore standard del punteggio aggregato nei giudizi a coppie.
      + `winrate`: la probabilità che response\$1B venga preferito rispetto a response\$1a 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
  top_logprobs: 10
  reasoning_effort: null  # options: low/high to enable reasoning or null to disable reasoning
```
+ `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.
+ `top_logprobs`: Il numero di migliori logprobs da restituire nella risposta di inferenza. Questo valore deve essere un numero intero compreso tra 0 e 20. I logprobs contengono i token di output considerati e le probabilità di registro di ogni token di output restituito nel contenuto del messaggio.
+ `reasoning_effort`: controlla il comportamento di ragionamento per modelli in grado di ragionare. Imposta `reasoning_effort` solo quando `model_type` specifica un modello in grado di ragionare (attualmente). `amazon.nova-2-lite-v1:0:256k` Le opzioni disponibili sono `null` (valore predefinito se non impostato; disabilita il ragionamento), o. `low` `high`

Per `humaneval` è consigliabile la configurazione inference seguente:

```
inference:
  top_k: 1
  max_new_tokens: 1600
  temperature: 0.0
```

**MLFlow configurazione**  
Di seguito è riportata una MLFlow configurazione e una spiegazione dei parametri coinvolti. Tutti i parametri sono opzionali:

```
run:
  mlflow_tracking_uri: ""
  mlflow_experiment_name: ""
  mlflow_run_name: ""
```
+ `mlflow_tracking_uri`: Facoltativo) La posizione del server di MLflow tracciamento (necessaria solo su SMHP)
+ `mlflow_experiment_name`: (Facoltativo) Nome dell'esperimento per raggruppare le esecuzioni ML correlate
+ `mlflow_run_name`: (Facoltativo) Nome personalizzato per un corso di formazione specifico all'interno di un esperimento

# Esempi di ricette di valutazione
<a name="customize-fine-tune-evaluate-recipe-examples"></a>

Amazon Nova offre quattro tipi di ricette di valutazione, disponibili nell' GitHub archivio delle SageMaker HyperPod ricette.

## Ricette di benchmark testuali generali
<a name="nova-model-hp-evaluation-config-example-text"></a>

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

## Ricette di benchmark Bring Your Own Dataset
<a name="nova-model-hp-evaluation-config-byo"></a>

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.jsonl` contenente esempi di valutazione.
  + Il set di dati deve essere caricato in una posizione S3 a cui SageMaker Training Job possa accedervi.
  + 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
  + `metadata`: (Facoltativo) Stringa contenente i metadati associati alla voce a scopo di etichettatura.

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 interrogazione di sistema \$1) deve essere inferiore a 3,5 k.

## Ricette di benchmark Nova LLM-as-a-judge
<a name="nova-model-evaluation-config-llm-judge"></a>

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](https://en.wikipedia.org/wiki/Bradley%E2%80%93Terry_model) con confronti a coppie.

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.jsonl` contenente esempi di valutazione. Il nome del file deve essere `llm_judge.jsonl`.
  + [Il set di dati deve essere caricato in una posizione S3 a cui AI RIG può accedere. SageMaker SageMaker HyperPod ](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-hp-cluster.html)
  + 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 interrogazione di sistema \$1) deve essere inferiore a 7k.

## Nova LLM come giudice per le ricette di riferimento multimodali (immagini)
<a name="nova-model-hp-evaluation-mm-llm-judge"></a>

Nova LLM Judge for multi-modal (immagine), abbreviazione di Nova MM\$1LLM Judge, è una funzionalità di valutazione del modello che consente di confrontare la qualità delle risposte di un modello con le risposte di un modello di base utilizzando un set di dati personalizzato. Accetta un set di dati contenente prompt, risposte di base e risposte sfidanti e immagini sotto forma di stringa codificata in Base64, quindi utilizza un modello Nova Judge per fornire una metrica del tasso di vittoria basata sulla probabilità di [Bradley-Terry](https://en.wikipedia.org/wiki/Bradley%E2%80%93Terry_model) attraverso confronti a coppie. Formato della ricetta: `xxx_mm_llm_judge _eval.yaml`.

**Requisiti dei set di dati Nova LLM**

Formato del file: 
+ Singolo file `mm_llm_judge.jsonl` contenente esempi di valutazione. Il nome del file deve essere esatto. `llm_judge.jsonl`
+ È necessario caricare il set di dati in una posizione S3 a cui SageMaker Training Jobs possa accedervi.
+ Il file deve seguire il formato dello schema richiesto per il set di dati `mm_llm_judge`.
+ Il set di dati di input dovrebbe garantire che tutti i record abbiano una lunghezza di contesto inferiore a 12 k, escluso l'attributo dell'immagine.

Formato dello schema - Ogni riga del file `.jsonl` deve essere un oggetto JSON con i campi seguenti.
+ Campi obbligatori. 

  `prompt`: stringa contenente il prompt per la risposta generata.

  `images`: Array contenente un elenco di oggetti con attributi di dati (i valori sono stringhe di immagine codificate in Base64).

  `response_A`: stringa contenente la risposta di base.

  `response_B`: stringa contenente la risposta alternativa da confrontare con la risposta di base.

Esempio di inserimento

Per motivi di leggibilità, l'esempio seguente include nuove righe e rientri, ma nel set di dati effettivo, ogni record deve trovarsi su una sola riga.

```
{
  "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 in echo 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",
}
```

Per utilizzare un set di dati personalizzato, modifica la ricetta di valutazione con i seguenti campi obbligatori, senza modificare alcun contenuto:

```
evaluation:
  task: mm_llm_judge
  strategy: judge
  metric: all
```

**Limitazioni**
+ È consentito un solo file `.jsonl` per valutazione.
+ Il file deve seguire rigorosamente lo schema definito.
+ I modelli Nova MM Judge supportano solo il riferimento alle immagini.
+ I modelli Nova MM Judge sono gli stessi per tutte le specifiche di Amazon Nova Lite.
+ Attualmente i modelli Judge personalizzati non sono supportati.
+ L'URI di immagine Amazon S3 non è supportato.
+ Il set di dati di input dovrebbe garantire che tutti i record abbiano una lunghezza di contesto inferiore a 12 k, escluso l'attributo images.

## Giudice basato sulla rubrica
<a name="nova-hp-evaluate-rubric-judge"></a>

Rubric Judge è un modello di LLM-as-a-judge valutazione avanzato basato su Nova 2.0 Lite. A differenza del [modello di arbitro originale](https://aws.amazon.com/blogs/machine-learning/evaluating-generative-ai-models-with-amazon-nova-llm-as-a-judge-on-amazon-sagemaker-ai/) che fornisce solo verdetti di preferenza (A>B, B>A o pareggio), Rubric Judge genera dinamicamente criteri di valutazione personalizzati su misura per ogni richiesta e assegna punteggi granulari su più dimensioni.

Funzionalità chiave:
+ **Generazione dinamica di criteri**: crea automaticamente dimensioni di valutazione pertinenti in base alla richiesta di input
+ **Punteggio ponderato: assegna dei pesi** di importanza a ciascun criterio in base alla loro importanza relativa
+ **Valutazione granulare**: fornisce punteggi dettagliati su base binaria (vero/falso) o su scala (1-5) per ogni criterio
+ **Metriche di qualità**: calcola punteggi di qualità continui (scala 0-1) che quantificano l'entità delle differenze tra le risposte

Criterio di esempio generato dal modello:

```
price_validation:
  description: "The response includes validation to ensure price is a positive value."
  type: "scale"
  weight: 0.3
```

Il modello valuta entrambe le risposte rispetto a tutti i criteri generati, quindi utilizza questi punteggi a livello di criterio per determinare la preferenza finale.

**Topics**
+ [Configurazione della ricetta](#nova-hp-evaluate-rubric-judge-recipe)
+ [Formato del set di dati di input](#nova-hp-evaluate-rubric-judge-input)
+ [Risultato della valutazione](#nova-hp-evaluate-rubric-judge-output)
+ [Supporto del modello di ragionamento](#nova-hp-evaluate-rubric-judge-reasoning)

### Configurazione della ricetta
<a name="nova-hp-evaluate-rubric-judge-recipe"></a>

**Ricetta Rubric Judge**  
Abilita Rubric Judge `task: rubric_llm_judge` impostando nella tua ricetta:

```
run:
  name: nova-eval-job-name                              # [MODIFIABLE] Unique identifier for your evaluation job
  model_type: amazon.nova-2-lite-v1:0:256k              # [FIXED] Rubric Judge model type
  model_name_or_path: "nova-lite-2/prod"                # [FIXED] Path to model checkpoint or identifier
  replicas: 1                                           # [MODIFIABLE] Number of replicas for SageMaker Training job
  data_s3_path: ""                                      # [FIXED] Leave empty for SageMaker Training job
  output_s3_path: ""                                    # [FIXED] Leave empty for SageMaker Training job

evaluation:
  task: rubric_llm_judge                                # [FIXED] Evaluation task - enables Rubric Judge
  strategy: judge                                       # [FIXED] Evaluation strategy
  metric: all                                           # [FIXED] Metric calculation method

inference:
  max_new_tokens: 12000                                 # [MODIFIABLE] Maximum tokens to generate
  top_k: -1                                             # [MODIFIABLE] Top-k sampling parameter
  top_p: 1.0                                            # [MODIFIABLE] Nucleus sampling parameter
  temperature: 0                                        # [MODIFIABLE] Sampling temperature (0 = deterministic)
```

**Ricetta originale LLM as a Judge (per confronto)**  
Il modello di giudice originale utilizza`task: llm_judge`:

```
run:
  name: eval-job-name                                   # [MODIFIABLE] Unique identifier for your evaluation job
  model_type: amazon.nova-micro-v1:0:128k               # [FIXED] Model type
  model_name_or_path: "nova-micro/prod"                 # [FIXED] Path to model checkpoint or identifier
  replicas: 1                                           # [MODIFIABLE] Number of replicas for SageMaker Training job
  data_s3_path: ""                                      # [FIXED] Leave empty for SageMaker Training job
  output_s3_path: ""                                    # [FIXED] Leave empty for SageMaker Training job

evaluation:
  task: llm_judge                                       # [FIXED] Original judge task
  strategy: judge                                       # [FIXED] Evaluation strategy
  metric: all                                           # [FIXED] Metric calculation method

inference:
  max_new_tokens: 12000                                 # [MODIFIABLE] Maximum tokens to generate
  top_k: -1                                             # [MODIFIABLE] Top-k sampling parameter
  top_p: 1.0                                            # [MODIFIABLE] Nucleus sampling parameter
  temperature: 0                                        # [MODIFIABLE] Sampling temperature (0 = deterministic)
```

### Formato del set di dati di input
<a name="nova-hp-evaluate-rubric-judge-input"></a>

Il formato del set di dati di input è identico al modello [originale del giudice](https://aws.amazon.com/blogs/machine-learning/evaluating-generative-ai-models-with-amazon-nova-llm-as-a-judge-on-amazon-sagemaker-ai/):

**Campi obbligatori:**
+ `prompt`: Stringa contenente il prompt di input e le istruzioni
+ `response_A`: Stringa contenente l'output del modello di base
+ `response_B`: Stringa contenente l'output del modello personalizzato

**Set di dati di esempio (formato JSONL):**

```
{"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."}
```

**Requisiti di formato:**
+ Ogni voce deve essere un oggetto JSON a riga singola
+ Separa le voci con nuove righe
+ Segui l'esatta denominazione dei campi, come mostrato negli esempi

### Risultato della valutazione
<a name="nova-hp-evaluate-rubric-judge-output"></a>

**Struttura di output**  
Rubric Judge produce metriche di valutazione migliorate rispetto al modello di giudice originale:

```
{
  "config_general": {
    "lighteval_sha": "string",
    "num_fewshot_seeds": "int",
    "max_samples": "int | null",
    "job_id": "int",
    "start_time": "float",
    "end_time": "float",
    "total_evaluation_time_secondes": "string",
    "model_name": "string",
    "model_sha": "string",
    "model_dtype": "string | null",
    "model_size": "string"
  },
  "results": {
    "custom|rubric_llm_judge_judge|0": {
      "a_scores": "float",
      "a_scores_stderr": "float",
      "b_scores": "float",
      "b_scores_stderr": "float",
      "ties": "float",
      "ties_stderr": "float",
      "inference_error": "float",
      "inference_error_stderr": "float",
      "score": "float",
      "score_stderr": "float",
      "weighted_score_A": "float",
      "weighted_score_A_stderr": "float",
      "weighted_score_B": "float",
      "weighted_score_B_stderr": "float",
      "score_margin": "float",
      "score_margin_stderr": "float",
      "winrate": "float",
      "lower_rate": "float",
      "upper_rate": "float"
    }
  },
  "versions": {
    "custom|rubric_llm_judge_judge|0": "int"
  }
}
```

**Nuove metriche in Rubric Judge**  
Le seguenti sei metriche sono esclusive di Rubric Judge e forniscono una valutazione granulare della qualità:


| Metrica | Description | 
| --- |--- |
| punteggio\$1ponderato\$1A | Punteggio di qualità medio normalizzato per Response\$1a in base a tutti i criteri di valutazione generati dal modello. I punteggi sono ponderati in base all'importanza del criterio e normalizzati su una scala 0-1 (più alto = migliore qualità) | 
| Weighted\$1score\$1a\$1stderr | Errore standard della media per Weighted\$1score\$1a, che indica l'incertezza statistica | 
| Punteggio\$1ponderato\$1B | Punteggio di qualità medio normalizzato per Response\$1b in tutti i criteri di valutazione generati dal modello. I punteggi sono ponderati in base all'importanza del criterio e normalizzati su una scala 0-1 (più alto = migliore qualità) | 
| Weighted\$1score\$1b\$1stderr | Errore standard della media per Weighted\$1score\$1b, che indica l'incertezza statistica | 
| score\$1margin | Differenza tra i punteggi ponderati (calcolati come Weighted\$1score\$1A - Weighted\$1score\$1b). Intervallo: da -1,0 a 1,0. Positivo = response\$1a è migliore; negativo = response\$1B è migliore; vicino allo zero = qualità simile | 
| score\$1margin\$1stderr | Errore standard della media di score\$1margin, che indica l'incertezza nella misurazione della differenza di qualità | 

**Comprensione delle metriche dei punteggi ponderati**  
**Scopo**: i punteggi ponderati forniscono misurazioni continue della qualità che completano i verdetti sulle preferenze binarie, consentendo una visione più approfondita delle prestazioni del modello.

**Principali differenze rispetto al giudice originale**:
+ **Giudice originale**: emette solo preferenze discrete (A>B, B>A, A=B)
+ **Rubric Judge: emette** sia le preferenze che i punteggi di qualità continui (scala 0-1) in base a criteri personalizzati

**Interpretazione** di score\$1margin:
+ `score_margin = -0.128`: Response\$1B ha ottenuto 12,8 punti percentuali in più rispetto a Response\$1a
+ `|score_margin| < 0.1`: Differenza di qualità ridotta (decisione ravvicinata)
+ `|score_margin| > 0.2`: Chiara differenza di qualità (decisione sicura)

**Casi d'uso**:
+ **Miglioramento del modello**: identifica le aree specifiche in cui il tuo modello ha prestazioni inferiori
+ **Quantificazione della qualità**: misura l'entità dei divari prestazionali, non solo i rapporti win/loss 
+ **Valutazione della fiducia**: distinguere tra decisioni ravvicinate e chiare differenze di qualità

**Importante**  
I verdetti finali si basano ancora sulle etichette di preferenza esplicite del modello giudicante per preservare un ragionamento olistico e garantire un'adeguata mitigazione dei pregiudizi di posizione attraverso la valutazione. forward/backward I punteggi ponderati servono come strumenti di osservabilità, non come sostituti del verdetto primario.

**Metodologia di calcolo**  
I punteggi ponderati vengono calcolati attraverso il seguente processo:
+ **Estrai i dati dei criteri: analizza l'**output YAML del giudice per estrarre i punteggi e i pesi dei criteri
+ **Normalizza** i punteggi:
  + Criteri basati sul tipo di scala (1-5): normalizza a 0-1 calcolando `(score - 1) / 4`
  + Criteri binari (vero/falso): converti in 1,0/0,0
+ **Applica pesi**: moltiplica ogni punteggio normalizzato per il relativo peso del criterio
+ **Aggregato**: somma tutti i punteggi ponderati per ogni risposta
+ **Calcola il margine**: calcola `score_margin = weighted_score_A - weighted_score_B`

**Esempio**: se Response\$1a ha una somma ponderata di 0,65 e Response\$1b ha 0,78, `score_margin` sarebbe -0,13, indicando che response\$1b ha una qualità superiore di 13 punti percentuali rispetto a tutti i criteri ponderati.

### Supporto del modello di ragionamento
<a name="nova-hp-evaluate-rubric-judge-reasoning"></a>

Il supporto del modello di ragionamento consente la valutazione con modelli Nova compatibili con il ragionamento che eseguono un ragionamento interno esplicito prima di generare risposte finali. Questa funzionalità utilizza il controllo a livello di API tramite il `reasoning_effort` parametro per abilitare o disabilitare dinamicamente la funzionalità di ragionamento, migliorando potenzialmente la qualità della risposta per attività analitiche complesse.

**Modelli supportati:**
+ amazon.nova-2-lite-v 1:0:256k

**Configurazione della ricetta**  
Abilita il ragionamento aggiungendo il `reasoning_effort` parametro alla `inference` sezione della tua ricetta:

```
run:
  name: eval-job-name                                    # [MODIFIABLE] Unique identifier for your evaluation job
  model_type: amazon.nova-2-lite-v1:0:256k               # [FIXED] Must be a reasoning-supported model
  model_name_or_path: nova-lite-2/prod                   # [FIXED] Path to model checkpoint or identifier
  replicas: 1                                            # [MODIFIABLE] Number of replicas for SageMaker Training job
  data_s3_path: ""                                       # [MODIFIABLE] Leave empty for SageMaker Training job; optional for  job
  output_s3_path: ""                                     # [MODIFIABLE] Output path for  job (not compatible with SageMaker Training jobs)

evaluation:
  task: mmlu                                             # [MODIFIABLE] Evaluation task
  strategy: generate                                     # [MODIFIABLE] Evaluation strategy
  metric: all                                            # [MODIFIABLE] Metric calculation method

inference:
  reasoning_effort: high                                 # [MODIFIABLE] Enables reasoning mode; options: low/medium/high or null to disable
  max_new_tokens: 200                                    # [MODIFIABLE] Maximum tokens to generate
  top_k: 50                                              # [MODIFIABLE] Top-k sampling parameter
  top_p: 1.0                                             # [MODIFIABLE] Nucleus sampling parameter
  temperature: 0                                         # [MODIFIABLE] Sampling temperature (0 = deterministic)
```

**Utilizzo del parametro reasoning\$1effort**  
Il `reasoning_effort` parametro controlla il comportamento di ragionamento per i modelli in grado di ragionare.

**Prerequisiti:**
+ **Compatibilità dei modelli**: impostata `reasoning_effort` solo quando `model_type` specifica un modello in grado di ragionare (attualmente) `amazon.nova-2-lite-v1:0:256k`
+ **Gestione degli errori**: l'utilizzo `reasoning_effort` con modelli non supportati avrà esito negativo con `ConfigValidationError: "Reasoning mode is enabled but model '{model_type}' does not support reasoning. Please use a reasoning-capable model or disable reasoning mode."`

**Opzioni disponibili:**


| Opzione | Comportamento | Limite di token | Caso d'uso | 
| --- |--- |--- |--- |
| null (impostazione predefinita) | Disattiva la modalità di ragionamento | N/D | Valutazione standard senza sovraccarico di ragionamento | 
| low | Consente il ragionamento con vincoli | 4.000 token per il ragionamento interno | Scenari che richiedono un ragionamento conciso; ottimizza velocità e costi | 
| high | Consente il ragionamento senza vincoli | Nessun limite simbolico al ragionamento interno | Problemi complessi che richiedono analisi e step-by-step ragionamenti approfonditi | 

**Quando abilitare il ragionamento**  
**Usa la modalità di ragionamento (`low``medium`, o`high`)** per:
+ Compiti complessi di risoluzione di problemi (matematica, puzzle logici, programmazione)
+ Domande analitiche in più fasi che richiedono un ragionamento intermedio
+ Attività in cui spiegazioni o riflessioni dettagliate migliorano la precisione step-by-step
+ Scenari in cui la qualità della risposta è prioritaria rispetto alla velocità

**Utilizza la modalità non ragionamento (parametro di omissione)** per:
+ Domande e risposte semplici o domande basate sui fatti
+ Attività di scrittura creativa
+ Quando i tempi di risposta più rapidi sono fondamentali
+ Analisi comparativa delle prestazioni in cui è necessario escludere il sovraccarico di ragionamento
+ L'ottimizzazione dei costi quando il ragionamento non migliora le prestazioni delle attività

**Risoluzione dei problemi**  
**Errore: «La modalità di ragionamento è abilitata ma il modello non supporta il ragionamento»**

**Causa**: il `reasoning_effort` parametro è impostato su un valore diverso da nullo, ma quello specificato `model_type` non supporta il ragionamento.

**Risoluzione:**
+ Verifica che il tipo di modello sia `amazon.nova-2-lite-v1:0:256k`
+ Se utilizzi un modello diverso, passa a un modello in grado di ragionare o rimuovi il `reasoning_effort` parametro dalla tua ricetta

# Avvio di un processo di valutazione
<a name="customize-fine-tune-evaluate-start-job"></a>

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 SageMaker 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 SageMaker HyperPod Cluster
hyperpod connect-cluster --cluster-name cluster-name


# Submit the Job using the recipe for eval
# Namespace by default should be kubeflow
hyperpod start-job [--namespace namespace] --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-V2-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 [--namespace namespace] [--all-namespaces]

# Getting Job details
hyperpod get-job --job-name job-name [--namespace namespace] [--verbose]

# Listing Pods
hyperpod list-pods --job-name job-name --namespace namespace

# Cancel Job
hyperpod cancel-job --job-name job-name [--namespace namespace]
```

Dovrebbe essere anche possibile visualizzare lo stato del processo tramite la console del cluster Amazon EKS.

# Accesso e analisi dei risultati di valutazione
<a name="customize-fine-tune-evaluate-access-results"></a>

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
+ gold - La risposta target dal set di dati di input
+ metadata - La stringa di metadati del set di dati di input, se fornita

Per visualizzare le metriche di valutazione in Tensorboard, completa la seguente procedura:

1. Passa a AI SageMaker Tensorboard.

1. Seleziona **Cartelle S3**.

1. Aggiungi il percorso della cartella S3, ad esempio `s3://output_path/job-name/eval-tensorboard-result/eval`.

1. 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 TensorBoard sincronizzazione per il corretto caricamento dei dati.

È possibile trovare i log degli errori di SageMaker HyperPod lavoro nel gruppo `/aws/sagemaker/Clusters/cluster-id` di CloudWatch log.

## Formato di output della probabilità logaritmica
<a name="nova-hp-access-results-logprobs"></a>

Se `top_logprobs` configurato nelle impostazioni di inferenza, l'output di valutazione include le probabilità di registro a livello di token nei file parquet. Ogni posizione del token contiene un dizionario dei migliori token candidati con le relative probabilità di registro nella seguente struttura:

```
{
"Ġint": {"logprob_value": -17.8125, "decoded_value": " int"},
"Ġthe": {"logprob_value": -2.345, "decoded_value": " the"}
}
```

Ogni voce del token contiene:
+ `logprob_value`: Il valore di probabilità logaritmica per il token
+ `decoded_value`: La rappresentazione di stringa decodificata leggibile dall'uomo del token

Il token tokenizer non elaborato viene utilizzato come chiave del dizionario per garantire l'unicità, fornendo al contempo un'interpretazione leggibile. `decoded_value`

# Monitoraggio dei lavori con HyperPod MLflow
<a name="nova-hp-mlflow"></a>

Puoi utilizzarlo MLflow per tracciare e monitorare i tuoi lavori di formazione su SageMaker HyperPod. Segui questi passaggi per configurarlo MLflow e collegarlo alle tue ricette di allenamento.

***Crea l' MLflowapp***

 AWS CLI Comando di esempio

```
aws sagemaker-mlflow create-mlflow-app \
    --name <app-name> \
    --artifact-store-uri <s3-bucket-name> \
    --role-arn <role-arn> \
    --region <region-name>
```

Output di esempio

```
{
    "Arn": "arn:aws:sagemaker:us-east-1:111122223333:mlflow-app/app-LGZEOZ2UY4NZ"
}
```

***Genera un URL prefirmato***

Comando di esempio AWS CLI 

```
aws sagemaker-mlflow create-presigned-mlflow-app-url \
    --arn <app-arn> \
    --region <region-name> \
    --output text
```

Output di esempio

```
https://app-LGZEOZ2UY4NZ.mlflow.sagemaker.us-east-1.app.aws/auth?authToken=eyJhbGciOiJIUzI1NiJ9.eyJhdXRoVG9rZW5JZCI6IkxETVBPUyIsImZhc0NyZWRlbnRpYWxzIjoiQWdWNGhDM1VvZ0VYSUVsT2lZOVlLNmxjRHVxWm1BMnNhZ3JDWEd3aFpOSmdXbzBBWHdBQkFCVmhkM010WTNKNWNIUnZMWEIxWW14cFl5MXJaWGtBUkVFd09IQmtVbU5IUzJJMU1VTnVaVEl3UVhkUE5uVm9Ra2xHTkZsNVRqTTNXRVJuTTNsalowNHhRVFZvZERneVdrMWlkRlZXVWpGTWMyWlRUV1JQWmpSS2R6MDlBQUVBQjJGM2N5MXJiWE1BUzJGeWJqcGhkM002YTIxek9uVnpMV1ZoYzNRdE1Ub3pNVFF4TkRZek1EWTBPREk2YTJWNUx6Y3dOMkpoTmpjeExUUXpZamd0TkRFeU5DMWhaVFUzTFRrMFlqTXdZbUptT1RJNU13QzRBUUlCQUhnQjRVMDBTK3ErVE51d1gydlFlaGtxQnVneWQ3YnNrb0pWdWQ2NmZjVENVd0ZzRTV4VHRGVllHUXdxUWZoeXE2RkJBQUFBZmpCOEJna3Foa2lHOXcwQkJ3YWdiekJ0QWdFQU1HZ0dDU3FHU0liM0RRRUhBVEFlQmdsZ2hrZ0JaUU1FQVM0d0VRUU1yOEh4MXhwczFBbmEzL1JKQWdFUWdEdTI0K1M5c2VOUUNFV0hJRXJwdmYxa25MZTJteitlT29pTEZYNTJaeHZsY3AyZHFQL09tY3RJajFqTWFuRjMxZkJyY004MmpTWFVmUHRhTWdJQUFCQUE3L1pGT05DRi8rWnVPOVlCVnhoaVppSEFSLy8zR1I0TmR3QWVxcDdneHNkd2lwTDJsVWdhU3ZGNVRCbW9uMUJnLy8vLy93QUFBQUVBQUFBQUFBQUFBQUFBQUFFQUFBUTdBMHN6dUhGbEs1NHdZbmZmWEFlYkhlNmN5OWpYOGV3T2x1NWhzUWhGWFllRXNVaENaQlBXdlQrVWp5WFY0ZHZRNE8xVDJmNGdTRUFOMmtGSUx0YitQa0tmM0ZUQkJxUFNUQWZ3S1oyeHN6a1lDZXdwRlNpalFVTGtxemhXbXBVcmVDakJCOHNGT3hQL2hjK0JQalY3bUhOL29qcnVOejFhUHhjNSt6bHFuak9CMHljYy8zL2JuSHA3NVFjRE8xd2NMbFJBdU5KZ2RMNUJMOWw1YVVPM0FFMlhBYVF3YWY1bkpwTmZidHowWUtGaWZHMm94SDJSNUxWSjNkbG40aGVRbVk4OTZhdXdsellQV253N2lTTDkvTWNidDAzdVZGN0JpUnRwYmZMN09JQm8wZlpYSS9wK1pUNWVUS2wzM2tQajBIU3F6NisvamliY0FXMWV4VTE4N1QwNHpicTNRcFhYMkhqcDEvQnFnMVdabkZoaEwrekZIaUV0Qjd4U1RaZkZsS2xRUUhNK0ZkTDNkOHIyRWhCMjFya2FBUElIQVBFUk5Pd1lnNmFzM2pVaFRwZWtuZVhxSDl3QzAyWU15R0djaTVzUEx6ejh3ZTExZVduanVTai9DZVJpZFQ1akNRcjdGMUdKWjBVREZFbnpNakFuL3Y3ajA5c2FMczZnemlCc2FLQXZZOWpib0JEYkdKdGZ0N2JjVjl4eUp4amptaW56TGtoVG5pV2dxV3g5MFZPUHlWNWpGZVk1QTFrMmw3bDArUjZRTFNleHg4d1FrK0FqVGJuLzFsczNHUTBndUtESmZKTWVGUVczVEVrdkp5VlpjOC9xUlpIODhybEpKOW1FSVdOd1BMU21yY1l6TmZwVTlVOGdoUDBPUWZvQ3FvcW1WaUhEYldaT294bGpmb295cS8yTDFKNGM3NTJUaVpFd1hnaG9haFBYdGFjRnA2NTVUYjY5eGxTN25FaXZjTTlzUjdTT3REMEMrVHIyd0cxNEJ3Zm9NZTdKOFhQeVRtcmQ0QmNKOEdOYnVZTHNRNU9DcFlsV3pVNCtEcStEWUI4WHk1UWFzaDF0dzJ6dGVjVVQyc0hsZmwzUVlrQ0d3Z1hWam5Ia2hKVitFRDIrR3Fpc3BkYjRSTC83RytCRzRHTWNaUE02Q3VtTFJkMnZLbnozN3dUWkxwNzdZNTdMQlJySm9Tak9idWdNUWdhOElLNnpWL2VtcFlSbXJsVjZ5VjZ6S1h5aXFKWFk3TTBXd3dSRzd5Q0xYUFRtTGt3WGE5cXF4NkcvZDY1RS83V3RWMVUrNFIxMlZIUmVUMVJmeWw2SnBmL2FXWFVCbFQ2ampUR0M5TU1uTk5OVTQwZHRCUTArZ001S1d2WGhvMmdmbnhVcU1OdnFHblRFTWdZMG5ZL1FaM0RWNFozWUNqdkFOVWVsS1NCdkxFbnY4SEx0WU9uajIrTkRValZOV1h5T1c4WFowMFFWeXU0ZU5LaUpLQ1hJbnI1N3RrWHE3WXl3b0lZV0hKeHQwWis2MFNQMjBZZktYYlhHK1luZ3F6NjFqMkhIM1RQUmt6dW5rMkxLbzFnK1ZDZnhVWFByeFFmNUVyTm9aT2RFUHhjaklKZ1FxRzJ2eWJjbFRNZ0M5ZXc1QURVcE9KL1RrNCt2dkhJMDNjM1g0UXcrT3lmZHFUUzJWb3N4Y0hJdG5iSkZmdXliZi9lRlZWRlM2L3lURkRRckhtQ1RZYlB3VXlRNWZpR20zWkRhNDBQUTY1RGJSKzZSbzl0S3c0eWFlaXdDVzYwZzFiNkNjNUhnQm5GclMyYytFbkNEUFcrVXRXTEF1azlISXZ6QnR3MytuMjdRb1cvSWZmamJucjVCSXk3MDZRTVR4SzhuMHQ3WUZuMTBGTjVEWHZiZzBvTnZuUFFVYld1TjhFbE11NUdpenZxamJmeVZRWXdBSERCcDkzTENsUUJuTUdVQ01GWkNHUGRPazJ2ZzJoUmtxcWQ3SmtDaEpiTmszSVlyanBPL0h2Z2NZQ2RjK2daM3lGRjMyTllBMVRYN1FXUkJYZ0l4QU5xU21ZTHMyeU9uekRFenBtMUtnL0tvYmNqRTJvSDJkZHcxNnFqT0hRSkhkVWRhVzlZL0NQYTRTbWxpN2pPbGdRPT0iLCJjaXBoZXJUZXh0IjoiQVFJQkFIZ0I0VTAwUytxK1ROdXdYMnZRZWhrcUJ1Z3lkN2Jza29KVnVkNjZmY1RDVXdHeDExRlBFUG5xU1ZFbE5YVUNrQnRBQUFBQW9qQ0Jud1lKS29aSWh2Y05BUWNHb0lHUk1JR09BZ0VBTUlHSUJna3Foa2lHOXcwQkJ3RXdIZ1lKWUlaSUFXVURCQUV1TUJFRURHemdQNnJFSWNEb2dWSTl1d0lCRUlCYitXekkvbVpuZkdkTnNYV0VCM3Y4NDF1SVJUNjBLcmt2OTY2Q1JCYmdsdXo1N1lMTnZUTkk4MEdkVXdpYVA5NlZwK0VhL3R6aGgxbTl5dzhjcWdCYU1pOVQrTVQxdzdmZW5xaXFpUnRRMmhvN0tlS2NkMmNmK3YvOHVnPT0iLCJzdWIiOiJhcm46YXdzOnNhZ2VtYWtlcjp1cy1lYXN0LTE6MDYwNzk1OTE1MzUzOm1sZmxvdy1hcHAvYXBwLUxHWkVPWjJVWTROWiIsImlhdCI6MTc2NDM2NDYxNSwiZXhwIjoxNzY0MzY0OTE1fQ.HNvZOfqft4m7pUS52MlDwoi1BA8Vsj3cOfa_CvlT4uw
```

***Apri l'URL predefinito e visualizza l'app***

Click 

```
https://app-LGZEOZ2UY4NZ.mlflow.sagemaker.us-east-1.app.aws/auth?authToken=eyJhbGciOiJIUzI1NiJ9.eyJhdXRoVG9rZW5JZCI6IkxETVBPUyIsImZhc0NyZWRlbnRpYWxzIjoiQWdWNGhDM1VvZ0VYSUVsT2lZOVlLNmxjRHVxWm1BMnNhZ3JDWEd3aFpOSmdXbzBBWHdBQkFCVmhkM010WTNKNWNIUnZMWEIxWW14cFl5MXJaWGtBUkVFd09IQmtVbU5IUzJJMU1VTnVaVEl3UVhkUE5uVm9Ra2xHTkZsNVRqTTNXRVJuTTNsalowNHhRVFZvZERneVdrMWlkRlZXVWpGTWMyWlRUV1JQWmpSS2R6MDlBQUVBQjJGM2N5MXJiWE1BUzJGeWJqcGhkM002YTIxek9uVnpMV1ZoYzNRdE1Ub3pNVFF4TkRZek1EWTBPREk2YTJWNUx6Y3dOMkpoTmpjeExUUXpZamd0TkRFeU5DMWhaVFUzTFRrMFlqTXdZbUptT1RJNU13QzRBUUlCQUhnQjRVMDBTK3ErVE51d1gydlFlaGtxQnVneWQ3YnNrb0pWdWQ2NmZjVENVd0ZzRTV4VHRGVllHUXdxUWZoeXE2RkJBQUFBZmpCOEJna3Foa2lHOXcwQkJ3YWdiekJ0QWdFQU1HZ0dDU3FHU0liM0RRRUhBVEFlQmdsZ2hrZ0JaUU1FQVM0d0VRUU1yOEh4MXhwczFBbmEzL1JKQWdFUWdEdTI0K1M5c2VOUUNFV0hJRXJwdmYxa25MZTJteitlT29pTEZYNTJaeHZsY3AyZHFQL09tY3RJajFqTWFuRjMxZkJyY004MmpTWFVmUHRhTWdJQUFCQUE3L1pGT05DRi8rWnVPOVlCVnhoaVppSEFSLy8zR1I0TmR3QWVxcDdneHNkd2lwTDJsVWdhU3ZGNVRCbW9uMUJnLy8vLy93QUFBQUVBQUFBQUFBQUFBQUFBQUFFQUFBUTdBMHN6dUhGbEs1NHdZbmZmWEFlYkhlNmN5OWpYOGV3T2x1NWhzUWhGWFllRXNVaENaQlBXdlQrVWp5WFY0ZHZRNE8xVDJmNGdTRUFOMmtGSUx0YitQa0tmM0ZUQkJxUFNUQWZ3S1oyeHN6a1lDZXdwRlNpalFVTGtxemhXbXBVcmVDakJCOHNGT3hQL2hjK0JQalY3bUhOL29qcnVOejFhUHhjNSt6bHFuak9CMHljYy8zL2JuSHA3NVFjRE8xd2NMbFJBdU5KZ2RMNUJMOWw1YVVPM0FFMlhBYVF3YWY1bkpwTmZidHowWUtGaWZHMm94SDJSNUxWSjNkbG40aGVRbVk4OTZhdXdsellQV253N2lTTDkvTWNidDAzdVZGN0JpUnRwYmZMN09JQm8wZlpYSS9wK1pUNWVUS2wzM2tQajBIU3F6NisvamliY0FXMWV4VTE4N1QwNHpicTNRcFhYMkhqcDEvQnFnMVdabkZoaEwrekZIaUV0Qjd4U1RaZkZsS2xRUUhNK0ZkTDNkOHIyRWhCMjFya2FBUElIQVBFUk5Pd1lnNmFzM2pVaFRwZWtuZVhxSDl3QzAyWU15R0djaTVzUEx6ejh3ZTExZVduanVTai9DZVJpZFQ1akNRcjdGMUdKWjBVREZFbnpNakFuL3Y3ajA5c2FMczZnemlCc2FLQXZZOWpib0JEYkdKdGZ0N2JjVjl4eUp4amptaW56TGtoVG5pV2dxV3g5MFZPUHlWNWpGZVk1QTFrMmw3bDArUjZRTFNleHg4d1FrK0FqVGJuLzFsczNHUTBndUtESmZKTWVGUVczVEVrdkp5VlpjOC9xUlpIODhybEpKOW1FSVdOd1BMU21yY1l6TmZwVTlVOGdoUDBPUWZvQ3FvcW1WaUhEYldaT294bGpmb295cS8yTDFKNGM3NTJUaVpFd1hnaG9haFBYdGFjRnA2NTVUYjY5eGxTN25FaXZjTTlzUjdTT3REMEMrVHIyd0cxNEJ3Zm9NZTdKOFhQeVRtcmQ0QmNKOEdOYnVZTHNRNU9DcFlsV3pVNCtEcStEWUI4WHk1UWFzaDF0dzJ6dGVjVVQyc0hsZmwzUVlrQ0d3Z1hWam5Ia2hKVitFRDIrR3Fpc3BkYjRSTC83RytCRzRHTWNaUE02Q3VtTFJkMnZLbnozN3dUWkxwNzdZNTdMQlJySm9Tak9idWdNUWdhOElLNnpWL2VtcFlSbXJsVjZ5VjZ6S1h5aXFKWFk3TTBXd3dSRzd5Q0xYUFRtTGt3WGE5cXF4NkcvZDY1RS83V3RWMVUrNFIxMlZIUmVUMVJmeWw2SnBmL2FXWFVCbFQ2ampUR0M5TU1uTk5OVTQwZHRCUTArZ001S1d2WGhvMmdmbnhVcU1OdnFHblRFTWdZMG5ZL1FaM0RWNFozWUNqdkFOVWVsS1NCdkxFbnY4SEx0WU9uajIrTkRValZOV1h5T1c4WFowMFFWeXU0ZU5LaUpLQ1hJbnI1N3RrWHE3WXl3b0lZV0hKeHQwWis2MFNQMjBZZktYYlhHK1luZ3F6NjFqMkhIM1RQUmt6dW5rMkxLbzFnK1ZDZnhVWFByeFFmNUVyTm9aT2RFUHhjaklKZ1FxRzJ2eWJjbFRNZ0M5ZXc1QURVcE9KL1RrNCt2dkhJMDNjM1g0UXcrT3lmZHFUUzJWb3N4Y0hJdG5iSkZmdXliZi9lRlZWRlM2L3lURkRRckhtQ1RZYlB3VXlRNWZpR20zWkRhNDBQUTY1RGJSKzZSbzl0S3c0eWFlaXdDVzYwZzFiNkNjNUhnQm5GclMyYytFbkNEUFcrVXRXTEF1azlISXZ6QnR3MytuMjdRb1cvSWZmamJucjVCSXk3MDZRTVR4SzhuMHQ3WUZuMTBGTjVEWHZiZzBvTnZuUFFVYld1TjhFbE11NUdpenZxamJmeVZRWXdBSERCcDkzTENsUUJuTUdVQ01GWkNHUGRPazJ2ZzJoUmtxcWQ3SmtDaEpiTmszSVlyanBPL0h2Z2NZQ2RjK2daM3lGRjMyTllBMVRYN1FXUkJYZ0l4QU5xU21ZTHMyeU9uekRFenBtMUtnL0tvYmNqRTJvSDJkZHcxNnFqT0hRSkhkVWRhVzlZL0NQYTRTbWxpN2pPbGdRPT0iLCJjaXBoZXJUZXh0IjoiQVFJQkFIZ0I0VTAwUytxK1ROdXdYMnZRZWhrcUJ1Z3lkN2Jza29KVnVkNjZmY1RDVXdHeDExRlBFUG5xU1ZFbE5YVUNrQnRBQUFBQW9qQ0Jud1lKS29aSWh2Y05BUWNHb0lHUk1JR09BZ0VBTUlHSUJna3Foa2lHOXcwQkJ3RXdIZ1lKWUlaSUFXVURCQUV1TUJFRURHemdQNnJFSWNEb2dWSTl1d0lCRUlCYitXekkvbVpuZkdkTnNYV0VCM3Y4NDF1SVJUNjBLcmt2OTY2Q1JCYmdsdXo1N1lMTnZUTkk4MEdkVXdpYVA5NlZwK0VhL3R6aGgxbTl5dzhjcWdCYU1pOVQrTVQxdzdmZW5xaXFpUnRRMmhvN0tlS2NkMmNmK3YvOHVnPT0iLCJzdWIiOiJhcm46YXdzOnNhZ2VtYWtlcjp1cy1lYXN0LTE6MDYwNzk1OTE1MzUzOm1sZmxvdy1hcHAvYXBwLUxHWkVPWjJVWTROWiIsImlhdCI6MTc2NDM2NDYxNSwiZXhwIjoxNzY0MzY0OTE1fQ.HNvZOfqft4m7pUS52MlDwoi1BA8Vsj3cOfa_CvlT4uw
```

Vista 

![\[Esempio di immagine nova.\]](http://docs.aws.amazon.com/it_it/nova/latest/userguide/images/screenshot-nova-model-1.png)


***Passa alla ricetta nella sezione Esegui della tua SageMaker HyperPod ricetta***

Recipe

```
run
    mlflow_tracking_uri: arn:aws:sagemaker:us-east-1:111122223333:mlflow-app/app-LGZEOZ2UY4NZ
```

Vista

![\[Esempio di immagine nova.\]](http://docs.aws.amazon.com/it_it/nova/latest/userguide/images/screenshot-nova-model-2.png)
