Mixture of Experts (MoE)
Mixture of Experts (MoE) instrada ogni token verso alcune sottoreti esperte, così i parametri totali di un modello crescono molto più rapidamente dei calcoli per token.
La miscela di esperti (MoE) è un'architettura di rete neurale che suddivide una parte del modello in numerose sottoreti parallele, chiamate esperti, e usa un piccolo router appreso per inviare ogni input solo ad alcuni di essi. Poiché ogni token o ritaglio di immagine attraversa solo una parte degli esperti, il numero totale di parametri può crescere molto più rapidamente del calcolo necessario per ogni input. Mixtral 8x7B ha 47 miliardi di parametri, ma ne usa 13 miliardi per ogni token, mentre DeepSeek-V3 attiva 37 miliardi dei suoi 671 miliardi. Il livello MoE sparso con gating del router, usato negli odierni modelli linguistici di grandi dimensioni (LLMs), si basa sul livello MoE con gating sparso di Google del 2017, che ha raggiunto 137 miliardi di parametri tra livelli LSTM sovrapposti.
Come funziona un livello MoE#
In un Transformer, un livello MoE sostituisce di solito la rete feed-forward (FFN) che segue ogni blocco di self-attention. Il livello contiene N FFN esperte di forma identica e un router, un singolo livello lineare che assegna un punteggio a ogni esperto per ciascun token. Il token viene inviato ai k esperti con il punteggio più alto; i loro output vengono ponderati in base ai punteggi normalizzati del router e sommati, mentre gli esperti rimanenti non elaborano quel token. Mixtral seleziona 2 esperti su 8 in ogni livello, mentre DeepSeek-V3 seleziona 8 dei 256 esperti instradati più piccoli e invia anche ogni token a un esperto condiviso. Poiché l'instradamento avviene in modo indipendente in ogni livello, un token può usare esperti diversi a diverse profondità e due token della stessa frase possono seguire percorsi diversi nello stesso livello:
Gli esperti di Mixtral non si specializzavano per argomento. I suoi autori non hanno trovato un'associazione chiara tra esperti e materie come biologia o filosofia; l'instradamento seguiva invece la sintassi, perciò token come self nel codice Python e i token di indentazione tendevano a raggiungere gli stessi esperti.
Bilanciamento del carico e capacità degli esperti#
Un router appena inizializzato tende a favorire pochi esperti, che si addestrano più rapidamente e attirano ancora più token, mentre gli altri restano inattivi. L'esempio seguente con sei token li instrada attraverso un livello top-2 con otto esperti e conta quanti token riceve ciascun esperto:
import torch
torch.manual_seed(0)
dim, num_experts, top_k = 32, 8, 2
experts = torch.nn.ModuleList(
torch.nn.Sequential(torch.nn.Linear(dim, 4 * dim), torch.nn.GELU(), torch.nn.Linear(4 * dim, dim))
for _ in range(num_experts)
)
router = torch.nn.Linear(dim, num_experts, bias=False)
tokens = torch.randn(6, dim)
# Il router mantiene i punteggi dei due esperti migliori per ogni token e li trasforma in pesi di combinazione tramite softmax
scores, chosen = router(tokens).topk(top_k, dim=-1)
weights = scores.softmax(dim=-1)
out = torch.zeros_like(tokens)
for e, expert in enumerate(experts):
token_idx, slot = (chosen == e).nonzero(as_tuple=True) # token che hanno scelto l'esperto e
out[token_idx] += weights[token_idx, slot, None] * expert(tokens[token_idx])
print("Experts per token:", chosen.tolist())
print("Tokens per expert:", torch.bincount(chosen.flatten(), minlength=num_experts).tolist())Stampa le coppie di esperti [[3, 6], [7, 6], [0, 7], [3, 1], [6, 1], [2, 3]] e i conteggi per esperto [1, 2, 1, 3, 0, 0, 3, 2]: gli esperti 3 e 6 elaborano tre token ciascuno, mentre gli esperti 4 e 5 non ne ricevono nessuno; ogni token passa solo attraverso 2 delle 8 reti esperte. Lo Switch Transformer, che instradava ogni token a un singolo esperto e raggiungeva 1,6 trilioni di parametri, ha introdotto un termine di loss ausiliario che raggiunge il valore minimo quando i token e la probabilità del router sono distribuiti uniformemente tra gli esperti; molti modelli MoE successivi usano un termine simile. DeepSeek-V3 elimina la loss ausiliaria e modifica invece, durante l'addestramento, un bias per esperto applicato ai punteggi di instradamento. I sistemi di addestramento limitano anche il numero di token che un esperto può accettare per batch, ovvero la sua capacità; i token oltre il limite saltano gli esperti di quel livello e proseguono attraverso la connessione residua.
MoE e concetti correlati#
- Ensemble di modelli: diversi modelli completi elaborano ciascuno ogni input e le loro predizioni vengono mediate o sottoposte a votazione, perciò il calcolo cresce con ogni modello aggiunto. Un MoE è un'unica rete addestrata end-to-end, in cui il router sceglie un percorso diverso per ogni token.
- Instradamento dei modelli: un router sceglie un modello completo per ogni richiesta, ad esempio un modello piccolo per le domande semplici e uno grande per quelle difficili. Nei MoE, l'instradamento avviene per token all'interno di ogni livello MoE di un singolo modello.
- Miscela di profondità (MoD): un router consente ad alcuni token di saltare un intero blocco, così il calcolo varia da un token all'altro. Spesso viene combinata con MoE.
- Miscela di agenti (MoA): diversi LLM separati rispondono a un prompt e livelli successivi di LLM perfezionano le risposte combinate; è una pipeline di prompting senza pesi condivisi.
MoE nei modelli linguistici e di visione#
Molti dei più grandi LLM con pesi aperti usano livelli MoE, tra cui DeepSeek-V3, Llama 4, le versioni MoE di Qwen3 e gpt-oss di OpenAI. Nella visione artificiale, Vision MoE (V-MoE) ha sostituito alcuni livelli FFN di un Vision Transformer (ViT) con esperti e ha instradato singoli ritagli di immagine, raggiungendo una precisione all'avanguardia con appena la metà del calcolo di inferenza; la sua versione da 15 miliardi di parametri ha raggiunto una precisione top-1 del 90.35% su ImageNet.
Memoria e serving#
MoE riduce il calcolo, non la memoria: occorre caricare ogni esperto anche se ogni token ne usa solo pochi, quindi Mixtral richiede la memoria di un modello da 47 miliardi di parametri pur svolgendo per ogni token il lavoro di uno da 13 miliardi. I grandi modelli MoE vengono quindi distribuiti su GPU con il parallelismo degli esperti, in cui ogni GPU contiene un sottoinsieme di esperti e uno scambio all-to-all invia ogni token ai dispositivi che ospitano gli esperti selezionati e lo riporta indietro. Framework come DeepSpeed-MoE combinano il parallelismo degli esperti con il parallelismo dei dati e il parallelismo dei tensori per l'addestramento. I modelli di visione edge seguono l'approccio denso: YOLO26 esegue ogni livello su ogni immagine, quindi l'occupazione di memoria e il calcolo per immagine sono uguali per ogni input.










