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à.
Parallelizzazione tensoriale
La parallelizzazione tensoriale è un tipo di parallelizzazione del modello in cui pesi, gradienti e stati dell’ottimizzatore specifici del modello vengono suddivisi tra i dispositivi. A differenza della parallelizzazione delle pipeline, che mantiene intatti i singoli pesi ma partiziona il set di pesi, gradienti o l’ottimizzatore tra i dispositivi, la parallelizzazione tensoriale esegue lo sharding dei pesi individuali. Ciò comporta in genere il calcolo distribuito di operazioni, moduli o livelli specifici del modello.
Il parallelismo tensoriale è necessario nei casi in cui un singolo parametro consuma la maggior parte della memoria della GPU (ad esempio tabelle di incorporamento di grandi dimensioni con un vocabolario di grandi dimensioni un livello softmax di grandi dimensioni con un numero elevato di classi). In questo caso, trattare questo tensore o operazione di grandi dimensioni come un’unità atomica è inefficiente e impedisce l’equilibrio del carico di memoria.
SMP v2 si integra con Transformer Engine
In pratica, la parallelizzazione tensoriale è particolarmente utile nei seguenti scenari:
-
In caso di addestramento con contesti di notevole lunghezza, poiché questo conduce a un’elevata memoria di attivazione con il solo FSDP.
-
In caso di addestramento con cluster molto grandi, in cui la dimensione globale del batch supera i limiti desiderati.
Modelli di Hugging Face Transformers compatibili con la parallelizzazione tensoriale SMP
SMP v2 offre attualmente il supporto per la parallelizzazione tensoriale per i seguenti modelli di Hugging Face Transformers.
-
GPT-NeoX
-
Llama 2
-
Llama 3
Per la configurazione di riferimento relativa all’applicazione della parallelizzazione tensoriale su questi modelli, vedi Utilizza le seguenti sezioni per saperne di più sul parallelismo dei modelli e sulla libreria parallela di modelli SageMaker..
Configurazione della parallelizzazione tensoriale
Per tensor_parallel_degree, seleziona un valore per il grado di parallelizzazione tensoriale. Il valore deve dividere equamente il numero di nel cluster. GPUs Ad esempio, per suddividere il modello utilizzando un'istanza con 8 GPUs, scegliete 2, 4 o 8. È consigliabile iniziare con un numero piccolo e aumentarlo gradualmente fino a quando il modello risulta adatto alla memoria della GPU.
I seguenti frammenti di codice mostrano come aggiungere il modulo di inizializzazione SMP torch.sagemaker.init() allo script di addestramento e impostare il dizionario di configurazione di SMP in formato JSON per il programma di avvio del job di addestramento seguendo il processo in due fasi introdotto in Utilizzo della libreria SageMaker Model Parallelism v2. Non è necessario apportare modifiche al PyTorch modello o alla configurazione PyTorch FSDPtensor_parallel_degree e random_seed, vedi Parametri di configurazione delle funzionalità principali di SMP v2.
Configurazione di SMP
{ "tensor_parallel_degree": 8, "random_seed": 0 }
Nello script di addestramento
Esegui l’inizializzazione con torch.sagemaker.init() per attivare SMP v2 ed eseguire il wrapping del modello con l’API torch.sagemaker.transform.
import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model)
Salvataggio e caricamento dei checkpoint Hugging Face Transformers
Dopo aver trasformato un modello, la libreria SMP ne modifica il dizionario di stato (state_dict). Ciò significa che il modello diventa incompatibile con le funzionalità di checkpoint originali di Hugging Face Transformers. Per gestire ciò, la libreria SMP consente di APIs salvare i checkpoint da un modello trasformato nella rappresentazione Hugging Face Transformer torch.sagemaker.transform e l'API di caricare un checkpoint del modello Hugging Face Transformer per la messa a punto.
Per ulteriori informazioni sul salvataggio dei checkpoint durante l’utilizzo della funzionalità di parallelizzazione tensoriale di SMP v2, vedi Checkpointing con SMP.
Per ulteriori informazioni sull’esecuzione del fine-tuning di un modello che applica la funzionalità di parallelizzazione tensoriale di SMP v2, vedi Fine-tuning.