- Mit der Option
--cpu-moe von llama-cpp werden die MoE-Experten-Layer auf der CPU verarbeitet, während nur die Attention-Layer auf die GPU ausgelagert werden. So wird mit 5–8 GB VRAM eine hohe Prompt-Prefill-Leistung erreicht
- Auf der GPU verbleiben nur KV-Cache, Attention-Gewichte und -Aktivierungen, Routing-Tabellen, LayerNorm usw. als nicht-expertenbezogene Parameter, wodurch der Speicherverbrauch niedrig bleibt
- Selbst mit einer GPU auf dem Niveau einer RTX 3060 Ti und 64–96 GB System-RAM lässt sich ein 120B-Modell problemlos betreiben; optimale Leistung gibt es mit BF16-fähigen GPUs (RTX 3000+)
- Bei 5 GB VRAM wurden 8,15 ms pro Token (122,66 Token/s) erreicht, bei 8 GB VRAM verbesserte sich das auf 7,44 ms pro Token (134,44 Token/s)
- Die 120B-Architektur ist für Consumer-Hardware optimiert und ermöglicht auch bei knappen GPU-Ressourcen eine schnelle Ausführung
CPU-MoE- und GPU-Offloading-Struktur
- Mit der Option
--cpu-moe werden die Experten-(MoE-)Layer vollständig auf der CPU verarbeitet
- Beispiel:
--n-cpu-moe 36 → alle 36 MoE-Blöcke laufen auf der CPU
- Bei Bedarf können einige MoE-Blöcke zur Leistungsanpassung auf die GPU verschoben werden
- Auf der GPU verbleiben nur die folgenden Komponenten, um VRAM zu sparen
- KV-Cache (Sequenz)
- Attention-Gewichte und -Aktivierungen
- Routing-Tabellen
- LayerNorm und andere nicht-expertenbezogene Parameter
- Da die MoE-Gewichte nicht auf der GPU liegen, entfällt die Last großer MLP-Parameter
Speicher- und Hardware-Anforderungen
- GPU: 5–8 GB VRAM sind ausreichend (z. B. RTX 3060 Ti)
- Optimal ist eine GPU mit BF16-Unterstützung (RTX 3000-Serie oder neuer)
- System-RAM: mindestens 64 GB, idealerweise 96 GB
- Mit Linux
mmap können „heiße“ Experten-Layer im Speicher gehalten werden, auch wenn nicht das gesamte Modell in den RAM passt
Leistungswerte
Umgebung mit 5 GB VRAM
- Prompt-Verarbeitung: 8,15 ms/Token (122,66 Token/s)
- Inferenz: 55,44 ms/Token (18,04 Token/s)
Umgebung mit 8 GB VRAM (--n-cpu-moe 36, Rest auf GPU)
- Prompt-Verarbeitung: 7,44 ms/Token (134,44 Token/s)
- Inferenz: 39,03 ms/Token (25,62 Token/s)
Umgebung mit 22 GB VRAM (einige MoE-Blöcke auf GPU)
- Prompt-Verarbeitung: 6,13 ms/Token (163,01 Token/s)
- Inferenz: 32,45 ms/Token (30,82 Token/s)
Fazit
- Das Design von GPT-OSS-120B ist darauf optimiert, große Modelle auch auf Consumer-Hardware schnell auszuführen
- Dank der CPU-MoE-Struktur, die den VRAM-Bedarf senkt und gleichzeitig die Geschwindigkeit hält, eignet es sich besonders für Umgebungen mit begrenzten GPU-Ressourcen
Zentrale Fragen & Antworten
F1. Wie hoch ist der tatsächliche VRAM-Verbrauch in diesem Setup?
- Originalautor: Etwa 5 GB VRAM, wenn alle MoE-Blöcke auf der CPU laufen und nur die Attention-Layer auf der GPU liegen
- Zusätzliche Erklärung: Auf der GPU verbleiben nur KV-Cache, Attention-Gewichte und -Aktivierungen, Routing-Tabellen und LayerNorm
F2. Wie viel RAM wird mindestens benötigt?
- Originalautor: Mindestens 64 GB, idealerweise 96 GB
- Grund: Linux
mmap hält „heiße“ Experten-Layer im Speicher und ermöglicht schnellen Zugriff, ohne das gesamte Modell laden zu müssen
F3. Wird es deutlich schneller, wenn einige MoE-Layer auf die GPU verschoben werden?
- Originalautor: Es kann etwas schneller werden, der Unterschied ist aber nicht groß
- Beispiel:
- Alle MoE-Blöcke auf CPU: Prompt 134 Token/s, Inferenz 25 Token/s
- 8 MoE-Blöcke auf GPU: Prompt 163 Token/s, Inferenz 30 Token/s
- Der VRAM-Verbrauch steigt dabei auf 22 GB
F4. Welche GPU ist geeignet?
- Originalautor: Ab RTX 3060 Ti ist ausreichend, empfohlen wird BF16-Unterstützung (RTX 3000+)
- Grund: Alle Layer außer MoE laufen in BF16
F5. Wie sieht das Kommando-Setup aus?
Noch keine Kommentare.