DeepSeekMoE — 细粒度专家分割 + 共享专家隔离
DeepSeekMoE
Section titled “DeepSeekMoE”发布日期: 2024-01-11 来源: arXiv 2401.06066 工程范式: 极致专家专业化路线——不是增加专家数量,而是让每个专家更专。
传统 MoE(GShard 等)的问题在于专家专业化程度低——不同专家学到的是重叠知识。DeepSeekMoE 的核心洞察:专家不是越多越好,是越专越好。两条策略:把每个专家拆小(细粒度分割),让几个专家负责通用知识(共享专家隔离)。
关键取舍:总专家数从 16 增加到 64+,但激活参数不变。付出的代价是路由复杂度增加(从 120 种组合到 44 亿种),但换来了更高的参数效率和专家利用率。
关键架构决策
Section titled “关键架构决策”- 细粒度专家分割: 标准 FFN 中间维度缩小到 1/m,专家数增加 m 倍。每个 token 激活的专家数从 K 增加到 mK(保持总 FLOPs 不变)。
- 共享专家隔离: K_s 个共享专家始终激活,负责所有 token 的通用知识。剩余路由专家(mK - K_s 个)只负责差异化知识。
- 负载均衡损失: 专家级(防路由坍缩)+ 设备级(促计算均衡),设备级权重更大。
- DeepSeekMoE 16B 配置: 28 层,hidden 2048,2 共享 + 64 路由(6 活跃),总参 16.4B/激活 2.8B,训练 2T tokens。
- 2B 验证结果: 仅用 GShard 2.9B 的 40% 计算量即达同等性能。参数效率是 Dense 模型 + MoE 路由的理论上限的 97%。
- DeepSeekMoE 2B 用 GShard 2.9B 的 1/1.5 参数和 74% FLOPs 达同等 Pile Loss(1.808)
- 禁用 top 路由专家对 DeepSeekMoE 的伤害远大于 GShard——每个专家更不可替代
- 禁用共享专家 + 增加一个路由专家 → Pile Loss 从 1.808 飙升到 2.414(共享专家不可或缺)
vs GShard(Google,标准 MoE),DeepSeekMoE 用更细粒度的专家分割达到了更高的参数效率。这是 DeepSeek 后续所有 MoE 模型(V2/V3/V4)的架构基础。vs Switch Transformer(Google,top-1 路由),DeepSeekMoE 用 top-6 路由 + 细粒度专家,计算效率更高但路由复杂度也更高。
可复用的工程经验
Section titled “可复用的工程经验”- 专家专业化程度比专家数量更重要——拆小专家激活更多比保持大专家激活更少有效
- 共享专家隔离是 MoE 架构中常被忽视的关键组件——减少专家间冗余,提升路由效率
- 禁用共享专家的灾难性后果(loss +0.6)说明通用知识应该与差异化知识分离
- 细粒度专家分割创造了 44 亿种路由组合——组合爆炸本身带来了更灵活的特征空间