KV-Cache

Attention-Zwischenergebnisse speichern, statt sie für jedes Token neu zu berechnen

Ein Optimierungsmechanismus für Transformer-Modelle, der die Key-Value-Paare aus dem Attention-Mechanismus zwischenspeichert, um wiederholte Berechnungen zu vermeiden.

Experte2 Min Lesezeit

Erklärung starten

Auf einen Blick

3 Punkte

  1. Speichert Key-Value-Paare aus vorherigen Tokens
  2. Vermeidet redundante Berechnungen bei der Token-Generierung
  3. Hauptgrund, warum LLM-Inferenz viel VRAM braucht

Sofortantwort

KV-Cache einfach erklärt

Caching von Attention-Berechnungen für schnellere Inferenz.

Kurz gesagt
Speichert Key-Value-Paare aus vorherigen Tokens
Typischer Einsatz
Chat-Anwendungen, Lange Kontexte, Batch-Inferenz
Wichtig zu wissen
Hauptgrund, warum LLM-Inferenz viel VRAM braucht

KV-Cache im Überblick

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.

Technisch betrachtet

Wie Attention funktioniert

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.

Speicherverbrauch

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

Optimierungen

TechnikBeschreibungErsparnis
PagedAttentionNicht-kontinuierlicher Speicher50-90%
QuantisierungFP16 → INT8 Cache50%
Sliding WindowNur letzte N Tokens cachenVariabel
Prefix CachingGemeinsamer Cache für gleiche PrefixeVariabel

vLLM PagedAttention

# vLLM verwaltet KV-Cache automatisch
from vllm import LLM

llm = LLM(model="meta-llama/Llama-2-70b-chat-hf")
# PagedAttention ist standardmäßig aktiviert

Schritt für Schritt

Wie der KV-Cache die Generierung beschleunigt

Beim autoregressiven Decoding wächst der Kontext mit jedem Token. Der Cache bewahrt bereits berechnete Attention-Informationen für die folgenden Schritte.

  1. Kontext einmal verarbeiten

    Prefill

    Beim Prefill erzeugt der Transformer für alle Eingangstokens Key- und Value-Repräsentationen.

    Prompt → Keys und Values
  2. Zwischenergebnisse ablegen

    Cache

    Diese Repräsentationen bleiben im schnellen Speicher für den weiteren Verlauf der Anfrage verfügbar.

    K und V → KV-Cache
  3. Neues Token berechnen

    Decode

    Für das nächste Token müssen nur dessen neue Werte berechnet werden; frühere Werte kommen aus dem Cache.

    neues Token + Cache → nächste Vorhersage
  4. Speicher steuern

    Betrieb

    Engine und Anwendung verwalten Batch-Größe, Kontextlänge, Cache-Lebensdauer und gemeinsame Präfixe.

    Latenz ↔ VRAM ↔ Durchsatz

Konkretes Beispiel

Beispiel: Eine lange Chat-Antwort

Ein Modell beantwortet eine Frage auf Basis eines umfangreichen Gesprächsverlaufs.

Ohne Zwischenspeicher

Für jedes neue Antworttoken müsste das System den gesamten Verlauf noch einmal vollständig verarbeiten.

Mit KV-Cache

Die Attention-Werte des Verlaufs bleiben verfügbar. Für das nächste Token ergänzt das Modell nur die neue Berechnung.

Der Cache macht Decoding schneller, benötigt aber mit wachsendem Kontext und mehr parallelen Anfragen zunehmend Speicher.

Einordnung

Vorteile und Grenzen

Das spricht dafür

  • Beschleunigt autoregressive Generierung erheblich.
  • Vermeidet wiederholte Berechnungen für bereits verarbeiteten Kontext.
  • Ermöglicht effiziente Chat- und Long-Context-Anwendungen.
  • Kann gemeinsame Präfixe mehrerer Anfragen wiederverwenden.

Das solltest du beachten

  • Verbraucht viel Speicher bei langen Kontexten und großen Batches.
  • Cache-Verwaltung wird im Mehrnutzerbetrieb komplex.
  • Der Cache verbessert nicht die inhaltliche Qualität der Antwort.
  • Speichergrenzen können Kontextlänge und Parallelität begrenzen.
Vertiefung · für Fortgeschrittene

KV-Cache im Decode-Schritt

Keys und Values aus dem bisherigen Kontext werden für jedes neue Token wiederverwendet.

Wissenskarte

Attention speichern

Die Cache-Größe wächst mit Schichten, Kontextlänge, Batch-Größe und numerischer Präzision. KV-Cache gliedert sich in: Prompt, Prefill, Cache, Neues Token, Attention, VRAM.

01Einsatzbereiche

Wann ist KV-Cache sinnvoll?

Geeignet für

  • Chat-AnwendungenSchnelle Antworten durch Caching des Konversationskontexts
  • Lange KontexteEffiziente Verarbeitung von Dokumenten mit vielen Tokens
  • Batch-InferenzGemeinsamer Prefix-Cache für ähnliche Anfragen

↑ Inhalt

02Werkzeuge

Womit KV-Cache umgesetzt wird

↑ Inhalt

Merksatz

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.

  1. Speichert Key-Value-Paare aus vorherigen Tokens
  2. Vermeidet redundante Berechnungen bei der Token-Generierung
  3. Hauptgrund, warum LLM-Inferenz viel VRAM braucht

04Redaktion

Herkunft und Stand

Redaktion und Aktualität

Ebenex RedaktionRedaktion

Veröffentlicht
Aktualisiert

Dieses Feld entwickelt sich schnell. Oben stehen Veröffentlichung und letzte Änderung; ein Prüfdatum kommt dazu, sobald die Erklärung nach ihrer letzten Änderung geprüft wurde.

↑ Inhalt

05FAQ

Häufige Fragen zu KV-Cache

Warum brauchen LLMs so viel VRAM?

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.

Was ist PagedAttention?

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.

Kann ich den KV-Cache zwischen Anfragen teilen?

Ja, bei Anfragen mit gleichem Prefix (z.B. System Prompt). Prefix Caching spart Rechenzeit und VRAM für wiederkehrende Kontexte.

↑ Inhalt

06Weiterlernen

Was möchtest du als Nächstes verstehen?

  • Grundlage nachholen

    Attention Mechanism

    Mechanismus zur Fokussierung auf relevante Eingabeteile.

  • Technisch vertiefen

    Tokens

    Texteinheiten, die ein Sprachmodell verarbeiten kann.

↑ Inhalt