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à.
Il parallelismo tensoriale è un tipo di parallelismo del modello in cui pesi, gradienti e stati dell'ottimizzatore specifici del modello vengono suddivisi tra i dispositivi. A differenza del parallelismo delle pipeline, che mantiene intatti i singoli pesi ma suddivide l'insieme di pesi, gradienti o ottimizzatori tra i dispositivi, il parallelismo tensoriale suddivide i 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 per l'implementazione del parallelismo tensoriale e funziona su FSDP.
In pratica, il parallelismo tensoriale è particolarmente utile nei seguenti scenari.
-
Quando ci si allena con contesti di lunga durata, in quanto ciò porta a un'elevata memoria di attivazione con il solo FSDP.
-
Durante l'addestramento con cluster molto grandi in cui la dimensione globale del batch supera i limiti desiderati.
Modelli Hugging Face Transformer compatibili con il parallelismo tensoriale SMP
SMP v2 offre attualmente il supporto per il parallelismo tensoriale per i seguenti modelli di trasformatori Hugging Face.
-
GPT-Neox
-
Lama 2
-
Lama 3
Per la configurazione di riferimento per l'applicazione del parallelismo tensoriale su questi modelli, vedere. Consigli per la configurazione
Configurare il parallelismo tensoriale
Pertensor_parallel_degree
, si seleziona un valore per il grado di parallelismo tensoriale. Il valore deve dividere equamente il numero di GPUs nel cluster. Ad esempio, per suddividere il modello utilizzando un'istanza con 8 GPUs, scegliete 2, 4 o 8. Ti consigliamo di iniziare con un numero piccolo e di aumentarlo gradualmente fino a quando il modello non si adatta alla memoria della GPU.
I seguenti frammenti di codice mostrano come aggiungere il modulo di inizializzazione SMP allo script di formazione e torch.sagemaker.init()
impostare il dizionario di configurazione SMP in formato JSON per Training Job Launcher seguendo il processo in due fasi introdotto in. Usa la libreria di parallelismo dei SageMaker modelli v2 Non è necessario apportare modifiche al modello o alla configurazione FSDP. PyTorch PyTorch tensor_parallel_degree
e random_seed
, vedi Parametri di configurazione delle funzionalità principali di SMP v2.
Configurazione SMP
{
"tensor_parallel_degree": 8,
"random_seed": 0
}
Nel tuo script di allenamento
Inizializza con torch.sagemaker.init()
per attivare SMP v2 e avvolgi il tuo 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 Transformer
Dopo che la libreria SMP ha trasformato un modello, modifica il dizionario di stato () del modello. state_dict
Ciò significa che il modello diventa incompatibile con le funzionalità di checkpoint originali di Hugging Face Transformer. 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 parallelismo tensoriale di SMP v2, vedere. Checkpointing tramite SMP
Per ulteriori informazioni sulla messa a punto di un modello che applica la funzionalità di parallelismo tensoriale di SMP v2, vedere. Ottimizzazione