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.
Á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
Határozza meg a késleltetési, minőségi és költségcélokat a megvalósítás előtt.
Benchmark reális terhelési és adatviszonyok mellett.
Műszerfigyelés a hibák, az eltolódás és a felhasználói hatások szempontjából.
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.
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.