Optimierung von MoE-Modellen auf Low-End-GPUs: Ausführen von GPT-OSS-120B mit 6 GB VRAM bei bis zu 30 t/s
Das GPT-OSS-120B-Modell mit 120 Milliarden Parametern läuft auf einer GPU mit 6 GB VRAM mit einer Geschwindigkeit von 30 Token/s. Der entscheidende Faktor ist die Nutzung von RAM statt VRAM dank der Mixture-of-Experts-Architektur (MoE) und des Parameters -cmoe. Dies ermöglicht eine effiziente Verteilung der Tensoren zwischen CPU und GPU ohne Hardware-Upgrades.
Mixture-of-Experts-Architektur
MoE-Modelle aktivieren in jeder Schicht eine begrenzte Anzahl von Experten aus einem gemeinsamen Pool. Der Router (Gating-Netzwerk) wählt 2–4 Experten aus 128 für die Token-Generierung aus und reduziert dadurch die Rechenlast um das 24-Fache im Vergleich zu dichten Modellen.
Jede Schicht enthält:
- Attention-Blöcke (gemeinsame Tensoren)
- FFN-Blöcke, ersetzt durch eine Gruppe von Experten
- Router für das Routing
Experten sind isolierte Mini-FFNs, die sich auf bestimmte Bereiche der Eingabedaten spezialisieren. Bei der Token-Generierung durchläuft sie alle Schichten (12–100+), wobei MoE- und dichte Schichten abwechseln.
Bei dichten Modellen ist der FFN ein monolithischer Block; bei MoE handelt es sich um eine sparse Struktur. Das Gesamtvolumen der Parameter ist groß, aber pro Durchlauf aktiv ist es klein. Probleme: Expertenüberlappung, suboptimales Routing des Routers.
Warum VRAM für MoE ineffizient ist
Das Offloading ganzer MoE-Schichten auf die GPU führt zu Leerlaufzeiten: Von 128 Experten sind nur 4 aktiv, der Rest verschwendet VRAM. Attention-Tensoren (gemeinsam) haben ein kleines Volumen; ihr Offloading sorgt für konstante GPU-Auslastung.
Vergleich der Konfigurationen:
| Konfiguration | Verwendete VRAM | Berechnet | Effizienz |
|-----------------|-----------------|-----------|-----------|
| Ganze Schichten | 16 Blöcke | 8 Blöcke | 50% |
| Attention-Tensoren | 16 Blöcke | 16 Blöcke | 100% |
Für GPT-OSS-120B mit -cmoe beträgt der VRAM-Verbrauch ~3 GB, Geschwindigkeit 30 t/s. Dichte Modelle haben keine Lücken, VRAM steht proportional zu den Berechnungen.
Optimierungsparameter in llama.cpp
Hauptparameter -cmoe / --cpu-moe
Belässt MoE-Experten (Tensoren exps) auf der CPU, offloadet:
- Attention-Tensoren aller Schichten
- Gemeinsame Schichten (ohne
expsim Namen) - Gemeinsame Experten (
shexp)
Startlogik:
-ngl 999— alles auf GPU-cmoe— MoE zurück auf CPU
Wichtig: Verwenden Sie ik_llama nicht für GPT-OSS-120B.
-ncmoe N / --n-cpu-moe N
Steuert Schichten auf CPU, wenn VRAM reichlich vorhanden ist. GPT-OSS-120B: 37 Schichten.
-cmoe— 3 GB VRAM-ncmoe 30— bis zur Grenze auffüllen
-ncmoe wird bei -cmoe ignoriert (letzterer hat Vorrang).
Neuer Parameter --fit (Dezember 2025)
Automatisches Auffüllen von VRAM:
--fit— standardmäßig, für MoE inklusivencmoe--fit-ctx 4096— Kontextlimit (standardmäßig 4096 statt 128k)--fit-target 1024— freies VRAM in MB (standardmäßig 1 GB)
Setzt automatisch -fa, -ngl, -t auf Maximum. Problem: -t = CPU-Kerne - 1, bei Hybrid-CPUs (E/P-Kerne) explizit -t 8 angeben.
Zusätzliche Speicheroptimierungen
-fa 1— Flash Attention / SWA / MLA, Auto-Erkennung-ub 4096 -b 4096— KV-Cache-Quantisierung-ctk q8_0 -ctv q8_0— Kontext-Quantisierung
Neuer --models-dir — Modelle aus UI wechseln, --models-max 1 gegen OOM.
Wichtige Punkte
- MoE-Modelle (GPT-OSS-120B, DeepSeek V3) benötigen RAM > VRAM
-cmoeoffloadet nur Attention-Tensoren auf GPU--fitautomatisiert Parameter-Tuning- Geschwindigkeit von 30 t/s auf 6 GB VRAM erreichbar
ik_llamaund auto---tbei Hybrid-CPUs vermeiden
— Editorial Team
Noch keine Kommentare.