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à.
SageMaker best practice per il parallelismo dei modelli distribuiti
Utilizza le seguenti linee guida quando esegui un processo di formazione distribuito con la SageMaker model parallel library v2 (SMP v2).
Configurazione della configurazione corretta per la formazione distribuita
Per stimare e individuare il miglior punto di partenza per applicare le tecniche di addestramento distribuito fornite da SMP v2, consulta l’elenco riportato di seguito. Ogni voce dell’elenco illustra i vantaggi e i potenziali compromessi legati all’utilizzo di Caratteristiche principali della libreria di parallelismo dei SageMaker modelli v2.
Consigli per la configurazione
In questa sezione vengono fornite linee guida su come stabilire le migliori configurazioni di modello ottenere per un throughput ottimale con requisiti globali relativi alle dimensioni dei batch.
Innanzitutto, indipendentemente dalle dimensioni del modello, consigliamo le configurazioni indicate di seguito.
-
Utilizza il tipo di istanza più potente disponibile.
-
Attiva sempre la precisione mista, poiché offre vantaggi sostanziali in termini di prestazioni e riduzione della memoria. Ti consigliamo di utilizzare
bfloat16, che assicura maggiore precisione rispetto afloat16. -
Attiva la libreria di parallelismo dei dati SageMaker distribuiti (invece di usare NCCL) ogni volta che è applicabile, come mostrato in. Compatibilità con la libreria SMDDP ottimizzata per l'infrastruttura AWS Un'eccezione riguarda i casi tensor-parallelism-only d'uso (e).
hybrid_shard_degree = 1tensor_paralle_degree > 1 -
Se il tuo modello include più di 60 miliardi di parametri circa, ti consigliamo di utilizzare Inizializzazione ritardata dei parametri. È inoltre possibile ricorrere all’inizializzazione ritardata dei parametri per velocizzare l’inizializzazione di qualsiasi modello.
-
Ti consigliamo di abilitare Checkpoint di attivazione.
A seconda delle dimensioni del modello, ti consigliamo di iniziare attenendoti alle indicazioni fornite di seguito.
-
Utilizza la parallelizzazione dei dati sottoposti a sharding.
-
A seconda della dimensione del batch che intendi inserire nella memoria della GPU, scegli il grado di parallelizzazione dei dati sottoposti a sharding. Normalmente, è consigliabile iniziare con il grado più basso per inserire il modello nella memoria della GPU e ridurre al minimo il sovraccarico derivante dalla comunicazione di rete. Se viene visualizzato un avviso che segnala svuotamenti della cache, ti consigliamo di aumentare il grado di sharding.
-
Determina
world_sizein base alla dimensione massima del batch locale e alla dimensione del batch globale richiesta, se presente. -
Puoi provare ad applicare l’offload dell’attivazione. A seconda degli scenari, questo può soddisfare le esigenze di memoria senza dover aumentare il grado di sharding, riducendo così la comunicazione.
-
-
Utilizza contemporaneamente il parallelismo dei dati frammentati di PyTorch FSDP e il parallelismo tensoriale di SMP v2, come introdotto in. Parallelizzazione tensoriale
-
Quando si esegue l’addestramento su cluster di grandi dimensioni con il solo FSDP, la dimensione globale del batch può diventare eccessiva, causando problemi di convergenza per il modello. In genere, la maggior parte dei lavori di ricerca mantiene la dimensione del batch al di sotto dei 4 milioni di token. In questo caso, puoi risolvere il problema componendo PyTorch FSDP con il parallelismo tensoriale di SMP v2 per ridurre la dimensione del batch.
Ad esempio, in presenza di 256 nodi e una lunghezza della sequenza pari a 4096, anche se la dimensione del batch è 1 per GPU, la dimensione globale del batch sarà di 8 milioni di token. Tuttavia, quando si utilizza la parallelizzazione tensoriale con grado 2 e la dimensione del batch è 1 per gruppo parallelo di tensori, la dimensione del batch per GPU si dimezza, portando il numero dei token a 4 milioni.
-
In caso di addestramento con contesti di notevole lunghezza, ad esempio 8.000, la memoria di attivazione pari a 16.000 può diventare molto elevata. FSDP non divide le attivazioni e le attivazioni possono causare l'esaurimento della memoria. GPUs In tali scenari, è possibile allenarsi in modo efficiente componendo PyTorch FSDP con il parallelismo tensoriale di SMP v2.
-
Configurazioni di riferimento
Il team di formazione sul parallelismo dei SageMaker modelli fornisce i seguenti punti di riferimento basati su esperimenti con il modello Llama 2 trasformato nel modello di trasformatore SMP utilizzando e addestrando ml.p4d.24xlarge istanze con lunghezza di sequenza 4096 e torch.sagemaker.transform precisione mista (or). FP16 BF16
| Modello | Dimensione del modello (il numero di parametri del modello) | Il numero di istanze | Grado di parallelizzazione dei dati sottoposti a sharding | Grado di parallelizzazione tensoriale | Checkpoint di attivazione | Offload di attivazione | Dimensione batch |
|---|---|---|---|---|---|---|---|
| Llama 2 | 7 MLD | 1 | 8 | 1 | TRUE | FALSE | 4 |
| 70 MLD | 32 | 256 | 1 | TRUE | FALSE | 2 | |
| 175 MLD | 64 | 128 | 4 | TRUE | TRUE | 6 |
È possibile estrapolare le configurazioni precedenti per stimare l’utilizzo della memoria GPU per la configurazione del modello. Ad esempio, se aumenti la lunghezza della sequenza per un modello da 10 miliardi di parametri o aumenti le dimensioni del modello a 20 miliardi, potresti voler ridurre prima la dimensione del batch. Se il modello continua a non adattarsi, prova ad aumentare il grado di parallelizzazione tensoriale.
Monitoraggio e registrazione di un processo di formazione utilizzando la console SageMaker AI e Amazon CloudWatch
-
Nel pannello di navigazione a sinistra scegli Addestramento.
-
Scegli Processi di addestramento.
-
Nel riquadro principale, scegli il nome del processo di addestramento per il quale desideri visualizzare ulteriori dettagli.
-
Sfoglia il pannello principale e trova la sezione Monitora per vedere la visualizzazione automatizzata.
-
Per visualizzare i log dei processi di addestramento , scegli Visualizza log nella sezione Monitora. È possibile accedere ai registri distribuiti dei lavori di formazione relativi al processo di formazione in. CloudWatch Se hai avviato l’addestramento distribuito su più nodi, dovresti vedere più flussi di log con tag nel formato algo-n-1234567890. Il flusso di log algo-1 tiene traccia dei log di addestramento dal nodo principale (0°).
Per ulteriori informazioni, consulta Amazon CloudWatch Metrics per il monitoraggio e l'analisi dei lavori di formazione.
Permissions
Per eseguire un processo di SageMaker formazione con il parallelismo dei modelli, assicurati di disporre delle autorizzazioni giuste nel tuo ruolo IAM, come le seguenti:
-
Da usare FSx per Lustre
, aggiungi. AmazonFSxFullAccess -
Per utilizzare Amazon S3 come canale dati, aggiungi
AmazonS3FullAccess. -
Per utilizzare Docker, creare il tuo container e inviarlo ad Amazon ECR, aggiungi
AmazonEC2ContainerRegistryFullAccess. -
Per avere accesso completo all'intera suite di funzionalità di SageMaker intelligenza artificiale, aggiungi
AmazonSageMakerFullAccess.