Verständnis der LLM VRAM-Anforderungen: Eine mathematische Tiefenanalyse

Die Bereitstellung von Large Language Models (LLMs) erfordert eine sorgfältige Berücksichtigung der GPU-Speicheranforderungen. Dieser Leitfaden erläutert die mathematischen Formeln zur Berechnung des VRAM-Verbrauchs für Inferenz und Training und verwendet das Modell Qwen3-VL-32B-Instruct als praktisches Beispiel.

Warum die Berechnung des VRAM wichtig ist

Bevor Sie ein LLM bereitstellen, mĂĽssen Sie entscheidende Fragen beantworten:

  • Wie viel GPU-Speicher wird mein Modell verbrauchen?
  • Kann ich dieses Modell auf meiner aktuellen Hardware ausfĂĽhren?
  • Welche Quantisierungsmethode bietet das beste Verhältnis zwischen Speicher und Leistung?
  • Wie viele gleichzeitige Nutzer kann ich unterstĂĽtzen?

Dieser Leitfaden liefert die mathematische Grundlage, um diese Fragen präzise zu beantworten.

Beispielmodell: Qwen3-VL-32B-Instruct

Wir verwenden Qwen3-VL-32B-Instruct als unser Referenzmodell in diesem Leitfaden. Dieses multimodale Modell vereint Bild- und Sprachfähigkeiten mit folgender Architektur:

ParameterValueDescription
Model Parameters32.5 billionTotal trainable parameters
Hidden Size5,120Dimension of hidden representations
Intermediate Size25,600FFN intermediate dimension (5x hidden size)
Number of Layers64Total transformer blocks
Attention Heads64Number of query attention heads
KV Heads8Number of key-value heads (GQA)
Head Dimension128Dimension per attention head
Max Context Length262,144Maximum sequence length (256k tokens)
ArchitectureGrouped Query AttentionUses GQA for efficient inference

Konfigurationsquelle: Die Modellkonfiguration wird aus dem Abschnitt text_config der Datei config.json des Modells auf Hugging Face Hub extrahiert.

Zentrale Speicherelemente

Der VRAM-Verbrauch fĂĽr LLMs besteht aus vier Hauptkomponenten:

1. Model Weights Speicher

Der Basisspeicher, der zum Speichern der Modellparameter benötigt wird.

Model Weights (bytes) = Number of Parameters Ă— Bytes per Parameter

Bytes pro Parameter hängen vom Datentyp (Quantisierungsstufe) ab:

Data TypeBytes per ParameterPrecision
float324 bytesFull precision
float16/bfloat162 bytesHalf precision
int8/fp81 byte8-bit quantization
int4/fp40.5 bytes4-bit quantization

Beispielrechnung fĂĽr Qwen3-VL-32B:

Number of Parameters: 32,500,000,000 (32.5B)

float32:  32,500,000,000 Ă— 4.0   = 130,000,000,000 bytes = 130.00 GB
float16:  32,500,000,000 Ă— 2.0   = 65,000,000,000 bytes  = 65.00 GB
int8:     32,500,000,000 Ă— 1.0   = 32,500,000,000 bytes  = 32.50 GB
int4:     32,500,000,000 Ă— 0.5   = 16,250,000,000 bytes  = 16.25 GB

2. KV Cache Speicher

Der Key-Value Cache speichert Zwischenzustände der Attention für eine effiziente autoregressive Generierung. Dies ist die wichtigste dynamische Speichereinheit während der Inferenz.

KV Cache (bytes) = 2 Ă— Batch Size Ă— Sequence Length Ă— Num Layers Ă— Num KV Heads Ă— Head Dimension Ă— KV Data Type Size

AufschlĂĽsselung der Formel:

  • 2Ă—: Getrennter Speicher fĂĽr Keys und Values
  • Batch Size: Anzahl gleichzeitiger Anfragen
  • Sequence Length: Maximale Kontextlänge (Eingabe + Ausgabe)
  • Num Layers: Anzahl der Transformer-Blöcke
  • Num KV Heads: Anzahl der Key-Value-Heads (8 fĂĽr GQA in Qwen3-VL)
  • Head Dimension: Größe jedes Attention-Heads (128)
  • KV Data Type Size: Bytes pro Wert (typischerweise 2 fĂĽr float16)

Beispielrechnung fĂĽr Qwen3-VL-32B:

Szenario: 1 Nutzer, 8.192 Token-Kontext, float16 KV cache

Batch Size: 1
Sequence Length: 8,192 tokens
Num Layers: 64
Num KV Heads: 8 (Grouped Query Attention)
Head Dimension: 128
KV Data Type: float16 (2 bytes)

KV Cache = 2 Ă— 1 Ă— 8,192 Ă— 64 Ă— 8 Ă— 128 Ă— 2
         = 2 Ă— 1 Ă— 8,192 Ă— 64 Ă— 8 Ă— 256
         = 2 Ă— 1,073,741,824 bytes
         = 2,147,483,648 bytes
         = 2.00 GB

Skalierung mit Batch-Größe:

Batch SizeUsersKV Cache Memory (float16)
11 concurrent user2.00 GB
44 concurrent users8.00 GB
88 concurrent users16.00 GB
1616 concurrent users32.00 GB

Skalierung mit Sequenzlänge:

Sequence LengthContext SizeKV Cache Memory (batch=1, float16)
2,0482k tokens0.50 GB
8,1928k tokens2.00 GB
32,76832k tokens8.00 GB
131,072128k tokens32.00 GB

3. Aktivierungsspeicher

Speicher, der für Zwischenberechnungen während der Forward-Passes benötigt wird.

PyTorch Activation Memory = Batch Size Ă— Sequence Length Ă— (18 Ă— Hidden Size + 4 Ă— Intermediate Size)

Beispielrechnung fĂĽr Qwen3-VL-32B:

Scenario: 1 user, 8,192 token context

Batch Size: 1
Sequence Length: 8,192
Hidden Size: 5,120
Intermediate Size: 25,600

Activation Memory = 1 Ă— 8,192 Ă— (18 Ă— 5,120 + 4 Ă— 25,600)
                  = 8,192 Ă— (92,160 + 102,400)
                  = 8,192 Ă— 194,560
                  = 1,593,835,520 bytes
                  = 1.59 GB (base value)

Multiplikatoren fĂĽr Datentypen:

Verschiedene Quantisierungsstufen haben unterschiedliche Aktivierungsspeicher-Bedarfe:

Data TypeMultiplierEffective Activation Memory
float322.0Ă—1.59 Ă— 2.0 = 3.18 GB
float16/bfloat161.0Ă—1.59 Ă— 1.0 = 1.59 GB
int81.0Ă—1.59 Ă— 1.0 = 1.59 GB
fp40.5Ă—1.59 Ă— 0.5 = 0.80 GB

4. Nicht-PyTorch Speicher-Overhead

Systembedingter Speicher-Overhead fĂĽr CUDA-Kontext, cuBLAS und andere Framework-Komponenten.

Non-PyTorch Memory = 1,024 MB = 1.00 GB (constant)

Dies ist ein fester Overhead, der unabhängig von der Modellgröße oder der Batch-Konfiguration ist.

Vollständige Inferenz-Speicherformel

Durch die Kombination aller Komponenten ergibt sich der gesamte für die Inferenz benötigte VRAM:

Total Inference VRAM = (Model Weights + KV Cache + Non-PyTorch Memory + Activations) / GPU Utilization

GPU-Auslastungsfaktor: Wird typischerweise auf 0,9 (90%) gesetzt, um eine Sicherheitsmarge fĂĽr Speicherfragmentierung und unerwartete Spitzen zu bieten.

Beispiel: Qwen3-VL-32B Inferenz (int8 Quantisierung)

Konfiguration:

  • Quantisierung: int8 (1 Byte pro Parameter)
  • Batch-Größe: 1 user
  • Sequenzlänge: 8.192 Tokens
  • KV Cache Datentyp: float16
  • GPU-Auslastung: 0,9

Schritt-fĂĽr-Schritt-Berechnung:

1. Model Weights:
   32,500,000,000 Ă— 1 byte = 32,500,000,000 bytes = 32.50 GB

2. KV Cache (float16):
   2 Ă— 1 Ă— 8,192 Ă— 64 Ă— 8 Ă— 128 Ă— 2 = 2,147,483,648 bytes = 2.00 GB

3. Activations (int8 uses 1.0Ă— multiplier):
   1 Ă— 8,192 Ă— (18 Ă— 5,120 + 4 Ă— 25,600) Ă— 1.0 = 1,593,835,520 bytes = 1.59 GB

4. Non-PyTorch Memory:
   1,024 MB = 1.00 GB

5. Total (before GPU utilization adjustment):
   32.50 + 2.00 + 1.59 + 1.00 = 37.09 GB

6. Adjusted for GPU Utilization (90%):
   37.09 / 0.9 = 41.21 GB

Ergebnis: Sie benötigen ungefähr 42 GB VRAM, um Qwen3-VL-32B in int8-Quantisierung mit 8k Kontext für einen einzelnen Nutzer auszuführen.

Beispiel: Qwen3-VL-32B Inferenz (int4-Quantisierung)

Konfiguration:

  • Quantisierung: int4 (0,5 Byte pro Parameter)
  • Batch-Größe: 4 Nutzer
  • Sequenzlänge: 8.192 Tokens
  • KV Cache Datentyp: float16
  • GPU-Auslastung: 0,9

Schritt-fĂĽr-Schritt-Berechnung:

1. Model Weights:
   32,500,000,000 Ă— 0.5 bytes = 16,250,000,000 bytes = 16.25 GB

2. KV Cache (float16, batch=4):
   2 Ă— 4 Ă— 8,192 Ă— 64 Ă— 8 Ă— 128 Ă— 2 = 8,589,934,592 bytes = 8.00 GB

3. Activations (int4 uses 1.0Ă— multiplier, batch=4):
   4 Ă— 8,192 Ă— (18 Ă— 5,120 + 4 Ă— 25,600) Ă— 1.0 = 6,375,342,080 bytes = 6.38 GB

4. Non-PyTorch Memory:
   1,024 MB = 1.00 GB

5. Total (before GPU utilization adjustment):
   16.25 + 8.00 + 6.38 + 1.00 = 31.63 GB

6. Adjusted for GPU Utilization (90%):
   31.63 / 0.9 = 35.14 GB

Ergebnis: Sie benötigen ungefähr 36 GB VRAM, um Qwen3-VL-32B in int4-Quantisierung mit 8k Kontext für 4 gleichzeitige Nutzer auszuführen.

Speicheranforderungen fĂĽr das Training

Das Training erfordert deutlich mehr Speicher als die Inferenz aufgrund von:

  • Gradienten: Gleiche Größe wie die Modellgewichte
  • Optimizer States: 2Ă— Modellgewichte (fĂĽr Adam-Optimizer)
  • Größerer Aktivierungsspeicher: ~1,5Ă— Inferenz-Aktivierungen
  • Trainings-Overhead: 30% Sicherheitsreserve

Hinweis (Annahmen): Die Speicherberechnungen für das Training in diesem Abschnitt gehen von einem Standard-In-GPU-Training aus und berücksichtigen KEINE speichersparenden oder bandbreitenoptimierenden Techniken wie CPU/NVMe-Auslagerung, Sliding-Window- oder Chunked-Attention, spezialisierte Low-Memory-Optimierer oder ZeRO-ähnliche Partitionierung, aggressives Gradient-Checkpointing über den oben verwendeten Basis-Multiplikator hinaus oder benutzerdefinierte Attention-Kernels, die die KV-Speicherung verändern. Wenn Sie planen, eine dieser Methoden zu verwenden, können die erwarteten VRAM-Anforderungen deutlich geringer ausfallen und sollten für Ihre spezifische Konfiguration neu berechnet werden.

AufschlĂĽsselung:

  • 3Ă— Modellgewichte: Gewichte + Gradienten + Optimizer States (Adam)
  • 1,3Ă—: Trainingsaufwand-Faktor (30% Puffer)

Beispiel: Qwen3-VL-32B Training (float16)

Konfiguration:

  • Quantisierung: float16 (2 Bytes pro Parameter)
  • Batch Size: 1
  • Sequenzlänge: 8.192 Tokens
  • GPU-Auslastung: 0,9

Schritt-fĂĽr-Schritt-Berechnung:

1. Model Weights (Ă—3 for training):
   32,500,000,000 Ă— 2 bytes Ă— 3 = 195,000,000,000 bytes = 195.00 GB

2. KV Cache (float16):
   2 Ă— 1 Ă— 8,192 Ă— 64 Ă— 8 Ă— 128 Ă— 2 = 2,147,483,648 bytes = 2.00 GB

3. Activations (float16 uses 1.0Ă— multiplier, Ă—1.5 for training):
   1 Ă— 8,192 Ă— (18 Ă— 5,120 + 4 Ă— 25,600) Ă— 1.0 Ă— 1.5 = 2,390,753,280 bytes = 2.39 GB

4. Non-PyTorch Memory:
   1,024 MB = 1.00 GB

5. Subtotal:
   195.00 + 2.00 + 2.39 + 1.00 = 200.39 GB

6. Apply Training Overhead (Ă—1.3):
   200.39 Ă— 1.3 = 260.51 GB

7. Adjusted for GPU Utilization (90%):
   260.51 / 0.9 = 289.45 GB

Ergebnis: Sie benötigen ungefähr 290 GB VRAM, um Qwen3-VL-32B in float16 mit 8k Kontext und Batch-Größe 1 zu trainieren.

Vergleichstabelle GPU Speicher

Hier finden Sie einen umfassenden Vergleich fĂĽr Qwen3-VL-32B ĂĽber verschiedene Quantisierungsmethoden hinweg:

QuantizationWeightsKV CacheActivationsOverheadTotal InferenceTotal Training
float32130.00 GB2.00 GB3.18 GB1.00 GB151.31 GB577.34 GB
float1665.00 GB2.00 GB1.59 GB1.00 GB76.21 GB289.45 GB
int832.50 GB2.00 GB1.59 GB1.00 GB41.21 GB155.90 GB
int416.25 GB2.00 GB1.59 GB1.00 GB23.16 GB83.62 GB

Konfiguration: Batch-Größe 1, Sequenzlänge 8.192 Tokens, GPU-Auslastung 0,9

Praktische GPU-Empfehlungen

Basierend auf den obigen Berechnungen finden Sie hier geeignete GPU-Konfigurationen fĂĽr Qwen3-VL-32B:

Inferenzbereitstellung

QuantizationRequired VRAMRecommended GPUsUse Case
fp4 (22 GB)~24 GB1Ă— RTX 4500 Ada (24GB)Cost-effective inference
int8 (41 GB)~48 GB1Ă— NVIDIA RTX 6000 Blackwell (96 GB)Higher quality inference
float16 (76 GB)~96 GB1Ă— H200 NVL 142GBFull precision with headroom

Trainingsbereitstellung

QuantizationRequired VRAMRecommended GPUsConfiguration
int4 (84 GB)~94 GB1Ă— H200 NVL 142GBSingle GPU training
int8 (156 GB)~188 GB2Ă— H200 NVL 142GBMulti-GPU training
float16 (289 GB)~282 GB3Ă— H200 NVL 142GBFull precision training

Key Takeaways

  1. Model Weights Scale Linearly: Doubling parameters doubles weight memory
  2. KV Cache Scales with Context: Longer contexts exponentially increase memory
  3. Batch Size Multiplies KV Cache: Each concurrent user adds KV cache overhead
  4. Quantization Dramatically Reduces Memory: int4 uses ~1/8th the memory of float32
  5. Training Needs ~3-4Ă— Inference Memory: Due to gradients and optimizer states
  6. GPU Utilization Buffer is Critical: Always reserve 10-20% safety margin

Erweiterte Ăśberlegungen

Auswirkungen von Grouped Query Attention (GQA)

Qwen3-VL-32B verwendet Grouped Query Attention mit 8 KV Heads anstelle von 64 Query Heads. Dadurch wird der KV-Cache-Speicher im Vergleich zu standardmäßiger Multi-Head Attention um das 8-fache reduziert:

Standard MHA: 64 KV heads → KV Cache = 16.00 GB (8k context, float16)
GQA (Qwen3): 8 KV heads → KV Cache = 2.00 GB (8k context, float16)

Memory Savings: 14.00 GB (87.5% reduction)

Skalierung fĂĽr langen Kontext

Qwen3-VL-32B unterstĂĽtzt bis zu 262k Tokens. So skaliert der KV-Cache:

Context LengthKV Cache (float16, batch=1)Recommended VRAM
8k tokens2.00 GB48 GB GPU
32k tokens8.00 GB64 GB GPU
128k tokens32.00 GB96 GB GPU
256k tokens64.00 GB128 GB GPU

Quantisierung des KV-Caches

Die Verwendung von fp8 fĂĽr den KV-Cache kann den Speicherverbrauch halbieren:

float16 KV Cache (8k, batch=1): 2.00 GB
fp8 KV Cache (8k, batch=1): 1.00 GB

Savings: 50% memory reduction with minimal quality loss

Fazit

Eine genaue Berechnung des VRAM ist entscheidend für eine effiziente Bereitstellung von LLMs. Durch das Verständnis der mathematischen Grundlagen:

  1. Wählen Sie die richtige Quantisierung für Ihren Qualitäts-Speicher-Kompromiss
  2. Planen Sie die Skalierung des KV-Cache bei gleichzeitigen Nutzern und Kontextlänge
  3. BerĂĽcksichtigen Sie Trainings-Overhead bei Feinabstimmung
  4. Wählen Sie geeignete GPUs aus basierend auf den tatsächlichen Anforderungen
  5. BerĂĽcksichtigen Sie immer Sicherheitsmargen, um OOM-Fehler zu vermeiden

Verwenden Sie diese Formeln, um die Speicheranforderungen für jedes Hugging Face Modell abzuschätzen, indem Sie die Konfigurationsparameter extrahieren und die in diesem Leitfaden gezeigten Berechnungen anwenden.

Referenzen und Werkzeuge

  • Modellkonfiguration: Qwen3-VL-32B-Instruct config.json
  • Hugging Face Hub: Modell-Metadaten und Parameteranzahl ĂĽber die API verfĂĽgbar
  • GPU-Spezifikationen: PrĂĽfen Sie die Herstellerangaben fĂĽr genaue VRAM-Kapazitäten
  • Quantisierungsverfahren: GPTQ, AWQ, GGUF fĂĽr verschiedene Präzisionsstufen