SageMaker best practice per il parallelismo dei modelli distribuiti - 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à.

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.

  1. Utilizza il tipo di istanza più potente disponibile.

  2. 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 a float16.

  3. 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 = 1 tensor_paralle_degree > 1

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

  5. Ti consigliamo di abilitare Checkpoint di attivazione.

A seconda delle dimensioni del modello, ti consigliamo di iniziare attenendoti alle indicazioni fornite di seguito.

  1. Utilizza la parallelizzazione dei dati sottoposti a sharding.

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

    2. Determina world_size in base alla dimensione massima del batch locale e alla dimensione del batch globale richiesta, se presente.

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

  2. Utilizza contemporaneamente il parallelismo dei dati frammentati di PyTorch FSDP e il parallelismo tensoriale di SMP v2, come introdotto in. Parallelizzazione tensoriale

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

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

Per monitorare metriche a livello di sistema come l'utilizzo della memoria CPU, l'utilizzo della memoria GPU e l'utilizzo della GPU, utilizza la visualizzazione fornita tramite la console AI. SageMaker

  1. Nel pannello di navigazione a sinistra scegli Addestramento.

  2. Scegli Processi di addestramento.

  3. Nel riquadro principale, scegli il nome del processo di addestramento per il quale desideri visualizzare ulteriori dettagli.

  4. Sfoglia il pannello principale e trova la sezione Monitora per vedere la visualizzazione automatizzata.

  5. 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: