Zum Inhalt springen
Kurzer Hinweis: flozi00 TechHub ist ein Solo-Nebenprojekt neben einem Vollzeitjob — persönliche Lernnotizen, keine offiziellen Aussagen. Kritische Schritte selbst prüfen.

Den KV-Cache visuell verstehen

Sieh, was ein Sprachmodell im KV-Cache speichert, wie sich Prompt-Verarbeitung und Generierung unterscheiden und warum mehr Kontext Speicher braucht.

2 Min. Lesezeitflozi00
aibeginnervisual-learningkv-cacheinferenceguide

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.

Sehen · ausprobieren · verstehen

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

Schritt 1 / 6Prompt einlesen

Unser Beispielprompt besteht aus drei Tokens. Das Modell hat sie noch nicht verarbeitet: Der KV-Cache dieser Anfrage ist leer.

Vereinfachter kausaler Decoder · eine Schicht gezeigt

Eingabe dieses Durchlaufs

DerHimmelist

3 Prompt-Tokens

Gelernte Projektionen
Q…
K…
V…

Noch nicht berechnet

Gespeicherte K/V-Paare

0 Positionen

1. Der

——

Leer

2. Himmel

——

Leer

3. ist

——

Leer

4. …

——

Leer

Die Wörter beschriften nur Positionen. In den K/V-Feldern stehen Zahlenvektoren, keine Wörter oder gespeicherten Antworten.

Cache lesenQ mit K vergleichen → Attention-Gewichte → V mischen

Attention läuft, wenn ein Eingabetoken verarbeitet wird. Sampling allein erweitert den Cache noch nicht.

Bisher erzeugte AusgabeNoch kein Ausgabetoken gewählt

Vereinfachtes Beispiel: Ein Wort steht hier jeweils für ein Token. Echte Tokenizer können Wörter aufteilen. Die gezeigte Fortsetzung ist vorgegeben, keine Modellvorhersage.

Warum ist die Wiederverwendung erlaubt?

Bei einem festen Präfix während kausaler Inferenz können frühere Token-Zustände nicht von zukünftigen Tokens abhängen. Ihre berechneten Keys und Values lassen sich deshalb wiederverwenden. Jede Schicht führt ihren eigenen Cache; die Modellgewichte ändern sich dabei nicht.

Warum braucht ein längeres Gespräch mehr Speicher?

Probiere die reinen K/V-Daten eines hypothetischen Modells mit vollständiger Attention aus. Doppelt so viele gespeicherte Tokens verdoppeln diese Datenmenge.

Reine K/V-Daten

512 MiB

128 KiB pro gespeichertem Token

0–8 GiB

1 Sequenz · 32 Schichten · 32 Query-Köpfe · 128 Zahlen je Kopf · BF16-Cache (2 Byte je Zahl). Das sind Beispieldimensionen, kein konkretes Modell.

Rechnung und Grenzen anzeigen

Byte = 2 × Sequenzen × Schichten × Tokens × KV-Köpfe × Kopfgröße × Byte je Zahl

2 × 1 × 32 × 4.096 × 8 × 128 × 2 = 536.870.912 Byte

Der Faktor 2 steht für Keys und Values. GQA und MQA speichern weniger K/V-Köpfe; Query-Köpfe werden getrennt gezählt.

Nicht enthalten sind Modellgewichte, temporäre Aktivierungen, reservierte Kapazität sowie Paging- und Allokationsaufwand. Sliding-Window-, komprimierte und hybride Caches brauchen andere Schätzungen. Die Cache-Präzision ist unabhängig von der Gewichtspräzision.

Quellen: Hugging Face · How caching works · NVIDIA · KV cache

Du bestimmst das Tempo. Pausiere jederzeit oder wähle einen Schritt aus.

Folge einem Generierungszyklus

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. Hugging Face, How caching works. ↩ ↩2 ↩3 ↩4 ↩5

  2. NVIDIA TensorRT, KV cache tensor layouts and memory ownership. ↩