CUDA Academy · Lektion

Multi-GPU med NCCL

Kollektiv kommunikation til skalering

Lektion 4 af 413 trin

Multi-GPU med NCCL er en gratis CUDA Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i CUDA Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. CUDA Academy-kurset indeholder 4 lektioner i alt.

Håndlavet bliver vanskeligt

Det bliver hurtigt rodet at forbinde peer-kopieringer manuelt på tværs af mange GPU'er. Hvis du vil skalere i praksis, har du brug for et bibliotek, der er bygget til kollektiv kommunikation.

Mød NCCL

NVIDIA's svar er NCCL, biblioteket til kollektiv kommunikation. Det flytter automatisk data mellem GPU'er via de hurtigste forbindelser, det kan finde.

Hvad er en kollektiv operation

En kollektiv operation er én operation, som alle GPU'er deltager i sammen, for eksempel når en værdi på hvert kort lægges sammen. Alle enheder samarbejder i ét kald.

Den centrale kollektive operation: AllReduce

Arbejdshesten er AllReduce. Den kombinerer en buffer fra hver GPU, for eksempel ved at lægge dem sammen, og giver det samme resultat tilbage til dem alle.

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

Flere kollektive operationer

NCCL tilbyder også Broadcast til at dele én GPU's data med alle samt AllGather og ReduceScatter til andre almindelige udvekslingsmønstre.

Kommunikatoren

De GPU'er, der kommunikerer sammen, danner en gruppe, som spores af en kommunikator. Hvert kald til en kollektiv operation modtager dette håndtag, så NCCL kender deltagerne.

Ranks identificerer GPU'er

I en kommunikator får hver GPU et tal, der kaldes dens rank, fra 0 og opefter. Ranks lader dig angive, hvem der sender, hvem der modtager, og hvem der er rodpunktet.

Opret kommunikatorerne

For GPU'er i én proces opsætter ncclCommInitAll alle kommunikatorer på én gang ud fra den liste over enheds-id'er, du angiver.

ncclCommInitAll(comms, nGpus, devs);

Bevidsthed om streams

Hvert NCCL-kald tager en stream. Operationerne sættes i kø dér og kører sammen med dine kerner, så kommunikation kan overlappe beregning.

Gruppér kald

Hvis du vil udføre kollektive operationer på mange GPU'er uden deadlock, skal du omslutte dem med ncclGroupStart og ncclGroupEnd, så NCCL starter dem samlet.

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

Hvorfor træning elsker det

Deep learning synkroniserer gradienter på tværs af GPU'er ved hvert trin. AllReduce er netop dette, og derfor driver NCCL næsten al træning på flere GPU'er.

Hurtigt tjek

Husk den kollektive NCCL-operation, der summerer en buffer på tværs af GPU'er og returnerer resultatet til dem alle.

Opsummering

NCCL kører kollektive operationer som AllReduce over hurtige forbindelser, organiseret af en kommunikator med rangerede GPU'er. Det er rygraden i træning med flere GPU'er. Kurset er gennemført. ✨

Gratis at komme i gang

Lær C++ med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Multi-GPU med NCCL” gratis?

Ja — hele teksten til “Multi-GPU med NCCL” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af CUDA Academy-kurset, skal du opgradere til CoddyKit PRO. CUDA Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Multi-GPU med NCCL”?

Kollektiv kommunikation til skalering Du øver dig i CUDA Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på CUDA Academy?

Der kræves ingen tidligere erfaring. CUDA Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Multi-GPU med NCCL”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne CUDA Academy-lektion?

Ja. Alle CUDA Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Optælling og valg af enheder
  2. Fordeling af arbejde på tværs af GPU'er
  3. Peer-to-peer-hukommelsesadgang
  4. Multi-GPU med NCCL
← Tilbage til CUDA Academy