Strona główna / Rozdział 7 · Model na produkcji
Ostatnia zmiana · 5 min czytania
Mixture of Experts
W Mixture of Experts (MoE) warstwę MLP zastępuje wielu „ekspertów”, a router dla każdego tokena wybiera kilku z nich. Model ma bardzo dużo parametrów, ale na token liczy tylko część: obliczenia jak w małym modelu, pamięć jak w dużym.
Po ludzkuPrzychodnia. Rejestracja kieruje cię do dwóch z ośmiu lekarzy. Wszyscy muszą siedzieć w budynku, ale płacisz tylko za dwie wizyty. Gdy przychodzi tłum, każdy lekarz ma pacjentów, a rejestracja musi pilnować, żeby pod jednym gabinetem nie ustawiła się cała kolejka.
Klikaj tokeny i patrz, których ekspertów wybiera router. Na dole: ilu ekspertów potrzebuje całe zdanie
Uproszczenie: jedna warstwa, 8 ekspertów i 2 na token, jak w Mixtralu 8×7B (2023), a wybór jest poglądowy, nie z prawdziwego modelu. Pasek pod ekspertem pokazuje, jak często wybierały go tokeny z tego zdania. Router patrzy na stan tokena w kontekście, nie tylko na jego tekst, więc ten sam token w innym miejscu może trafić gdzie indziej.
Jak działa routing
- Router to mała warstwa liniowa. Z wektora tokena liczy wynik dla każdego eksperta, wybiera k najlepszych (zwykle 2–8) i sumuje ich wyjścia z wagami wyliczonymi z tych wyników. Wybór zapada osobno w każdej warstwie MoE i dla każdego tokena.
- Eksperci zastępują tylko MLP. Attention, embeddingi i normalizacje są wspólne, dlatego Mixtral 8×7B ma ok. 47 mld parametrów (a nie 56 mld), z czego ok. 13 mld aktywnych na token. Nowsze modele mają dużo więcej drobniejszych ekspertów: DeepSeek-V3 ma w każdej warstwie MoE 256 ekspertów routowanych i jednego wspólnego, a wybiera 8.
- „Ekspert” nie jest specjalistą od tematu. Autorzy Mixtrala nie znaleźli wyraźnych wzorców przydziału według dziedziny tekstu; wybór wiąże się raczej ze składnią, np. wcięcia w kodzie trafiają stale do tych samych ekspertów.
- Bez wyrównywania obciążenia router zawęża wybór do kilku ulubionych ekspertów, a reszta parametrów prawie się nie uczy. Stąd dodatkowa strata równoważąca w treningu (od pierwszych rzadkich warstw MoE, uproszczona w Switch Transformer) albo, w DeepSeek-V3, głównie bias każdego eksperta korygowany w trakcie treningu i używany tylko do wyboru ekspertów, plus strata równoważąca o bardzo małej wadze, liczona na poziomie sekwencji.
Serwowanie MoE: pamięć, batch i expert parallelism
- W pamięci muszą leżeć wszyscy eksperci. DeepSeek-V3 ma 671 mld parametrów, z czego 37 mld aktywnych na token. W FP8 to ok. 671 GB samych wag, więcej niż 640 GB na ośmiu kartach H100.
- Przy jednej rozmowie decode czyta tylko aktywnych ekspertów, więc jest szybki jak w modelu o wielkości części aktywnej. Przy większym batchu tokeny rozchodzą się prawie do wszystkich ekspertów: krok czyta prawie cały model, a każdy ekspert dostaje tylko część batcha. Żeby liczenie dogoniło czytanie, batch musi być mniej więcej tyle razy większy niż w modelu gęstym, ile wynosi stosunek wszystkich ekspertów do wybranych (zobacz „Czemu GPU się nudzi”).
- Dlatego ekspertów dużego MoE rozkłada się na wiele kart (expert parallelism), a w każdej warstwie karty wymieniają się tokenami w trybie all-to-all. DeepSeek-V3 dekoduje na jednostkach po 320 GPU, po jednym ekspercie na kartę, i duplikuje najczęściej wybieranych ekspertów, bo najbardziej obciążony ekspert wyznacza czas całego kroku.
Kiedy MoE, a kiedy model gęsty
- MoE daje lepszą jakość przy tej samej ilości obliczeń i tańszy trening. Model gęsty tej samej łącznej wielkości zwykle jest lepszy, ale liczy wielokrotnie więcej na token. Większość czołowych modeli open-weight od 2025 roku to MoE, dlatego podaje się dwie liczby: parametry łącznie i aktywne (np. Qwen3-235B-A22B).
- Na sprzęcie z dużą, ale powolną pamięcią, jak Mac z pamięcią wspólną, MoE działa dla jednej osoby zaskakująco szybko, bo czyta tylko aktywne parametry. gpt-oss-120b (117 mld parametrów, 5,1 mld aktywnych) mieści się dzięki MXFP4 na jednej karcie 80 GB. Ponieważ czyta tylko aktywnych ekspertów, duże MoE ruszy też na jednej domowej karcie, jeśli wagi ekspertów zostaną w RAM-ie procesora, a attention na GPU (llama.cpp
--cpu-moealbo--n-cpu-moe). - Duże MoE w self-hostingu opłaca się dopiero przy ruchu, który wypełni batch na wielu kartach. Przy mniejszym ruchu taniej wychodzi API albo mniejszy model (zobacz „Modele open-weight”).
Sprawdź się
Czym jest MoE i jakie ma konsekwencje dla serwowania?
W MoE warstwę MLP zastępuje wielu ekspertów, a router dla każdego tokena w każdej warstwie wybiera kilku. Na każdy token liczone są tylko aktywne parametry, na przykład 37 z 671 mld w DeepSeek-V3, więc jakość jest bliższa dużemu modelowi przy obliczeniach małego. Ceną jest pamięć, bo wszyscy eksperci muszą być załadowani, i serwowanie: przy większym batchu tokeny trafiają prawie do wszystkich ekspertów, więc potrzeba dużo większych batchy, expert parallelism z komunikacją all-to-all między kartami i pilnowania równego obciążenia ekspertów.
In English
In MoE the MLP layer is replaced by many experts, and a router picks a few for every token in every layer. Each token uses only the active parameters, for example 37 of 671 billion in DeepSeek-V3, so the quality is closer to a large model at the compute of a small one. The price is memory, because every expert must be loaded, and serving: at larger batch sizes tokens hit almost every expert, so it takes much bigger batches, expert parallelism with all-to-all communication between GPUs, and care to keep the expert load balanced.
Pytania pogłębiające (3)
- Model MoE ma 5 mld aktywnych parametrów. Czy będzie działał jak model 5B?
- Liczy jak 5B, ale w pamięci musi leżeć całość. Przy jednej rozmowie decode jest szybki jak w małym modelu. Przy średnim batchu krok czyta prawie wszystkich ekspertów, więc kosztuje jak czytanie dużego modelu przy małej ilości liczenia. Dopiero bardzo duży batch zbliża koszt na token do modelu 5B.
- Po co wyrównywanie obciążenia w treningu?
- Bez niego router zawęża wybór do kilku ulubionych ekspertów, którzy uczą się coraz lepiej i są wybierani coraz częściej, a reszta parametrów się marnuje. W serwowaniu nierówne obciążenie oznacza, że najbardziej obciążony ekspert wyznacza czas kroku.
- Jak rozłożysz duże MoE na karty?
- Attention zwykle przez tensor albo data parallelism, ekspertów przez expert parallelism: każda karta trzyma część ekspertów, a tokeny w każdej warstwie wymienia się all-to-all. Kluczowe są szybkie połączenia między kartami i duplikowanie najczęściej wybieranych ekspertów. DeepSeek-V3 tak robi na 320 GPU w decode.