SageMaker best practice per il parallelismo dei modelli distribuiti - Amazon SageMaker

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 trovare il miglior punto di partenza per applicare le tecniche di formazione distribuite fornite da SMP v2, consultate il seguente elenco. Ogni voce dell'elenco illustra i vantaggi dell'utilizzo di e i potenziali Caratteristiche principali della libreria di parallelismo dei SageMaker modelli v2 compromessi.

Consigli per la configurazione

Questa sezione fornisce linee guida su come decidere le migliori configurazioni di modello per una produttività ottimale con requisiti globali di dimensione dei batch.

Innanzitutto, consigliamo le seguenti configurazioni indipendentemente dalle dimensioni del modello.

  1. Utilizzate il tipo di istanza più potente che potete usare.

  2. Attiva sempre la precisione mista, poiché offre vantaggi sostanziali in termini di prestazioni e riduzione della memoria. Ti consigliamo di utilizzarla bfloat16 in quanto è più precisa difloat16.

  3. Attiva la libreria di parallelismo dei dati SageMaker distribuiti (invece di usare NCCL) ogni volta che è applicabile, come mostrato in. Compatibilità con la SMDDP libreria ottimizzata per AWS infrastruttura Un'eccezione riguarda i casi tensor-parallelism-only d'uso (e). hybrid_shard_degree = 1 tensor_paralle_degree > 1

  4. Se il tuo modello ha più di circa 60 miliardi di parametri, ti consigliamo di utilizzarloInizializzazione ritardata dei parametri. È inoltre possibile utilizzare l'inizializzazione ritardata dei parametri per accelerare l'inizializzazione di qualsiasi modello.

  5. Ti consigliamo di abilitare. Checkpoint di attivazione

A seconda delle dimensioni del modello, ti consigliamo di iniziare con le seguenti indicazioni.

  1. Usa il parallelismo dei dati condivisi.

    1. A seconda della dimensione del batch che intendi inserire nella memoria della GPU, scegli il grado di sharded data parallel appropriato. 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 indica che si stanno verificando operazioni di svuotamento della cache, si consiglia di aumentare il grado di sharding.

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

    3. Puoi sperimentare con l'offload dell'attivazione. A seconda degli scenari, può soddisfare le esigenze di memoria senza dover aumentare il grado di sharding, il che significa meno comunicazione.

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

    1. Durante l'addestramento su cluster di grandi dimensioni, con il solo FSDP la dimensione globale del batch può diventare troppo grande, 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, se hai 256 nodi e la lunghezza della sequenza è 4096, anche una dimensione del batch di 1 per GPU porta a una dimensione globale del batch di 8 milioni di token. Tuttavia, quando si utilizza il parallelismo tensoriale con grado 2 e la dimensione del batch di 1 per gruppo parallelo di tensori, questa diventa 1/2 dimensione del batch per GPU, il che si traduce in 4 milioni di token.

    2. Quando ci si allena con contesti di lunghezza prolungata, ad esempio 8k, la memoria di attivazione di 16k può diventare molto elevata. FSDP non divide le attivazioni e le attivazioni possono causare l'esaurimento della memoria delle GPU. 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 torch.sagemaker.transform e addestrando ml.p4d.24xlarge istanze con lunghezza di sequenza 4096 e precisione mista (FP16 o BF16).

Modello Dimensioni del modello (il numero di parametri del modello) Il numero di istanze Grado parallelo di dati partizionati Grado di parallelo tensoriale Checkpoint di attivazione Offload di attivazione Dimensione batch
Lama 2 7B 1 8 1 TRUE FALSE 4
70 B 32 256 1 TRUE FALSE 2
175 B 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 parallelismo tensoriale.

Monitoraggio e registrazione di un processo di formazione utilizzando la SageMaker console e Amazon CloudWatch

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

  1. Nel pannello di navigazione a sinistra scegli Addestramento.

  2. Scegliere 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 Monitora e analizza i lavori di formazione utilizzando Amazon CloudWatch Metrics.

Autorizzazioni

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: