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:
| Parameter | Value | Description |
|---|---|---|
| Model Parameters | 33.4 billion | Total parameters (33,357,390,064 per HF safetensors) |
| Hidden Size | 5,120 | Dimension of hidden representations |
| Intermediate Size | 25,600 | FFN intermediate dimension (5x hidden size) |
| Number of Layers | 64 | Total transformer blocks |
| Attention Heads | 64 | Number of query attention heads |
| KV Heads | 8 | Number of key-value heads (GQA) |
| Head Dimension | 128 | Dimension per attention head |
| Max Context Length | 262,144 | Maximum sequence length (256k tokens) |
| Architecture | Grouped Query Attention | Uses 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 Type | Bytes per Parameter | Precision |
|---|---|---|
| float32 | 4 bytes | Full precision |
| float16/bfloat16 | 2 bytes | Half precision |
| int8/fp8 | 1 byte | 8-bit quantization |
| int4/fp4 | 0.5 bytes | 4-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 Size | Users | KV Cache Memory (float16) |
|---|---|---|
| 1 | 1 concurrent user | 2.15 GB |
| 4 | 4 concurrent users | 8.59 GB |
| 8 | 8 concurrent users | 17.18 GB |
| 16 | 16 concurrent users | 34.36 GB |
Skalierung mit Sequenzlänge:
| Sequence Length | Context Size | KV Cache Memory (batch=1, float16) |
|---|---|---|
| 2,048 | 2k tokens | 0.54 GB |
| 8,192 | 8k tokens | 2.15 GB |
| 32,768 | 32k tokens | 8.59 GB |
| 131,072 | 128k tokens | 34.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 Type | Multiplier | Effective Activation Memory |
|---|---|---|
| float32 | 2.0× | 1.59 × 2.0 = 3.19 GB |
| float16/bfloat16 | 1.0× | 1.59 × 1.0 = 1.59 GB |
| int8/fp8 | 1.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:
| Quantization | Weights | KV Cache | Activations | Overhead | Total Inference | Total Training |
|---|---|---|---|---|---|---|
| float32 | 133.43 GB | 2.15 GB | 3.19 GB | 1.00 GB | 155.30 GB | 589.66 GB |
| float16 | 66.71 GB | 2.15 GB | 1.59 GB | 1.00 GB | 79.39 GB | 297.09 GB |
| int8 | 33.36 GB | 2.15 GB | 1.59 GB | 1.00 GB | 42.33 GB | 152.56 GB |
| int4 | 16.68 GB | 2.15 GB | 1.59 GB | 1.00 GB | 23.80 GB | 80.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
| Quantisierung | Benötigter VRAM | Empfohlene GPUs | Anwendungsfall |
|---|---|---|---|
| int4 (24 GB) | 32 GB komfortabel | 1× RTX 5090 (32 GB) oder RTX PRO 6000 (96 GB) | Kostengünstige Inferenz |
| int8 (42 GB) | 48 GB Minimum | 1× L40S (48 GB) oder RTX PRO 6000 (96 GB) | Inferenz mit höherer Qualität |
| float16 (79 GB) | 96 GB knapp / 141 GB mit Puffer | 1× RTX PRO 6000 Blackwell (96 GB) oder 1× H200 (141 GB) | Vollpräzise Inferenz |
Trainingsbereitstellung
| Quantisierung | Benötigter VRAM | Empfohlene GPUs | Konfiguration |
|---|---|---|---|
| int4 (80 GB) | 141 GB | 1× H200 (141 GB) | Training auf einer GPU |
| int8 (153 GB) | 282 GB | 2× H200 (141 GB) | Multi-GPU-Training |
| float16 (297 GB) | 423 GB | 3× H200 (141 GB) | Vollpräzises Training |
Kernpunkte
- Modellgewichte skalieren linear: Doppelt so viele Parameter bedeuten doppelt so viel Gewichtsspeicher
- KV-Cache skaliert mit dem Kontext: Der KV-Cache-Speicher wächst linear mit der Kontextlänge
- Batch-Größe multipliziert den KV-Cache: Jeder gleichzeitige Nutzer erhöht den KV-Cache-Verbrauch
- Quantisierung reduziert Speicher drastisch: int4 benötigt ~1/8 des Speichers von float32
- Training braucht ~3–4× Inferenz-Speicher: Wegen Gradients und Optimizer-States
- 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 Length | KV Cache (float16, batch=1) | Recommended VRAM |
|---|---|---|
| 8k tokens | 2.15 GB | 48 GB GPU |
| 32k tokens | 8.59 GB | 64 GB GPU |
| 128k tokens | 34.36 GB | 96 GB GPU |
| 256k tokens | 68.72 GB | 128 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:
- Wählen Sie die richtige Quantisierung für Ihren Qualitäts-Speicher-Kompromiss
- Planen Sie die Skalierung des KV-Cache bei gleichzeitigen Nutzern und Kontextlänge
- Berücksichtigen Sie Trainings-Overhead bei Feinabstimmung
- Wählen Sie geeignete GPUs aus basierend auf den tatsächlichen Anforderungen
- 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
- LLM-Inferenz-Mathematik: Theorie trifft Hardware — die Compute-Seite derselben Roofline.
- LLM-Inferenzrechner & Break-Even-Analyse — rechnen Sie mit Ihrem Modell und Ihrer Karte.
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