论文原文地址:https://arxiv.org/pdf/2412.19437
本文主要是在DeepSeek-V2的基础上介绍改进点,相同部分不做过多介绍,对于DeepSeek-V2不了解的可以先看看我上一篇对于DeepSeek-V2的解读:《DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model》阅读解析-优快云博客
创新点
(1)与DeepSeek-V2不同,提出auxiliary-loss-free strategy for load balancing,从而最大程度地减少了由于寻找负载平衡而产生的性能下降。
(2)研究了Multi-Token Prediction (MTP),提升了模型的性能并且加快了模型推理的解码。
(3)克服了跨节点MOE训练中的通信瓶颈
(4)蒸馏来自DeepSeek R1系列的能力
摘要
提出了DeepSeek-V3 ,与V2一样采用MLA以及DeepSeekMoE架构,一个具有671B总参数的巨大模型,每个token都激活37B。提出auxiliary-loss-free strategy for load balancing,从而最大程度地减少了由于寻找负载平衡而产生的性能下降,研究了Multi-Token Prediction (MTP),提升了模型的性能并且加快了模型推理的解码。在海量的数据和巨大GPU集群上训练,在各项任务中表现优异。
负载均衡
在DeepSeek-V2的基础上去掉了专家级负载均衡损失(LExpBal)、设备级负载均衡损失(LDevBal)、和通信负载均衡损失(LCommBal)。也就是说在DeepSeek-V3中不会过多去控制负载均衡,因为这样会由于寻找负载均衡而产生性能下降,而是通过Auxiliary-Loss-Free Load Balancing来实现负载均衡,补充预防了一个序列中的极度失衡,并且引入了一种新的损失辅助Complementary Sequence-Wise Auxiliary Loss。此外与DeepSeek-V2一样采用节点限制路由,但是由于新的负载均衡策略,没有采用token丢弃策略。
Auxiliary-Loss-Free Load Balancing
这里我们先来回顾一下DeepSeek-V2中FFN对于专家的选择,FFN对于路由专家的选择是根据亲和力分数,以及k来决定的,选择亲和力分数前k个路由专家来参与这个token的输出,在DeepSeek-V2中通过门值
来控制路由专家的参与度。
而在DeepSeek-V3中,通过在亲和力分数上加上偏置项
(对于不同的路由专家不同)来控制门值
来选择排序,偏置项
越大,那么门值
也就越大,那么MoE更趋向于选择偏置项
更大的路由专家。而作者又通过超参数γ来控制
,当对应的路由专家负载过重时,将会把偏置项
减去γ来使得该专家的
+
变小,从而使得该专家的排序靠后,从而不被选择,反之,如果对应的路由专家空闲,将会把偏置项
加上γ来使得该专家的门值
+
变大,从而被选择,从而实现专家负载均衡。
Complementary Sequence-Wise Auxiliary Loss
尽管DeepSeek-V3主要依赖于Auxiliary-Loss-Free Load Balancing来实现负载均衡,但为了防止在任何单个序列中极度失衡,文中还提出了Complementary Sequence-Wise Auxiliary Loss.该损失越大说明在该序列中多个token趋向于选择相同的专家模型。
Multi-Token Prediction
提出并应用了Multi-Token Prediction(MTP)多token预测,在DeepSeek-V3中将预测范围扩展到每个位置的多个未来tokens。一方面,MTP会让训练信号变得密集,可能提升数据效率;另一方面MTP可以预先计划其表达形式,以更好地预测未来的tokens。MTP模块通过将当前标记的表示与其后面的标记的嵌入进行线性组合来生成新的表示,并将其输入到Transformer块中以产生当前深度的输出表示。最后,共享输出头计算给定深度的额外预测标记的概率分布。
其中表示第K个MTP中线性层输入矩阵,
表示第K个MTP中线形层的输出,TRM()代表Transformer block,
表示Transformer block的输出,OutHead()表示输出头,线性地将表示形式映射到逻辑,然后用SoftMax()函数来计算第k个额外token到预测概率。
MTP训练目标是计算每个预测深度的交叉熵损失,并将其加权平均作为整个MTP损失,用于训练DeepSeek-V3模型。
在推理过程中,可以直接丢弃MTP模块,让主模型独立正常运行,也可以重新利用这些MTP模块来进行推测解码,进一步提高生成延迟。
其他
为了加速训练,作者使用混合精度训练,将大部分参数压缩到FP8进行训练,关键部分参数则保持原有的精度,并且计了双管算法DualPipe以进行有效的Ppeline并行性。与现有的双管算法方法相比,DualPipe的管道气泡较少。为了保证DualPipe算法的计算性能。作者们定制了高效的交叉节点全向通信内核,并与MoE门控算法和集群网络拓扑进行了协同设计,实现了设备间高效通信。DeepSeek-V3在各项评测任务取得优异的表现,文中还提到了许多量化相关以及优化细节,感兴趣的可以阅读原文。