ÉlőUtoljára: 32 perceMa: 13
Eszközökfrissítve: 12:50

Öreg GPU-n fut 3 AI-modell egyszerre — új C++ daemon segíti a párhuzamos futtatást

Egy Anubhab Banerjee által fejlesztett, mindössze 1500 soros C++ daemon, a lmxd megoldást kínál arra, hogy három kis LLM — köztük a Llama 3.2 1B — egyszerre fusson egy 8 GB-os GTX 1080 GPU-n.

Öreg GPU-n fut 3 AI-modell egyszerre — új C++ daemon segíti a párhuzamos futtatást
Fotó: Florian Olivo / Unsplash
forrás: Towards Data Science·AI Forradalom szerk.·
Megosztás

Az AI-fejlesztők gyakran szembesülnek azzal a problémával, hogy egy régebbi, korlátozott VRAM-mal rendelkező GPU-n nem tudnak több AI-ügynököt és az általuk használt modelleket párhuzamosan futtatni. A hagyományos llama.cpp például előre lefoglalja a teljes KV cache-t, ami memóriakiakadást (OOM) okoz, ha több folyamatot indítanak. Anubhab Banerjee egy új, lmxd nevű C++ daemonnal kínál erre megoldást, amely 5G-stílusú kapcsolatkezelést és aszinkron pipeliningot használ. (Towards Data Science)

A KV cache és a memóriakiakadás problémája

A probléma lényege, hogy a llama.cpp a dekódolás során használt KV cache-t a teljes konfigurált kontextusablakra előre lefoglalja. Egy GTX 1080-as, 8 GB VRAM-mal rendelkező kártyán ez az első modell betöltésekor már 6536 MiB-ot foglalhat le. Amikor egy második vagy harmadik modell próbál betöltődni, a CUDA már nem tud elegendő memóriát allokálni, ami összeomláshoz vezet. Ez nem a llama.cpp hibája, hanem a biztonságos működésre törekszik egyetlen folyamat esetén, de több párhuzamos folyamatnál már nem elegendő.

Kapcsolódó: tartós memória LLM-ekben

A lmxd daemon működése

A lmxd daemon úgy működik, mint egy GPU-tulajdonos, aki az ügynökök nevében kezeli a memóriát. Az ügynökök nem maguk indítják a llama-completion folyamatokat, hanem egy egyszerű szöveges protokollon keresztül kommunikálnak a daemonnal. A lmxd dönti el, hogy az új ügynök elfér-e, mielőtt betöltené a modellt. A működés alapelve, hogy a GPU VRAM-jának maximum 90%-át engedi használni, és csak akkor fogad be új ügynököt, ha a jelenlegi használat és az új modell becsült mérete nem haladja meg ezt a határt.

Kapcsolódó: gyorsított chatbot motor

A daemon mindössze körülbelül 1500 soros C++17 kódot tartalmaz, és egyetlen folyamatként fut. A VRAM-használat kezelése egy `VramLedger` osztályban történik, amely biztosítja, hogy a párhuzamos kérések ne okozzanak túlfoglalást. A `try_reserve` metódus egy mutex segítségével garantálja, hogy két egyidejű `REGISTER` kérés ne tudja túllépni a maximális VRAM-kapacitást. Az új ügynök csak akkor kap helyet, ha a ledger sikeresen lefoglalja számára a szükséges memóriát.

Kapcsolódó: nyílt forráskódú adatbázis memória

A fejlesztő, Anubhab Banerjee szerint ez a megoldás lehetővé teszi, hogy olyan kis modellek, mint a Llama 3.2 1B, a Qwen2 0.5B és a SmolLM2 360M, egyidejűleg fussanak egy 8 GB-os GPU-n. Az új megközelítés csökkenti az egy modellre jutó VRAM-fogyasztást, és valós idejű, többügynökös munkafolyamatokat tesz lehetővé régebbi hardvereken is. A megoldást egy kis nyílt forráskódú C++ programként tették elérhetővé.

Kapcsolódó: AMD GPU LLM futtatás

Forrás

Feldolgozott sajtóforrás·Towards Data Science

Eredeti cikk megnyitása →

Ez a cikk a fenti sajtóforrás alapján készült AI-összefoglalóval.

tetszett a cikk? oszd meg →
Megosztás

Tetszik az oldal? Támogasd a fejlesztést

Az AI Forradalom egy automatizált pipeline: napi adatgyűjtés, LLM-feldolgozás és infrastruktúra fenntartása valódi költségekkel jár. Ha értékesnek találod a tömör, naprakész AI-összefoglalókat, egy kávé sokat segít.

Támogatom