为什么 DeepSeek 有 671B 参数却跑得飞快?
阅读时间约 10 分钟传统的大语言模型是 Dense(稠密) 架构——每个 token 经过模型时,所有参数都参与计算。比如 Llama 70B,每次推理都要激活全部 700 亿参数。参数越多,计算越慢。
MoE(Mixture of Experts,混合专家)采用 Sparse(稀疏) 架构——模型虽然拥有海量参数,但每个 token 只激活其中一小部分。比如 DeepSeek V3 有 6710 亿参数,但每次推理只激活约 370 亿,仅占总量的 5.5%。
观察两种架构在处理一个 token 时的神经元激活差异:
Dense 模型像全科医院——每个科室都要会诊。MoE 像专科转诊——只找相关专家。
MoE 的核心是 Router(路由器),也叫 Gating Network(门控网络)。它是一个轻量级的小网络,作用是:给每个 token 打分,决定该 token 应该被分配给哪些专家处理。
最常见的路由策略是 Top-K 路由:路由器为所有专家计算得分,然后选择得分最高的 K 个专家(通常 K=2)。同时,为了防止所有 token 都涌向同一个专家,还需要 负载均衡(Load Balancing) 机制。
点击不同的 token,观察路由器如何为每个 token 选择不同的专家(Top-2):
路由器就像医院前台——看了你的症状,决定你应该去骨科还是内科。
在标准 Transformer 中,每一层由两部分组成:Attention(注意力) 和 FFN(前馈网络)。MoE 并没有改变 Attention——它只替换了 FFN 层。
具体来说,MoE 把单个 FFN 替换为 N 个专家子网络(例如 64-256 个)。每个专家在结构上与原始 FFN 完全相同,只是各自拥有不同的学习权重。Attention 层仍然是共享的,所有 token 都经过同一个 Attention。
标准 Transformer 与 MoE Transformer 的结构差异:
Attention 是全体员工的晨会,Expert 是各自工位的专项工作。
MoE 的计算量确实小了,但有一个关键问题:所有专家的权重都必须常驻内存,即使每次只用其中 2 个。
以 DeepSeek V3 为例:671B 参数需要 400GB+ 显存,但每个 token 只计算约 37B 参数的量。这就是 MoE 的"内存悖论"——计算成本低,但内存占用高。内存带宽成为真正的瓶颈:需要从巨大的内存池中读取路由表和被选中专家的权重。
AtomGradient 研究的 MoE 35B-A3B(35B 总参数,3B 激活参数)就是一个典型案例:它的内存占用是 35B 模型的水平,但计算量只有 3B。
观察 Dense 与 MoE 在内存和计算上的差异:
MoE 就像有 128 间办公室的公司——虽然只有 2 人同时工作,但你得租下整栋楼。
MoE 已经从学术概念走向了真实产品。以下是三个标志性模型:
DeepSeek V3:671B 总参数 / 37B 激活,256 个专家 + Top-8 路由。性能对标 GPT-4,但训练成本仅为其零头。MoE 让 DeepSeek 以有限算力实现了超越量级的性能。
Qwen3.5-35B-A3B:35B 总参数 / 3B 激活,128 个专家 + Top-2 路由。轻量到可以在 MacBook 上运行——这在几年前是不可想象的。
Mixtral 8x7B:46.7B 总参数 / 12.9B 激活,8 个专家 + Top-2 路由。开源 MoE 的先驱,证明了 MoE 在开放生态中的可行性。
核心洞察:MoE 实现了 "训练大、运行小"——用海量参数学习知识,用少量参数高效推理。
| 模型 | 总参数 | 激活参数 | 专家数 | 路由 |
|---|---|---|---|---|
| DeepSeek V3 | 671B | 37B | 256 | Top-8 |
| Qwen3.5-35B-A3B | 35B | 3B | 128 | Top-2 |
| Mixtral 8x7B | 46.7B | 12.9B | 8 | Top-2 |
激活参数占总参数比例:
MoE 让你拥有博士团队的知识,但只付实习生的工资。
MoE 用稀疏激活取代全参数计算,以极小的计算代价获取大模型的能力。
路由器为每个 token 动态选择最合适的专家,实现输入驱动的智能分工。
MoE 的内存占用取决于总参数量,但计算成本只与激活参数相关。两者不可混淆。
Qwen 35B-A3B 等模型证明,MoE 可以在消费级硬件上高效运行。
MoE 的精髓:不是每个参数都需要为每个 token 工作——专业分工,各司其职。