HeadlinesBriefing favicon HeadlinesBriefing.com

Warum LLM-Inferenzserver den VRAM erschöpfen

Towards Data Science •
×

Die Gewichte eines mittelgroßen Modells passen bequem, doch gleichzeitiger Verkehr löste CUDA out-of-memory-Fehler aus, während die GPU-Auslastung niedrig blieb. Der Schlüssel-Wert-Cache, nicht die Modellgröße, verbrauchte den verfügbaren Speicher. Bevor eine GPU hinzugefügt wurde, aktivierte der Autor die seitenspezifische Allokation und das Präfix-Caching, erhöhte die Obergrenze und legte ein Speicherlayout-Problem offen.

Naive Serving-Stacks reservieren einen zusammenhängenden Block pro Anfrage für die maximale Sequenzlänge. Eine Anfrage, die 200 Token bei einer Reservierung von 4.096 Token erzeugt, lässt den größten Teil ungenutzt. Eine v LLM-Analyse ergab, dass die naive KV-Cache-Verwaltung 60 bis 80 Prozent des reservierten Speichers verschwendet. Der Cache wächst mit gleichzeitigen Anfragen, sodass Verkehrsstöße — nicht längere Prompts — die Server über die Speichergrenze drängen.

GPU-Speicher wird zwischen festen Modellgewichten, vorübergehenden Aktivierungen und dem variablen KV-Cache geteilt. Jeder Token kostet bei Llama 3.1 70B im BF16-Format etwa 320 KB, mit 80 Schichten, 8 Schlüssel/Wert-Köpfen und einer Kopfdimension von 128. Gruppierte-Abfrage-Aufmerksamkeit reduziert die Anzahl der Schlüssel/Wert-Köpfe und die Cachegröße.

Bei 128 gleichzeitigen Anfragen mit 4K-Token-Kontexten benötigt der Cache allein etwa 160 GB. Die 70B-Gewichte benötigen im BF16-Format 140 GB, sodass der Cache das Modell übersteigen kann. v LLM reserviert den Cache als maximale gleichzeitige Sequenzen multipliziert mit der maximalen Sequenzlänge; die Erhöhung eines der beiden Faktoren multipliziert die Reservierung und kann beim Start einen OOM auslösen.

Wichtige Entitäten: Unternehmen: NVIDIA, Towards Data Science