Introduzione al parallelismo dei modelli - 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à.

Introduzione al parallelismo dei modelli

Il parallelismo dei modelli è un metodo di formazione distribuito in cui il modello di deep learning (DL) è suddiviso su più istanze. GPUs La SageMaker model parallel library v2 (SMPv2) è compatibile con le funzionalità PyTorch APIs native. In questo modo è comodo adattare lo script di formazione PyTorch Fully Sharded Data Parallel (FSDP) alla piattaforma SageMaker Training e sfruttare il miglioramento delle prestazioni offerto dalla v2. SMP

Questa pagina introduttiva fornisce una panoramica di alto livello sul parallelismo dei modelli e una descrizione di come può aiutare a superare i problemi che sorgono durante l'addestramento di modelli di deep learning (DL), che in genere sono di dimensioni molto grandi. Fornisce inoltre esempi di ciò che offre la libreria parallela del SageMaker modello per aiutare a gestire le strategie parallele dei modelli e il consumo di memoria.

Cos'è il parallelismo dei modelli?

L'aumento delle dimensioni dei modelli di deep learning (livelli e parametri) consente di ottenere una maggiore precisione per attività complesse come la visione artificiale e l'elaborazione del linguaggio naturale. Tuttavia, esiste un limite alla dimensione massima del modello che è possibile inserire nella memoria di un singolo modello. GPU Durante l'addestramento dei modelli DL, le limitazioni di GPU memoria possono essere ostacolate nei seguenti modi:

  • Limitano le dimensioni del modello che è possibile addestrare, poiché l'ingombro di memoria di un modello si ridimensiona proporzionalmente al numero di parametri.

  • Limitano la dimensione per GPU lotto durante l'addestramento, riducendo l'GPUutilizzo e l'efficienza della formazione.

Per superare i limiti associati all'addestramento di un modello su un singoloGPU, SageMaker fornisce la libreria parallela di modelli per aiutare a distribuire e addestrare i modelli DL in modo efficiente su più nodi di calcolo. Inoltre, con la libreria, è possibile ottenere una formazione distribuita ottimizzata utilizzando dispositivi EFA supportati, che migliorano le prestazioni della comunicazione tra i nodi con bassa latenza, velocità effettiva elevata e bypass del sistema operativo.

Stima i requisiti di memoria prima di utilizzare il parallelismo dei modelli

Prima di utilizzare la libreria SageMaker model parallel, considera quanto segue per avere un'idea dei requisiti di memoria necessari per l'addestramento di modelli DL di grandi dimensioni.

Per un processo di formazione che utilizza la precisione mista automatica come float16 (FP16) or bfloat16 (BF16) e gli ottimizzatori Adam, la GPU memoria richiesta per parametro è di circa 20 byte, che possiamo suddividere come segue:

  • Un BF16 parametro FP16 or ~ 2 byte

  • Un BF16 gradiente FP16 or ~ 2 byte

  • Uno stato di FP32 ottimizzazione di ~ 8 byte basato sugli ottimizzatori Adam

  • Una FP32 copia del parametro ~ 4 byte (necessaria per il funzionamento (OAoptimizer apply))

  • Una FP32 copia di gradient ~ 4 byte (necessaria per il funzionamento OA)

Anche per un modello DL relativamente piccolo con 10 miliardi di parametri, può richiedere almeno 200 GB di memoria, che è molto più grande della memoria tipica (ad esempio, NVIDIA A100 con 40 GB/80 GB di GPU memoria) disponibile su una singola unità. GPU Oltre ai requisiti di memoria per gli stati del modello e dell'ottimizzatore, esistono altri utilizzi di memoria, come le attivazioni generate nel forward pass. La memoria richiesta può essere molto superiore a 200 GB.

Per la formazione distribuita, ti consigliamo di utilizzare istanze Amazon EC2 P4 e P5 con Tensor Core rispettivamente NVIDIA A100 e H100. GPUs Per ulteriori dettagli su specifiche quali CPU core, RAM volume di storage collegato e larghezza di banda di rete, consulta la sezione Accelerated Computing nella pagina Amazon EC2 Instance Types. Per esempio i tipi supportati dalla SMP v2, consulta. Tipi di istanze supportati

Anche con le istanze di elaborazione accelerata, i modelli con circa 10 miliardi di parametri come Megatron-LM e T5, e i modelli ancora più grandi con centinaia di miliardi di parametri come GPT -3, non possono inserire repliche di modelli in ogni dispositivo. GPU

In che modo la libreria utilizza il parallelismo dei modelli e le tecniche di risparmio della memoria

La libreria comprende vari tipi di funzionalità di parallelismo dei modelli e funzionalità di risparmio di memoria come il partizionamento dello stato dell'ottimizzatore, il checkpoint di attivazione e l'offload dell'attivazione. Tutte queste tecniche possono essere combinate per addestrare in modo efficiente modelli di grandi dimensioni composti da centinaia di miliardi di parametri.

Parallelismo dei dati condivisi

Il parallelismo dei dati condivisi è una tecnica di addestramento distribuito che consente di risparmiare memoria che suddivide lo stato di un modello (parametri del modello, gradienti e stati dell'ottimizzatore) all'interno di un gruppo parallelo di dati. GPUs

SMPv2 implementa il parallelismo dei dati condivisi e lo estende per implementare la strategia di sharding ibrido sensibile alla scala FSDP discussa nel post del blog Near-linear scaling of gigantic-model training on. AWS

Puoi applicare il parallelismo dei dati frammentati al tuo modello come strategia autonoma. Inoltre, se utilizzi le GPU istanze più performanti dotate di NVIDIA A100 Tensor Core ml.p4d.24xlarge e GPUsml.p4de.24xlarge, puoi sfruttare la maggiore velocità di addestramento derivante dalle AllGather operazioni offerte dalla libreria data parallelism (). SageMaker SMDDP

Per approfondire il parallelismo dei dati condivisi e imparare a configurarlo o utilizzare una combinazione del parallelismo dei dati condivisi con altre tecniche come il parallelismo tensoriale e l'addestramento di precisione mista, vedi. Parallelismo ibrido dei dati frammentati

Parallelismo per esperti

SMPv2 si integra con NVIDIAMegatron per implementare il parallelismo esperto oltre al supporto per la versione nativa. PyTorch FSDP APIs È possibile mantenere il codice di PyTorch FSDP formazione così com'è e applicare il parallelismo SMP esperto per addestrare i modelli Mixture of Experts (MoE) all'interno. SageMaker

Un modello MoE è un tipo di modello di trasformatore composto da più esperti, ciascuno costituito da una rete neurale, in genere una rete feed-forward (). FFN Una rete gate chiamata router determina quali token vengono inviati a quale esperto. Questi esperti sono specializzati nell'elaborazione di aspetti specifici dei dati di input, per consentire al modello di addestrarsi più rapidamente, ridurre i costi di elaborazione e ottenere al contempo la stessa qualità delle prestazioni del modello ad alta densità equivalente. Inoltre, il parallelismo esperto è una tecnica di parallelismo che consente di suddividere gli esperti di un modello MoE tra dispositivi. GPU

Per informazioni su come addestrare i modelli MoE con la v2, consulta. SMP Parallelismo esperto

Parallelismo tensoriale

Il parallelismo tensoriale divide singoli livelli o nn.Modules tra dispositivi per funzionare in parallelo. La figura seguente mostra l'esempio più semplice di come la SMP libreria divide un modello con quattro livelli per ottenere un parallelismo tensoriale bidirezionale (). "tensor_parallel_degree": 2 Nella figura seguente, le notazioni per model parallel group, tensor parallel group e data parallel group MP_GROUP sonoTP_GROUP, DP_GROUP e rispettivamente. I livelli di ogni replica del modello sono divisi in due e distribuiti in due. GPUs La libreria gestisce la comunicazione tra le repliche del modello distribuite dai tensori.

L'esempio più semplice di come la SMP libreria divide un modello con quattro livelli per ottenere un parallelismo tensoriale bidirezionale («tensor_parallel_degree»: 2).

Per approfondire il parallelismo tensoriale e altre funzionalità di risparmio di memoria e per imparare a impostare una combinazione delle funzionalità principali, consulta. PyTorch Parallelismo tensoriale

Attivazione, checkpoint e offload

Per risparmiare GPU memoria, la libreria supporta il checkpoint di attivazione per evitare di archiviare le attivazioni interne nella GPU memoria per i moduli specificati dall'utente durante il passaggio di inoltro. La libreria ricalcola queste attivazioni durante il passaggio all'indietro. Inoltre, con l'offload di attivazione, scarica in memoria le attivazioni memorizzate e le recupera GPU durante il passaggio all'indietro per ridurre ulteriormente l'ingombro della CPU memoria di attivazione. Per ulteriori informazioni su come utilizzare queste funzionalità, consulta e. Checkpoint di attivazione Offload di attivazione

Scelta delle tecniche giuste per il modello

Per ulteriori informazioni sulla scelta delle tecniche e delle configurazioni corrette, vedereSageMaker best practice per il parallelismo dei modelli distribuiti.