Wie Key-Value-Vektoren während der Token-Generierung zwischengespeichert werden, um Inferenz zu beschleunigen
Beispiel (Llama 2 7B):
2 × 32 Layers × 32 Heads × 128 Dim × Seq_Len × 2 Bytes (FP16)
= 524.288 Bytes pro Token = ~512 KB pro Token
Bei 32K Tokens = ~16 GB
| Merkmal | Ohne KV-Cache | Mit KV-Cache |
|---|---|---|
| Attention pro Token | O(n²) bei n Tokens | O(n) nur Query × K |
| Speicherverbrauch | Effizient (nur Input) | O(Layers × Heads × Seq_Len) |
| Generierungsgeschwindigkeit | Langsam (alles neu) | ~5-10x schneller |
| Praktische Anwendung | Kaum genutzt | Standard in allen LLMs |
| Modell | Größe | Layers | Heads | KV-Cache / Token (FP16) | Bei 32K Tokens |
|---|---|---|---|---|---|
| Claude 4.5 | ~100B | 80 | 64 | ~1.5 MB | ~48 GB (200K ctx) ✓ |
| Qwen 3 | ~100B | 96 | 32 | ~1 MB | ~32 GB (256K ctx) ✓ |
| Llama 4 Maverick | 400B (17B aktiv) | 128 | 64 | ~2.5 MB | ~80 GB (1M ctx) ✓ |
| Gemini 3 | ~600B | 256 | 128 | ~4 MB | ~128 GB (10M ctx) ✓ |
Hinweis: Das KV-Cache wird zum Flaschenhals bei langen Kontexten. Deshalb sind Optimierungen wie GQA (Kapitel 2.2), Quantization und Sparse Attention (Kapitel 2.4) essentiell. Sparse Attention reduziert die Cache-Größe dramatisch, indem nur relevante Token-Paare gespeichert werden — ermöglicht 1M+ Token-Kontexte bei praktikablen Speicheranforderungen.