Technický PRŮVODCE

ZeRO a Sharded Optimizers

ZeRO (Zero Redundancy Optimizer) eliminuje plýtvání duplikací paměti při paralelním zpracování dat tím, že rozdělí stav optimalizátoru, gradienty a váhy mezi GPU.

2 minuty čteníNaposledy aktualizováno

Přehled

It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.

Hluboký ponor

V běžném datovém paralelismu každý GPU ukládá redundantní plnou kopii stavu optimalizátoru, přechodů a parametrů, což je velmi plýtvání, zejména pro Adama, kde stav optimalizátoru může být několikanásobně větší než samotný model. ZeRO, představený Microsoft v DeepSpeed, odstraňuje tuto redundanci rozdělením těchto tenzorů mezi GPU, takže každé zařízení vlastní pouze část. ZeRO přichází ve třech progresivních fázích: 1. fáze stav optimalizátoru fragmentů, 2. fáze přidává gradientní sharding a 3. fáze samotné parametry. Podle potřeby GPU shromáždí chybějící řezy prostřednictvím komunikace, spočítají je a poté je uvolní. Výsledkem je výrazně nižší paměť na GPU, což umožňuje trénování s miliardami až biliony parametrů při zachování jednoduchého programovacího modelu datového paralelismu.

Technický přehled

ZeRO vyměňuje další komunikaci za úsporu paměti. Ve fázi 3, před dopředným průchodem vrstvy, all-gather shromáždí úplné parametry této vrstvy do každého GPU; poté jsou nevlastněné řezy zahozeny, aby se získala zpět paměť. Přechody jsou redukovány a rozptylovány, takže každý GPU si ponechává pouze přechodový řez odpovídající parametrům, které vlastní. PyTorch's FSDP (Fully Sharded Data Parallel) implements the same idea natively, wrapping modules to shard and reshard on the fly.

Strategický dopad

Cena a rozpočet

Rozhodnutí o architektuře zvyšují výkon a provozní náklady po mnoho let.

Jasnější rozhodnutí

Technické vzdělání pomáhá týmům vybrat ten správný stack, nejen ten nejnovější.

Kontrola kvality

Lepší konstrukční volby snižují výskyt problémů se spolehlivostí ve výrobě.

Budoucnost ZeRO a Sharded Optimizers

Sharding is becoming the default for large-scale training rather than an exotic option. Očekávejte hlubší integraci s vykládáním (posunutí řezů do CPU nebo NVMe přes ZeRO-Infinity), lepší překrývání všech shromažďování a snižování rozptylu s výpočtem, aby se skryly jejich náklady, a kombinace s paralelismem tenzorů a potrubí. Vzhledem k tomu, že modely neustále rostou, jsou pro jejich přizpůsobení realistickým hardwarovým rozpočtům klíčové paměťově efektivní optimalizátory.

Real-World Implementace

Pomocí DeepSpeed ​​ZeRO Stage 2 dolaďte jazykový model s mnoha miliardami parametrů, který by jinak zahltil paměť GPU.

Trénink s PyTorch FSDP, který skartuje parametry, přechody a stav optimalizátoru napříč GPU a na požádání je shromažďuje pro jednotlivé vrstvy.

Použití ZeRO-Offload k přenesení stavu optimalizátoru do paměti CPU, což umožňuje jedinému GPU trénovat model mnohonásobně větší než jeho VRAM.

Škálování modelu s bilionem parametrů pomocí ZeRO-Infinity streamováním fragmentů parametrů z úložiště NVMe, když dojde paměť GPU a CPU.

Rizika a zábradlí

Optimalizace jednoho benchmarku může skrýt širší systémové slabiny.

Náklady na infrastrukturu a údržbu jsou často podceňovány.

Mezery v zabezpečení a pozorovatelnosti se mohou zvětšovat, jak se systémy stávají složitějšími.

Plán implementace

1

Před implementací definujte cíle latence, kvality a nákladů.

2

Benchmark za realistických podmínek zatížení a dat.

3

Monitorování chyb, posunu a dopadu na uživatele.

4

Před škálováním připravte cesty vrácení zpět a reakce na incidenty.

Pokračujte v objevování

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.

Spustit kvíz

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Další průvodce

Lookahead a Lion Optimizers

Často kladené otázky

What is ZeRO and Sharded Optimizers?

ZeRO (Zero Redundancy Optimizer) eliminuje plýtvání duplikací paměti při paralelním zpracování dat tím, že rozdělí stav optimalizátoru, gradienty a váhy mezi GPU. Umožňuje trénovat obrovské modely s jednoduchostí datového paralelismu, ale se zlomkem paměti na GPU.

Jakou redundanci odstraňuje ZeRO ve srovnání s paralelním zpracováním prostých dat?

Standardní datový paralelismus ukládá úplnou kopii stavu optimalizátoru, přechodů a vah na každém GPU; ZeRO je rozstřílí, takže každý GPU pojme pouze výřez.

Proč je stav optimalizátoru u Adama často největší pamětí?

Adam udržuje průběžné odhady, jako je první a druhý moment na parametr, které v kombinaci s hlavními váhami fp32 mohou převýšit vlastní velikost modelu.

Co přináší úlomek ZeRO Stage 3 a Stage 1 a 2 nikoli?

Fáze 1 rozdělí stav optimalizátoru, Fáze 2 přidá přechody a Fáze 3 jde ještě dále tím, že rozdělí parametry modelu i mezi GPU.

Jak v ZeRO Stage 3 získá GPU úplné parametry, které potřebuje pro dopředný průchod vrstvy?

Před výpočtem vrstvy sestaví all-gather její úplné parametry na každém GPU; jakmile je hotovo, nevlastněné řezy se uvolní, aby bylo možné získat zpět paměť.

Která funkce PyTorch nativně implementuje sharding ve stylu ZeRO?

PyTorch's Fully Sharded Data Parallel (FSDP) skartuje parametry, přechody a stav optimalizátoru, shromažďuje je a znovu sdílí za běhu a zrcadlí ZeRO.