KI & LLMs

KV-Cache quantisieren: Mehr Kontext im selben VRAM mit Ollama und llama.cpp

KV-Cache quantisieren: Mehr Kontext im selben VRAM mit Ollama und llama.cpp

Wenn dein Modell zwar in den Grafikspeicher passt, aber bei langem Kontext ausgeht, steckt meist der KV-Cache dahinter. Er wächst mit jedem Token im Kontext. Statt eine kleinere Modellquantisierung zu wählen, kannst du auch den Cache selbst komprimieren. Laut Ollama-Doku braucht er mit q8_0 etwa die Hälfte, mit q4_0 etwa ein Viertel des Speichers. Der Preis ist ein kleiner bis mittlerer Verlust an Genauigkeit.

Wie viel VRAM die Modellgewichte bei Q4_K_M, Q5_K_M und Q8_0 brauchen, zeigt unsere VRAM-Rechentabelle. Was Quantisierung grundsätzlich bedeutet, erklärt der Artikel Quantisierung: Wie große Modelle auf kleine Karten passen. Hier geht es nur um den Cache.

So groß wird der KV-Cache

Der Speicherbedarf pro Token lässt sich aus der Modellarchitektur berechnen. Red Hat nennt dafür die Formel:

KV-Cache pro Token = 2 × Schichten × KV-Köpfe × Kopfdimension × Bytes pro Wert

Die 2 steht für Key und Value. Mit der Kontextlänge multipliziert, ergibt das den Cache für eine Anfrage. Die Werte findest du in der config.json des Modells: num_hidden_layers, num_key_value_heads und die Kopfdimension, also hidden_size geteilt durch num_attention_heads.

Beispiel Qwen2.5-7B-Instruct: Laut config.json hat das Modell 28 Schichten und 4 KV-Köpfe, die Kopfdimension liegt bei 3.584 ÷ 28 = 128. In f16 mit 2 Bytes ergibt das:

Cache-TypPro TokenBei 32.768 TokenWas es nicht leistet
f16 (Standard)2 × 28 × 4 × 128 × 2 B = 56 KiBrund 1,75 GiBVolle Genauigkeit, aber größter Bedarf
q8_0etwa die Hälfteetwa 0,9 GiBLaut Ollama meist kein spürbarer Qualitätsverlust, aber nicht bei jedem Modell
q4_0etwa ein Vierteletwa 0,45 GiBLaut Ollama kleiner bis mittlerer Verlust, bei langem Kontext eher spürbar

Die Werte für q8_0 und q4_0 sind aus den Näherungen der Ollama-Doku abgeleitet. Was tatsächlich belegt wird, zeigt dir die Laufzeitumgebung beim Laden. Bei großen Modellen geht es um ganz andere Mengen: Laut Red Hat braucht ein dichtes 70B-Modell wie Llama 3.3 70B etwa 320 KB pro Token, rund neunmal so viel wie gpt-oss-120b.

Parallele Anfragen zählen mit. Laut Ollama-FAQ wächst der Speicherbedarf mit OLLAMA_NUM_PARALLEL × OLLAMA_CONTEXT_LENGTH. Zwei parallele Anfragen mit je 32k Kontext brauchen also doppelt so viel Cache.

In Ollama aktivieren

Laut Ollama-FAQ wirkt die KV-Cache-Quantisierung nur zusammen mit Flash Attention. Ollama nutzt Flash Attention automatisch, wenn Backend und Gerät es unterstützen. Mit OLLAMA_FLASH_ATTENTION=1 erzwingst du es.

    • Variable setzen: OLLAMA_KV_CACHE_TYPE mit den Werten f16 (Standard), q8_0 oder q4_0
    • Als systemd-Dienst unter Linux: Trag mit systemctl edit ollama.service unter [Service] die Zeilen Environment="OLLAMA_FLASH_ATTENTION=1" und Environment="OLLAMA_KV_CACHE_TYPE=q8_0" ein. Danach folgen systemctl daemon-reload und systemctl restart ollama.
    • Gilt global: Laut Ollama gilt die Einstellung derzeit für alle Modelle. Du kannst sie nicht pro Modell festlegen.

Prüf danach mit ollama ps, wie groß das geladene Modell ist und wie viel davon auf GPU und CPU liegt.

In llama.cpp aktivieren

Der llama-server trennt Key- und Value-Cache:

    • -ctk bzw. --cache-type-k und -ctv bzw. --cache-type-v: Erlaubt sind unter anderem f16 (Standard), bf16, q8_0, q5_1, q5_0, q4_1, q4_0 und iq4_nl.
    • -fa bzw. --flash-attn mit on, off oder auto (Standard auto)
    • -c bzw. --ctx-size für die Kontextlänge und -np bzw. --parallel für die Zahl paralleler Slots

Ein Beispielaufruf: llama-server -m modell.gguf -c 32768 -fa on -ctk q8_0 -ctv q8_0. Beim Start zeigt das Log die reservierte Cache-Größe an. Vergleiche sie mit dem Wert in f16.

Weil K und V getrennt einstellbar sind, kannst du auch nur einen Teil stärker komprimieren. Ob das bei deinem Modell besser abschneidet, zeigt nur dein eigener Vergleich.

Wann sich das lohnt und wann nicht

Eher ja: Du willst langen Kontext für Dokumente, Code oder RAG, und das Modell passt in f16-Cache nur knapp oder gar nicht. Mit q8_0 verdoppelst du grob den Kontext im selben Cache-Budget, und laut Ollama merkt man davon meist nichts.

Mit Vorsicht: Ollama weist darauf hin, dass Modelle mit hohem GQA-Wert, als Beispiel nennt die Doku Qwen2, stärker unter der Cache-Quantisierung leiden können als Modelle mit niedrigem GQA-Wert. Teste dann zuerst q8_0 und geh nur auf q4_0, wenn deine Ergebnisse stabil bleiben.

Eher nein: Du nutzt ohnehin nur kurzen Kontext. Dann ist der Cache klein, und du gewinnst kaum Speicher. Wähle in dem Fall eher die passende Modellquantisierung.

So vergleichst du die Qualität

Nimm drei bis fünf typische Aufgaben, etwa eine Zusammenfassung eines langen Dokuments, eine Frage zu einer Stelle weit hinten im Kontext und eine Coding-Aufgabe. Lass sie mit f16, q8_0 und gegebenenfalls q4_0 laufen, mit festem Seed und gleicher Temperatur. Prüf vor allem Antworten, die sich auf frühe Teile des Kontexts beziehen. Wie du lokale Modelle allgemein vergleichst, steht in Lokale Coding-LLMs vergleichen.

Häufige Fehler bei der KV-Cache-Quantisierung

FehlerWas stattdessen gilt
Nur die GGUF-Datei für den VRAM-Bedarf rechnenDen KV-Cache für deinen Kontext dazurechnen: 2 × Schichten × KV-Köpfe × Kopfdimension × Bytes × Token
OLLAMA_KV_CACHE_TYPE ohne Flash Attention setzenFlash Attention muss aktiv sein, sonst wirkt die Einstellung laut Ollama nicht.
Die Variable in der Shell setzen, obwohl Ollama als Dienst läuftPer systemctl edit ollama.service eintragen und den Dienst neu starten.
Parallele Anfragen vergessenDer Cache wächst mit Kontext × Parallelität.
Direkt auf q4_0 gehenMit q8_0 beginnen und die Qualität bei langem Kontext prüfen.
Annehmen, die Einstellung gelte pro ModellBei Ollama gilt sie derzeit global für alle Modelle.
Nur mit kurzem Kontext testenMit dem Kontext testen, den du wirklich nutzt.

Praktische Handlungsempfehlungen November 2026

Rechne deinen Cache aus. Nimm die config.json deines Modells und die Formel und multipliziere mit deinem Kontext und der Zahl paralleler Anfragen.

Aktiviere Flash Attention. In Ollama mit OLLAMA_FLASH_ATTENTION=1, in llama.cpp mit -fa on.

Starte mit q8_0. Prüf Belegung und Ergebnisse, bevor du weiter komprimierst.

Teste lange Kontexte gezielt. Frag nach Details vom Anfang des Kontexts, denn dort zeigt sich Qualitätsverlust zuerst.

Dokumentiere die Einstellung. Notiere Cache-Typ, Kontext und Parallelität, denn bei Ollama gilt die Einstellung für alle Modelle.

Fazit

Den KV-Cache zu quantisieren ist der direkteste Weg zu mehr Kontext, ohne die Modellgewichte anzufassen. Mit q8_0 halbierst du den Cache grob, laut Ollama meist ohne spürbaren Qualitätsverlust. q4_0 spart mehr, kostet aber bei langem Kontext eher Genauigkeit.

Rechne zuerst aus, wie groß dein Cache überhaupt ist. Lohnt es sich, aktiviere Flash Attention, beginne mit q8_0 und vergleiche die Ergebnisse an deinen eigenen Aufgaben mit langem Kontext.

Quellen und weiterführende Informationen

Haftungsausschluss

Transparenzhinweis: Dieser Artikel ordnet öffentlich zugängliche Informationen ein, vor allem die oben genannten Dokumentationen (Stand: November 2026). Wir testen und messen nicht selbst. Die Cache-Größen für q8_0 und q4_0 sind aus den Näherungen der Ollama-Doku abgeleitet.

Speicherbedarf: Laufzeitumgebungen reservieren zusätzlich Speicher für Berechnungen. Lass Abstand zur Speichergrenze und prüfe die tatsächliche Belegung im Log oder mit ollama ps.

Stand der Software: Parameter, Standardwerte und unterstützte Cache-Typen können sich mit neuen Versionen von Ollama und llama.cpp ändern. Prüfe vor dem Einsatz die aktuelle Dokumentation.

Affiliate-Hinweis: Enthält dieser Artikel Links zu Produkten oder Händlern, kann es sich um Affiliate-Links handeln: Bei einem Kauf darüber erhält aimageddon.de eine Provision, ohne dass sich dein Preis erhöht. Genannte Markennamen sind Warenzeichen der jeweiligen Inhaber und dienen der sachlichen Information; es handelt sich um keine bezahlte Empfehlung.

Hinweis: Dieser Artikel gibt unsere persönliche Einschätzung und Recherche wieder. Technische Daten, Preise und Verfügbarkeit können sich jederzeit ändern. Wir bemühen uns um korrekte Angaben, übernehmen jedoch keine Gewähr für Vollständigkeit und Aktualität.

Affiliate-Hinweis: Dieser Beitrag enthält Affiliate-Links (mit * oder als Amazon-Partnerlink gekennzeichnet). Bei einem Kauf über diese Links erhalten wir eine kleine Provision – für dich entstehen dabei keine zusätzlichen Kosten. Wir empfehlen nur Produkte, die wir für sinnvoll halten.
Ghost Writer

Über den Autor

Ghost Writer