ZeRO og Sharded Optimizers
ZeRO (Zero Redundancy Optimizer) eliminerer sløsende minneduplisering av dataparallellisme ved å dele optimaliseringstilstand, gradienter og vekter på tvers av GPUer.
Oversikt
It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.
Dypdykk
I vanlig dataparallellisme lagrer hver GPU en redundant full kopi av optimaliseringstilstanden, gradientene og parameterne, noe som er enormt sløsing, spesielt for Adam, der optimaliseringstilstanden kan være flere ganger størrelsen på selve modellen. ZeRO, introdusert av Microsoft i DeepSpeed, fjerner denne redundansen ved å partisjonere disse tensorene på tvers av GPUer slik at hver enhet bare eier en del. ZeRO kommer i tre progressive stadier: trinn 1 shards optimizer-tilstand, trinn 2 legger til gradient sharding, og trinn 3 shards selve parameterne. Etter behov samler GPU-er de manglende skivene via kommunikasjon, beregner og slipper dem. Resultatet er dramatisk lavere minne per GPU, noe som muliggjør trening av milliarder til billioner av parametere, samtidig som den enkle programmeringsmodellen for dataparallellisme opprettholdes.
Teknisk innsikt
ZeRO bytter ekstra kommunikasjon for minnebesparelser. I trinn 3, før et lags foroverpassering, samler en all-gather lagets fullstendige parametere på hver GPU; etterpå blir de ikke-eide skivene kastet for å gjenvinne minnet. Gradienter er redusert spredt slik at hver GPU beholder bare gradientdelen som samsvarer med parametrene den eier. PyTorchs FSDP (Fully Sharded Data Parallel) implementerer den samme ideen innfødt, og pakker inn moduler for å skjære og skjære på nytt.
Strategisk innvirkning
Cost and budget
Arkitekturbeslutninger driver ytelse og driftskostnader i årevis.
Tydeligere avgjørelser
Teknisk utdanning hjelper team med å velge riktig stabel, ikke bare den nyeste.
Quality control
Bedre ingeniørvalg reduserer pålitelighetshendelser i produksjonen.
Fremtiden til ZeRO og Sharded Optimizers
Sharding er i ferd med å bli standard for storskala trening i stedet for et eksotisk alternativ. Forvent dypere integrasjon med avlasting (skyver skiver til CPU eller NVMe via ZeRO-Infinity), bedre overlapping av all-gather og reduser-scatter med beregning for å skjule kostnadene, og kombinasjoner med tensor og pipeline-parallellisme. Ettersom modellene fortsetter å vokse, er minneeffektive sharded optimizers sentrale for å tilpasse dem til realistiske maskinvarebudsjetter.
Real-World Implementering
Bruke DeepSpeed ZeRO Stage 2 for å finjustere en språkmodell med flere milliarder parametere som ellers ville flyte over GPU-minne.
Trening med PyTorch FSDP, som splitter parametere, gradienter og optimeringstilstand på tvers av GPUer og samler dem per lag på forespørsel.
Bruker ZeRO-Offload for å sende optimeringstilstand til CPU-minne, slik at en enkelt GPU kan trene en modell mange ganger større enn VRAM-en.
Skalering av en trillion-parameter modell med ZeRO-Infinity ved å strømme parameterskår fra NVMe-lagring når GPU og CPU-minne går tom.
Risikoer og rekkverk
Optimalisering av ett benchmark kan skjule bredere systemsvakheter.
Infrastruktur- og vedlikeholdskostnader er ofte undervurdert.
Sikkerhets- og observerbarhetsgap kan vokse etter hvert som systemene blir mer komplekse.
Veikart for implementering
Definer ventetid, kvalitet og kostnadsmål før implementering.
Benchmark under realistiske belastnings- og dataforhold.
Instrumentovervåking for feil, drift og brukerpåvirkning.
Forbered tilbakerulling og hendelsesresponsbaner før skalering.
Fortsett å utforske
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 ZeRO and Sharded Optimizers 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
Neste guide
Lookahead og Lion Optimizers
Ofte stilte spørsmål
What is ZeRO and Sharded Optimizers?
ZeRO (Zero Redundancy Optimizer) eliminerer sløsende minneduplisering av dataparallellisme ved å dele optimaliseringstilstand, gradienter og vekter på tvers av GPUer. Den lar deg trene enorme modeller med enkelheten til dataparallellisme, men en brøkdel av minnet per GPU.
Hvilken redundans eliminerer ZeRO sammenlignet med vanlig dataparallellisme?
Standard dataparallellisme lagrer en fullstendig kopi av optimaliseringstilstand, gradienter og vekter på hver GPU; ZeRO skjærer disse, slik at hver GPU bare har en skive.
Hvorfor er optimaliseringstilstand ofte den største minnesvinen med Adam?
Adam opprettholder løpende estimater som første og andre øyeblikk per parameter, som kombinert med fp32 mastervekter kan dverge modellens egen størrelse.
Hva deler ZeRO Stage 3 som trinn 1 og 2 ikke gjør?
Trinn 1 shards optimizer-tilstand, trinn 2 legger til gradienter, og trinn 3 går videre ved å dele modellparametrene på tvers av GPUer også.
I ZeRO Stage 3, hvordan får en GPU alle parametrene den trenger for et lags foroverpassering?
Før du beregner et lag, setter en all-gather sammen sine fulle parametere på hver GPU; når de er ferdige, frigjøres de ikke-eide skivene for å gjenvinne minnet.
Hvilken PyTorch-funksjon implementerer sharding i ZeRO-stil?
PyTorchs Fully Sharded Data Parallel (FSDP) skjærer parametere, gradienter og optimeringstilstand, samler og omdeler dem på farten, og speiler ZeRO.