Ein KV-Cache speichert bereits berechnete Attention-Keys und -Values für die erneute Verwendung. So vermeidet ein Sprachmodell wiederholte Arbeit, wenn es ein weiteres Token erzeugt. Im Cache liegen numerische Zwischenergebnisse für eine Sequenz.1
Wenn Q, K und V noch neu für dich sind, starte mit der Attention-Lektion. Die zentrale Idee: Eine neue Query wird mit Keys verglichen und nutzt die zugehörigen Values für eine Mischung.
KV-Cache: bereits berechnete Arbeit behalten
Verfolge einen Prompt durch Prefill und einen Decode-Schritt. Sieh, was gespeichert wird, was neu hinzukommt und was Attention weiterhin lesen muss.
KI-gestützte Lernvisualisierung · vereinfachtes Rechenbeispiel
Unser Beispielprompt besteht aus drei Tokens. Das Modell hat sie noch nicht verarbeitet: Der KV-Cache dieser Anfrage ist leer.
Folge einem Generierungszyklus
- Den Prompt lesen – Prefill. Das Modell verarbeitet die Eingabe-Tokens und berechnet ihre Keys und Values in jeder Attention-Schicht. Die letzte Prompt-Position liefert die Vorhersage, aus der das erste Ausgabe-Token ausgewählt wird.
- Das neue Token verarbeiten – Decode. Das gewählte Token wird zur nächsten Eingabe. Jede Schicht berechnet dafür eine neue Query, einen neuen Key und einen neuen Value.
- Wiederverwenden und ergänzen. Die neue Query liest die gespeicherten Keys zusammen mit dem aktuellen Key. Attention mischt die zugehörigen Values. Die aktuellen K/V bleiben für den folgenden Schritt gespeichert.
- Wiederholen. Das Modell sagt ein weiteres Token voraus, das erneut als Eingabe dienen kann. Ein konventioneller Cache für volle Attention wächst mit jeder verarbeiteten Position.1
Warum funktioniert die Wiederverwendung?
In einem kausalen Decoder kann eine frühere Position keine zukünftigen Tokens lesen. Solange Präfix und Modell unverändert bleiben, müssen ihre Keys und Values beim Anhängen eines späteren Tokens deshalb nicht neu berechnet werden. Jede Schicht hat eigene gespeicherte Tensoren, also Zahlenfelder; die Keys einer Schicht ersetzen nicht die einer anderen.1
Verfolge im Diagramm die älteren Einträge, während ein neuer dazukommt. Unterscheide dabei das Wiederverwenden gespeicherter Vektoren von der Attention-Berechnung für das neue Token. Die zweite Arbeit findet weiterhin statt.
Der Preis ist Speicher
Mehr gespeicherte Tokens bedeuten mehr K/V-Einträge. Auch mehr gleichzeitige Sequenzen, Schichten, KV-Heads oder Bytes pro Eintrag erhöhen den benötigten Speicher. Eine Runtime kann zusätzlich Kapazität reservieren oder den Cache in Blöcken organisieren.2
Ein kleines Zählbeispiel: Vier Tokens mit je zwei K-Zahlen und zwei V-Zahlen benötigen zusammen 16 Zahlen. Ein fünftes Token ergänzt vier weitere. Reale Modelle wiederholen das über Heads und Schichten; dadurch kann der Speicherbedarf erheblich werden.
Caching spart erneute Berechnungen. Volle Attention liest beim Decode aber weiterhin eine wachsende Menge an Keys und Values. Der Aufwand pro erzeugtem Token wird dadurch nicht unabhängig von der Kontextlänge.1
Dieses Missverständnis vermeiden
Der KV-Cache enthält weder fertige Antworten noch neu gelernte Modellgewichte. Änderst du einen früheren Teil des Prompts, müssen die davon betroffenen Zustände im Allgemeinen neu aufgebaut werden. Diese Lektion zeigt gewöhnliche Inferenz mit einem kausalen Decoder; gleitende Fenster, komprimierte Caches und andere Architekturen können anders aufgebaut sein.1
Als Nächstes: Wie NVFP4 und INT4 Zahlen speichern. Für mehr Details öffne das KV-Cache-Glossar oder kehre zum Lernpfad zurück.
Quellen
Footnotes
-
NVIDIA TensorRT, KV cache tensor layouts and memory ownership. ↩