Configurazione generale - Amazon SageMaker AI

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

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.

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

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

  4. 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_DEBUG.

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

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.

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

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

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

exp_manager

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

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.

  2. name: il nome dell’esperimento utilizzato per identificare l’esperimento in exp_dir.

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

Checkpoint

Ecco i tre tipi di checkpoint supportati:

  • Checkpoint automatici

  • Checkpoint manuali

  • Checkpoint completo

Checkpoint automatici

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

Puoi modificare checkpoint_callback_params per salvare in modo asincrono un checkpoint intermedio in shared_state_dict. 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.

Checkpoint completo

Il checkpoint full_state_dict esportato può essere utilizzato per l’inferenza o il fine-tuning. Puoi caricare un checkpoint completo con hf_model_name_or_path. In questa modalità, vengono salvati solo i pesi del modello.

Per esportare il modello full_state_dict, 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

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

Dopo aver specificato la ricetta, definisci il modello che stai addestrando. Puoi anche definire la parallelizzazione del modello. Ad esempio, puoi definire tensor_model_parallel_degree. 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:

FP8

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, consultaAddestramento di precisione misto.

data

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

  2. JSONGZ (JSON compresso)

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

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.