KV Cache
Entdecke, wie der KV Cache Transformer-Modelle wie LLMs optimiert. Lerne, wie diese Technik die Inferenzlatenz reduziert und die Effizienz für Ultralytics YOLO26 steigert.
KV Cache (Key-Value Cache) ist eine entscheidende Optimierungstechnik, die primär in Large Language Models (LLMs) und anderen Transformer-basierten Architekturen eingesetzt wird, um die inference latency zu beschleunigen und die Rechenkosten zu senken. Im Kern speichert der KV-Cache die Key- und Value-Matrizen, die vom attention mechanism für vorherige Token in einer Sequenz generiert wurden. Durch das Speichern dieser Zwischenberechnungen vermeidet das Modell, dass die Attention-Zustände für die gesamte Historie der Konversation bei jeder Generierung eines neuen Tokens neu berechnet werden müssen. Dieser Prozess wandelt den text generation-Workflow von einer Operation mit quadratischer Komplexität in eine lineare um, wodurch Echtzeit-Interaktionen mit Chatbots und AI agents praktikabel werden.
Mechanismus und Vorteile#
In einem Standard-Transformer-Modell erfordert die Generierung des nächsten Wortes die Berücksichtigung aller vorherigen Wörter, um den Kontext zu verstehen. Ohne Caching müsste das Modell bei jedem Schritt die mathematischen Beziehungen für die gesamte Sequenz neu berechnen. Der KV-Cache löst dies, indem er als Speicherdank fungiert.
- Geschwindigkeitsverbesserung: Durch das Abrufen vorab berechneter Keys und Values aus dem Speicher beschleunigt das System die inference engine drastisch. Dies ist unerlässlich für Anwendungen, die eine geringe Latenz erfordern, wie etwa real-time inference in Kundendienst-Bots.
- Ressourceneffizienz: Zwar erhöht dies die Speichernutzung (VRAM), jedoch reduziert es den Rechenaufwand (FLOPs) pro Token erheblich. Dieser Kompromiss wird oft durch Techniken wie model quantization oder Paging gesteuert, ähnlich wie Betriebssysteme den RAM verwalten.
- Erweiterter Kontext: Eine effiziente Verwaltung des KV-Caches ermöglicht es Modellen, ein größeres context window zu verarbeiten, wodurch sie lange Dokumente verarbeiten oder kohärente Konversationen über längere Zeiträume aufrecht erhalten können.
Praxisanwendungen#
Der KV-Cache ist eine fundamentale Komponente beim Deployment moderner generativer KI, aber seine Prinzipien erstrecken sich auch auf den Bereich computer vision (CV).
-
Generative Chatbots: Dienste wie ChatGPT oder Claude stützen sich stark auf KV-Caching. Wenn ein Benutzer eine Follow-up-Frage stellt, liest das Modell nicht den gesamten Chat-Verlauf von Grund auf neu ein. Stattdessen hängt es die neue Eingabe an die gecachten Zustände des vorherigen Turns an, was nahezu sofortige Antworten ermöglicht.
-
Videoverstehen: Bei video understanding-Aufgaben verarbeiten Modelle Frames sequenziell. Ähnlich wie Text-Token können visuelle Features aus vergangenen Frames gecacht werden, um dem Modell zu helfen, Objekte zu verfolgen oder Aktionen zu erkennen, ohne den gesamten Videoverlauf erneut zu verarbeiten. Dies ist besonders relevant für die action recognition, bei der der temporale Kontext entscheidend ist.
Effizientes Speichermanagement#
Da Modelle immer größer werden, kann die Größe des KV Cache zu einem Flaschenhals werden und Gigabytes an GPU-Speicher verbrauchen. Aktuelle Fortschritte konzentrieren sich auf die Optimierung dieses Speichers.
- PagedAttention: Inspiriert vom virtuellen Speicher in Betriebssystemen ermöglicht PagedAttention (eingeführt von vLLM), dass der KV-Cache in nicht-kontinuierlichen Speicherblöcken gespeichert wird. Dies reduziert die Fragmentierung und erlaubt höhere Batch-Größen beim model serving.
- KV-Cache-Quantisierung: Um Speicherplatz zu sparen, wenden Entwickler häufig mixed precision oder eine Int8-Quantisierung speziell auf die gecachten Werte an. Dies reduziert den Speicherbedarf, sodass edge AI-Geräte mit begrenztem RAM leistungsfähige Modelle ausführen können.
- Prompt-Caching: Eine verwandte Technik, bei der die KV-Zustände eines statischen System-Prompts (z. B. „Du bist ein hilfreicher Programmierassistent“) einmal berechnet und über viele verschiedene Benutzersitzungen hinweg wiederverwendet werden. Dies ist ein Kernmerkmal zur Optimierung von prompt engineering-Workflows im großen Maßstab.
Unterscheidung verwandter Konzepte#
Es ist hilfreich, den KV Cache von anderen Caching- und Optimierungsbegriffen zu unterscheiden:
- KV-Cache vs. Prompt Caching: Der KV-Cache bezieht sich typischerweise auf den dynamischen, Token-für-Token-Speicher, der während eines einzelnen Generierungsstroms verwendet wird. Prompt-Caching bezieht sich spezifisch auf das Speichern des verarbeiteten Zustands einer festen Eingabeanweisung, um diese über mehrere unabhängige Inferenzaufrufe hinweg wiederzuverwenden.
- KV-Cache vs. Embeddings: Embeddings sind Vektordarstellungen von Eingabedaten (Text oder Bildern), die semantische Bedeutung erfassen. Der KV-Cache speichert die Aktivierungen (Keys und Values), die aus diesen Embeddings innerhalb der Attention-Layer abgeleitet wurden, speziell zum Zweck der Sequenzgenerierung.
- KV-Cache vs. Model Weights: Modellgewichte sind die statischen, gelernten Parameter des neuronalen Netzwerks. Der KV-Cache besteht aus dynamischen, temporären Daten, die während des Forward-Passes einer spezifischen Eingabesequenz generiert werden.
Beispiel: Kontext in Vision-Modellen#
Während KV-Caching in der NLP am bekanntesten ist, gilt das Konzept der Zustandsbeibehaltung auch für fortgeschrittene Visionsmodelle. Im folgenden Beispiel simulieren wir die Idee der Weitergabe von Zustand (Kontext) in einem Video-Tracking-Szenario mit Ultralytics YOLO26. Hier behält der Tracker die Identität von Objekten über Frames hinweg bei, was konzeptionell ähnlich ist wie die Art und Weise, wie ein Cache den Kontext über Token hinweg aufrechterhält.
from ultralytics import YOLO
# Load the Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Track objects in a video, maintaining identity state across frames
# The 'track' mode effectively caches object features to link detections
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=False)
# Print the ID of the tracked objects
if results[0].boxes.id is not None:
print(f"Tracked IDs: {results[0].boxes.id.numpy()}")Entwickler, die Datensätze verwalten und optimierte Modelle deployen möchten, können die Ultralytics Platform nutzen, welche die Pipeline von der Datenannotation bis zum effizienten model deployment vereinfacht. Für diejenigen, die sich für die tieferen Mechanismen der Attention interessieren, bieten Bibliotheken wie PyTorch die grundlegenden Bausteine, in denen diese Caching-Mechanismen implementiert sind.






