Mixture of Experts

Router, řídká aktivace, proč mají dnešní modely „aktivní parametry“.

Co se naučíš: Pochopíš, co znamená „400 B parametrů, z toho 17 B aktivních“, a proč to šetří výpočet, ne paměť.

6 min čtení + cvičeníNavazuje na:🏗️ Anatomie modelu

Když u modelu vidíš údaj typu „400 B parametrů, z toho 17 B aktivních“, koukáš na Mixture of Experts. Myšlenka: nemusí přece celý model počítat každý token. Nech místo toho pro každý token vybrat jen pár specializovaných částí. Dostaneš kapacitu velkého modelu za cenu výpočtu malého a je to hlavní důvod, proč jsou dnešní špičkové modely tak velké a přitom použitelné.


Jak to funguje

Feed-forward část bloku (viz normalizace a aktivace) se nahradí sadou expertů (třeba osmi až stovkami) plus malou sítí, které se říká router:

token → router spočítá skóre pro každého experta
      → vybere top-k (obvykle 1 nebo 2)
      → token projde jen těmi vybranými
      → výstupy se sečtou s vahou podle skóre

Zbytek bloku (attention, normalizace) zůstává společný. Experti se liší jen ve feed-forward části, tedy přesně tam, kde leží většina parametrů.

hustý (dense) model:   každý token projde všemi parametry
MoE model:             každý token projde ~1/8 parametrů, ale je z čeho vybírat

Co to znamená pro provoz

Tohle je největší praktická past MoE:

Hustý 70 BMoE 400 B / 17 B aktivních
Rychlost tokenuodpovídá 70 Bodpovídá ~17 B → rychlejší
Kvalita70 Bblíž velkému modelu
Paměť~140 GB (FP16)~800 GB, všichni experti musí být v paměti

Šetří se výpočet, ne paměť. Do jedné karty se ti MoE model nevejde jen proto, že má málo aktivních parametrů. Proto je MoE doménou datacenter a poskytovatelů API, zatímco pro lokální běh na jedné GPU jsou obvykle vhodnější husté modely.


Load balancing: co se může pokazit

Router se učí spolu se zbytkem modelu a přirozeně tíhne k tomu, že si oblíbí pár expertů a zbytek nechá ležet ladem. Tomu se říká collapse a řeší se:

  • Pomocnou loss funkcí, která trestá nerovnoměrné rozdělení tokenů.
  • Kapacitou experta: každý zvládne jen daný počet tokenů v dávce, přebytek se přesměruje nebo zahodí.
  • Šumem při routování během tréninku, aby se experti prostřídali.

Při inferenci se to projeví jinak: experti jsou rozprostření po víc GPU, takže každý token vyvolá komunikaci mezi kartami. Serving MoE je proto výrazně náročnější na propojení než serving hustého modelu.


Specializují se experti podle témat?

Většinou ne tak, jak by člověk čekal. Nevzniká „expert na medicínu“ a „expert na kód“, dělba je spíš na úrovni syntaktických a statistických vzorů a bývá pro člověka nečitelná. Jméno je tedy trochu zavádějící: jsou to spíš paralelní sady vah, mezi kterými router přepíná.


Kdy MoE potkáš

  • U velkých poskytovatelů: je to standardní způsob, jak zvětšit kapacitu bez úměrného růstu ceny za token.
  • U otevřených modelů, kde uvidíš označení typu 8x7B (osm expertů po 7 B, aktivní dva). Pozor: 8x7B není 56 B, sdílené části se nepočítají osmkrát, reálně to bývá kolem 47 B.
  • Ne u malých modelů na jednu kartu, kde se paměťová režie nevyplatí.

Kam dál

Proč je zrovna FFN to místo, kde leží většina parametrů, ukazuje anatomie modelu. Paměťové důsledky rozvádí inference stack a čtení specifikace modelu.


Cvičení

  1. Model má 8 expertů, aktivují se 2, a označuje se 8x7B. Proč to není 56 miliard parametrů a proč se přesto do karty vejde hůř než hustý model 13 B?
  2. Router začne posílat 80 % tokenů na dva experty. Jak se to projeví na kvalitě a co s tím?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
  1. Protože attention a embeddingy jsou sdílené, experti se liší jen ve feed-forward části, takže reálně vyjde kolem 47 miliard. A do karty se vejde hůř než hustý model 13 B proto, že v paměti musí být všichni experti, i když každý token projde jen dvěma. MoE šetří výpočet, ne paměť; to je nejčastější nedorozumění kolem těchhle modelů.
  2. Kvalita klesne, protože model reálně využívá jen zlomek své kapacity, zatímco za paměť platíš celou. Říká se tomu kolaps routeru a brání se mu pomocnou loss funkcí, která trestá nerovnoměrné rozdělení tokenů, omezenou kapacitou experta na dávku a šumem při routování během tréninku.

Shrnutí

  • MoE nahrazuje FFN sadou expertů a routerem, který na token vybere jen pár z nich.
  • Šetří výpočet a latenci, ne paměť, všichni experti musí být načtení.
  • Router se musí hlídat proti kolapsu; při inferenci přidává komunikaci mezi GPU.
  • Označení 8x7B neznamená prostý součet parametrů, protože část vah je sdílená.
Model uvádí 400 B parametrů, z toho 17 B aktivních. Co to znamená pro paměť a pro rychlost?

Rychlost odpovídá zhruba modelu se 17 B parametry, protože každý token prochází jen vybranými experty. Paměť ale musí pojmout všech 400 B, experti se nedají načítat podle potřeby dost rychle. MoE tedy šetří výpočet, ne VRAM.

Co je collapse routeru a jak se mu předchází?

Stav, kdy router posílá tokeny jen na pár oblíbených expertů a zbytek se nevyužívá. Předchází se mu pomocnou loss funkcí penalizující nerovnoměrné rozdělení, omezenou kapacitou expertů a šumem při routování během tréninku.

Proč se pro lokální běh na jedné GPU obvykle hodí spíš hustý model než MoE?

Protože MoE potřebuje mít v paměti všechny experty, takže paměťové nároky odpovídají celkovému počtu parametrů, ne aktivnímu. Na jedné kartě tak hustý model podobné kvality obvykle vyjde paměťově mnohem líp.