CUDA Academy · Lezione

Multi-GPU con NCCL

Comunicazione collettiva per lo scaling

Lezione 4 di 413 passaggi

Multi-GPU con NCCL è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CUDA Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CUDA Academy include 4 lezioni in totale.

Gestire tutto manualmente diventa difficile

Configurare manualmente le copie peer tra molte GPU diventa rapidamente complicato. Per scalare davvero serve una libreria progettata per la comunicazione collettiva.

Ecco NCCL

La risposta di NVIDIA è NCCL, la libreria per le comunicazioni collettive. Sposta automaticamente i dati tra le GPU usando i collegamenti più veloci disponibili.

Che cos'è un'operazione collettiva

Un'operazione collettiva è un'unica operazione a cui partecipano tutte le GPU, ad esempio per sommare un valore presente su ciascuna scheda. Tutti i dispositivi cooperano in una sola chiamata.

L'operazione collettiva principale: AllReduce

Il vero cavallo di battaglia è AllReduce. Combina un buffer proveniente da ogni GPU, ad esempio sommandolo, e restituisce lo stesso risultato a tutte.

ncclAllReduce(send, recv, n, ncclFloat, ncclSum, comm, stream);

Altre operazioni collettive

NCCL offre anche Broadcast per condividere i dati di una GPU con tutte le altre, oltre ad AllGather e ReduceScatter per altri comuni schemi di scambio.

Il communicator

Le GPU che comunicano tra loro formano un gruppo gestito da un communicator. Ogni chiamata collettiva passa questo handle, così NCCL conosce i partecipanti.

I rank identificano le GPU

All'interno di un communicator, ogni GPU riceve un numero chiamato rank, a partire da 0. I rank permettono di indicare chi invia, chi riceve e chi è il root.

Creare i communicator

Per le GPU appartenenti a un unico processo, ncclCommInitAll configura contemporaneamente tutti i communicator a partire dall'elenco degli id dei dispositivi fornito.

ncclCommInitAll(comms, nGpus, devs);

Consapevole degli stream

Ogni chiamata NCCL riceve uno stream. Le operazioni vengono accodate al suo interno ed eseguite insieme ai kernel, così la comunicazione si sovrappone al calcolo.

Raggruppare le chiamate

Per eseguire operazioni collettive su molte GPU senza deadlock, le racchiuda tra ncclGroupStart e ncclGroupEnd, così NCCL le avvia insieme.

ncclGroupStart();
// per-GPU calls
ncclGroupEnd();

Perché è ideale per il training

Il deep learning sincronizza i gradienti tra le GPU a ogni passo. AllReduce esegue esattamente questa operazione, motivo per cui NCCL è alla base di quasi tutto il training multi-GPU.

Controllo rapido

Ricordi quale operazione collettiva NCCL somma un buffer tra le GPU e restituisce il risultato a tutte.

Riepilogo

NCCL esegue operazioni collettive come AllReduce su collegamenti veloci, organizzate tramite un communicator di GPU ordinate per rank. È la base dell'addestramento su più GPU. Corso completato. ✨

Gratis per iniziare

Impara C++ con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Multi-GPU con NCCL» è gratuita?

Sì — il testo completo di «Multi-GPU con NCCL» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CUDA Academy, passa a CoddyKit PRO. Il corso CUDA Academy include 4 lezioni in totale.

Cosa imparerò in «Multi-GPU con NCCL»?

Comunicazione collettiva per lo scaling Eserciti CUDA Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare CUDA Academy?

Non è richiesta alcuna esperienza precedente. CUDA Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Multi-GPU con NCCL»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione CUDA Academy?

Sì. Ogni lezione CUDA Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Enumerare e selezionare i dispositivi
  2. Partizionare il lavoro tra le GPU
  3. Accesso peer-to-peer alla memoria
  4. Multi-GPU con NCCL
← Torna a CUDA Academy