TurboQuant: Komprese KV-cache LLM šestinásobně bez ztráty přesnosti
Google Research představil TurboQuant – algoritmus extrémní komprese KV-cache pro velké jazykové modely. Snížení objemu paměti alespoň o 6× se kombinuje s rychlostí inferencí až 8× na GPU H100. Klíčový efekt: snížení bottlenecku propustnosti paměti bez zhoršení kvality generování.
KV-cache jako úzké místo inferencí
Během autoregresivní generace používá LLM mechanismus pozornosti (attention) vektory Key a Value z předchozích tokenů. Úplné znovupočítání kontextu na každém kroku je neefektivní, proto jsou mezivýsledky ukládány do vyrovnávací paměti. KV-cache roste lineárně s délkou kontextu, což omezuje throughput a maximální délku kontextu.
U dlouhých posloupností dochází k omezení propustnosti paměti: GPU tráví čas na čtení dat namísto výpočtů. To zvyšuje latenci i náklady. TurboQuant řeší problém komprese s zachováním smyslu vektorů pro attention.
Princip práce PolarQuant
První krok – PolarQuant. Vektory se transformují do polárních souřadnic po náhodném otočení (rotation). Poloměr kóduje velikost vektoru, úhel směr.
# Pseudokód PolarQuant
rotated = rotate_random(vector)
rho = norm(rotated) # poloměr
phi = angle(rotated) # úhel
quantized = quantize(rho, phi)
Otočení zjednodušuje rozložení dat, činí je předvídatelnější pro kvantování. Žádný přídavný overhead na kódovací tabulky nebo parametry – komprese dosahuje 3–4 bitů na hodnotu bez fine-tuningu modelu.
Korekce chyb prostřednictvím QJL
Kvantování zavádí šum. Druhý krok – QJL (Quantized Johnson-Lindenstrauss) zakóduje residuální chybu na 1 bit na hodnotu. Transformace zachovává eukleidovské vzdálenosti mezi vektory, což je klíčové pro dot-product attention.
QJL aproximuje JL-lemmu v kvantované podobě:
- Vstup: residuální chyba po PolarQuant
- Výstup: 1-bitová korekce
- Vlastnost: ||Qx - Qy|| ≈ ||x - y|| pro x, y ∈ KV-cache
Kombinace dává kompresi KV-cache na 1,25–2 bity/hodnotu s minimální degradací perplexity.
Benchmarky a výkon
Testování na Llama-3.1-8B-Instruct (LongBench):
- Komprese: 6–8× proti baseline
- Zrychlení výpočtu logitů: až 8× na H100 (JAX baseline)
- Kvalita: <1 % pokles v úlohách needle-in-haystack a dlouhý kontext
Na GloVe (d=200) TurboQuant vedoucí v trade-off recall vs poměr komprese (1:k optimální).
| Metoda | Bitů/hodnota | Komprese | Pokles perplexity |
|-------|------------|--------|------------------|
| Baseline | 16 | 1x | 0% |
| INT8 | 8 | 2x | 0,5% |
| TurboQuant (3-bit) | 3 | 6x | 0,2% |
Až 3 bity bez přetrénování – průlom pro zero-shot kvantování.
Co je důležité
- Extrémní komprese: KV-cache 6× menší při 3 bitech/hodnotu.
- Zrychlení inferencí: až 8× na memory-bound úlohách.
- Zachování vzdáleností: QJL zaručuje kompatibilitu s attention.
- Univerzálnost: Použitelné pro vyhledávání vektorů a RAG.
- Bez fine-tuningu: Přímá náhrada pro stávající LLM.
Použití mimo LLM
TurboQuant překračuje rámec transformátorů. Ve databázích vektorů zachovává hledání ANN (HNSW, FAISS). Na edge zařízeních snižuje požadavky na DRAM, umožňuje inferenci přímo na zařízení.
Pro senior vývojáře: integrujte do vlastních inference engine. Podpora JAX/Flax usnadňuje prototypování. Testujte na dlouhých kontextech (>128k tokenů) pro reálný výhodu.
— Editorial Team
Zatím žádné komentáře.