30 Punkte von GN⁺ 2025-08-13 | Noch keine Kommentare. | Auf WhatsApp teilen
  • 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?

  • 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"  
    

Noch keine Kommentare.

Noch keine Kommentare.