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 x Router Wx → softmax 0.6 0.3 Expert 1 Expert 3 加权求和 0.6·E1 + 0.3·E3 输出
  1. Token 的 hidden state 进入 Router
  2. Router 输出每个 expert 的概率(如 [0.6, 0.05, 0.3, 0.05])
  3. 选 top-2:Expert 1(概率 0.6)和 Expert 3(概率 0.3)
  4. Token 分别送入这两个 expert 处理
  5. 两个 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(容量溢出)和训练不稳定性——以及各种精妙的解决方案。