内容提要
本文介绍DeepSeek-V4模型结构中MoE层的四处改动:路由打分从sigmoid改为sqrt(softplus)以消除饱和;前三层用固定hash routing替代稠密层;增加极小序列级平衡损失;SwiGLU加硬截断防离群值。模型采用FP4量化,61层全MoE,每token激活6个expert,稀疏度64,总参数约49B。
延伸解读
打分函数改动的动机
V4将路由打分从sigmoid换成sqrt(softplus),主要是为了解决sigmoid在正半轴饱和的问题。sigmoid输出有上界1,当多个expert得分都接近1时,归一化后权重趋于相等,router难以区分相关性;且饱和区梯度极小,影响学习。sqrt(softplus)在负半轴近似指数衰减,正半轴无界但缓慢增长,既保留了对不相关expert的抑制,又维持了高分间的区分度,且梯度不会消失。
hash routing的权衡
V4将前三层从稠密层改为hash routing的MoE,按token id查表固定选择expert,而非由router动态选择。这利用了浅层隐状态主要由token自身决定的特性,使路由近似查表。好处是负载可离线均衡、行为确定、增加模型容量而不增加激活量。但代价是失去了上下文适应性,浅层对上下文不敏感,可能影响需要上下文信息的早期处理。
序列级平衡损失的作用
V4保留了极小的序列级平衡损失(权重1e-4),用于防止单条序列内负载极端不均,如整段代码集中到同一expert。这是对无辅助损失偏置路由的补充,偏置在全局batch上均衡,但无法控制序列内部。该损失权重极小,说明它只是兜底,主要负载均衡仍靠偏置。此外,V4去掉了V3的node-limited routing限制,路由自由度更高,但需依赖新的并行策略控制通信。
SwiGLU截断的稳定性考量
V4给SwiGLU加上硬截断(clamp到[-10,10]),以消除训练中的离群激活,防止loss spike。上支(W3x)截断上下界,门(W1x)只截上界,因为SiLU在负半轴有界。硬截断在截断区梯度为零,可能影响训练,但论文称有效且不损性能。与Kimi K3的软截断(tanh)相比,V4选择硬截断,体现了不同模型在稳定性与梯度流之间的权衡。
Q&A
DeepSeek-V4 的 MoE 层相比 V3 有哪些改动?
DeepSeek-V4 的 MoE 层在 DeepSeekMoE 骨架上做了四处改动:1) 路由打分函数从 sigmoid 换成 sqrt(softplus);2) 前三层用 hash routing 取代稠密层;3) 增加极小的序列级平衡损失;4) SwiGLU 激活函数加了硬截断。
为什么 DeepSeek-V4 将路由打分从 sigmoid 改为 sqrt(softplus)?
sigmoid 有上界 1,在正半轴饱和,导致多个高分 expert 的权重归一化后几乎相等,且饱和区梯度消失。sqrt(softplus) 在负半轴类似 sigmoid 压向 0,正半轴无界但缓慢增长,保持区分度,且导数永远不为零,避免了饱和问题。
DeepSeek-V4 前三层的 hash routing 是如何工作的?
前三层不再使用稠密层,而是用 MoE,但路由不基于分数,而是按 token id 查预定义的 hash 表(tid2eid),每个 token id 对应 6 个 expert。混合权重仍由 router 打分计算,但选哪些 expert 是固定的,训练时不更新。
DeepSeek-V4 的序列级平衡损失有什么作用?
无辅助损失路由靠偏置在全局 batch 上平衡负载,但单条序列内部可能极端不均匀。序列级平衡损失用于防止单条序列内的极端不平衡,权重为 1e-4,偏置更新速度为 0.001,是辅助手段,主力仍是偏置。
DeepSeek-V4 的 SwiGLU 截断具体是怎么做的?
SwiGLU 加了硬截断:上支(W3x)截到 [-10, 10],门(W1x)只截上界 10。因为 SiLU 在负半轴有界,只有正半轴无界。乘积绝对值不超过 100。config 中 swiglu_limit = 10。
DeepSeek-V4 的 expert 参数精度和总参数量是多少?
routed expert 权重使用 FP4(E2M1)量化,每 32 个元素一个 scale;激活是 FP8。总参数约 49B,其中 routed 参数约 1.57T(但以 FP4 存储约 0.8 TB),加上其他部分,整个 Pro 权重约 0.83 TB。
DeepSeek-V4 相比 V3 在 MoE 配置上有哪些变化?
相比 V3,V4 的 expert 更大(中间维从 2048 增至 3072)、更多(routed expert 从 256 增至 384)、每 token 激活数从 8 降至 6,稀疏度从 32 提升到 64。