Un modello può avere molti più parametri di quanti ne utilizzi per elaborare un singolo token. È l’idea alla base dei Mixture of Experts, o MoE: distribuire parte del lavoro fra sottoreti e attivarne soltanto alcune in ciascun passaggio. Per capire che cosa significhi davvero, dobbiamo seguire il componente che decide il percorso: il router.
La parola “esperti” suggerisce una squadra composta da un matematico, un programmatore e un traduttore. È un’immagine intuitiva, ma può diventare fuorviante. In questo approfondimento vedremo che cosa viene selezionato, faremo un calcolo completo e distingueremo tre grandezze spesso confuse: capacità parametrica, lavoro di elaborazione e memoria.
In breve
- Un esperto è una sottorete con propri pesi; nei casi qui discussi è un blocco feed-forward.
- Il router usa la rappresentazione interna del token per scegliere gli esperti del passaggio.
- La scelta può cambiare fra token e fra strati.
- I parametri attivi aiutano a descrivere il lavoro, ma non sostituiscono il conteggio dei pesi da conservare.
- Prestazioni e convenienza dipendono anche da carico, implementazione e comunicazione fra dispositivi.
Dove si collocano gli esperti
In un Transformer troviamo, fra le altre componenti, attenzione e blocchi feed-forward, che trasformano le rappresentazioni interne. In una comune architettura MoE alcuni blocchi feed-forward vengono sostituiti da un insieme di sottoreti alternative. Le altre parti possono rimanere condivise. Non stiamo duplicando necessariamente l’intero modello.
Nel paper originale di Mixtral 8×7B, per ogni token e a ogni strato il router seleziona due fra otto blocchi feed-forward. I contributi vengono combinati. Il documento riporta circa 47 miliardi di parametri totali e 13 miliardi attivi: è un esempio storico concreto, non una classifica dei modelli disponibili oggi.
Questo chiarisce anche perché moltiplicare semplicemente “otto per sette” non ricostruisca la dimensione effettiva di quel modello: una parte dell’architettura è condivisa. Per confrontare due sistemi serve la descrizione tecnica, oltre al nome commerciale.
Che cosa vede il router
Il suo input è un vettore numerico, la rappresentazione interna del token in quel punto del modello. A quel livello può già incorporare informazioni del contesto elaborate dall’attenzione. Il router produce punteggi per le sottoreti e determina una combinazione sparsa: molti pesi della combinazione sono zero.
Il lavoro di Shazeer e colleghi del 2017 descrive questa forma di calcolo condizionale attraverso una rete di gating addestrabile. La decisione si apprende durante l’addestramento insieme al sistema; non è necessario scrivere a mano una regola come “se vedo una formula, chiama l’esperto di matematica”.
La scelta di alcuni esperti dentro una rete va inoltre distinta dal routing applicativo discusso nell’episodio 09, dove un servizio può scegliere fra modelli diversi. Qui il passaggio avviene all’interno del modello stesso.
Un esempio numerico: scegliere due esperti
Costruiamo un caso didattico con quattro esperti A, B, C e D. Per un solo token, immaginiamo che il router assegni i punteggi [2, 1, 0, −1]. Sono numeri inventati per rendere trasparente il calcolo, non misure di un modello reale.
Nella variante scelta per l’esempio teniamo i due punteggi maggiori e applichiamo la softmax soltanto a quelli selezionati. I pesi risultano 0,731059 per A e 0,268941 per B; per C e D sono zero. È importante specificare la variante: non tutte le architetture implementano il gating nello stesso modo.
| Esperto | Punteggio | Peso dopo top-2 e softmax | Uscita ipotetica |
|---|---|---|---|
| A | 2 | 0,731059 | [2; 0] |
| B | 1 | 0,268941 | [0; 4] |
| C | 0 | 0 | Non calcolata |
| D | −1 | 0 | Non calcolata |
Se A restituisce il vettore [2; 0] e B restituisce [0; 4], la combinazione è 0,731059 × [2; 0] + 0,268941 × [0; 4] ≈ [1,462117; 1,075766]. In un MoE reale le uscite hanno molte più componenti e il passaggio si inserisce nel resto del blocco Transformer.
Il vantaggio visibile nell’esempio è che C e D non devono eseguire la propria trasformazione per quel token. Non abbiamo però eliminato i loro pesi: serviranno se il router li selezionerà per altri input.
Gli esperti non sono professioni assegnate
L’etichetta “esperto” indica un ruolo nell’architettura. Non garantisce una divisione stabile per disciplina. Nel suo studio del routing, il paper Mixtral osserva comportamenti che non si riducono a una semplice specializzazione per argomento: leggere un numero di esperto come se fosse il nome di una competenza sarebbe una conclusione eccessiva.
Per descrivere un sistema concreto chiederei quindi come si distribuiscano le selezioni su input diversi e quanto le osservazioni siano stabili. Una rappresentazione grafica che assegna arbitrariamente “diritto”, “medicina” o “matematica” alle sottoreti può facilitare il racconto, ma introduce una proprietà che va dimostrata. Nel nostro esempio usiamo apposta soltanto A, B, C e D.
Parametri totali e attivi: due conti distinti
Immaginiamo ora un’architettura ipotetica con un solo blocco MoE: due miliardi di parametri nelle parti condivise, otto esperti da un miliardo ciascuno e due esperti selezionati per token. Trascuriamo ogni dettaglio non incluso in questa definizione, compreso l’eventuale piccolo contributo del router, che assumiamo già conteggiato nella parte condivisa.
I totali sono P_tot = P_condivisi + N × P_esperto = 2 + 8 × 1 = 10 miliardi. Per il percorso di un token abbiamo P_attivi = P_condivisi + k × P_esperto = 2 + 2 × 1 = 4 miliardi. Nei modelli con più strati il conto va eseguito sulle componenti di ciascuno strato e poi aggregato.
Attiviamo un quarto degli esperti, ma nell’esempio coinvolgiamo il 40% dei parametri complessivi: anche la parte condivisa conta. Il rapporto non dimostra che il sistema sia due volte e mezzo più veloce di un’altra rete. Un conteggio dei parametri non misura da solo operazioni, trasferimenti, attese o utilizzo delle GPU.
Perché la memoria non scende a quattro miliardi
Con due byte per peso, i dieci miliardi di parametri dell’esempio occupano 20 GB decimali di soli pesi. Gli otto GB ottenuti contando soltanto quelli attivi descrivono una porzione del percorso, non il contenuto totale da conservare. Se tutti i pesi sono residenti sugli acceleratori, va previsto spazio per tutti.
Il budget reale comprende inoltre cache dell’attenzione, buffer e altre strutture operative. Quantizzazione, ripartizione fra dispositivi o trasferimenti da memoria esterna possono cambiare la collocazione e il formato dei pesi, con compromessi da misurare. Per questo eviterei di scegliere una macchina basandomi solo sulla scritta “parametri attivi”.
Il rapporto tecnico DeepSeek-V2, per esempio, distingue 236 miliardi di parametri totali da 21 miliardi attivi per token e descrive anche scelte specifiche sull’attenzione. È un promemoria utile: il comportamento di una famiglia non si deduce dal solo fatto di essere MoE.
Il carico deve arrivare anche agli altri esperti
Immaginiamo sei token con gli stessi punteggi del nostro esempio. Con top-2, A e B riceverebbero sei assegnazioni ciascuno, mentre C e D nessuna. Abbiamo dodici assegnazioni complessive, distribuite male: aggiungere sottoreti non garantisce di utilizzarle in modo equilibrato.
Il lavoro Switch Transformers affronta il problema anche attraverso termini di addestramento che incoraggiano il bilanciamento. Discute inoltre la capacità assegnata agli esperti e i casi di sovraccarico. Sono decisioni progettuali, non un dettaglio secondario: influenzano quante risorse vengono sfruttate e come prosegue il calcolo.
Fra GPU, anche il viaggio ha un costo
Quando gli esperti sono distribuiti su dispositivi diversi, le rappresentazioni devono raggiungere il dispositivo che esegue la sottorete e poi tornare nel flusso di elaborazione. Questo introduce comunicazione, oltre al calcolo. Nelle misure di un servizio osserverei quindi sia il tempo di esecuzione sia quello dedicato agli scambi e alle attese.
Il progetto MegaBlocks studia proprio come tradurre il routing dinamico in operazioni efficienti su GPU, affrontando il compromesso fra padding e token esclusi dal calcolo. La sua esistenza evidenzia che la sparsità matematica deve essere accompagnata da software adatto all’hardware.
Prova anche tu: un router in poche righe
Questo codice usa soltanto la libreria standard di Python e funziona anche in Colab. Ho eseguito il calcolo locale il 24 ottobre 2026. Simula la selezione e la combinazione di uscite già fissate: non addestra esperti, non carica un LLM e non misura prestazioni.
import math
# Punteggi e uscite inventati per un solo token
logits = [2.0, 1.0, 0.0, -1.0]
experts = [[2.0, 0.0], [0.0, 4.0],
[1.0, 1.0], [-1.0, 2.0]]
k = 2
chosen = sorted(range(4),
key=lambda i: logits[i], reverse=True)[:k]
m = max(logits[i] for i in chosen)
raw = [math.exp(logits[i] - m) for i in chosen]
weights = [v / sum(raw) for v in raw]
y = [sum(w * experts[i][j]
for i, w in zip(chosen, weights))
for j in range(2)]
print("esperti:", chosen)
print("pesi:", [round(w, 6) for w in weights])
print("uscita:", [round(v, 6) for v in y])
shared, per_expert, n = 2, 1, 8 # miliardi
print("totali:", shared + n * per_expert)
print("attivi:", shared + k * per_expert)
Il risultato è: esperti [0, 1], pesi [0.731059, 0.268941], uscita [1.462117, 1.075766]; nel secondo conto, dieci miliardi totali e quattro attivi. Prova a portare k a uno: cambiano sia la combinazione sia i parametri attivi dell’architettura ipotetica. Cambia poi i punteggi e osserva quali esperti entrano nel percorso.
Quando valuterei un MoE
Per un’applicazione reale partirei dal compito: quali risposte devono essere corrette, quanto contesto viene usato e quali tempi sono accettabili? Confronterei un candidato MoE e uno denso sulla stessa raccolta di richieste, conservando i risultati per tipologia di errore, costo e latenza.
Una prova con un solo utente e una prova con molte richieste simultanee rispondono a domande diverse. Anche la durata dei prompt e degli output va tenuta sotto controllo. Il nostro laboratorio dimostra un meccanismo; per decidere un acquisto o un’architettura servono misure sul sistema che si intende davvero utilizzare.
Una checklist pratica
- Sono disponibili conteggi distinti per parametri totali e attivi?
- Quanti esperti vengono selezionati per token e in quali strati?
- Come viene gestito il bilanciamento e che cosa succede in caso di sovraccarico?
- Dove risiedono tutti i pesi e quanto spazio resta per cache e buffer?
- Quali qualità, latenza e throughput sono stati misurati sul mio carico?
Un MoE amplia il patrimonio di parametri disponibili scegliendo, a ogni passaggio, quali parti mettere al lavoro. La convenienza si verifica sul sistema completo.
DALLA MIA BIBLIOTECA
- Sebastian Raschka — Sviluppare Large Language Model. Costruire da zero LLM su misura. Utile per consolidare le componenti di base di un modello linguistico prima di affrontare le varianti sparse. I riferimenti specialistici sui MoE sono quelli elencati sotto.
Per approfondire
- Shazeer e altri, Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer, 2017.
- Fedus, Zoph e Shazeer, Switch Transformers, JMLR 2022.
- Jiang e altri, Mixtral of Experts, 2024: architettura e analisi del routing.
- Gale e altri, MegaBlocks, 2022: esecuzione efficiente delle operazioni sparse.
- DeepSeek-AI, DeepSeek-V2, 2024.



















