GPT-OSS-120B läuft selbst mit nur 8 GB VRAM hervorragend
(old.reddit.com)- Mit der Option
--cpu-moevon 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-moewerden 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
- Beispiel:
- 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
mmapkönnen „heiße“ Experten-Layer im Speicher gehalten werden, auch wenn nicht das gesamte Modell in den RAM passt
- Mit Linux
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
mmaphä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?
- Originalautor: Beispiel auf Basis von PR #15157
~/build/llama.cpp/build-cuda/bin/llama-server \ -m $LLAMA_MODEL_DIR/gpt-oss-120b-mxfp4-00001-of-00003.gguf \ --n-cpu-moe 36 \ --n-gpu-layers 999 \ -c 0 -fa \ --jinja --reasoning-format none \ --host 0.0.0.0 --port 8502 --api-key "dummy"
6 Kommentare
Ich habe es tatsächlich ausprobiert, aber es ist viel zu langsam.
Den GPU-Takt nutzt es fast gar nicht,
stattdessen werden die 8 GB dedizierter GPU-Speicher und 64 GB physischer Arbeitsspeicher vollständig ausgelastet,
und von den 16 vCores wird nur etwa die Hälfte genutzt.
Man sollte dem Ganzen nur die Bedeutung beimessen, dass es überhaupt läuft; es war nicht so, dass dabei alle Ressourcen vollständig genutzt wurden.
Eine einzelne Anfrage dauerte 6 bis 8 Minuten.
Das möchte ich wohl auch mal ähnlich ausprobieren.
Ich dachte, 32 GB würden ausreichen ...
Läuft jedenfalls auf dem lm studio M4 max 64gb nicht wein
Weil es 65 GB sind … schade. schluchz
Hacker-News-Kommentare
Zugehöriger Artikel
Deshalb nutze ich meist andere Modelle wie qwen, mistral und gemma
Andere betreiben 120B-Modelle mit weniger VRAM; vielleicht liegt das daran, dass ROCm nicht unterstützt wird und stattdessen Vulkan verwendet wird
Trotzdem macht es Spaß, die Hardware bis an ihre Grenzen auszureizen
In llama.cpp kann man die Anzahl der GPU-Berechnungslayer direkt festlegen, während ollama das automatisch anpasst
Es wäre gut, wenn man das RAM-/VRAM-Verhältnis je nach Sitzungslänge dynamisch anpassen könnte
Allerdings ist Function Calling in llama.cpp noch kaputt
Ich plane, in meinem Zimmer mit einem Mini-PC für $149 einen AI-Chatbot zu hosten, und das Qwen3-4B-Modell sieht gut aus
Zugehöriger Plan
Zum Beispiel funktionierte sie auch mit Qwen 3, und man kann reguläre Ausdrücke direkt angeben, um bestimmte Layer auf bestimmte Geräte zu verschieben