The Labs logoThe Labs
← Všetky články
Technológie · namerané, prevažne negatívne

Skrátenie pamäte jazykového modelu: úspory sú menšie, než naznačujú články

Keď jazykový model číta dlhý prompt, ukladá pre každý token kľúč a hodnotu. Toto úložisko je KV cache. Pri 32 000 tokenoch zaberá 2,4 GB pre jeden dopyt na modeli, ktorý sme testovali. Mnohé články navrhujú väčšinu z nej zahodiť a ponechať len dôležité tokeny. Otestovali sme to na bezplatnej GPU a položili dve otázky, ktoré články zriedka kladú spolu. Nájde model stále fakty, ktoré potrebuje? A vráti sa pamäť naozaj späť?

Conceptual illustration generated with AI. Not experimental data or a depiction of the actual equipment.

Krátka odpoveď: pri 25 % a 12,5 % cache stratila každá metóda, ktorú sme skúsili, potrebné fakty takmer vždy.

Čo sme merali

Model bol Qwen3-4B-Instruct na bezplatnej Kaggle T4. Úloha bola syntetická: niekoľko záznamov o projektoch („Project X has status S and codeword C“) skrytých medzi nesúvisiacimi dokumentmi, potom otázka na jeden, dva alebo všetky tri. Odpovede sa hodnotili presnou zhodou kódového slova. Prompty mali 8k, 16k a 32k tokenov, po 6 prípadoch. Beh bol zastavený v dohodnutom časovom limite, takže úroveň 32k má 3 z 6 prípadov. Zostáva 255 zaznamenaných výsledkov z 306 plánovaných. Každá politika a rozpočet nižšie má 15 otázok.

Porovnali sme šesť spôsobov výberu, čo ponechať: žiadne vytláčanie, posuvné okno, náhodné tokeny, skóre key-norm a naše vlastné reimplementácie myšlienok SnapKV a H2O. Každú sme spustili na úrovni tokenov aj na úrovni stránok (bloky po 16 tokenoch).

Čo fungovalo a čo nie
SPRÁVNE ZODPOVEDANÉ OTÁZKY Z 15, KEĎJE PONECHANÝCH 25 % CACHEPlná cache15 z 15snap, pages, 25%2 z 15keynorm, tokens, 25%2 z 15h2o, tokens, 25%1 z 15random, tokens, 25%0 z 15window, 25%0 z 15

Zdroj: zaznamenané výsledky behu, 255 záznamov. Rozpočet 12,5 % je horší: 0 alebo 1 správna z 15 pre každú metódu.

S plnou cache model odpovedal 15 z 15. S jej štvrtinou najlepšie metódy dosiahli 2 z 15. Typická zlá odpoveď si ponechala názov projektu, ale vymyslela číslice, napríklad „cobalt-381“ namiesto „cobalt-2609“. Náš výklad: skórovanie zachová význam tokenu a zahodí vzácne číslo, ktoré nesie odpoveď. To je hypotéza z týchto behov, nie testovaný mechanizmus.

Pamäť, ktorá sa nevráti

Inferenčné servery ukladajú cache v stránkach po 16 tokenoch. Stránku možno znovu použiť, len keď sú všetkých jej 16 tokenov preč. Ak vymažete roztrúsené tokeny, uvoľníte oveľa menej, než si myslíte. Toto účtovníctvo sme simulovali na rovnakých behoch. Metódy zarovnané na stránky uvoľnia takmer všetko, ale stratili odpoveď. Metódy, ktoré si ponechali trochu presnosti, uvoľnili podstatne menej.

UVOĽNENÁ PAMÄŤ NA OTÁZKU V MB (SIMULOVANÉSTRÁNKY), PRIEMER CEZ OBA ROZPOČTY A VŠETKY DĹŽKYwindow2373 MBsnap, pages1963 MBsnap, tokens1406 MBh2o, tokens976 MBkeynorm, tokens320 MBrandom, tokens201 MB

Zdroj: simulované účtovníctvo stránok po 16 blokoch na zaznamenaných behoch (priemer 30 prípadov na metódu). Nie je to meranie na skutočnom stránkovanom serveri. Každá skórovaná metóda logicky odstránila približne 1962 MB na otázku, takže 320 MB uvoľnených znamená 16 % z toho. Metóda window logicky odstránila 2376 MB na otázku a 2373 MB z toho sa stalo celými stránkami (vykreslená hodnota). Prečo odstraňuje viac než ostatné metódy, sme nezisťovali, takže ju porovnávajte opatrne.

Ešte jeden výsledok. V statickom cache Hugging Face, ktorý sme použili, sa dekódovanie po vytlačení nezrýchlilo (asi 1510 až 1640 ms na token). To hovorí, že knižnica stále počíta pozornosť (attention) nad plnou šírkou. Nehovorí to, že stránkovaný server by sa správal rovnako.

Limity

Čo to podporuje: otázku, ktorú sa oplatí poriadne otestovať. Metóda by musela vyberať celé stránky a ponechať čísla a názvy. Takú sme nepostavili.