Multi-GPU med NCCL
Kollektiv kommunikation til skalering
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. ✨
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
- Optælling og valg af enheder
- Fordeling af arbejde på tværs af GPU'er
- Peer-to-peer-hukommelsesadgang
- Multi-GPU med NCCL