Cut the experts finer

DeepSeekMoE (2024) narrows each expert's intermediate width to $1/m$ of the original: $N$ experts become $mN$, and each token activates $mK$ instead of $K$. This preserves the main expert matrix-multiplication budget, not necessarily whole-model runtime.

The paper's example: choosing 2 of 16 experts gives only 120 combinations; cut into 64 and choose 8, and the count is

$$\binom{64}{8} = 4{,}426{,}165{,}368$$

More combinations create room for specialization; useful specialization must still be learned. This is not a lossless way to slice an already-trained wide expert into narrower ones.

Work through a matched budget

Take hidden size $d=128$ and a SwiGLU expert with intermediate width $f=256$. Ignoring biases, one expert has $3df=98,304$ weights and roughly as many main multiply-accumulates (MACs) per token. A MAC is not one FLOP: counting multiplication and addition separately gives roughly two FLOPs.

Toy design Expert intermediate width $f$ Total experts Active per token Total expert parameters Active parameters / main MACs
Wider experts 256 8 2 786,432 196,608
Four times as many 64 32 8 786,432 196,608
Make one shared 64 31 routed + 1 shared 7 routed + 1 shared 786,432 196,608
def expert_budget(width, intermediate, routed, top_k, shared=0):
    if min(width, intermediate, routed, top_k) < 1 or shared < 0 or top_k > routed:
        raise ValueError("Invalid expert configuration")
    per_expert = 3 * width * intermediate
    return per_expert * (routed + shared), per_expert * (top_k + shared)

coarse = expert_budget(128, 256, 8, 2)
fine = expert_budget(128, 64, 32, 8)
with_shared = expert_budget(128, 64, 31, 7, shared=1)
assert coarse == fine == with_shared == (786432, 196608)

The last row matters: shared computation is not free. Keeping eight routed experts active and adding one shared raises the active count to 221,184, an increase of 12.5%. Any improvement then mixes a design change with extra compute.

Step by step Finer and shared experts on one budget

This figure needs JavaScript.

This table excludes routing, activations, attention, and communication. Smaller matrix operations and more dispatches can run slower at equal MACs. Equal total parameters also do not imply equal per-device peak memory.

Shared experts

Set aside $K_s$ shared experts that every token passes through, providing a common computation path intended to reduce redundancy among routed experts. That is a design goal, not a prescribed knowledge partition: grammar is not guaranteed to live in the shared expert, or mathematics in a particular routed expert.

The paper reports DeepSeekMoE 16B matching LLaMA2 7B with about 40% of the compute. DeepSeek-V3 keeps both changes: of its 61 layers the first 3 are dense, and each of the remaining 58 layers has 1 shared expert plus 256 routed experts, 8 chosen per token; each expert's intermediate width is only 2048 (the model's hidden size is 7168).

Not everyone does this

Model Routed experts per layer Experts per token Shared expert
DeepSeek-V3 256 8 1
Original Qwen3-235B-A22B / 30B-A3B 128 8 none
Llama 4 Maverick 128 1 1 (MoE layers alternate with dense layers)
Llama 4 Scout 16 1 1
gpt-oss-120b / 20b 128 / 32 4 none
DeepSeek-V4-Pro (2026) 384 6 1
Qwen3.5-397B-A17B / Qwen3.8-2.4T-A95B (2026) 512 10 1
Gemma 4 26B A4B (2026) 128 8 1
Kimi K3 (2026) 896 16 2 (full width)

The Qwen3 report explicitly removes shared experts compared with its Qwen2.5-MoE baseline. Llama 4 Maverick uses one shared expert plus one of 128 routed experts per token. By 2026 Qwen's MoE models brought the shared expert back: Qwen3-Next-80B-A3B, Qwen3.5-397B-A17B and Qwen3.8-2.4T-A95B all use 512 routed experts plus 1 shared, and Qwen3.6-35B-A3B uses 256 plus 1, so “Qwen3 has no shared expert” holds only for the original release. Record the checkpoint, not just the family name. Sources for the 2026 rows are in the MoE overview's parameter table (as of October 2026).

How to choose

For fine-grained experts, match total expert parameters and active compute before comparing validation loss, throughput, and load. For shared experts, state whether their budget replaces routed computation or adds to it.

A larger combination count is not enough. Common tokens might improve while rare domains regress, or communication might slow every step. Architecture makes alternatives available; experiments establish whether they are useful.

Another option narrows the vectors sent to experts, rather than only their internal FFN dimension. The LatentMoE chapter compares the costs with a small example, then explains why Kimi K3 also changes normalization and load balancing.