

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

# Configurazione generale
<a name="sagemaker-hyperpod-recipes-general-configuration"></a>

Il file config.yaml specifica la ricetta di addestramento e il cluster. Include anche configurazioni di runtime come le variabili di ambiente per il job di addestramento.

```
defaults:
  - _self_
  - cluster: slurm 
  - recipes: training/llama/hf_llama3_8b_seq8192_gpu
instance_type: p5.48xlarge
git:
  repo_url_or_path: null
  branch: null
  commit: null
  entry_script: null
  token: null
env_vars:
  NCCL_DEBUG: WARN
```

Puoi modificare i parametri seguenti in `config.yaml`:

1. `defaults`: specifica le impostazioni predefinite, ad esempio il cluster predefinito o le ricette predefinite.

1. `instance_type`: modifica il tipo di istanza Amazon EC2 in modo che corrisponda al tipo di istanza che stai utilizzando.

1. `git`: Specificate la posizione dell'archivio degli adattatori di SageMaker HyperPod ricette per il processo di formazione.

1. `env_vars`: puoi specificare le variabili di ambiente da passare al job di addestramento al runtime. Ad esempio, puoi regolare il livello di registrazione di log di NCCL specificando la variabile di ambiente NCCL\$1DEBUG.

La ricetta è la configurazione principale che definisce l’architettura del job di addestramento. Questo file include molte informazioni importanti per il tuo job di addestramento, come le seguenti:
+ Se utilizzare la parallelizzazione del modello
+ L’origine dei tuoi set di dati
+ Addestramento di precisione misto
+ Configurazioni relative ai checkpoint

Puoi utilizzare le ricette così come sono. Oppure, puoi utilizzare le informazioni seguenti per modificarle.

## run
<a name="run"></a>

Di seguito sono riportate le informazioni di base per l’esecuzione del job di addestramento.

```
run:
  name: llama-8b
  results_dir: ${base_results_dir}/${.name}
  time_limit: "6-00:00:00"
  model_type: hf
```

1. `name`: specifica il nome del job di addestramento nel file di configurazione.

1. `results_dir`: puoi specificare la directory in cui vengono archiviati i risultati del job di addestramento.

1. `time_limit`: puoi impostare un tempo massimo di addestramento per il job di addestramento per evitare che occupi troppo a lungo le risorse hardware.

1. `model_type`: puoi specificare il tipo di modello che stai utilizzando. Ad esempio, è possibile specificare `hf` se il modello proviene da HuggingFace.

## exp\$1manager
<a name="exp-manager"></a>

exp\$1manager configura l’esperimento. Con exp\$1manager, puoi specificare campi come la directory di output o le impostazioni del checkpoint. Di seguito è riportato un esempio su come configurare exp\$1manager.

```
exp_manager:
  exp_dir: null
  name: experiment
  create_tensorboard_logger: True
```

1. `exp_dir`: la directory degli esperimenti include l’output standard e i file di errore standard per il job di addestramento. Per impostazione predefinita, utilizza la directory corrente.

1. `name`: il nome dell’esperimento utilizzato per identificare l’esperimento in exp\$1dir.

1. `create_tensorboard_logger`: `False` Specificare `True` o abilitare o disabilitare il TensorBoard logger.

## Checkpoint
<a name="checkpointing"></a>

Ecco i tre tipi di checkpoint supportati:
+ Checkpoint automatici
+ Checkpoint manuali
+ Checkpoint completo

### Checkpoint automatici
<a name="auto-checkpointing"></a>

Se stai salvando o caricando checkpoint gestiti automaticamente dall'adattatore per SageMaker HyperPod ricette, puoi abilitarli. `auto_checkpoint` Per abilitare `auto_checkpoint`, imposta `enabled` su `True`. Puoi utilizzare i checkpoint automatici sia per l’addestramento che per il fine-tuning. Puoi utilizzare i checkpoint automatici sia per i file system condivisi che per Amazon S3.

```
exp_manager
  checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/
  auto_checkpoint:
    enabled: True
```

Il checkpoint automatico sta salvando local\$1state\$1dict in modo asincrono con un intervallo di salvataggio ottimale calcolato automaticamente.

**Nota**  
Con questa modalità, i checkpoint salvati automaticamente non supportano il re-sharding tra le esecuzioni di addestramento. Per riprendere dall’ultimo checkpoint salvato automaticamente, è necessario mantenere gli stessi gradi di sharding. Non è necessario specificare informazioni aggiuntive per la ripresa automatica.

### Checkpoint manuali
<a name="manual-checkpointing"></a>

Puoi modificare `checkpoint_callback_params` per salvare in modo asincrono un checkpoint intermedio in shared\$1state\$1dict. Ad esempio, puoi specificare la configurazione seguente per abilitare i checkpoint con shard dopo ogni dieci fasi e mantenere gli ultimi tre checkpoint.

I checkpoint con shard consentono di modificare i gradi di sharding tra le esecuzioni di addestramento e di caricare il checkpoint impostando `resume_from_checkpoint`.

**Nota**  
Se si tratta di un fine-tuning PEFT, i checkpoint con shard non supportano Amazon S3.
I checkpoint automatici e manuali si escludono a vicenda.
Sono consentite solo modifiche ai gradi di sharding e di replica FSDP.

```
exp_manager:
  checkpoint_callback_params:
    # Set save_top_k = 0 to disable sharded checkpointing
    save_top_k: 3
    every_n_train_steps: 10
    monitor: "step"
    mode: "max"
    save_last: False
  resume_from_checkpoint: ${recipes.exp_manager.exp_dir}/checkpoints/
```

Per ulteriori informazioni sui checkpoint, consulta [Checkpointing con SMP](model-parallel-core-features-v2-checkpoints.md).

### Checkpoint completo
<a name="full-checkpointing"></a>

Il checkpoint full\$1state\$1dict esportato può essere utilizzato per l’inferenza o il fine-tuning. Puoi caricare un checkpoint completo con hf\$1model\$1name\$1or\$1path. In questa modalità, vengono salvati solo i pesi del modello.

Per esportare il modello full\$1state\$1dict, puoi impostare i parametri seguenti.

**Nota**  
Attualmente, i checkpoint completi non sono supportati per Amazon S3. Non puoi impostare il percorso S3 per `exp_manager.checkpoint_dir` se stai abilitando i checkpoint completi. Tuttavia, puoi impostare `exp_manager.export_full_model.final_export_dir` su una directory specifica nel tuo file system locale e `exp_manager.checkpoint_dir` su un percorso Amazon S3.

```
exp_manager:
  export_full_model:
    # Set every_n_train_steps = 0 to disable full checkpointing
    every_n_train_steps: 0
    save_last: True
    final_export_dir : null
```

## modello
<a name="model"></a>

Definisci i vari aspetti dell’architettura del modello e del job di addestramento. Sono incluse le impostazioni per la parallelizzazione del modello, la precisione e la gestione dei dati. Di seguito sono riportati i componenti chiave che puoi configurare nella sezione del modello:

### parallelizzazione del modello
<a name="model-parallelism"></a>

Dopo aver specificato la ricetta, definisci il modello che stai addestrando. Puoi anche definire la parallelizzazione del modello. Ad esempio, puoi definire tensor\$1model\$1parallel\$1degree. Puoi abilitare altre funzionalità come l'allenamento con FP8 precisione. Ad esempio, puoi addestrare un modello con la parallelizzazione tensoriale e la parallelizzazione contestuale:

```
model:
  model_type: llama_v3
  # Base configs
  train_batch_size: 4
  val_batch_size: 1
  seed: 12345
  grad_clip: 1.0

  # Model parallelism
  tensor_model_parallel_degree: 4
  expert_model_parallel_degree: 1
  context_parallel_degree: 2
```

Per comprendere meglio le diverse tecniche di parallelizzazione del modello, puoi fare riferimento ai seguenti approcci:

1. [Parallelizzazione tensoriale](model-parallel-core-features-v2-tensor-parallelism.md)

1. [Parallelizzazione degli esperti](model-parallel-core-features-v2-expert-parallelism.md)

1. [Parallelizzazione del contesto](model-parallel-core-features-v2-context-parallelism.md)

1. [Parallelizzazione dei dati sottoposti a sharding](model-parallel-core-features-v2-sharded-data-parallelism.md)

### FP8
<a name="fp8"></a>

Per abilitare FP8 (precisione a virgola mobile a 8 bit), puoi specificare la configurazione FP8 relativa nell'esempio seguente:

```
model:
  # FP8 config
  fp8: True
  fp8_amax_history_len: 1024
  fp8_amax_compute_algo: max
```

È importante notare che il formato FP8 dei dati è attualmente supportato solo sul tipo di istanza P5. Se utilizzi un tipo di istanza precedente, come P4, disabilita la FP8 funzionalità per il processo di addestramento del modello. Per ulteriori informazioni su FP8, consulta[Addestramento di precisione misto](model-parallel-core-features-v2-mixed-precision.md).

### data
<a name="data"></a>

Puoi specificare i set di dati personalizzati per il job di addestramento aggiungendo i percorsi dei dati nei dati. Il modulo dati del nostro sistema supporta i seguenti formati dei dati:

1. JSON

1. JSONGZ (JSON compresso)

1. ARROW

Tuttavia, la preparazione del set di dati pretokenizzato è una tua responsabilità. Se sei un utente esperto e hai requisiti specifici, puoi anche implementare e integrare un modulo dati personalizzato. Per ulteriori informazioni sui HuggingFace set di dati, vedere [Datasets](https://huggingface.co/docs/datasets/v3.1.0/en/index).

```
model:
  data:
    train_dir: /path/to/your/train/data
    val_dir: /path/to/your/val/data
    dataset_type: hf
    use_synthetic_data: False
```

Puoi specificare come stai addestrando il modello. Per impostazione predefinita, la ricetta utilizza il preaddestramento anziché il fine-tuning. L’esempio seguente configura la ricetta per eseguire un processo di fine-tuning con LoRA (Low-Rank Adaptation).

```
model:
  # Fine tuning config
  do_finetune: True
  # The path to resume from, needs to be HF compatible
  hf_model_name_or_path: null
  hf_access_token: null
  # PEFT config
  peft:
    peft_type: lora
    rank: 32
    alpha: 16
    dropout: 0.1
```

[Per informazioni sulle ricette, vedi SageMaker HyperPod ricette.](https://github.com/aws/sagemaker-hyperpod-recipes)