Introduzione alla libreria di parallelismo dei dati SageMaker 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à.

Introduzione alla libreria di parallelismo dei dati SageMaker distribuiti

La libreria SageMaker Distributed Data Parallelism (SMDDP) è una libreria di comunicazione collettiva che migliora le prestazioni di calcolo dell'addestramento parallelo di dati distribuiti. La libreria SMDDP affronta il sovraccarico di comunicazione delle principali operazioni di comunicazione collettiva offrendo quanto segue.

  1. La libreria offre offerte AllReduce ottimizzate per. AWSAllReduceè un'operazione chiave utilizzata per sincronizzare i gradienti tra le GPU alla fine di ogni iterazione di addestramento durante l'addestramento distribuito dei dati.

  2. La libreria offre offerte ottimizzate per. AllGather AWSAllGatherè un'altra operazione chiave utilizzata nello sharded data parallel training, una tecnica di parallelismo dei dati efficiente in termini di memoria offerta da librerie popolari come la libreria SageMaker Model Parallelism (SMP), DeepSpeed Zero Redundancy Optimizer (Zero) e Fully Sharded Data Parallelism (FSDP). PyTorch

  3. La libreria esegue node-to-node comunicazioni ottimizzate utilizzando appieno l'infrastruttura di AWS rete e la topologia dell'istanza Amazon EC2.

La libreria SMDDP può aumentare la velocità di formazione offrendo un miglioramento delle prestazioni man mano che si ridimensiona il cluster di formazione, con un'efficienza di scalabilità quasi lineare.

Nota

Le librerie di formazione SageMaker distribuite sono disponibili tramite i contenitori di AWS deep learning PyTorch e Hugging Face all'interno della piattaforma Training. SageMaker Per utilizzare le librerie, è necessario utilizzare SageMaker Python SDK o le SageMaker API tramite SDK for Python (Boto3) o. AWS Command Line Interface In tutta la documentazione, le istruzioni e gli esempi si concentrano su come utilizzare le librerie di formazione distribuite con SageMaker Python SDK.

Operazioni di comunicazione collettiva SMDDP ottimizzate per le risorse di AWS calcolo e l'infrastruttura di rete

La libreria SMDDP fornisce implementazioni e operazioni AllGather collettive ottimizzate per AWS le risorse di calcolo AllReduce e l'infrastruttura di rete.

Operazione collettiva AllReduce SMDDP

La libreria SMDDP consente una sovrapposizione ottimale delle AllReduce operazioni con il passaggio all'indietro, migliorando significativamente l'utilizzo della GPU. Raggiunge un'efficienza di scalabilità quasi lineare e una maggiore velocità di addestramento ottimizzando le operazioni del kernel tra CPU e GPU. La libreria funziona AllReduce in parallelo mentre la GPU elabora i gradienti senza eliminare cicli GPU aggiuntivi, il che consente un addestramento più rapido.

  • Sfrutta le CPU: la libreria utilizza le CPU per adattare i AllReduce gradienti, scaricando questo compito dalle GPU.

  • Utilizzo migliorato della GPU: le GPU del cluster si concentrano sui gradienti di calcolo, migliorandone l'utilizzo durante l'addestramento.

Di seguito è riportato il flusso di lavoro di alto livello dell'operazione SMDDP. AllReduce

  1. La libreria assegna i ranghi alle GPU (worker).

  2. Ad ogni iterazione, la libreria divide ogni batch globale per il numero totale di lavoratori (dimensione mondiale) e assegna piccoli lotti (frammenti di batch) ai lavoratori.

    • La dimensione del batch globale è (number of nodes in a cluster) * (number of GPUs per node) * (per batch shard).

    • Un batch shard (small batch) è un sottoinsieme di set di dati assegnato a ciascuna GPU (worker) per iterazione.

  3. La libreria lancia uno script di addestramento per ogni lavoratore.

  4. La libreria gestisce le copie dei pesi e dei gradienti dei modelli fornite dai worker alla fine di ogni iterazione.

  5. La libreria sincronizza i pesi e i gradienti dei modelli tra i worker per aggregare un unico modello addestrato.

Il seguente diagramma di architettura mostra un esempio di come la libreria imposta il parallelismo dei dati per un cluster di 3 nodi.

Diagramma dell'architettura SMDDP AllReduce e del parallelismo dei dati

Operazione AllGather collettiva SMDDP

AllGatherè un'operazione collettiva in cui ogni lavoratore inizia con un buffer di input e quindi concatena o raccoglie i buffer di input di tutti gli altri worker in un buffer di output.

Nota

L'operazione AllGather collettiva SMDDP è disponibile in AWS Deep Learning Containers (DLC) per PyTorch la versione 2.0.1 smdistributed-dataparallel>=2.0.1 e successive.

AllGatherè ampiamente utilizzato nelle tecniche di formazione distribuite come il parallelismo dei dati frammentati, in cui ogni singolo lavoratore detiene una frazione di un modello o un livello frammentato. I lavoratori chiamano AllGather prima dei passaggi avanti e indietro per ricostruire gli strati suddivisi. I passaggi avanti e indietro continuano dopo aver raccolto tutti i parametri. Durante il passaggio all'indietro, ogni operatore chiama anche ReduceScatter per raccogliere (ridurre) i gradienti e spezzarli (disperderli) in frammenti di gradiente per aggiornare il corrispondente livello frammentato. Per maggiori dettagli sul ruolo di queste operazioni collettive nel parallelismo dei dati condivisi, consultate l'implementazione del parallelismo dei dati condivisi nella libreria SMP, Zero nella documentazione e il blog su Fully Sharded Data Parallelism. DeepSpeed PyTorch

Poiché le operazioni collettive AllGather vengono richiamate in ogni iterazione, sono le principali responsabili del sovraccarico di comunicazione con la GPU. Un calcolo più rapido di queste operazioni collettive si traduce direttamente in un tempo di formazione più breve senza effetti collaterali sulla convergenza. A tal fine, la libreria SMDDP offre soluzioni AllGather ottimizzate per le istanze P4d.

SMDDP AllGather utilizza le seguenti tecniche per migliorare le prestazioni di calcolo sulle istanze P4d.

  1. Trasferisce dati tra istanze (internodo) tramite la rete Elastic Fabric Adapter (EFA) con una topologia mesh. EFA è la soluzione di rete a bassa latenza e ad alto AWS throughput. Una topologia mesh per la comunicazione di rete tra nodi è più adatta alle caratteristiche dell'EFA e dell'infrastruttura di rete. AWS Rispetto alla topologia ad anello o ad albero NCCL che prevede più packet hop, SMDDP evita l'accumulo di latenza da più hop in quanto richiede solo un hop. SMDDP implementa un algoritmo di controllo della velocità di rete che bilancia il carico di lavoro per ciascun peer di comunicazione in una topologia mesh e raggiunge un throughput di rete globale più elevato.

  2. Adotta una libreria di copie di memoria GPU a bassa latenza basata sulla tecnologia NVIDIA GPUDirect RDMA (GDRCopy) per coordinare il traffico di rete locale NVLink ed EFA. GDRCopy, una libreria di copie di memoria GPU a bassa latenza offerta da NVIDIA, fornisce comunicazioni a bassa latenza tra i processi della CPU e i kernel GPU CUDA. Con questa tecnologia, la libreria SMDDP è in grado di gestire lo spostamento dei dati all'interno e tra i nodi.

  3. Riduce l'utilizzo di multiprocessori in streaming su GPU per aumentare la potenza di calcolo per l'esecuzione dei kernel modello. Le istanze P4d e P4de sono dotate di GPU NVIDIA A100, ognuna dotata di 108 multiprocessori di streaming. Mentre NCCL impiega fino a 24 multiprocessori di streaming per eseguire operazioni collettive, SMDDP utilizza meno di 9 multiprocessori di streaming. I kernel di elaborazione dei modelli raccolgono i multiprocessori di streaming salvati per un calcolo più rapido.