

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

# Ottimizza Nova 1.0
<a name="nova-fine-tune-1"></a>

**Nota**  
Puoi ottimizzare la serie di modelli Amazon Nova 1.0 utilizzando Supervised Fine-Tuning (SFT) e Direct Preference Optimization. [Per la messa a punto dei modelli Nova 2.0, consulta Fine-tune Nova 2.0.](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-fine-tune-2.html)

## Prerequisiti
<a name="nova-model-training-jobs-prerequisites"></a>

Prima di avviare un job di addestramento, verifica i seguenti requisiti.
+ Bucket Amazon S3 per archiviare i dati di input e output dei job di addestramento. È possibile utilizzare un bucket per entrambi o bucket distinti per ogni tipo di dati. Assicurati che i tuoi bucket siano gli stessi in Regione AWS cui crei tutte le altre risorse per la formazione. Per ulteriori informazioni, consulta [Creating a general purpose bucket](https://docs.aws.amazon.com//AmazonS3/latest/userguide/create-bucket-overview.html).
+ Un ruolo IAM con autorizzazioni per eseguire un job di addestramento. Assicurati di collegare una policy IAM con `AmazonSageMakerFullAccess`. Per ulteriori informazioni, consulta [Come utilizzare i ruoli di esecuzione dell' SageMaker IA](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-roles.html).
+ Ricette base di Amazon Nova; consulta [Recupero di ricette Amazon Nova](nova-model-recipes.md#nova-model-get-recipes).

## Preparazione dei dati
<a name="nova-model-training-prepare-data"></a>

La preparazione di dati di alta qualità e formattati correttamente è una fase fondamentale nel processo di fine-tuning di modelli linguistici di grandi dimensioni. Che si utilizzi il fine-tuning supervisionato (SFT, Supervised Fine-Tuning) o l’ottimizzazione diretta delle preferenze (DPO, Direct Preference Optimization), con approcci a dimensionalità completa e LoRA (Low-Rank Adaptation), i dati devono rispettare requisiti di formato specifici per garantire un addestramento dei modelli efficace. Questa sezione descrive i formati di dati, i metodi di convalida e le best practice necessari per preparare i set di dati in modo efficace per il fine-tuning dei modelli Amazon Nova.

### Requisiti per il formato dei dati
<a name="nova-model-training-prepare-data-format"></a>

**SFT**

Requisiti del formato dei dati SFT - Sia per SFT completo che per LoRa SFT, i dati devono seguire il formato mostrato di seguito. Per esempi e vincoli di questo formato, vedere. [Preparazione dei dati per la messa a punto multimodale](fine-tune-prepare-data-understanding.md)

Convalida dei dati SFT - Per convalidare il formato del set di dati prima dell’invio, è consigliabile utilizzare il seguente script di convalida dal [repository di esempi di Amazon Bedrock](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/custom-models/bedrock-fine-tuning/nova/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.

**DPO**

Requisiti relativi al formato dei dati del DPO - Sia per il DPO con rango completo che per il DPO con LoRa, i dati devono seguire il formato mostrato di seguito. Inoltre, il set di dati deve essere in un formato simile a quello di SFT, tranne per l’ultima fase, che deve avere coppie di preferenze.

Altri vincoli sui set di dati DPO - Altri vincoli sui set di dati sono gli stessi per SFT. Per ulteriori informazioni, consulta [Preparazione dei dati per la messa a punto multimodale](fine-tune-prepare-data-understanding.md). Sono previsti un unico file JSONL per l’addestramento e un unico file JSONL per la convalida. Il set di convalida è facoltativo.

Consigli sui set di dati DPO - Un minimo di 1.000 coppie di preferenze per un addestramento efficace. Dati sulle preferenze di alta qualità generano risultati più efficienti.

### Esempi
<a name="nova-model-training-prepare-data-example"></a>

**Esempio di formato di dati 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"
        }
    ]
}
```

**Esempio di formato di dati DPO (più fasi)**

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

**Esempio di formato di dati DPO (con immagini)**

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

### Limitazioni dei set di dati
<a name="nova-model-training-prepare-data-limits"></a>

Per impostazione predefinita, i job di addestramento hanno un limite temporale di 1 giorno, sebbene le stime nelle tabelle seguenti presuppongano una durata dell’addestramento di 5 giorni a scopo illustrativo. Come best practice, è consigliabile aumentare il limite temporale per l’addestramento a un massimo di 28 giorni per far fronte a carichi di lavoro di addestramento più lunghi. Per ottenere un aumento di questo limite, consulta [Richiesta di aumento delle quote](https://docs.aws.amazon.com//servicequotas/latest/userguide/request-quota-increase.html).

**Limiti dei set di dati SFT**

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/nova/latest/userguide/nova-fine-tune-1.html)

Limiti dei set di dati DPO

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/nova/latest/userguide/nova-fine-tune-1.html)

Riducendo il numero di epoch o la lunghezza del contesto dei record, è possibile fornire più record.

## Configurazioni SFT a dimensionalità completa e PEFT LoRA
<a name="nova-model-training-jobs-recipe-config"></a>

Questa sezione fornisce indicazioni sulle configurazioni delle ricette per gli approcci di fine-tuning supervisionato (SFT, Supervised Fine-Tuning) a dimensionalità completa e fine-tuning efficiente in termini di parametri (PEFT, Parameter-Efficient Fine-Tuning) LoRA (Low-Rank Adaptation). Questi file di ricette fungono da blueprint per i processi di personalizzazione dei modelli e consentono di specificare parametri di addestramento, iperparametri e altre impostazioni critiche che determinano il modo in cui il modello apprende dai dati. Per regolare gli iperparametri, segui le linee guida in [Selecting hyperparameters](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html).

### Configurazioni di fine-tuning (SFT a dimensionalità completa e PEFT LoRA)
<a name="nova-model-training-jobs-recipe-config-1"></a>

L’unica differenza tra SFT a dimensionalità completa e PEFT LoRA in termini di ricetta è la configurazione PEFT LoRA, che è impostata su “null” per la dimensionalità completa e sui valori appropriati in caso di utilizzo di fine-tuning basato su PEFT LoRA. [Le ricette di esempio sono disponibili nell'archivio delle ricette.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes) GitHub Le tabelle seguenti mostrano configurazioni dettagliate che potrebbero risultare utili.

Informazioni sulla **configurazione “run”**.


|  | Chiave | Definizione | Micro | Lite | Pro | 
| --- | --- | --- | --- | --- | --- | 
| Configurazione run | model\$1type |  Specifica la variante del modello Nova da utilizzare. Non modificare questo campo.   |  «Amazon. nova-micro-v1:01:28k»  |  «amazzone». nova-lite-v1:30,00 k»  |  «amazzone». nova-pro-v1:30,00 k»  | 
|  | model\$1name\$1or\$1path |  Il percorso del modello di base.  |  “nova-micro/prod”  |  “nova-lite/prod”  |  “nova-pro/prod”  | 
|  | replicas |  Il numero di istanze di calcolo da utilizzare per l’addestramento distribuito.  |  2, 4 o 8  |  4, 8 o 16  |  6, 12 o 24  | 

Informazioni sulla **configurazione “training\$1config”**.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/nova/latest/userguide/nova-fine-tune-1.html)

### Configurazioni specifiche per il fine-tuning (DPO)
<a name="nova-model-training-jobs-recipe-config-2"></a>

L'unica differenza tra Direct Preference Optimization (DPO) rispetto a LoRa PEFT e FullRank SFT è in termini di configurazione di dpo\$1cfg e valori consentiti. Fai riferimento alla tabella seguente (esempio) per informazioni sui valori consentiti specificamente per DPO. [Ricette di esempio sono disponibili nell'archivio delle ricette.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes) GitHub La tabella seguente mostra configurazioni dettagliate che potrebbero risultare utili.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/nova/latest/userguide/nova-fine-tune-1.html)

## Esecuzione di un modello Nova personalizzato su SageMaker Training Jobs
<a name="nova-model-training-jobs-notebook"></a>

Questa sezione mostra come eseguire un modello Nova personalizzato su SageMaker Training Jobs tramite un ambiente notebook Jupyter. Troverai un esempio completo che illustra il processo di configurazione e avvio di un processo di formazione, insieme a tabelle di riferimento per la selezione dell'immagine del contenitore e delle configurazioni di istanza appropriate. URIs Questo approccio ti offre il controllo programmatico sui flussi di lavoro di ottimizzazione, SageMaker sfruttando al contempo l'infrastruttura gestita dell'IA per la personalizzazione dei modelli. Per ulteriori informazioni, consulta [Utilizzare uno stimatore di SageMaker intelligenza artificiale per eseguire un processo di formazione](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

### Tabelle di riferimento
<a name="nova-model-training-jobs-reference-table"></a>

Prima di eseguire il notebook di esempio, consulta le seguenti tabelle per selezionare l'immagine del contenitore URIs e le configurazioni dell'istanza appropriate.

**Selezione dell’URI delle immagini**


| Recipe | URI immagine | 
| --- | --- | 
|  URI immagine SFT  | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-latest | 
|  URI immagine DPO  | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest | 

**Selezione del tipo e del numero di istanze**


| Modello | Tipo di lavoro di fine-tuning | Tipo di tecnica | Tipo di istanza | Numero di istanze consigliato | Numero di istanze consentito | 
| --- | --- | --- | --- | --- | --- | 
| Amazon Nova Micro | SFT | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LoRa\$1 rango completo | g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  |  | p4d.24xlarge | 2 | 2, 4, 8 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 1 | 1, 2, 4, 8 | 
|  | DPO | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LorA\$1rango completo | p4d.24xlarge, p5.48xlarge, p5en.48xlarge | 2 | 2, 4, 8 | 
| Amazon Nova Lite | SFT | LoRA | g5.12xlarge, g6.12xlarge, g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 1 | 1, 4, 8, 16 | 
|  |  | LorA\$1rango completo | p4d.24xlarge | 4 | 4, 8, 16 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 2 | 2, 4, 8, 16 | 
|  | DPO | LoRA | g5.48xlarge, g6.48xlarge | 1 | 1 | 
|  |  | LoRa\$1rango completo | p4d.24xlarge, p5.48xlarge, p5en.48xlarge | 4 | 4, 8, 16 | 
| Amazon Nova Pro | SFT | LoRA | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 3 | 3, 6, 12, 24 | 
|  |  | LoRa\$1rango completo | p5.48xlarge, p5en.48xlarge | 6 | 6, 12, 24 | 
|  | DPO | LoRA | p4d.24xlarge | 6 | 6, 12, 24 | 
|  |  | LoRa\$1rango completo | p4d.24xlarge | 12 | 12, 24 | 
|  |  |  | p5.48xlarge, p5en.48xlarge | 4 | 4, 8, 16 | 

### Notebook di esempio
<a name="nova-model-training-jobs-notebook"></a>

Il seguente notebook di esempio mostra come eseguire un job di addestramento. Per altri taccuini introduttivi su come personalizzare i modelli Nova utilizzando SageMaker Training Jobs, consulta [Utilizzare uno stimatore SageMaker AI per eseguire un](https://docs.aws.amazon.com//sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html) processo di formazione.

```
# 1. Install dependencies

!pip install sagemaker==2.254.1

# 2. Import dependencies and initialize sagemaker session

import sagemaker,boto3

sm = boto3.client('sagemaker', region_name='us-east-1')
sagemaker_session = sagemaker.session.Session(boto_session=boto3.session.Session(), sagemaker_client=sm)

# 3. Configure your job
# Define the core configuration for launching a SageMaker Training Job. This includes input/output S3 URIs, container image, hardware setup, and other runtime parameters. Update the placeholders below before submitting the job.

job_name = "<Your Job Name>"

input_s3_uri = "<S3 path to input data>"
validation_s3_uri = "<S3 path to validation data>" # optional, leave blank if no validation data

output_s3_uri = "<S3 path to output location>"

image_uri = "<Image URI from documentation>" # you can choose the image for SFT/DPO
instance_type = "ml.p5.48xlarge" # do not change
instance_count = <Integer number of hosts> # change hosts as needed. Refer to documentation for allowed values based on model type.
role_arn = "<IAM Role you want to use to run the job>"
recipe_path = "<Local path to the recipe file>"
output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption

# 4. Launch SageMaker Training Job
# This block sets up and runs the SageMaker training job using the PyTorch estimator. It configures the training image, hardware, input channels, and TensorBoard integration. Validation data is included if provided.

from sagemaker.debugger import TensorBoardOutputConfig
from sagemaker.pytorch import PyTorch
from sagemaker.inputs import TrainingInput

tensorboard_output_config = TensorBoardOutputConfig(
    s3_output_path=output_s3_uri,
)

estimator = PyTorch(
    output_path=output_s3_uri,
    base_job_name=job_name,
    role=role_arn,
    instance_count=instance_count,
    instance_type=instance_type,
    training_recipe=recipe_path,
    sagemaker_session=sagemaker_session,
    image_uri=image_uri,
    tensorboard_output_config=tensorboard_output_config, # Add the setting for using TensorBoard.
    disable_profiler=True,
    debugger_hook_config=False,
    output_kms_key=output_kms_key
)

trainingInput = TrainingInput(
    s3_data=input_s3_uri,
    distribution='FullyReplicated',
    s3_data_type='Converse'
)

if (validation_s3_uri):
    validationInput = TrainingInput(
        s3_data=validation_s3_uri,
        distribution='FullyReplicated',
        s3_data_type='Converse'
    )

    estimator.fit(inputs={"train": trainingInput, "validation": validationInput}) # inputs must be called "train" and "validation", do not change
else:
    estimator.fit(inputs={"train": trainingInput})
```

## Indicazioni di ottimizzazione degli iperparametri
<a name="nova-model-hyperparameter"></a>

Il fine-tuning di un modello linguistico di grandi dimensioni (LLM, Large Language Model) Nova richiede un’attenta selezione degli iperparametri. Sebbene questa sezione spieghi la struttura e i componenti di base della ricetta, l’ottimizzazione degli iperparametri per un caso d’uso specifico richiede spesso ulteriori indicazioni. Per consigli completi sulla selezione degli iperparametri, sulle best practice e sulle strategie di ottimizzazione, consulta [Selecting hyperparameters](https://docs.aws.amazon.com//nova/latest/userguide/customize-fine-tune-hyperparameters.html). Questa risorsa fornisce indicazioni dettagliate sulla selezione dei tassi di apprendimento, sulle dimensioni dei batch, sulle epoch di formazione e su altri parametri critici appropriati in base alle caratteristiche del set di dati e agli obiettivi di addestramento. È consigliabile consultare questa guida durante il fine-tuning della configurazione di una ricetta per ottenere prestazioni ottimali del modello.

Per dettagli sui valori minimo, massimo e predefinito per le epoch, il tasso di apprendimento e le fasi di riscaldamento dell’apprendimento, consulta [Hyperparameters for Understanding models](https://docs.aws.amazon.com//nova/latest/userguide/fine-tune-hyperparameters-understanding-models.html).

**Modifiche comuni alle ricette**

Ecco alcune modifiche comuni alle ricette in base a casi d’uso specifici:
+ **Per set di dati di dimensioni ridotte (< 1.000 esempi)**

  ```
  training_config:
      max_epochs: 2  # More passes through a smaller dataset
  model:
      hidden_dropout: 0.1  # Increase regularization
      weight_decay: 0.01   # Increase regularization
  ```
+ **Per efficienza con calcolo limitato**

  ```
  peft:
      peft_scheme: "lora"
      lora_tuning:
  ```
+ **Per ottimizzazione di istruzioni complesse**

  ```
  optim:
      lr: 5e-6  # Lower learning rate for more stable learning
      sched:
          warmup_steps: 100  # Longer warmup for stability
  ```