Műszaki ÚTMUTATÓ

ZeRO és Sharded Optimizers

A ZeRO (Zero Redundancy Optimizer) kiküszöböli az adatok párhuzamosságának pazarló memória-duplikációját azáltal, hogy felosztja az optimalizáló állapotát, a gradienseket és a súlyokat a GPU-k között.

2 perc olvasásUtoljára frissítve

Áttekintés

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

Mély merülés

A szokásos adatpárhuzamban minden GPU tárolja az optimalizáló állapotának, a gradienseknek és a paramétereknek egy redundáns teljes másolatát, ami rendkívül pazarló, különösen Adam esetében, ahol az optimalizáló állapota többszöröse lehet magának a modellnek. A ZeRO, amelyet Microsoft vezetett be a DeepSpeedben, eltávolítja ezt a redundanciát azáltal, hogy particionálja ezeket a tenzorokat a GPU-k között, így minden eszköz csak egy szeletet birtokol. A ZeRO három fokozatos szakaszban érhető el: az 1. szakasz szilánkok optimalizáló állapota, a 2. szakasz gradiens felosztást ad hozzá, a 3. szakasz pedig magukat a paramétereket. Szükség szerint a GPU-k kommunikáción keresztül összegyűjtik a hiányzó szeleteket, kiszámítják, majd felszabadítják őket. Az eredmény drámaian kevesebb memória GPU-nként, ami milliárd-trillió paraméteres betanítást tesz lehetővé, miközben megtartja az adatok párhuzamosságának egyszerű programozási modelljét.

Technikai betekintés

A ZeRO extra kommunikációt cserél memóriamegtakarításra. A 3. szakaszban, egy réteg előrehaladása előtt, egy all-Gather összegyűjti az adott réteg teljes paramétereit minden GPU-ra; ezt követően a nem birtokolt szeleteket a rendszer eldobja a memória visszanyerése érdekében. A színátmenetek csökkentett-szórtak, így minden GPU csak a tulajdonában lévő paramétereknek megfelelő gradiensszeletet tart meg. A PyTorch FSDP (Fully Sharded Data Parallel) ugyanazt az ötletet valósítja meg natív módon, és menet közben tördeli és újradarabolja a modulokat.

Stratégiai hatás

Költség és költségvetés

Az építészeti döntések évekig növelik a teljesítményt és a működési költségeket.

Tisztább döntések

A technikai oktatás segít a csapatoknak a megfelelő verem kiválasztásában, nem csak a legújabb készletben.

Minőségellenőrzés

A jobb mérnöki döntések csökkentik a termelés megbízhatósági incidenseit.

A ZeRO és a Sharded Optimizers jövője

A megosztás a nagyszabású képzések alapértelmezésévé válik, nem pedig egzotikus lehetőséggé. Mélyebb integrációra számíthat a tehermentesítéssel (a szeletek CPU-ra vagy NVMe-re tolása a ZeRO-Infinity-n keresztül), az összes összegyűjtés és a szórás csökkentésének jobb átfedése a számítással, hogy elrejtse a költségeket, valamint a tenzor- és folyamatpárhuzamos kombinációk. Ahogy a modellek folyamatosan bővülnek, a memória-hatékony szilánkos optimalizálók központi szerepet játszanak abban, hogy reális hardverköltségvetésekhez illesszék őket.

Valós megvalósítás

A DeepSpeed ​​ZeRO Stage 2 segítségével finomhangolhatunk egy többmilliárd paraméteres nyelvi modellt, amely egyébként túlcsordulna a GPU memóriájában.

Képzés a PyTorch FSDP-vel, amely a paramétereket, a színátmeneteket és az optimalizáló állapotát szétosztja a GPU-k között, és igény szerint rétegenként összegyűjti.

A ZeRO-Offload alkalmazása az optimalizáló állapotának a CPU-memóriába való tolására, lehetővé téve, hogy egyetlen GPU a VRAM-nál többszörösen nagyobb modellt képezzen.

Egy billió paraméteres modell méretezése a ZeRO-Infinity segítségével az NVMe-tárhelyről származó paraméterszilánkok streamelésével, amikor a GPU és a CPU memória kimerül.

Kockázatok és védőkorlátok

Egy benchmark optimalizálása elrejtheti a rendszer általános hiányosságait.

Az infrastrukturális és karbantartási költségeket gyakran alábecsülik.

A biztonsági és megfigyelhetőségi hiányosságok a rendszerek bonyolultabbá válásával nőhetnek.

Végrehajtási ütemterv

1

Határozza meg a késleltetési, minőségi és költségcélokat a megvalósítás előtt.

2

Benchmark reális terhelési és adatviszonyok mellett.

3

Műszerfigyelés a hibák, az eltolódás és a felhasználói hatások szempontjából.

4

A méretezés előtt készítse elő a visszagörgetési és az incidensre adott válaszútvonalakat.

Folytassa a felfedezést

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.

Kezdő kvíz

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

Következő útmutató

Előretekintés és Oroszlán-optimalizálók

Gyakran ismételt kérdések

What is ZeRO and Sharded Optimizers?

A ZeRO (Zero Redundancy Optimizer) kiküszöböli az adatok párhuzamosságának pazarló memória-duplikációját azáltal, hogy felosztja az optimalizáló állapotát, a gradienseket és a súlyokat a GPU-k között. Óriási modellek betanítását teszi lehetővé az adatok párhuzamosságának egyszerűségével, de a GPU-nkénti memória töredékével.

Milyen redundanciát küszöböl ki a ZeRO a sima adatpárhuzamhoz képest?

A szabványos adatpárhuzam minden GPU-n tárolja az optimalizáló állapotának, színátmeneteinek és súlyainak teljes másolatát; A ZeRO feldarabolja ezeket, így minden GPU csak egy szeletet tartalmaz.

Miért az optimalizáló állapota gyakran a legnagyobb memóriazavar Ádámnál?

Adam olyan futó becsléseket tart fenn, mint például az első és a második pillanat paraméterenként, ami az fp32 mestersúlyokkal kombinálva eltörpülhet a modell saját mérete mellett.

Mit tartalmaz a ZeRO Stage 3 szilánkja, amit az 1. és 2. szakasz nem?

Az 1. szakasz a szilánkok optimalizáló állapotát, a 2. szakasz színátmeneteket ad hozzá, a 3. szakasz pedig tovább megy a modellparaméterek felosztásával a GPU-k között is.

A ZeRO Stage 3-ban hogyan kapja meg a GPU a réteg előrehaladásához szükséges összes paramétert?

A réteg kiszámítása előtt egy all-gaather összeállítja annak teljes paraméterét minden egyes GPU-n; Ha elkészült, a nem tulajdonban lévő szeletek felszabadulnak, hogy visszanyerjék a memóriát.

Melyik PyTorch-szolgáltatás valósítja meg natívan a ZeRO-stílusú felosztást?

A PyTorch Fully Sharded Data Parallel (FSDP) a paramétereket, a színátmeneteket és az optimalizáló állapotát szilánkokra bontja, menet közben összegyűjti és újrafelosztja, tükrözve a ZeRO-t.