Parallelismo dei dati
Il parallelismo dei dati addestra un modello più velocemente replicandolo su più GPU, con ciascuna GPU che elabora una sezione diversa del batch di dati.
Panoramica
It is the workhorse technique that lets teams scale to dozens or thousands of accelerators.
Immersione profonda
Nel parallelismo dei dati, ogni GPU contiene una copia identica dei pesi del modello ma elabora un mini-batch distinto di esempi di training. Ciascun dispositivo calcola un passaggio in avanti e uno all'indietro in modo indipendente, producendo il proprio insieme di gradienti. Prima dell'aggiornamento dei pesi, viene calcolata la media dei gradienti su tutte le GPU utilizzando un'operazione di comunicazione di riduzione totale, in modo che ogni replica rimanga sincronizzata e si comporti come se fosse stata addestrata su un unico batch combinato di grandi dimensioni. Ciò moltiplica effettivamente il throughput: 8 GPU possono masticare circa 8 volte i dati per passaggio. Il problema è che ciascuna GPU deve adattarsi all'intero modello, ai suoi gradienti e allo stato dell'ottimizzatore in memoria, quindi il semplice parallelismo dei dati non aiuta quando un modello è troppo grande per un singolo dispositivo.
Approfondimento tecnico
L'operazione chiave è riduzione totale, che somma i gradienti tra i dispositivi e ridistribuisce il risultato. Ring all-reduce, utilizzato da librerie come NCCL e Horovod, passa i blocchi del gradiente attorno a un anello logico in modo che la comunicazione totale sia indipendente dal conteggio della GPU. DistributedDataParallel di PyTorch sovrappone questa comunicazione con il passaggio all'indietro, attivando la sincronizzazione del gradiente per i primi livelli mentre i livelli successivi stanno ancora elaborando, nascondendo gran parte della latenza della rete.
Impatto strategico
Costo e budget
Le decisioni relative all'architettura determinano prestazioni e costi operativi per anni.
Decisioni più chiare
La formazione tecnica aiuta i team a scegliere lo stack giusto, non solo quello più nuovo.
Controllo di qualità
Migliori scelte ingegneristiche riducono gli incidenti legati all’affidabilità nella produzione.
Il futuro del parallelismo dei dati
Il parallelismo dei dati puri viene sempre più combinato con lo sharding e il parallelismo dei modelli in strategie ibride di "parallelismo nD" per modelli da trilioni di parametri. Aspettatevi una compressione del gradiente più intelligente, una comunicazione asincrona e sovrapposta e una riduzione completa basata sulla topologia che sfrutta il veloce NVLink all'interno di un nodo e il più lento InfiniBand tra i nodi. Con la crescita dei cluster, la riduzione del rapporto comunicazione-calcolo rimane la sfida ingegneristica centrale per mantenere occupate migliaia di GPU.
Implementazione nel mondo reale
Addestramento di un classificatore di immagini ResNet su 8 GPU in un server utilizzando PyTorch DistributedDataParallel, ciascuna GPU che gestisce 32 di un batch di 256 immagini.
Scalabilità del pretraining BERT su centinaia di GPU con Horovod, utilizzando la riduzione di tutti gli anelli per sincronizzare i gradienti in ogni passaggio.
Messa a punto di un modello di raccomandazione su un cluster multinodo in cui ciascun nodo elabora diversi frammenti di interazione utente.
Utilizzo della MirroredStrategy di TensorFlow per diffondere l'addestramento di un modello di visione su più GPU su una singola workstation con modifiche minime al codice.
Rischi e guardrail
L'ottimizzazione di un benchmark può nascondere debolezze di sistema più ampie.
I costi delle infrastrutture e della manutenzione sono spesso sottostimati.
Le lacune in termini di sicurezza e osservabilità possono aumentare man mano che i sistemi diventano più complessi.
Tabella di marcia per l'implementazione
Definire obiettivi di latenza, qualità e costi prima dell'implementazione.
Benchmark in condizioni di carico e dati realistiche.
Monitoraggio dello strumento per errori, deriva e impatto sull'utente.
Preparare percorsi di rollback e risposta agli incidenti prima della scalabilità.
Continua a esplorare
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Data Parallelism quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Prossima guida
Governance dei dati dell’intelligenza artificiale
Domande frequenti
What is Data Parallelism?
Il parallelismo dei dati addestra un modello più velocemente replicandolo su più GPU, con ciascuna GPU che elabora una sezione diversa del batch di dati. È la tecnica del cavallo di battaglia che consente ai team di scalare fino a dozzine o migliaia di acceleratori.
Nel parallelismo dei dati standard, cosa contiene ciascuna GPU?
Ogni GPU conserva una replica completa del modello ed elabora una porzione distinta del batch di dati, che è ciò che rende il parallelismo dei "dati" piuttosto che il parallelismo del modello.
Quale operazione di comunicazione mantiene sincronizzate le repliche del modello in ogni passaggio?
Dopo ogni passaggio all'indietro, i gradienti vengono combinati tra i dispositivi tramite riduzione totale (in genere sommati e poi mediati) in modo che ogni replica applichi lo stesso aggiornamento.
Qual è il limite principale del parallelismo dei dati semplici?
Poiché ogni GPU contiene una copia completa di tutto, il parallelismo dei dati non aiuta affatto quando un modello è semplicemente troppo grande per essere contenuto in un dispositivo.
Perché la riduzione totale dell'anello è interessante per un numero elevato di GPU?
Ring all-reduce passa blocchi di gradiente attorno a un anello logico, quindi la larghezza di banda totale inviata da ciascuna GPU rimane costante indipendentemente dal numero di GPU partecipanti.
In che modo PyTorch DistributedDataParallel nasconde la latenza della comunicazione?
DDP inizia a sincronizzare i gradienti per i livelli precedenti mentre i livelli successivi sono ancora in fase di calcolo, sovrapponendo la comunicazione di rete al calcolo.