《DeepSeek-V3 Technical Report》阅读解析

论文原文地址: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对于路由专家的选择是根据亲和力分数s_{i,t},以及k来决定的,选择亲和力分数前k个路由专家来参与这个token的输出,在DeepSeek-V2中通过门值g_{i,t}来控制路由专家的参与度。

而在DeepSeek-V3中,通过在亲和力分数s_{i,t}上加上偏置项b_{i}(对于不同的路由专家不同)来控制门值g_{i,t}来选择排序,偏置项b_{i}越大,那么门值g_{i,t}也就越大,那么MoE更趋向于选择偏置项b_{i}更大的路由专家。而作者又通过超参数γ来控制b_{i},当对应的路由专家负载过重时,将会把偏置项b_{i}减去γ来使得该专家的s_{i,t}+b_{i}变小,从而使得该专家的排序靠后,从而不被选择,反之,如果对应的路由专家空闲,将会把偏置项b_{i}加上γ来使得该专家的门值s_{i,t}+b_{i}变大,从而被选择,从而实现专家负载均衡。

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块中以产生当前深度的输出表示。最后,共享输出头计算给定深度的额外预测标记的概率分布。

其中M_{k}表示第K个MTP中线性层输入矩阵,h^{'k}表示第K个MTP中线形层的输出,TRM()代表Transformer block,h^{k}表示Transformer block的输出,OutHead()表示输出头,线性地将表示形式映射到逻辑,然后用SoftMax()函数来计算第k个额外token到预测概率。
MTP训练目标是计算每个预测深度的交叉熵损失,并将其加权平均作为整个MTP损失,用于训练DeepSeek-V3模型。

在推理过程中,可以直接丢弃MTP模块,让主模型独立正常运行,也可以重新利用这些MTP模块来进行推测解码,进一步提高生成延迟。

其他

为了加速训练,作者使用混合精度训练,将大部分参数压缩到FP8进行训练,关键部分参数则保持原有的精度,并且计了双管算法DualPipe以进行有效的Ppeline并行性。与现有的双管算法方法相比,DualPipe的管道气泡较少。为了保证DualPipe算法的计算性能。作者们定制了高效的交叉节点全向通信内核,并与MoE门控算法和集群网络拓扑进行了协同设计,实现了设备间高效通信。DeepSeek-V3在各项评测任务取得优异的表现,文中还提到了许多量化相关以及优化细节,感兴趣的可以阅读原文。

### 关于 DeepSeek-R1 本地部署 Chatbox 指南 对于希望在本地环境中部署基于 DeepSeek-R1 的聊天机器人应用的需求,通常涉及几个关键步骤:准备开发环境、安装必要的依赖库以及配置运行参数。 #### 创建合适的 Python 虚拟环境 为了确保项目的独立性和稳定性,在开始之前应当先建立一个新的虚拟环境。这可以通过 Conda 工具来实现,命令如下所示: ```bash conda create -n DeepSeekR1 python=3.10 -y --override-channels -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free[^2] ``` 此操作会创建名为 `DeepSeekR1` 的新环境,并设置 Python 版本为 3.10 同时采用清华镜像加速下载过程。 #### 安装项目所需软件包 激活上述创建好的虚拟环境之后,下一步就是按照官方文档指示安装所有必需的Python库和其他工具。一般情况下,这些信息会被记录在一个叫做 requirements.txt 或 environment.yml 文件里。如果存在这样的文件,则可以直接通过 pip 或者 conda 来批量安装它们;如果没有现成列表的话,则需参照具体框架的要求逐一添加所需的组件。 #### 配置并启动服务端口 完成前期准备工作后,接下来就要着手调整应用程序的各项设定以便适应不同的硬件条件和网络状况。这部分工作可能涉及到修改配置文件中的某些字段(比如监听地址、最大连接数等),也可能需要编写额外脚本来处理特定的任务逻辑。最后一步则是执行启动指令让整个系统正式上线运作起来。 值得注意的是,《DeepSeek-V3 Technical Report》提供了有关架构设计和技术细节方面的深入解析[^1],但对于具体的部署流程并没有给出详尽说明。因此建议查阅更详细的官方指南或者社区资源获取完整的指导材料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值