Teknisk GUIDE

ZeRO og Sharded Optimizers

ZeRO (Zero Redundancy Optimizer) eliminerer sløsende minneduplisering av dataparallellisme ved å dele optimaliseringstilstand, gradienter og vekter på tvers av GPUer.

2 min lesingSist oppdatert

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

1

Definer ventetid, kvalitet og kostnadsmål før implementering.

2

Benchmark under realistiske belastnings- og dataforhold.

3

Instrumentovervåking for feil, drift og brukerpåvirkning.

4

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.

Start quiz

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.