Zum Inhalt springen
Kurzer Hinweis: flozi00 TechHub ist ein Solo-Nebenprojekt neben einem Vollzeitjob — persönliche Lernnotizen, keine offiziellen Aussagen. Kritische Schritte selbst prüfen.

LLM-VRAM-Bedarf: Ein mathematischer Deep Dive

Umfassender Leitfaden zur Berechnung des GPU-Speicherbedarfs für Inferenz und Training großer Sprachmodelle — mit Praxisbeispielen am Qwen3-VL-32B.

8 Min. Lesezeitflozi00
aimachine-learninggpudatacenterdeep-learning

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 Parameters33.4 billionTotal parameters (33,357,390,064 per HF safetensors)
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: 33,357,390,064 (~33.4B)

float32:  33,357,390,064 × 4.0   = 133,429,560,256 bytes = 133.43 GB
float16:  33,357,390,064 × 2.0   = 66,714,780,128 bytes  = 66.71 GB
int8:     33,357,390,064 × 1.0   = 33,357,390,064 bytes  = 33.36 GB
int4:     33,357,390,064 × 0.5   = 16,678,695,032 bytes  = 16.68 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.15 GB (decimal; = 2.00 GiB binary)

Skalierung mit Batch-Größe:

Batch SizeUsersKV Cache Memory (float16)
11 concurrent user2.15 GB
44 concurrent users8.59 GB
88 concurrent users17.18 GB
1616 concurrent users34.36 GB

Skalierung mit Sequenzlänge:

Sequence LengthContext SizeKV Cache Memory (batch=1, float16)
2,0482k tokens0.54 GB
8,1928k tokens2.15 GB
32,76832k tokens8.59 GB
131,072128k tokens34.36 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.19 GB
float16/bfloat161.0×1.59 × 1.0 = 1.59 GB
int8/fp81.0×1.59 × 1.0 = 1.59 GB
int4/fp4 (weight-only)1.0×1.59 × 1.0 = 1.59 GB

4. Nicht-PyTorch Speicher-Overhead

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

Non-PyTorch Memory ≈ 1.00 GB (constant)

Dies ist ein fester Overhead, der unabhängig von der Modellgröße oder der Batch-Konfiguration ist. Der interaktive Rechner modelliert ihn leicht anders: 1,2 GB, skaliert mit dem Overhead-Faktor des Quantisierungsformats (siehe unten), also ~1,26 GB für int8.

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.

Hinweis (Übereinstimmung mit dem interaktiven Rechner): Die Beispielrechnungen auf dieser Seite nutzen diese Handplanungs-Konvention. Der Rechner oben auf der Tool-Seite macht stattdessen Folgendes: (a) er multipliziert die Gewichtungs-Bytes mit einem formatabhängigen Overhead-Faktor für Scale-/Zero-Point-Speicher — fp8 ×1,03, int8 ×1,05, NVFP4 ×1,1, int4/AWQ ×1,12 — (b) er modelliert den Nicht-PyTorch-Overhead als 1,2 GB × dieser Faktor, und (c) er teilt nicht durch einen Auslastungsfaktor (der Regler „Hardware-Auslastung" reduziert nur Bandbreite/Durchsatz, nie die Kapazität). Rechnen Sie damit, dass der int8-Wert des Rechners (~39 GB) leicht von der Handrechnung (~42 GB) abweicht; beides sind konservative Schätzungen, keine Garantien.

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:
   33,357,390,064 × 1 byte = 33,357,390,064 bytes = 33.36 GB

2. KV Cache (float16):
   2 × 1 × 8,192 × 64 × 8 × 128 × 2 = 2,147,483,648 bytes = 2.15 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.00 GB

5. Total (before GPU utilization adjustment):
   33.36 + 2.15 + 1.59 + 1.00 = 38.10 GB

6. Adjusted for GPU Utilization (90%):
   38.10 / 0.9 = 42.33 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:
   33,357,390,064 × 0.5 bytes = 16,678,695,032 bytes = 16.68 GB

2. KV Cache (float16, batch=4):
   2 × 4 × 8,192 × 64 × 8 × 128 × 2 = 8,589,934,592 bytes = 8.59 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.00 GB

5. Total (before GPU utilization adjustment):
   16.68 + 8.59 + 6.38 + 1.00 = 32.65 GB

6. Adjusted for GPU Utilization (90%):
   32.65 / 0.9 = 36.28 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):
   33,357,390,064 × 2 bytes × 3 = 200,144,340,384 bytes = 200.14 GB

2. KV Cache (float16):
   2 × 1 × 8,192 × 64 × 8 × 128 × 2 = 2,147,483,648 bytes = 2.15 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.00 GB

5. Subtotal:
   200.14 + 2.15 + 2.39 + 1.00 = 205.68 GB

6. Apply Training Overhead (×1.3):
   205.68 × 1.3 = 267.38 GB

7. Adjusted for GPU Utilization (90%):
   267.38 / 0.9 = 297.09 GB

Ergebnis: Sie benötigen ungefähr 297 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
float32133.43 GB2.15 GB3.19 GB1.00 GB155.30 GB589.66 GB
float1666.71 GB2.15 GB1.59 GB1.00 GB79.39 GB297.09 GB
int833.36 GB2.15 GB1.59 GB1.00 GB42.33 GB152.56 GB
int416.68 GB2.15 GB1.59 GB1.00 GB23.80 GB80.28 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

QuantisierungBenötigter VRAMEmpfohlene GPUsAnwendungsfall
int4 (24 GB)32 GB komfortabel1× RTX 5090 (32 GB) oder RTX PRO 6000 (96 GB)Kostengünstige Inferenz
int8 (42 GB)48 GB Minimum1× L40S (48 GB) oder RTX PRO 6000 (96 GB)Inferenz mit höherer Qualität
float16 (79 GB)96 GB knapp / 141 GB mit Puffer1× RTX PRO 6000 Blackwell (96 GB) oder 1× H200 (141 GB)Vollpräzise Inferenz

Trainingsbereitstellung

QuantisierungBenötigter VRAMEmpfohlene GPUsKonfiguration
int4 (80 GB)141 GB1× H200 (141 GB)Training auf einer GPU
int8 (153 GB)282 GB2× H200 (141 GB)Multi-GPU-Training
float16 (297 GB)423 GB3× H200 (141 GB)Vollpräzises Training

Kernpunkte

  1. Modellgewichte skalieren linear: Doppelt so viele Parameter bedeuten doppelt so viel Gewichtsspeicher
  2. KV-Cache skaliert mit dem Kontext: Der KV-Cache-Speicher wächst linear mit der Kontextlänge
  3. Batch-Größe multipliziert den KV-Cache: Jeder gleichzeitige Nutzer erhöht den KV-Cache-Verbrauch
  4. Quantisierung reduziert Speicher drastisch: int4 benötigt ~1/8 des Speichers von float32
  5. Training braucht ~3–4× Inferenz-Speicher: Wegen Gradients und Optimizer-States
  6. GPU-Auslastungspuffer ist kritisch: Immer 10–20% Sicherheitsmarge einplanen

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 = 17.18 GB (8k context, float16)
GQA (Qwen3): 8 KV heads → KV Cache = 2.15 GB (8k context, float16)

Memory Savings: 15.03 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.15 GB48 GB GPU
32k tokens8.59 GB64 GB GPU
128k tokens34.36 GB96 GB GPU
256k tokens68.72 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.15 GB
fp8 KV Cache (8k, batch=1): 1.07 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.

Verwandte Artikel

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