Műszaki ÚTMUTATÓ

Gradiens ellenőrzőpont

A gradiens checkpointing (más néven aktiválási ellenőrzőpont) egy memóriakímélő trükk, amely eldobja a legtöbb közbenső aktiválást az előrehaladás során, és menet közben újraszámítja azokat a visszaterjesztés során.

2 perc olvasásUtoljára frissítve

Áttekintés

It lets you train deeper, larger networks by trading extra compute for much lower memory use.

Mély merülés

A neurális hálózatok betanítása általában minden réteg aktiválását tárolja az előrehaladás során, mert a visszaterjesztésnek szüksége van rájuk a gradiensek kiszámításához. A mély modelleknél ezek az aktiválások uralják a memóriát. Ehelyett a gradiens-ellenőrzés csak az „ellenőrzőpont” rétegek ritka halmazánál menti el az aktiválásokat, a többit pedig elveti. Amikor a backprop elér egy olyan régiót, amelynek aktiválása megszakadt, újra lefutja az előremenő számítást csak arra a szegmensre vonatkozóan, hogy regenerálja, amire szüksége van, majd folytatja. Ha az ellenőrzőpontokat nagyjából minden N rétegben helyezik el, az aktiválások memóriája N sorrendről N négyzetgyökre csökken, miközben a számítás csak körülbelül egy plusz előrelépéssel nő (körülbelül 20-30%-kal lassabb). Ez lehetővé teszi nagyobb tételméretek vagy mélyebb transzformátorok elhelyezését ugyanarra a GPU-ra.

Technikai betekintés

A technika az idő és a memória közötti kompromisszumot használja ki. Az összes aktiválás tárolása gyors, de memóriaéhes; ezek újraszámítása olcsó a modern gyorsítókon a memória kimerülésének költségéhez képest. Az olyan keretrendszerek, mint a PyTorch (torch.utils.checkpoint) becsomagolják a modult, így az előremenő kimenete mentésre kerül, de a belső elemei újraszámításra kerülnek a visszalépés során. Az ellenőrzőpontok elhelyezésének megválasztása számít: a nagyjából sqrt(N) szegmensek egyenletes távolsága minimalizálja a teljes memóriát, miközben összességében csak egyetlen további előrehaladási lépést ad hozzá a számításhoz.

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 Gradiens Checkpointing jövője

A gradiens ellenőrzőpontok ma már alapfelszereltségnek számítanak a nagymodell-oktatásban, és egyre inkább automatizáltak, és a könyvtárak kiválasztják az Ön számára optimális ellenőrzőpontokat. Természetesen párosul az FSDP-vel, vegyes precizitással és tehermentesítéssel a modellméretek növelése érdekében. Számíthat „szelektív” ellenőrzőpontokra, amelyek csak olcsó műveleteket számítanak újra, miközben a drágákat (például a figyelemmátrixokat) gyorsítótárban tartják, valamint a fordító által vezérelt megközelítéseket olyan eszközökben, mint a PyTorch torch.compile, amelyek automatikusan eldöntik, hogy mit kell menteni, illetve az újraszámítást a legjobb sebesség-memória egyensúly érdekében.

Valós megvalósítás

Nagyobb kötegméretű mélytranszformátor betanítása egyetlen GPU-n a rétegaktiválások elvetésével és újraszámításával.

A látásmodellek finomhangolása nagy felbontású képeken, ahol az aktiválási térképek egyébként túlcsordulnának a GPU memóriájában.

Hugging Face Transformers, amely lehetővé teszi gradient_checkpointing=Igaz, hogy illeszkedjen a milliárd paraméterű modellekhez a finomhangolás során.

Az ellenőrzőpontok kombinálása az FSDP-vel, így mind a paraméterek, mind az aktiválások kicsik maradnak, lehetővé téve a nagyon nagy nyelvi modellek betanítását.

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 Gradient Checkpointing 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

Gyakran ismételt kérdések

What is Gradient Checkpointing?

A gradiens checkpointing (más néven aktiválási ellenőrzőpont) egy memóriakímélő trükk, amely eldobja a legtöbb közbenső aktiválást az előrehaladás során, és menet közben újraszámítja azokat a visszaterjesztés során. Lehetővé teszi mélyebb, nagyobb hálózatok betanítását azáltal, hogy extra számításokat keres a sokkal alacsonyabb memóriahasználat érdekében.

Mivel kereskedik elsősorban a gradiens ellenőrzőpont a memória megtakarítása érdekében?

A gradiens-ellenőrzőpont újraszámítja az eldobott aktiválásokat a visszafelé haladás során, extra számítást költve a jelentősen csökkentett memóriaért cserébe.

Miért tárolódnak általában az aktiválások az előrehaladás során?

A Backprop a gradienseket az előrehaladás közbenső aktiválásaival számítja ki, tehát elérhetőnek kell lenniük, hacsak nem számítják újra.

Körülbelül hogyan skálázódik az aktiválási memória, ha egy N-rétegű hálózat minden sqrt(N) rétegében ellenőrző pontokat helyeznek el?

Az N fólia négyzetgyökénél elhelyezett ellenőrzőpontok távolsága csökkenti a tárolt aktiválási memóriát az N sorrendtől az sqrt(N) sorrendig.

Körülbelül mennyi plusz számítást ad a jól elhelyezett gradiens-ellenőrzőpontok általában?

Jó ellenőrzőpont-elhelyezés esetén a rezsi nagyjából egyetlen további előrehaladás, gyakran 20-30%-os lassulás körül.

A PyTorchban melyik segédprogramot használják általában a gradiens ellenőrzőpontok modulra történő alkalmazására?

A torch.utils.checkpoint becsomagolja a modult, így a belső aktiválásait a rendszer a visszalépés során újraszámítja, ahelyett, hogy tárolásra kerülne.