MoE 底层原理:为什么大模型可以又大又快
DeepSeek-V3 有 6710 亿参数,但推理时每个 token 只激活 370 亿。Mixtral 8×7B 有 470 亿参数,跑起来像一个 130 亿的模型。秘密就在 Mixture of Experts——让大模型学会”该用哪部分脑子”。
一个直觉:图书馆 vs 百科全书
想象两种查资料的方式:
百科全书模式(Dense 模型):你有一本无敌厚的百科全书(比如 700 亿页)。每回答一个问题,不管问题多简单,你都要把整本书从头翻到尾。书越厚,翻一遍就越慢。
图书馆模式(MoE 模型):你有一个巨大的图书馆,有很多书架(比如 8 个),每个书架放着一部分知识。前台有一个聪明的图书管理员。你问一个化学问题,管理员只帮你从化学书架取两本相关的书。图书馆很大(总知识多),但你每次只看两本书(每次计算量小)。
这就是 MoE 的核心经济学:用”存储成本”换”计算成本”。模型的知识容量可以非常大,但每次推理只使用一小部分参数。
交互式动画:看 Token 如何被分配到 Expert
↑ 点击画面重新播放 | 观察:token 经过 Router 被分配到不同 Expert,容量满时会被 drop
Expert 到底是什么?——没你想的那么神秘
一个 Transformer block 里有两个核心组件:Self-Attention 和 FFN(前馈网络)。Attention 负责”词和词之间互相看”,FFN 负责”每个词独立做非线性变换”。
在 MoE 模型中,Attention 部分完全不变——所有 token 共享同一个 attention。改变的只有 FFN:原来的一个大 FFN,被替换成多个小 FFN(叫做 experts)。
每个 expert 的结构和普通 FFN 完全一样:
Expert_i(x) = W2_i · 激活函数(W1_i · x)
区别只是每个 expert 有自己独立的参数。就像一家连锁店的不同分店——装修一样,但员工不同,服务的客户群也不同。
Router:整个系统的大脑只有一层
8 个 expert 摆在那里,每个 token 该去哪个?这个决策由 Router(路由器,也叫 gating network)做出。
Router 的架构简单到令人惊讶——就是一个线性层 + softmax:
router_scores = token_hidden_state × W_gate # W_gate: [hidden_dim, num_experts]
probabilities = softmax(router_scores) # 每个 expert 的概率
top_k_experts = top_k(probabilities, k=2) # 选概率最高的 2 个
三行代码。没有隐藏层,没有复杂的神经网络。就是一个矩阵乘法把 token 的表示映射到 N 个分数,softmax 变成概率分布,取 top-k。
为什么这么简单就够用?因为 token 经过前面多层 attention 后,它的 hidden state 已经包含了丰富的语义信息。一个线性投影就能判断”这个 token 需要什么类型的处理”。
Token 的旅程
一个 token 通过 MoE 层的完整流程:
- Token 的 hidden state 进入 Router
- Router 输出每个 expert 的概率(如 [0.6, 0.05, 0.3, 0.05])
- 选 top-2:Expert 1(概率 0.6)和 Expert 3(概率 0.3)
- Token 分别送入这两个 expert 处理
- 两个 expert 的输出按概率加权求和:
output = 0.6 × E1(x) + 0.3 × E3(x)
就这样。从外面看,MoE 层的输入输出接口和普通 FFN 完全一样——一个向量进去,一个向量出来。区别只在于内部走了哪条路。
实际的数字
| 模型 | 总参数 | 每 token 激活 | Expert 数 | Top-K | 效率比 |
|---|---|---|---|---|---|
| Mixtral 8×7B | 47B | 13B | 8 | 2 | 3.6× |
| DeepSeek-V2 | 236B | 21B | 160+2 shared | 6+2 | 11× |
| DeepSeek-V3 | 671B | 37B | 256+1 shared | 8+1 | 18× |
DeepSeek-V3 的效率比是惊人的 18×——拥有 6710 亿参数的知识容量,但计算量只相当于一个 370 亿参数的 dense 模型。
下一篇我们来看让这套系统稳定运行的关键难题:load balancing(负载均衡)、token dropping(容量溢出)和训练不稳定性——以及各种精妙的解决方案。