Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten
Glossar

KV-Cache

Entdecken Sie, wie KV Cache Transformer-Modelle wie LLMs optimiert. Erfahren Sie, wie diese Technik die Inferenzlatenz reduziert und die Effizienz von Ultralytics steigert.

KV-Cache (Key-Value-Cache) ist eine wichtige Optimierungstechnik, die vor allem in großen Sprachmodellen (LLMs) und anderen Transformer-basierten Architekturen eingesetzt wird, um die Inferenzlatenz zu beschleunigen zu beschleunigen und die Rechenkosten zu senken. Im Kern speichert der KV-Cache die Schlüssel- und Wertematrizen, die vom Aufmerksamkeitsmechanismus für vorherige Token in einer Sequenz generiert wurden. Durch das Speichern dieser Zwischenberechnungen vermeidet das Modell, die Aufmerksamkeitszustände für die gesamte Konversationshistorie jedes Mal neu zu berechnen, wenn es ein neues Token generiert. Dieser Prozess transformiert die Textgenerierungs-Workflow von einer quadratischen Komplexität in eine lineare und ermöglicht so Echtzeit-Interaktionen mit Chatbots und KI-Agenten ermöglicht.

Mechanismus und Vorteile

In einem Standard Transformer-Modell Modell müssen für die Generierung des nächsten Wortes alle vorherigen Wörter berücksichtigt werden, 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 dieses Problem, indem er als Speicherbank fungiert.

  • Geschwindigkeitsverbesserung: Durch das Abrufen vorab berechneter Schlüssel und Werte aus dem Speicher beschleunigt das System die Inferenz-Engine Inferenz-Engine. Dies ist für Anwendungen mit geringer Latenz, wie z. B. Echtzeit-Inferenz in Kundenservice-Bots.
  • Ressourceneffizienz: Es erhöht zwar den Speicherbedarf (VRAM), reduziert jedoch erheblich die pro Token erforderliche Rechenleistung (FLOPs). Dieser Kompromiss wird häufig durch Techniken wie die Modellquantisierung oder Paging gesteuert, ähnlich wie Betriebssysteme den RAM verwalten.
  • Erweiterter Kontext: Durch die effiziente Verwaltung des KV-Caches können Modelle ein größeres Kontextfenster, wodurch sie lange Dokumente verarbeiten oder über längere Zeiträume hinweg kohärente Gespräche führen können.

Anwendungsfälle in der Praxis

Der KV-Cache ist eine grundlegende Komponente bei der Bereitstellung moderner generativer KI, aber seine Prinzipien erstrecken sich auch auf Computer Vision (CV).

  1. Generative Chatbots: Dienste wie ChatGPT oder Claude stützen sich stark auf KV-Caching. Wenn ein Benutzer eine Folgefrage stellt, liest das Modell nicht den gesamten Chat-Verlauf von Grund auf neu. Stattdessen hängt es die neue Eingabe an die zwischengespeicherten Zustände der vorherigen Runde an, was nahezu sofortige Antworten ermöglicht.
  2. Video-Verständnis: In Video-Verständnisaufgaben verarbeiten Modelle Frames sequenziell. Ähnlich wie bei Text-Tokens können visuelle Merkmale aus vergangenen Frames zwischengespeichert werden, um dem Modell zu helfen, track oder Aktionen zu erkennen, ohne den gesamten Videoverlauf erneut zu verarbeiten. Dies ist besonders relevant für die Aktionserkennung , bei der der zeitliche Kontext entscheidend ist.

Effiziente Speicherverwaltung

Da Modelle immer größer werden, kann die Größe des KV-Caches zu einem Engpass werden, der Gigabytes an GPU verbraucht. Jüngste Fortschritte konzentrieren sich auf die Optimierung dieses Speichers.

  • PagedAttention: Inspiriert durch den virtuellen Speicher in Betriebssystemen, PagedAttention (eingeführt durch vLLM) ermöglicht es, den KV-Cache in nicht zusammenhängenden Speicherblöcken zu speichern. Dies reduziert die Fragmentierung und ermöglicht größere Batch-Größen während des Modellbereitstellung.
  • KV-Cache-Quantisierung: Um Platz zu sparen, wenden Entwickler häufig Mixed-Precision- oder int8 speziell auf die zwischengespeicherten Werte an. Dies reduziert den Speicherbedarf und ermöglicht Edge-AI-Geräte Geräte mit begrenztem RAM in die Lage versetzt, leistungsfähige Modelle auszuführen.
  • 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 dann in vielen verschiedenen Benutzersitzungen wiederverwendet werden. Dies ist eine Kernfunktion zur Optimierung der Prompt-Engineering- Workflows in großem Maßstab.

Unterscheidung von verwandten Konzepten

Es ist hilfreich, den KV-Cache von anderen Caching- und Optimierungsbegriffen zu unterscheiden:

  • KV-Cache vs. Prompt-Caching: Der KV-Cache bezieht sich in der Regel auf den dynamischen, tokenweisen Speicher, der während eines einzelnen Generierungs-Streams verwendet wird. Prompt-Caching bezieht sich speziell auf die Speicherung des verarbeiteten Zustands einer festen Eingabeanweisung, die über mehrere unabhängige Inferenzaufrufe hinweg wiederverwendet werden soll.
  • KV-Cache vs. Einbettungen: Einbettungen sind Vektordarstellungen von Eingabedaten (Text oder Bilder), die die semantische Bedeutung erfassen. Der KV-Cache speichert die Aktivierungen (Schlüssel und Werte), die aus diesen Einbettungen innerhalb der Aufmerksamkeits-Schichten abgeleitet werden, speziell zum Zweck der Sequenzgenerierung.
  • KV-Cache vs. Modellgewichte: Modellgewichte sind die statischen, gelernten Parameter des neuronalen Netzwerks. Der KV-Cache besteht aus dynamischen, temporären Daten, die während des Vorwärtsdurchlaufs einer bestimmten Eingabesequenz generiert werden.

Beispiel: Kontext in Visionsmodellen

Während KV-Caching vor allem im Bereich NLP bekannt ist, gilt das Konzept der Zustandserhaltung auch für fortschrittliche Bildverarbeitungsmodelle. Im nachfolgenden Beispiel simulieren wir die Idee der Zustandsübergabe (Kontext) in einem Video-Tracking-Szenario unter Verwendung von Ultralytics . Hier behält der Tracker die Identität von Objekten über mehrere Frames hinweg bei, was konzeptionell der Art und Weise ähnelt, wie ein Cache den Kontext über mehrere Tokens hinweg beibehä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 bereitstellen möchten, können die Ultralytics , die den Prozess von der Datenannotation bis zur effizienten Modellbereitstellungvereinfacht. Für diejenigen, die sich für die tieferen Mechanismen der Aufmerksamkeit interessieren, gibt es Bibliotheken wie PyTorch die grundlegenden Bausteine, in denen diese Caching-Mechanismen implementiert sind.

Werden Sie Mitglied der Ultralytics

Gestalten Sie die Zukunft der KI mit. Vernetzen Sie sich, arbeiten Sie zusammen und wachsen Sie mit globalen Innovatoren

Jetzt beitreten