Salta al contingut
Entendre els LLMs
Bloc 4avançat2 h
IntuïtiuMatemàtic

Abans d'això: Anatomia d'un LLM modern

13 · Mixture of Experts

Idea central: no cal activar tot el model per a cada token. Si tens 100 especialistes i en consultes 2 per pregunta, tens el coneixement de 100 al cost computacional de 2.


1. El motiu econòmic# sense fórmules

Amb un model dens, capacitat i cost estan encadenats: més paràmetres = més FLOPs per token, tant en entrenament com en inferència.

MoE trenca aquest lligam. Substitueix la capa FFN per EE FFN ("experts") i un encaminador (router) que, per a cada token, en tria només kk (típicament 1-8 de 8-256).

y=∑i∈Top-kgi(x)⋅Ei(x),g=softmax(Top-k(xWr))\mathbf{y} = \sum_{i\in \text{Top-}k} g_i(\mathbf{x})\cdot E_i(\mathbf{x}), \qquad g = \text{softmax}(\text{Top-}k(\mathbf{x}\mathbf{W}_r))

Resultat: paràmetres totals ≫ paràmetres actius. Exemples reals: 671B totals / 37B actius; 1T+ totals amb desenes de B actius. Els FLOPs per token són els dels actius; la memòria necessària és la dels totals.

Capacitat contra cost: la comptabilitat que ho explica tot

Un MoE té dos números de paràmetres i no un. Quin entra als FLOPs, quin entra a la factura de memòria, i quina distància hi ha entre tots dos?

Totals contra actius

Totals: tot el que s’ha de tenir a la memòria666,50 G
Actius: el que passa per cada token33,03 G

La barra de baix és el 5,0 % de la de dalt. Tot el que hi ha entre les dues són experts que el model té, que ocupen memòria, que s'han entrenat i que aquest token no toca.

Quatre configuracions, amb els quatre números que importen
ModelE / ktotalsactiusràtiofp8combinacions
Dens de 8B—6,4 G6,4 G1,0×6 GB—
Mixtral 8×7B8 / 247,4 G13,6 G3,5×47 GB28,00
DeepSeek-V3256 / 8666,5 G33,0 G20,2×667 GB4,10·10¹⁴
Granularitat extrema512 / 16665,1 G31,6 G21,0×665 GB8,41·10²⁹

L'última columna és el nombre de subconjunts de kk experts que el router pot triar: (Ek)\binom{E}{k}. És el número que hi ha darrere de la frase «molts experts petits donen més combinacions possibles»: passar de 8 experts amb top-2 a 256 amb top-8 multiplica les combinacions per 1,46·10¹³ sense tocar els FLOPs per token, i és per això que la tendència va cap a la granularitat fina.

Granularitat fina amb un expert compartit. És el «37B actius de 671B totals» del text.

7.168
61 (58 MoE)

Les tres primeres es deixen denses, com fan els models reals: el routing hi és inestable.

256
top-8

És el que multiplica els FLOPs per token.

1

S’activen sempre. Compten als actius i als totals alhora.

2.048

La granularitat: molts experts petits en comptes de pocs grans.

15,0 T
paràmetres totals
666,5 G
paràmetres actius
33,0 G
ràtio
20,2×
FLOPs per token (2N)
6,61·10¹⁰
memòria a fp8
667 GB
GPUs de 80 GB
9
Els paràmetres d'un MoE de debò: 0 de diferència entre el vector i el desglossament

No és un full de càlcul: es munta un Transformer de 3 capes amb dues capes MoE de 8 experts i un de compartit, i es compara la longitud real del seu vector theta amb el desglossament peça a peça.

Longitud real del vector theta62.048
Suma del desglossament62.048
Diferència0
Paràmetres actius per token36.704
Els que hi són i no s'activen25.344
…que són exactament els 6 experts no triats de les 2 capes MoE25.344

La diferència entre totals i actius és, exactament, els experts que no s'han triat — cap altra cosa. L'atenció, els embeddings, les normes i els experts compartits entren als dos números. Aquesta és la frase sencera del §1: el MoE no fa el model més barat, fa que la part d'FFN del model es pagui k/Ek/E vegades.

Els «37B actius de 671B totals» i les seves dues conseqüències

Amb la configuració d'ara —d=7168d = 7168, 61 capes, 256 experts, top-8, 1 compartit— surten 666,5 G paràmetres totals i 33,0 G actius, una ràtio de 20,2. Posa el selector a DeepSeek-V3 i compara amb el text.

Cost de còmput: els actius
  • Generar un token: 2Nactius2N_{actius} = 6,61·10¹⁰ FLOPs
  • Entrenar-lo amb 15,0 T tokens: 6NactiusD6N_{actius}D = 2,97·10²⁴ FLOPs
  • Si fos dens amb 666,5 G paràmetres, entrenar-lo costaria 20,2 vegades més: 6,00·10²⁵
Factura de memòria: els totals
  • A fp8: 667 GB
  • A fp16: 1.333 GB
  • Amb H100 80 GB: 9 targetes a fp8, només per als pesos
  • Sostre de decodificació: 101 tok/s, que el marquen els actius perquè és el que s'ha de llegir per token

Les dues columnes són el fitxer 13 sencer. Un MoE és barat de calcular i car de tenir, i per això és fantàstic per a un servei que amortitza la memòria entre milers de peticions i dolent per a una sola targeta. Puja els experts i mira que la columna de l'esquerra no es mogui gens mentre la de la dreta es dispara: això és el desacoblament, i és literalment el que el text diu quan parla de trencar el lligam entre capacitat i cost.

La regla 6ND del fitxer 11 continua valent, i la subtilesa és quin N hi poses: els actius. Això vol dir que un MoE de 671B totals es pot entrenar amb el pressupost de còmput d'un de 37B, i per això existeix. El que no es pot és servir-lo amb la memòria d'un de 37B, i per això no tothom en fa.

2. Decisions de disseny# sense fórmules

Granularitat

Molts experts petits (fine-grained) en lloc de pocs grans dona més combinacions possibles i millors resultats a igualtat de paràmetres actius. La tendència recent és clara cap a més experts i més petits.

Experts compartits

Un o dos experts que sempre s'activen, a més dels seleccionats. Capturen el coneixement comú i eviten que cada expert hagi de reaprendre'l (DeepSeekMoE).

Top-k

k=1k=1 (Switch Transformer) és el més barat; k=2k=2 a 88 és el més habitual. Més kk = més FLOPs però millor qualitat i gradients més estables.

Quines capes

Normalment s'alternen capes denses i capes MoE, i les primeres capes solen mantenir-se denses (el routing hi és inestable).

El router: Top-k sobre E experts

Cada token tria k experts de E i en barreja les sortides. Quins pesos hi posa, sumen 1, i què passa quan k arriba a E?

Qui tria qui: pesos del router, token per expert

Pes que el router dona a cada expert per a cada token. Les cel·les buides són experts que aquell token no ha triat.
E1E2E3E4E5E6
0·el·0,96···0,04
1·gat·0,11···0,89
2·negre0,640,36····
3·dorm···0,44·0,56
4·perquè·0,60··0,40·
5·menja··0,20··0,80
6·peix·0,66···0,34
7·ara····0,530,47
pes del router0,001,00

Cada fila té exactament 2 cel·les no buides, i sumen 1.

Càrrega per expert

E1
1 · 6 %
E2
5 · 31 %
E3
1 · 6 %
E4
1 · 6 %
E5
2 · 13 %
E6
6 · 38 %

La barra plena seria el repartiment equitatiu, 17 %. Amb el router sense entrenar la càrrega ja no és uniforme, i entrenant sense balanceig s'empitjora fins a col·lapsar: és el widget següent.

Quines capes serien MoE

12345678

Les blaves són MoE i les grises, denses. Amb 8 capes MoE de 8, els paràmetres totals del model serien 3,1 vegades els d'un model dens equivalent, i els actius, pràcticament els mateixos.

6

La granularitat: amb la mateixa amplada total, més experts vol dir més combinacions.

top-2

k = 1 és Switch Transformer; k = 2 a 8 és l’habitual. Puja’l fins a E i mira la segona comprovació.

0

S’activen per a tots els tokens, amb pes 1. Capturen el coneixement comú perquè els altres no l’hagin de reaprendre.

16
Quines capes són MoE

Els models reals deixen denses les primeres capes: el routing hi és inestable perquè les representacions encara no s’han diferenciat.

La mateixa llavor dona sempre el mateix resultat.

experts
6 + 0 compartits
triats per token
2 + 0
paràmetres totals
3.528
actius per token
1.224
ràtio
2,88×
entropia d’ús
0,843
La sortida és exactament Σ gᵢ·Eᵢ(x), i els pesos sumen 1: 1,11·10⁻¹⁶ de desviació

La softmax està restringida als kk triats, de manera que els seus pesos sumen 1 i la sortida és una combinació convexa de les sortides dels experts: la mateixa comprovació que el fitxer 09 fa sobre l'atenció, ara sobre experts. Aquí està feta pels dos costats —es reconstrueix ∑igiEi(x)\sum_i g_i E_i(\mathbf{x}) a mà des de les sortides de cada expert i es compara amb el que la capa torna.

Tokenexperts triatspesossuma
0·el2, 60,961 · 0,0391,000000000000
1·gat6, 20,890 · 0,1101,000000000000
2·negre1, 20,644 · 0,3561,000000000000
3·dorm6, 40,559 · 0,4411,000000000000
4·perquè2, 50,603 · 0,3971,000000000000
5·menja6, 30,800 · 0,2001,000000000000
6·peix2, 60,657 · 0,3431,000000000000
7·ara5, 60,530 · 0,4701,000000000000

L'error de la reconstrucció és 0 i la pitjor desviació de la suma dels pesos, 1,11·10⁻¹⁶. Que sumin 1 importa per una raó pràctica: fa que l'escala de la sortida de la capa no depengui de quants experts s'hagin triat, i per tant que canviar kk no desbarati la variància del flux residual. Els experts compartits són l'excepció i s'hi sumen amb pes 1 a part, i per això amb compartits la suma continua sent 1 dels triats i la capa escriu una mica més.

Amb k = E i tots els experts idèntics, el MoE és l'FFN densa: 1,78·10⁻¹⁵ de diferència

Si es trien tots els experts, els pesos de la softmax sumen 1 sobre tots ells i la sortida és ∑jgjE(x)=E(x)\sum_j g_j E(\mathbf{x}) = E(\mathbf{x}) quan tots són el mateix expert. Aquí es munta exactament aquest cas —6 experts idèntics amb k=E=6k = E = 6— i es compara amb una capa d'un sol expert amb aquells mateixos pesos.

La diferència és 1,78·10⁻¹⁵: zero a precisió de màquina. Això diu una cosa que val la pena tenir clara abans de continuar: l'esparsitat del MoE no és una aproximació d'una densa. Amb k=Ek = E tens la densa exacta i el cost de la densa; amb k<Ek < E tens un model diferent, que calcula una altra funció i que costa menys. El que es guanya no és velocitat sobre el mateix càlcul: és la possibilitat de tenir molts més paràmetres pel mateix càlcul. I és també el fonament de l'upcycling, que és aquesta identitat feta servir com a punt de partida.

La granularitat i els experts compartits són les dues decisions de disseny del §2 que es poden veure aquí de seguida. Puja els experts mantenint k: els paràmetres totals creixen, els actius no, i les combinacions possibles es disparen. Puja els compartits: els actius creixen perquè s’apliquen sempre, i el que hi guanyes és que els experts encaminats no han de reaprendre cadascun el que és comú a tothom. La tercera decisió, quines capes són MoE, no es pot mesurar amb una capa sola: el que la justifica és que a les primeres capes les representacions encara no s’han diferenciat i el router no té res per on decidir.

3. El problema del balanceig de càrrega# sense fórmules

Si el router prefereix uns quants experts, la resta no s'entrenen mai → col·lapse. Solucions:

  1. Pèrdua auxiliar de balanceig: Laux=αE∑ifiPi\mathcal{L}_{aux} = \alpha E\sum_i f_i P_i, on fif_i és la fracció de tokens enviats a l'expert ii i PiP_i la probabilitat mitjana que hi assigna el router. Penalitza el desequilibri.
  2. Balanceig sense pèrdua auxiliar (DeepSeek-V3): afegir un biaix per expert que s'ajusta dinàmicament segons la càrrega recent, sense contaminar el gradient de la tasca. Millora la qualitat perquè la pèrdua auxiliar sempre és un impost sobre l'objectiu real.
  3. Capacitat i token dropping: cada expert té un límit de tokens per batch; els que sobren es descarten (o passen pel residual). Compte amb això en inferència.

El col·lapse del router, i les dues maneres d'evitar-lo

Sense balanceig, el router acaba enviant-ho tot a uns quants experts. Mira-ho passar, i mira què costa cadascuna de les dues solucions.

Entropia d'ús dels experts (1 = repartit, 0 = col·lapsat)

perfecte

Fracció de tokens que va a l'expert més carregat

1/E

La pèrdua de la tasca (sense l'impost)

bigrama
  • Sense balanceig
  • Pèrdua auxiliar
  • Biaix per expert (DeepSeek-V3)

Repartiment ara mateix, expert per expert

sense resH = —

8 experts morts (en vermell)

auxiliarH = —

8 experts morts (en vermell)

biaixH = —

8 experts morts (en vermell)

Cada barra és un expert i l'alçada és la fracció de tokens que hi arriba, normalitzada pel més carregat de cada panell. Un panell amb una barra alta i la resta arran de terra és un router col·lapsat: el model té 8 experts i en fa servir uns quants.

Sense balanceig

El router fa el que vol. Si comença a preferir uns quants experts, els altres no reben gradient, no milloren i el router els prefereix encara menys: la definició de col·lapse.

Pèrdua auxiliar

Se suma α·E·Σ fᵢPᵢ a la pèrdua. Penalitza el desequilibri, i el seu gradient arriba al router barrejat amb el de la tasca: és un impost.

Biaix per expert (DeepSeek-V3)

Un biaix per expert que s’ajusta segons la càrrega recent i que se suma als logits només per **triar**, no per pesar. No és un paràmetre i no rep gradient: no contamina el de la tasca.

Tres models s'entrenen alhora —sense balanceig, amb pèrdua auxiliar i amb el biaix de DeepSeek-V3— sobre el mateix text, amb la mateixa llavor i amb el mateix vector de paràmetres inicial: l'única diferència és com es balanceja. Cada pas dels tres costa uns 84 ms (estimats). El col·lapse ja es veu cap al pas 100.

0,050

Els models reals hi posen 0,001 a 0,01. Puja’l i mira com l’equilibri millora i la pèrdua de la tasca empitjora: és el bescanvi.

0,050

Quant es mou el biaix a cada pas. Massa poc i no arriba a equilibrar; massa i oscil·la.

5,00 ‰
passos
0
sense res · entropia
—
auxiliar · entropia
—
biaix · entropia
—
impost de l’auxiliar
—
càrrega màx · sense res
—
Encara no s’ha entrenat res: prem un dels botons de dalt

Prem un dels botons de dalt i mira les tres corbes d'entropia separar-se.

L’impost de la pèrdua auxiliar: encara no mesurat

Entrena i mira la columna de l'impost: és el número que fa concreta la frase del text sobre per què el balanceig sense pèrdua auxiliar pot donar millor qualitat.

Hi ha una tercera manera d'evitar el col·lapse que no és aquí i que no és una solució sinó un pedaç: limitar la capacitat per expert, de manera que un expert sobrecarregat simplement deixi de rebre tokens. Equilibra per força bruta i té un preu que el widget següent mesura — els tokens que sobren es descarten, i això fa que la sortida d'una seqüència depengui de quines altres hi ha al lot.

4. Implicacions de sistemes# sense fórmules

Entrenament: els experts es reparteixen entre GPUs (expert parallelism). Cada token ha de viatjar a la GPU del seu expert i tornar → dues operacions all-to-all per capa MoE. La comunicació és el coll d'ampolla; part de l'enginyeria de DeepSeek-V3 va consistir a solapar computació i comunicació per amagar-la.

Inferència: has de tenir tots els paràmetres en memòria encara que només n'activis una fracció. Un model de 671B en fp8 necessita ~671 GB → múltiples GPUs. Per això MoE és fantàstic per a serveis a gran escala (amortitzes la memòria entre moltes peticions) i dolent per a execució local en una sola targeta.

Batching: amb batch gran, els tokens es reparteixen entre molts experts i acabes activant-los gairebé tots → l'avantatge de FLOPs es manté però el patró d'accés a memòria és irregular. Tècniques com el prefetching d'experts intenten mitigar-ho.

La sortida depèn de qui més hi hagi al lot

Amb capacitat limitada, les seqüències d'un mateix lot es disputen les places dels experts. Posa la mateixa seqüència amb dues companyes diferents i mira els logits.

La mateixa seqüència, i què prediu a cada posició segons qui l'acompanyi
posició01234567891011
seqüèncias␣i␣la␣filla
prediu amb Ax.FI␣␣séF␣␣␣
prediu amb Bx.F.␣␣.éF␣␣␣
Δ logit màx00,230,060,180,040,020,200,030,470,070,050,03

Les cel·les vermelles són les posicions on la predicció canvia segons la companyia. La fila de sota és la diferència màxima de logit a cada posició; amb capacitat de sobres és zero a totes.

Qui s'emporta les places, amb capacitat 4

Capa 150,0 % de parelles descartades
4/10
4/10
4/5
4/4
4/10
4/9
Capa 252,1 % de parelles descartades
4/4
4/18
4/8
4/11
4/4
3/3

Cada columna és un expert; l'alçada plena és la seva capacitat i el número és «quants hi han entrat / quants el volien». Les columnes vermelles són les que han hagut de rebutjar tokens: són les que fan que el resultat depengui de l'ordre, i per tant del lot.

4 tokens

El repartiment equitatiu amb dues seqüències de 12 i top-2 sobre 6 experts seria 8. Puja-la fins que la diferència torni a zero.

Amb quina companya al lot

La seqüència que mirem és sempre la mateixa; l'única cosa que canvia és qui l'acompanya al lot.

1,0×

La manera com es diu als papers: múltiple del repartiment equitatiu L·k/E. Per sota d’1 es descarta segur.

Canvia el model i les tres seqüències. L'efecte es veu amb qualsevol llavor.

capacitat
4 tokens/expert
parelles descartades
51,0 %
diferència màx A vs B
0,469
diferència mitjana
0,040
prediccions que canvien
2 de 12
sola vs acompanyada
0,533
La mateixa seqüència dona logits diferents segons la companyia: 0,469 de diferència màxima

La seqüència que es mira és exactament la mateixa a les tres columnes, amb el mateix model i la mateixa llavor. L'atenció també és la mateixa: el forward conjunt fa servir una màscara per blocs, de manera que cap token no veu res de l'altra seqüència, i les posicions de RoPE són les de dins de cada seqüència. L'única cosa que lliga les dues seqüències és la capacitat dels experts, que es reparteix sobre tots els tokens del forward.

Comparaciócapacitatdescartadesdiferència màxdiferència mitjana
amb A contra amb B451,0 %0,4690,040
sola contra amb A425,0 %0,5330,114
amb A contra amb B, capacitat infinita∞0,0 %00
sola contra amb A, capacitat infinita∞0 %00

Les dues últimes files són el control, i són les que fan que la primera vulgui dir alguna cosa: amb capacitat de sobres, la diferència és 0 — zero exacte, no petit. La màscara per blocs i les posicions fan que el forward conjunt sigui matemàticament idèntic a dos forwards separats, i per tant qualsevol diferència que aparegui a la primera fila només pot venir de la capacitat.

Ara mateix 2 de les 12 prediccions de la seqüència canvien segons qui l'acompanyi. No és soroll numèric: és una funció diferent. Un servidor que faci batching dinàmic —i tots en fan— pot donar dues respostes diferents a la mateixa petició segons què hi hagués a la cua en aquell moment, i la petició no ha canviat gens.

Puja la capacitat fins que la columna de descartades arribi a zero i mira que la diferència torna a ser zero exacte. Aquest és el remei —capacitat de sobres, o dropless MoE, que reordena els tokens en comptes de descartar-los— i el seu preu és memòria i comunicació, perquè cal dimensionar per al pitjor cas en comptes de per a la mitjana.

Per què això passa, en tres passos
  1. 1. El router tria els seus kk experts per a cada token mirant només aquell token. Fins aquí, res no depèn del lot.
  2. 2. Els experts s'omplen en l'ordre en què arriben els tokens, i quan un expert arriba a la seva capacitat, els tokens que li quedaven es descarten. Aquí és on entra el lot: si les companyes han omplert l'expert 3, el teu token que hi anava es queda fora.
  3. 3. Un token descartat perd aquella contribució i el que queda passa pel residual; els pesos dels experts que sí que l'han acceptat no es renormalitzen, de manera que la suma dels pesos aplicats baixa de 1 i la sortida de la capa és una altra.

El pas 3 és una decisió d'implementació i no una llei: es podria renormalitzar. Però renormalitzar no arreglaria el problema —la sortida continuaria depenent de qui ha agafat les places— i afegiria una discontinuïtat més. El que sí que l'arregla és no descartar mai, i és cap on han anat les implementacions modernes.

Això és un cas d'una família més gran de no-determinisme en serving: el mateix prompt pot donar respostes diferents segons la mida del lot, perquè els nuclis de matrius trien algorismes diferents segons les dimensions i la suma en coma flotant no és associativa. La diferència és que aquell no-determinisme és de l'ordre de l'últim bit i aquest pot canviar el token que surt. El fitxer 15 hi torna des del costat del serving.

5. Interacció amb les lleis d'escala# sense fórmules

MoE millora la pèrdua a igualtat de FLOPs d'entrenament, però:

  • Consumeix més dades per assolir el mateix aprofitament per paràmetre → accelera el xoc contra el "mur de dades".
  • Té una relació òptima entre nombre d'experts, paràmetres actius i tokens que és pròpia (hi ha lleis d'escala específiques per a MoE).
  • Complica la comparació entre models: "70B dens" i "400B totals / 40B actius" no són comparables ni per memòria, ni per cost, ni per qualitat.

MoE contra dens, a igualtat de FLOPs d'entrenament

No el mateix nombre de passos: el mateix pressupost. El que té passos més barats en fa més. I després mira quants tokens ha necessitat cadascun.

Pèrdua contra FLOPs acumulats (eix horitzontal logarítmic)

bigramapressupost
  • Dens · 28.832 actius
  • MoE 8 experts, top-2 · 20.896 actius

Les dues corbes comencen al mateix lloc perquè el vector de paràmetres inicial és el mateix fins allà on la forma ho permet. Les dues arriben a la línia vertical del pressupost havent fet nombres de passos diferents: és exactament el que vol dir comparar a igualtat de FLOPs.

Dens28.832 / 28.832

FFN densa de 88 d’amplada interior. Tots els paràmetres actius a cada token.

MoE 8 experts, top-246.240 / 20.896

Vuit experts de 22, dos triats: 44 d’amplada activa contra 176 de total. Menys FLOPs per token i més paràmetres.

El mateix pressupost, repartit en passos

dens2.710 passos · 346.880 tokens
MoE3.739 passos · 478.592 tokens

C≈6NactiusDC \approx 6 N_{actius} D: amb el mateix CC, el model amb menys NactiusN_{actius} pot pujar DD. El MoE en fa 1,38× més de passos, i per tant veu 1,38× més tokens — que és el guany i el problema alhora.

Els dos models s'entrenen alhora, però el que compta a l'eix horitzontal no són els passos sinó els FLOPs acumulats: cada pas del MoE costa 0,72× el d'un pas del dens, perquè té 72 % dels paràmetres actius. Amb el pressupost de 60,0 G FLOPs, el dens arriba a 2.710 passos i el MoE a 3.739. Cada pas dels dos costa uns 56 ms (estimats).

60,0 G

El que tots dos poden gastar. No és el nombre de passos: és el que decideix quants passos pot fer cadascun.

5,00 ‰
passos fets
0
dens · pèrdua
—
MoE · pèrdua
—
dens · paràmetres
28.832
MoE · totals / actius
46.240 / 20.896
FLOPs per pas, MoE/dens
0,72×
Encara no s’ha entrenat res: prem un dels botons de dalt

La comparació honesta no és «el mateix nombre de passos» sinó «el mateix pressupost»: un MoE amb menys paràmetres actius fa passos més barats, i amb el mateix pressupost en fa més. Si es comparessin a igualtat de passos, el MoE hi sortiria perdent per una raó que no té res a veure amb l'arquitectura.

ModeltotalsactiusFLOPs/paspassos al pressupostpassos fetspèrdua
dens28.83228.8322,21·10⁷2.7100—
MoE46.24020.8961,60·10⁷3.7390—
El cost amagat: entrena per mesurar-lo

L'eix de FLOPs amaga una cosa que el §5 avisa i que és el problema real del MoE: consumeix més dades. Aquí es mesura directament: es pren la pèrdua que tots dos han assolit i es mira quants tokens li ha calgut a cadascun per arribar-hi.

Les dues últimes columnes diuen coses diferents i totes dues importen. La de FLOPs és on el MoE guanya: arriba a la mateixa pèrdua amb menys còmput, i per això s'ha imposat a l'escala alta. La de tokens per paràmetre és on perd: cada paràmetre del MoE veu molt menys text que cada paràmetre del dens, perquè només s'activa quan el router el tria. Amb dades infinites això seria igual; amb dades finites vol dir que un MoE arriba abans al punt on ja no queda text de qualitat per llegir, i és el que el text anomena el mur de dades.

També per això comparar «70B dens» amb «400B totals / 40B actius» no té sentit ni per memòria, ni per cost, ni per qualitat: són tres eixos i cada arquitectura en guanya un de diferent. L'única comparació que vol dir alguna cosa és fixar-ne un i mirar els altres dos, que és exactament el que aquest widget fa amb els FLOPs.

Hi ha lleis d'escala específiques per a MoE que fixen la relació òptima entre nombre d'experts, paràmetres actius i tokens, de la mateixa manera que Chinchilla fixa la relació entre paràmetres i tokens d'un model dens. El resum pràctic és que l'òptim de tokens per paràmetre actiu és més alt que a un dens, i que la granularitat té un òptim propi que no és ni 8 experts ni 1.024. El fitxer 16 desenvolupa les lleis d'escala.

6. Variants i idees relacionades# sense fórmules

  • Switch Transformer (Fedus et al., 2021): top-1, el treball que va popularitzar MoE a escala.
  • Mixtral 8×7B (2023): el primer MoE obert d'impacte ampli.
  • DeepSeekMoE / V3: granularitat fina + experts compartits + balanceig sense pèrdua auxiliar.
  • MoD (Mixture of Depths): en lloc de triar experts, decideix quines capes processen cada token — esparsitat en profunditat.
  • Upcycling: convertir un model dens ja entrenat en MoE replicant-ne les FFN i continuant l'entrenament. Molt més barat que entrenar de zero.
  • Routing a nivell d'expert vs de token vs de seqüència: decisions que afecten estabilitat i eficiència.

Upcycling: un dens que es converteix en MoE

Replica les FFN d'un dens ja entrenat i tindràs un MoE. El dia zero, quanta pèrdua hi guanya — i quant triga a guanyar-ne alguna?

1 · entrenant el dens→2 · replicat en 4 expertsFalten 150 passos per poder convertir-lo.

Les dues pèrdues

bigrama
  • el dens
  • el MoE (4 experts, top-4)

Les dues corbes arrenquen al mateix punt exacte al moment de la conversió: és la comprovació de dalt, dibuixada. El que passa després és la diferenciació.

Què canvia i què no, en convertir
PeçaQuè se’n faparàmetres
Embeddings i capa de sortidaes copien tal qual3.616
Atenció de totes les capeses copia tal qual8.192
γ de les normeses copien tal qual160
FFN de cada capaes replica 4 vegades16.896
Routernou, inicialitzat a zero256

Només una fila canvia de mida, i és per això que la conversió és barata: 41 % del model es copia sense tocar-lo. El router arrenca a zero perquè amb logits iguals la tria és uniforme i tots els experts entren amb el mateix pes, que és la condició que fa la identitat exacta.

Fase 1: entrena el dens. Un Transformer normal amb l'FFN de 88 d'amplada. Quan porti uns quants centenars de passos, prem «Converteix-lo en MoE» i el widget en replicarà les FFN. Cada pas costa uns 28 ms (estimats).

4

Còpies de l’FFN densa. Cadascuna arrenca sent idèntica a les altres.

top-4

Amb k = E la conversió és exacta el dia zero. Amb k < E hi ha un salt, i el widget el mesura.

150 passos

Quan el botó de conversió s’activa. Com més entrenat estigui el dens, més interessant és el que es replica.

5,00 ‰
passos del dens
0
pèrdua · dens
—
pèrdua · MoE
—
salt de la conversió
—
paràmetres
28.832
distància entre experts
0
La comprovació central: entrena el dens i converteix-lo

Amb tots els experts idèntics i el router a zero, la barreja és ∑jgjE(x)=E(x)∑jgj=E(x)\sum_j g_j E(\mathbf{x}) = E(\mathbf{x})\sum_j g_j = E(\mathbf{x}), perquè els pesos de la softmax restringida sumen 1. El MoE és la densa, escrita d'una altra manera i amb — vegades més paràmetres que no serveixen encara de res.

Entrena el dens uns centenars de passos i prem el botó de conversió.

La diferenciació: encara no ha començat

La distància és la norma de la diferència entre cada parella d'experts, normalitzada per la seva mida. Just després de replicar val 0 exacte —són el mateix vector— i puja a mesura que s'entrenen, perquè cada expert rep gradient només dels tokens que el router li envia. Dos experts que veuen tokens diferents divergeixen, i això és tota la història.

Aquí hi ha la lliçó del widget, i val la pena dir-la sencera: el que un MoE hi guanya no és capacitat nova sinó diferenciació. Els paràmetres hi són des del primer instant i no fan res; el que els fa útils és que el router els especialitzi en coses diferents, i això demana entrenament. Per això l'upcycling no és gratis —cal continuar entrenant— però sí molt més barat que començar de zero: el model ja sap llegir, i el que ha d'aprendre és només a repartir-se la feina.

L'upcycling és, en essència, aquesta identitat feta servir com a inicialització: en comptes de començar amb experts aleatoris —que donarien una pèrdua altíssima i haurien de reaprendre-ho tot— es comença amb experts que ja saben el que sabia el dens. Tots els MoE grans que no s'han entrenat de zero han fet això, i la diferència amb entrenar de zero és de mesos de còmput.

7. Comprova que ho has entès#

0 de 5 resoltes

  1. Per què un MoE desacobla capacitat i cost computacional?
  2. Què és el col·lapse del router i com es preveniria de dues maneres diferents?
  3. Per què un MoE de 400B totals / 40B actius no cap a la teva GPU encara que «només» n'activi 40B? Digues quants GB ocupen els pesos a fp16.
    GBMarge acceptat: 5 %
  4. Per què el balanceig sense pèrdua auxiliar pot donar millor qualitat? Entrena les tres estratègies i llegeix la columna de l'impost.

    Objectiu:Al widget del col·lapse del router, puja el pes α\alpha de la pèrdua auxiliar per sobre de 0,1 i entrena: amb l'impost gros, el bescanvi es veu de seguida.

    Vés al widget ↑alpha = per defecte · rate = per defecte
  5. En quin escenari triaries un model dens de 70B abans que un MoE amb els mateixos paràmetres actius?

8. Recursos#

Marca els que hagis llegit
  • Fedus, Zoph & Shazeer (2021), Switch Transformers.

  • Shazeer et al. (2017), Outrageously Large Neural Networks (l'origen del MoE modern).

  • DeepSeek-V3 Technical Report (secció de MoE i balanceig).

  • Cameron R. Wolfe, Mixture-of-Experts (MoE) LLMs — excel·lent repàs didàctic.

  • Hugging Face, Mixture of Experts Explained (blog).