Műszaki ÚTMUTATÓ

GPU memóriakezelés és töredezettség

Az AI-keretrendszerek hogyan foglalják le, használják fel és nyerik vissza a korlátozott memóriát a GPU-n, és miért okozhatnak a megmaradt hézagok (töredezettség) a memóriakimaradási hibákat még akkor is, ha technikailag sok memória marad.

2 perc olvasásUtoljára frissítve

Áttekintés

Understanding it is key to fitting big models and avoiding mysterious crashes.

Mély merülés

A GPU-memória rögzített és értékes: egy kártya összesen 24, 80 vagy 192 GB-ot tartalmazhat, amelyet a modell súlya, aktiválása, színátmenete, optimalizáló állapota és ideiglenes pufferei osztanak meg. Az illesztőprogram meghívása, hogy lefoglalja a memóriát minden műveletnél, lassú lenne, ezért az olyan keretrendszerek, mint a PyTorch, gyorsítótár-lefoglalót használnak, amely megragadja a nagy blokkokat előre, és kiosztja az aldarabokat, majd a felszabadult darabokat egy készletben tartja újrafelhasználás céljából. A fogás a töredezettség: a különböző méretű tenzorok kiosztása és felszabadítása során a szabad tér szétszórt darabokra oszlik. Összesen 5 GB szabad lehet, de nem tud lefoglalni egy összefüggő 2 GB-os tenzort, mert egyetlen hézag sem elég nagy. Ez az oka annak, hogy az edzés a szabadnak látszó mozgástér ellenére is összeomolhat memóriahiányos hibákkal.

Technikai betekintés

A PyTorch CUDA gyorsítótár-lefoglalója blokkfolyamokra osztja a memóriát, és újra felhasználja a felszabadult blokkokat, amelyek megfelelnek a kért méreteknek, elkerülve a költséges cudaMalloc/cudaFree hívásokat. A töredezettség akkor keletkezik, ha a felosztott blokkok nem kombinálhatók újra. Az olyan eszközök, mint a torch.cuda.empty_cache, a PYTORCH_CUDA_ALLOC_CONF expandable_segments opció és a memória pillanatképei segítenek. Az újabb megközelítések virtuális memória ötleteket kölcsönöznek, és a nem összefüggő fizikai oldalakat egy összefüggő virtuális tartományba képezik, így a nagy kérések a töredezettség ellenére is sikeresek lesznek.

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 GPU memóriakezelés és töredezettség jövője

A memóriakezelés egyre intelligensebb és laposabb, az operációs rendszerek ihlette. Az olyan technikák, mint a virtuális memória-stílusú allokátorok és a lapozott figyelem (a KV-gyorsítótár kezelésére szolgálnak a következtetés során), drámaian csökkentik a pazarlást és a töredezettséget. A keretrendszerek alapértelmezés szerint bővíthető, töredezettségmentesítő allokátorokra, jobb láthatóságra a beépített profilozók révén, valamint a tehermentesítéssel és újraszámítással való szorosabb kapcsolódásra számíthatnak, így a rendszer automatikusan zsonglőrködik a GPU-val, a CPU-val és a lemezmemóriával, hogy a kihasználtság magas maradjon, és az összeomlások ritkák.

Valós megvalósítás

Egy edzési futás, amely összeomlik a „CUDA memória megtelt” miatt, annak ellenére, hogy a lefoglalt memória szabad helyet mutat. A PYTORCH_CUDA_ALLOC_CONF beállításával javítva a bővíthető szegmenseket.

A torch.cuda.memory_summary vagy egy memória-pillanatfelvétel segítségével diagnosztizálható, hogy mely tenzorok és töredezettségek fogyasztják a GPU 80 GB-ját.

A vLLM PagedAttention funkciója, amely rögzített méretű oldalakon kezeli a figyelem KV gyorsítótárát, hogy számos egyidejű csevegési kérést kiszolgáljon memóriapazarlás nélkül.

A köteg méretének csökkentése vagy a gradiens-ellenőrzőpont engedélyezése az aktiválási memória csökkentése és a töredezettség által kiváltott memóriahiba elkerülése érdekében.

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 GPU Memory Management and Fragmentation 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ó

GPU ütemezés és fürt hangszerelés

Gyakran ismételt kérdések

What is GPU Memory Management and Fragmentation?

Az AI-keretrendszerek hogyan foglalják le, használják fel és nyerik vissza a korlátozott memóriát a GPU-n, és miért okozhatnak a megmaradt hézagok (töredezettség) a memóriakimaradási hibákat még akkor is, ha technikailag sok memória marad. Ennek megértése kulcsfontosságú a nagy modellek felszereléséhez és a rejtélyes összeomlások elkerüléséhez.

Mi a GPU memória töredezettsége?

A töredezettség azt jelenti, hogy a teljes szabad memória elegendő, de az darabokra van bontva, így egyetlen rés sem elég nagy egy nagy tenzorhoz.

Miért használnak olyan keretrendszerek, mint a PyTorch, gyorsítótárazási memóriaelosztót?

A cudaMalloc/cudaFree hívása minden művelethez lassú, ezért a gyorsítótárazási allokátor megragadja a nagy blokkokat, és újra felhasználja a felszabadítottakat a készletből.

5 GB szabad helyet lát, de nem tud 2 GB-os tenzort lefoglalni. Mi a valószínű oka?

A töredezettségnek ez a klasszikus tünete akkor jelentkezik, ha van szabad memória, de nem egy összefüggő, elég nagy darabként a kéréshez.

Melyik PyTorch-beállítás segít csökkenteni a töredezettséget azáltal, hogy lehetővé teszi a memóriaszegmensek rugalmas növekedését?

A PYTORCH_CUDA_ALLOC_CONF beállításával a bővíthető_szegmensek engedélyezése lehetővé teszi az elosztó számára, hogy szegmenseket növeszt, és csökkenti a töredezettséggel kapcsolatos hibákat.

Mivel csökkenti a vLLM PagedAttention funkciója a memóriapazarlást a következtetés során?

A PagedAttention a KV gyorsítótárat rögzített méretű oldalakon, például az operációs rendszer virtuális memóriájában tárolja, csökkentve a töredezettséget és hatékonyan kiszolgálva számos kérést.