Attention Mechanism
Der Kernmechanismus moderner KI-Modelle – ermöglicht es einem Modell, sich auf die relevantesten Teile der Eingabe zu konzentrieren, statt alles gleich zu gewichten.
Ein Optimierungsmechanismus für Transformer-Modelle, der die Key-Value-Paare aus dem Attention-Mechanismus zwischenspeichert, um wiederholte Berechnungen zu vermeiden.
Der KV-Cache speichert Zwischenergebnisse der Attention-Berechnung. Ohne Cache müsste das Modell bei jedem neuen Token alle vorherigen Tokens neu verarbeiten – das wäre extrem langsam.
Warum ist das wichtig?
Ohne KV-Cache (Token 100 generieren):
-> Berechne Attention für Token 1-99 neu
-> Dann Token 100
-> O(n²) Komplexität pro Token
Mit KV-Cache:
-> Keys/Values für Token 1-99 aus Cache
-> Nur Token 100 neu berechnen
-> O(n) Komplexität pro Token
Der Trade-off:
Schnellere Inferenz ↔ Mehr VRAM-Verbrauch
Der KV-Cache ist oft der Flaschenhals für lange Kontexte und große Batch-Größen.
Attention(Q, K, V) = softmax(QK^T / √d) × V
Q = Query (aktuelles Token)
K = Keys (alle bisherigen Tokens)
V = Values (alle bisherigen Tokens)
Der KV-Cache speichert K und V für alle bisherigen Tokens.
KV-Cache-Größe = 2 × num_layers × num_heads × head_dim × seq_len × batch_size × dtype_size
Beispiel (Llama 70B, 4K Kontext, Batch 1):
= 2 × 80 × 64 × 128 × 4096 × 1 × 2 bytes
≈ 10.7 GB
| Technik | Beschreibung | Ersparnis |
|---|---|---|
| PagedAttention | Nicht-kontinuierlicher Speicher | 50-90% |
| Quantisierung | FP16 → INT8 Cache | 50% |
| Sliding Window | Nur letzte N Tokens cachen | Variabel |
| Prefix Caching | Gemeinsamer Cache für gleiche Prefixe | Variabel |
# vLLM verwaltet KV-Cache automatisch
from vllm import LLM
llm = LLM(model="meta-llama/Llama-2-70b-chat-hf")
# PagedAttention ist standardmäßig aktiviert Der KV-Cache ist wie ein Notizblock beim Lesen: Statt bei jedem neuen Wort das ganze Buch nochmal zu lesen, notierst du dir die wichtigsten Punkte und schaust nur noch auf deine Notizen.
Speichert Key-Value-Paare aus vorherigen Tokens
Vermeidet redundante Berechnungen bei der Token-Generierung
Hauptgrund, warum LLM-Inferenz viel VRAM braucht
Chat-Anwendungen
Schnelle Antworten durch Caching des Konversationskontexts
Lange Kontexte
Effiziente Verarbeitung von Dokumenten mit vielen Tokens
Batch-Inferenz
Gemeinsamer Prefix-Cache für ähnliche Anfragen
Der KV-Cache wächst mit der Kontextlänge und Batch-Größe. Bei 128K Tokens Kontext und großen Modellen kann der Cache mehrere GB VRAM belegen – oft mehr als die Modellgewichte selbst.
Eine Technik von vLLM, die den KV-Cache wie virtuellen Speicher verwaltet: Nicht-kontinuierliche Speicherblöcke werden effizient genutzt, was den VRAM-Bedarf um 50-90% reduzieren kann.
Ja, bei Anfragen mit gleichem Prefix (z.B. System Prompt). Prefix Caching spart Rechenzeit und VRAM für wiederkehrende Kontexte.