"参数越多越强,但越大越贵"几乎是大模型时代的第一性矛盾。MoE(Mixture of Experts,混合专家)是目前最被广泛验证的破局方案之一,也是 DeepSeek 系列一以贯之的技术底色。本文从机制层面讲清楚一件事:稀疏激活到底省的是什么钱,又是怎么省的。 文中会以 2026 年 4 月发布的 DeepSeek V4 双版本作为真实例子,把抽象机制落到具体数字上。

稠密模型的算力账

先看一个被反复引用的近似式,Transformer 训练所需的浮点运算量约为:

C6NDC \approx 6 \, N \, D

NN 是参与计算的参数量,DD 是训练 token 数,系数 6 来自前向 + 反向的乘加估计。推理时每个 token 的计算量大致是 2N2N。这两个式子的关键含义是:成本和"被激活的参数量"成正比。

在稠密(dense)模型里,NN 就是模型的全部参数。你想要更强的能力,几乎只能堆更大的 NN,于是训练和推理成本同步线性上涨。这条路走到后面,边际成本越来越难承受。

MoE 的核心拆分:容量与算力解耦

MoE 的思路是把上面这个 NN 拆成两个不同的量:

1
2
总参数   N_total  ——决定模型的"知识容量"
激活参数 N_active ——决定每个 token 的"计算开销"

具体做法是把 Transformer 里的前馈层(FFN)替换成一组并列的"专家"(每个专家就是一个独立 FFN),再加一个路由器(router/gate) 决定每个 token 该送给哪几个专家。假设有 EE 个专家,每个 token 只选 top-kk 个:

1
2
3
4
5
6
# 极简示意:MoE 前向
logits = router(x) # [tokens, E]
idx, w = topk(softmax(logits), k) # 每个 token 选 k 个专家及其权重
y = 0
for j in range(k):
y += w[:, j] * experts[idx[:, j]](x) # 只计算被选中的专家

于是总参数可以做得很大(容量大、知识多),而每个 token 实际只过 kk 个专家,NactiveNtotalN_{active} \ll N_{total}。代入 C6NDC \approx 6 N D,成本只跟 NactiveN_{active} 走。这就是"很大很懂、但每次只用一小部分"的来源——一句话:用稀疏激活把能力和算力解耦。

用 DeepSeek V4 看稀疏激活到底省多少

抽象公式不如真实数字直观。DeepSeek V4 同时放出了两个版本,正好把这套机制具象化:

  • V4-Pro:总参数 1.6 万亿(1.6T),每个 token 激活约 49B
  • V4-Flash:总参数 284B,每个 token 激活约 13B

先看 Pro。它的"知识容量"对应 1.6T 这个庞大的总盘子,但任何一个 token 走过模型时,实际只点亮约 49B 参数——激活比例不到 3.1%。代入 2N2N 的推理估算,每个 token 的计算量是按 49B 而不是 1.6T 来算的。也就是说,你享受着 1.6T 级别的容量与知识,却只为 49B 的算力买单。如果把这 1.6T 做成稠密模型,推理成本会是当前的三十多倍,根本无法规模化服务。

再看 Flash。284B 总参数、13B 激活,激活比例约 4.6%。它的总容量比 Pro 小得多,定位是更省、更快、更适合高并发与低延迟的场景。两个版本一对照,MoE 的设计自由度就很清楚了:总参数决定你想要多大的容量,激活参数决定你愿意为每个 token 付多少算力,二者可以独立调档。 Pro 把容量拉满,Flash 把成本压低,同一套机制覆盖了从"冲上限"到"控成本"的两端需求。

路由:省钱的关键,也是麻烦的来源

路由器是 MoE 的灵魂,也是工程难点。理想情况下每个 token 都被送到"最懂它"的专家,但现实里会遇到两个老问题:

  • 负载不均衡:路由器倾向于把大量 token 挤到少数热门专家上,其余专家"饿死"。这既浪费容量,又在分布式训练中造成某些卡过载、某些卡空转。
  • 路由坍塌:训练早期若少数专家略占优势,正反馈会让它们被越选越多,最终退化成近似稠密。

常见对策包括引入辅助负载均衡损失(鼓励 token 在专家间均匀分布)、容量因子(capacity factor,给每个专家设吞吐上限,超了就丢弃或溢出)等。DeepSeek 在这条线上的工程取向,是尽量减少对辅助损失的依赖、用更精细的均衡策略避免对主任务造成干扰——同时往往保留共享专家(shared expert):一部分专家对所有 token 恒定激活,承接通用知识,让被路由的专家更专注于差异化分工。具体设计细节请以官方技术报告为准。

训练省,推理更要省

MoE 省钱分两段看:

训练侧,相同算力预算下可以塞进更大的总参数,把容量利好吃满;代价是专家分散在多张卡上,带来专家并行(expert parallelism) 的 all-to-all 通信开销,需要靠通信与计算重叠来摊平。

推理侧收益更直观:每个 token 只激活 top-kk 专家,FLOPs 大幅下降。但要注意一个反直觉点——显存装的是总参数,算的是激活参数。以 V4-Pro 为例,1.6T 参数都得驻留在显存(或多卡分片)里,但每步只算 49B,于是呈现出典型的"显存占用大、计算量小"形态,瓶颈从算力转向显存带宽和容量。这也是为什么 DeepSeek 会把压缩 KV Cache 的注意力机制和 MoE 搭配使用:V4 在 1M 上下文下相比上一代把 KV Cache 压到约 10%、单 token FLOPs 压到约 27%,正是"一个压激活计算、一个压显存"两头一起省的结果,才能把"单位 token 成本"真正打下来。

省钱不是免费的午餐

客观地说,MoE 不是万能解。它带来更复杂的训练稳定性问题、更高的显存门槛、以及推理时的批处理与负载调度挑战;小 batch、低并发场景下,稀疏激活的优势也未必充分发挥。它真正适配的,是追求大容量、又要控成本、还要规模化服务的场景——这恰好是 DeepSeek 选择开放权重路线后必须面对的现实,也解释了为什么会有 Pro 与 Flash 这样一大一小的分档。

小结

MoE 省钱的本质,是用一个路由器把"模型有多大"和"每次算多少"拆开:容量靠总参数堆,成本只按激活参数付。DeepSeek V4 把这件事讲得很直白——V4-Pro 用 49B 激活撑起 1.6T 的容量,V4-Flash 用 13B 激活提供更省的选择;再叠加 KV 压缩等显存优化,就能在可控算力下逼近甚至超越更大稠密模型的能力。这正是 DeepSeek 高性价比叙事背后,最朴素也最硬核的工程逻辑。