Prefix Caching
Du stellst fünf Fragen zum selben langen Dokument. Jede Eingabe beginnt mit derselben Anweisung und dem Dokumenttext; erst am Ende steht die neue Frage. Den gleichen Anfang erneut zu berechnen würde Arbeit wiederholen.
Prefix Caching nutzt zuvor berechnete Ergebnisse eines gemeinsamen Anfangs von Tokens — Textstücken — für weitere Anfragen. Bei geeigneten Modellen können das Daten des KV Cache sein, die einen Teil der Eingabeverarbeitung ersparen.
Die neue Frage muss weiterhin verarbeitet und ihre Antwort erzeugt werden. Der Cache ist keine Bibliothek fertiger Antworten. Entscheidend sind die Übereinstimmung des Anfangs und der Berechnungsbedingungen: Zwei Dokumente mit ähnlicher Bedeutung müssen keinen gemeinsamen Cache ergeben.
Schon eine kleine Änderung eines früheren Abschnitts kann die Wiederverwendung späterer Blöcke verhindern. Die Einsparung betrifft wiederholte Arbeit, nicht jedes Gespräch; auch das Speichern gemeinsamer Ergebnisse beansprucht Speicher.
Quelle des Mechanismus: vLLM 0.21.0, „Introduction“ und „Limits“.
Mechanismus und Details

Entscheidend ist ein identisches Tokenpräfix in einem übereinstimmenden Berechnungskontext, nicht semantische Ähnlichkeit. Keys und Values späterer Schichten hängen vom vorherigen Kontext ab. Derselbe letzte Absatz nach einem geänderten Anfang liefert nicht automatisch dasselbe KV.
vLLM identifiziert einen Block anhand seiner Tokens, der Kennung des vorherigen Blocks und zusätzlicher Daten, unter anderem der Kennung des LoRA-Adapters und der Bildeingabe. In der beschriebenen Version werden vollständige Blöcke zur Wiederverwendung gespeichert. Siehe die Beschreibung des Mechanismus Automatic Prefix Caching. Die Übereinstimmung des Modells, der Positionen und anderer Einstellungen, die KV beeinflussen, ist eine Voraussetzung für die korrekte Wiederverwendung; ein Vergleich der Texte allein genügt nicht.
Ein verändertes Token, unterschiedliche Folgen
Der Cache unseres Beispiels enthält A B C D E F G H in Blöcken mit je zwei Tokens. Die Buchstaben stehen für angenommene Token-IDs. Eine neue Anfrage ersetzt genau eine Position durch X. Verändere deren Position und prüfe, wie viele vollständige Blöcke sich zurückgewinnen lassen.
Wird H durch X ersetzt, bleiben sieben gemeinsame Tokens, aber nur sechs in vollständigen Blöcken. Wird A durch X ersetzt, gibt es null Treffer, obwohl die folgenden sieben Tokens übereinstimmen. Alle übrigen Bedingungen sind im Beispiel konstant; der Cache ist verfügbar und nichts wurde daraus entfernt.
Dies ist ein Cache für Berechnungen, keine fertige Antwort. Decode muss weitere Tokens weiterhin erzeugen, und entfernte Blöcke müssen neu berechnet werden. Die blockweise Speicherorganisation erklärt PagedAttention.
Ich verwende KI-generierte Inhalte als Teil meines täglichen Lernprozesses.