# Optymalizacja modeli MoE na słabym GPU: uruchomienie GPT-OSS-120B z 6 GB VRAM do 30 t/s
Model GPT-OSS-120B liczący 120B parametrów działa na GPU z 6 GB VRAM przy prędkości 30 tokenów/s. Kluczowym czynnikiem jest wykorzystanie RAM zamiast VRAM dzięki architekturze Mixture of Experts (MoE) i parametrowi -cmoe. Pozwala to efektywnie rozdzielać tensory między CPU i GPU bez modernizacji sprzętu.
Architektura Mixture of Experts
Modele MoE aktywują ograniczoną liczbę ekspertów z ogólnego puli na każdej warstwie. Router (gating network) wybiera 2–4 ekspertów spośród 128 do generowania tokena, co zmniejsza obciążenie obliczeniowe nawet 24-krotnie w porównaniu z modelami dense.
Każda warstwa zawiera:
- Bloki uwagi (wspólne tensory)
- Bloki FFN zastąpione grupą ekspertów
- Router do routingu
Eksperci to izolowane mini-FFN, specjalizujące się w zakresach danych wejściowych. Podczas generowania tokena przechodzą przez wszystkie warstwy (12–100+), na przemian MoE i dense-warstwy.
W modelach dense FFN to monolityczny blok, w MoE — struktura rzadka. Całkowita liczba parametrów jest duża, ale aktywnych na przejście — mała. Problemy: nakładanie się ekspertów, nieoptymalny routing routera.
Dlaczego VRAM jest nieefektywne dla MoE
Wyładowanie całych warstw MoE na GPU prowadzi do bezczynności: z 128 ekspertów aktywnych jest 4, reszta marnuje VRAM. Tensory uwagi (wspólne) są małe objętościowo, ich wyładowanie zapewnia stałe obciążenie GPU.
Porównanie konfiguracji:
| Konfiguracja | Zajęte VRAM | Obliczone | Efektywność |
|---------------|-------------|-----------|-------------|
| Całe warstwy | 16 bloków | 8 bloków | 50% |
| Tensory attn | 16 bloków | 16 bloków | 100% |
Dla GPT-OSS-120B z -cmoe obciążenie VRAM ~3 GB, prędkość 30 t/s. Modele dense nie mają przerw, VRAM proporcjonalne do obliczeń.
Parametry optymalizacji w llama.cpp
Główny parametr -cmoe / --cpu-moe
Pozostawia ekspertów MoE (tensory exps) na CPU, wyładowuje:
- Tensory uwagi wszystkich warstw
- Wspólne warstwy (bez
expsw nazwie) - Wspólni eksperci (
shexp)
Logika uruchomienia:
-ngl 999— wszystko na GPU-cmoe— MoE z powrotem na CPU
Ważne: Nie używać ik_llama dla GPT-OSS-120B.
-ncmoe N / --n-cpu-moe N
Kontroluje warstwy na CPU przy nadmiarze VRAM. GPT-OSS-120B: 37 warstw.
-cmoe— 3 GB VRAM-ncmoe 30— wypełnia do limitu
-ncmoe jest ignorowane przy -cmoe (priorytet ma ten ostatni).
Nowy parametr --fit (grudzień 2025)
Automatyczne wypełnianie VRAM:
--fit— domyślnie, dla MoE włączancmoe--fit-ctx 4096— limit kontekstu (domyślnie 4096 zamiast 128k)--fit-target 1024— wolne VRAM w MB (domyślnie 1 GB)
Automatycznie ustawia -fa, -ngl, -t na maksimum. Problem: -t = CPU cores - 1, dla hybrydowych CPU (rdzenie E/P) podawać jawnie -t 8.
Dodatkowe optymalizacje pamięci
-fa 1— flash attention / swa / mla, auto-wykrywanie-ub 4096 -b 4096— kwantyzacja KV-cache-ctk q8_0 -ctv q8_0— kwantyzacja kontekstu
Nowy --models-dir — zmiana modeli z UI, --models-max 1 przeciw OOM.
Co ważne
- Modele MoE (GPT-OSS-120B, DeepSeek V3) wymagają RAM > VRAM
-cmoewyładowuje tylko tensory attention na GPU--fitautomatyzuje dobór parametrów- Prędkość 30 t/s na 6 GB VRAM jest osiągalna
- Unikać
ik_llamai auto---tna hybrydowych CPU
— Editorial Team
Brak komentarzy.