

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

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