DeepSeek-V3技术报告翻译

248 阅读22分钟

最近,DeepSeek发布的DeepSeek-V3作为开源大语言模型,以其极强的模型性能、极低的训练成本,吸引了众多关注,而DeepSeek-V3取得如此令人惊艳的效果,源于DeepSeek的研究团队在模型架构、训练框架等多个领域进行了深入、细致的优化。DeepSeek发布了DeepSeek-V3的技术报告——《DeepSeek-V3Technical Report》,其中详细介绍了DeepSeek-V3的技术方案、效果评估等。

本文是对《DeepSeek-V3Technical Report》的翻译。笔者在通读原文的基础上,使用AI工具进行翻译,并逐句校正,增加部分注释,如有不足之处,请指正。

摘要

DeepSeek提出DeepSeek-V3,这是一个强大的混合专家(MoE)语言模型,其参数总量达到6710亿,每个token激活370亿个参数。为实现高效推理和经济高效的训练,DeepSeek-V3采用了多头潜在注意力(MLA)和 DeepSeekMoE架构,这两种架构在DeepSeek-V2中已得到充分验证。此外,DeepSeek-V3首创了无辅助损失的负载均衡策略,并设定了多token预测训练目标,以提升性能。DeepSeek在token总量达14.8T的多样化且高质量的数据集上对DeepSeek-V3进行预训练,随后进行监督微调和强化学习微调,进一步提升其性能,对齐人类偏好。综合评估显示,DeepSeek-V3性能优于其他开源模型,与领先的闭源模型相当。另外,除性能卓越外,DeepSeek-V3的训练成本极低,完整训练仅需278.8万个H800 GPU小时,且训练过程极为稳定,在整个训练过程中,没有出现任何无法恢复的损失峰值,也无需进行任何回滚。模型的Checkpoint可在Github上获取。

图1 DeepSeek-V3和其他大语言模型在部分基准测试中的得分对比

1. 引言

近年来,大语言模型发展迅速,与通用人工智能(AGI)的差距逐渐缩小。除了闭源模型,包括DeepSeek系列、LLaMA系列、Qwen系列和Mistral系列在内的开源模型也在不断进步,不断缩小与闭源模型的差距。为进一步提升开源模型的能力,DeepSeek扩大模型规模,发布了DeepSeek-V3,这是一个大型混合专家(MoE)模型,拥有6710亿个参数,每个token激活370亿个参数。

DeepSeek追求模型性能和成本的平衡。因此,在架构方面,DeepSeek-V3仍然采用多头潜在注意力(MLA)和DeepSeekMoE,这两种架构在DeepSeek-V2中已得到验证,能够在实现高效训练和推理的同时,保持强大的模型性能。除了基本架构外,DeepSeek还实施了另外两种策略来进一步提升模型能力:第一,DeepSeek-V3首创了无辅助损失的负载均衡策略,旨在最小化因优化负载均衡而对模型性能产生的负面影响,第二,DeepSeek-V3采用多token预测训练目标,通过观察,其能提升模型在评估基准上的整体性能。

为实现高效训练,DeepSeek支持FP8混合精度训练,并对训练框架进行全面优化。通过支持FP8计算和存储,DeepSeek实现了训练加速和GPU内存占用的减少。在训练框架方面,DeepSeek设计了DualPipe算法实现高效的流水线并行,该算法减少了流水线气泡,并通过计算-通信并行隐藏了训练过程中的大部分通信开销。这种并行确保了随着模型规模的进一步扩大,只要保持计算与通信的比例恒定,仍然可以在节点间使用精细粒度的专家,同时实现全对全通信的近乎零开销。此外,DeepSeek还开发了高效的跨节点全对全通信内核,充分利用InfiniBand(IB)和NVLink带宽。DeepSeek对内存占用进行了细致优化,使得在不使用昂贵的张量并行的情况下也能训练DeepSeek-V3。通过上述这些工作,最终实现了高效率的训练。

在预训练阶段,DeepSeek使用了14.8T个高质量、多样化的token对DeepSeek-V3进行训练。预训练过程非常稳定,在整个训练过程中,没有遇到任何无法恢复的损失峰值,也无需回滚。接下来,DeepSeek对DeepSeek-V3进行了两阶段的上下文长度扩展。在第一阶段,最大上下文长度扩展到32K,在第二阶段,进一步扩展到128K。之后,DeepSeek进行后训练,包括对DeepSeek-V3的基线模型进行监督微调和强化学习微调,使其对齐人类偏好,进一步提升其能力。在后训练阶段,DeepSeek还从DeepSeek-R1系列模型中提取推理能力,同时平衡模型准确性和生成长度。

表1 DeepSeek-V3的训练成本

DeepSeek通过一系列基准测试中对DeepSeek-V3进行评估。尽管训练成本极低,但综合评估显示,DeepSeek-V3的基线模型已成为目前最强的开源基础模型,尤其是在编码和数学方面。DeepSeek-V3的会话版本也优于其他开源模型,在一系列标准和开放式基准测试中,性能与领先的闭源模型(如GPT-4o和Claude-3.5-Sonnet)相当。

最后,DeepSeek-V3的训练成本如表1所示。在预训练阶段,使用1T个token训练DeepSeek-V3仅需18万个H800 GPU小时,即在拥有2048个H800 GPU的集群上仅需3.7天。因此,DeepSeek-V3的预训练阶段在不到两个月的时间内完成,消耗266.4万个H800 GPU小时。结合上下文长度扩展所需的11.9万个H800 GPU小时和后训练所需的5000个H800 GPU小时,DeepSeek-V3的完整训练仅需278.8万个H800 GPU小时。假设 H800 GPU的租赁价格为每小时2美元,则DeepSeek-V3的总训练成本仅为557.6万美元。需要注意的是,上述成本仅包括DeepSeek-V3的正式训练,不包括前期研究和消融实验相关的成本。

在本文的其余部分,DeepSeek首先详细介绍DeepSeek-V3的模型架构(第2节)。随后,DeepSeek介绍基础设施,包括计算集群、训练框架、FP8训练支持、推理部署策略以及对未来硬件设计的建议。接着,DeepSeek描述预训练过程,包括训练数据的构建、超参数设置、长上下文扩展技术、相关评估以及一些讨论(第4节)。之后,DeepSeek讨论后训练工作,包括监督微调、强化学习微调、相应的评估和讨论(第5节)。最后,DeepSeek总结这项工作,讨论DeepSeek-V3的现有局限性,并提出未来研究的潜在方向(第6节)。

2. 架构

图2 DeepSeek-V3的基本架构

论文首先介绍DeepSeek-V3的基本架构,其在Transformer框架的基础上引入多头潜在注意力(MLA)和DeepSeekMoE,实现高效的训练和推理。然后,论文提出多token预测(MTP)训练目标,通过观察,这一目标能够提升模型在评估基准上的整体性能。对于未明确提及的其他细节,DeepSeek-V3遵循DeepSeek-V2的设置。

2.1 基本架构

DeepSeek-V3的基本架构仍基于Transformer框架。为实现高效的训练和推理,DeepSeek-V3还采用了多头潜在注意力(MLA)和DeepSeekMoE,这两种架构在DeepSeek-V2中已得到充分验证。与DeepSeek-V2不同的是,论文为DeepSeekMoE引入了无辅助损失的负载均衡策略,以减轻因优化负载平衡而导致的性能下降。图2展示了DeepSeek-V3的基本架构,在本节中,论文简要回顾MLA和DeepSeekMoE的细节。

2.1.1 多头潜在注意力

在注意力机制方面,DeepSeek-V3采用MLA架构。设dd表示嵌入维度,nhn_h表示注意力头的数量,dhd_h表示每个头的维度,htRdh_t\in\mathbb{R}^d表示给定注意力层中第tt个token的嵌入向量。MLA的核心是对注意力键值进行低秩联合压缩,以减少推理过程中的键值(KV)缓存。

由式(1)将给定注意力层中第tt个token的嵌入向量压缩为键值隐向量:

ctKV=WDKVht,(1)c_t^{KV}=W^{DKV}h_t,\tag{1}

其中,ctKVRdcc_t^{KV}\in\mathbb{R}^{d_c}表示压缩后的键值隐向量,dcd_cdhnh\ll d_hn_h)表示压缩后的键值隐向量维度,WDKVRdc×dW^{DKV}\in\mathbb{R}^{d_c\times d}表示下投影矩阵。

由式(2)将压缩后的键值隐向量重建为各个头中的键:

[kt,1C;kt,2C;...;kt,nhC]=ktC=WUKctKV,(2)[k_{t,1}^C;k_{t,2}^C;...;k_{t,n_h}^C]=k_t^C=W^{UK}c_t^{KV},\tag{2}

其中,WUKRdhnh×dcW^{UK}\in\mathbb{R}^{d_hn_h\times d_c}表示键的上投影矩阵,[kt,1C;kt,2C;...;kt,nhC][k_{t,1}^C;k_{t,2}^C;...;k_{t,n_h}^C]表示重建后的各个头中的键。

由式(3)从压缩后的键值隐向量中提取解耦键,并对解耦键计算旋转位置编码:

ktR=RoPE(WKRht),(3)k_t^R=\text{RoPE}(W^{KR}h_t),\tag{3}

其中,WKRRdhR×dW^{KR}\in\mathbb{R}^{d_h^R\times d}表示从压缩后的键值隐向量中提取解耦键的矩阵,RoPE()\text{RoPE}(\cdot)表示计算旋转位置编码。

由式(4)合并各个头的键和旋转位置编码得到最终各个头的键:

kt,i=[kt,iC;ktR],(4)k_{t,i}=[k_{t,i}^C;k_t^R],\tag{4}

其中,[;][\cdot;\cdot]表示连接操作。

由式(2)将压缩后的键值隐向量重建为各个头中的值:

[vt,1C;vt,2C;...;vt,nhC]=vtC=WUVctKV,(5)[v_{t,1}^C;v_{t,2}^C;...;v_{t,n_h}^C]=v_t^C=W^{UV}c_t^{KV},\tag{5}

其中,WUVRdhnh×dcW^{UV}\in\mathbb{R}^{d_hn_h\times d_c}表示值的上投影矩阵。

值得注意的是,对于MLA,在生成过程中仅需缓存键值隐向量ctKVc_t^{KV}和旋转位置编码ktRk_t^R,这使得在保持与标准多头注意力(MHA)相当性能的同时,显著减少了KV缓存

对于注意力查询,论文也进行了低秩压缩,这可以减少训练过程中的激活内存。
由式(6)将给定注意力层中第tt个token的嵌入向量压缩为查询隐向量:

ctQ=WDQht,(6)c_t^Q=W^{DQ}h_t,\tag{6}

其中,ctQRdcc_t^Q\in\mathbb{R}^{d_c'}表示压缩后的查询隐向量,dcd_c'dhnh\ll d_hn_h)表示压缩后的查询隐向量维度,WDQRdc×dW^{DQ}\in\mathbb{R}^{d_c'\times d}表示查询的下投影矩阵。

由式(7)将压缩后的查询隐向量重建为各个头中的查询:

[qt,1C;qt,2C;...;qt,nhC]=qtC=WUQctQ,(7)[q_{t,1}^C;q_{t,2}^C;...;q_{t,n_h}^C]=q_t^C=W^{UQ}c_t^Q,\tag{7}

其中,WUQRdhnh×dcW^{UQ}\in\mathbb{R}^{d_hn_h\times d_c'}表示查询的上投影矩阵,[qt,1C;qt,2C;...;qt,nhC][q_{t,1}^C;q_{t,2}^C;...;q_{t,n_h}^C]表示重建后的各个头中的查询。

由式(8)从压缩后的查询隐向量中提取各个头的解耦查询,并对各个头的解耦查询计算旋转位置编码:

[qt,1R;qt,2;...;qt,nhR]=qtR=RoPE(WQRctQ),(8)[q_{t,1}^R;q_{t,2};...;q_{t,n_h}^R]=q_t^R=\text{RoPE}(W^{QR}c_t^Q),\tag{8}

其中,WQRRdhRnh×dcW^{QR}\in\mathbb{R}^{d_h^Rn_h\times d_c'}表示从压缩后的查询隐向量中提取各个头的解耦查询的矩阵。

由式(9)合并各个头的查询和旋转位置编码得到最终各个头的查询:

qt,i=[qt,iC;qt,iR],(9)q_{t,i}=[q_{t,i}^C;q_{t,i}^R],\tag{9}

在注意力计算期间,论文使用上述压缩后的注意力各个头的查询qt,iq_{t,i}、键kj,ik_{j,i}和值vj,iCv_{j,i}^C来计算注意力各个头的输出:

ot,i=j=1tSoftmaxj(qt,iTkj,idh+dhR)vj,iC,(10)o_{t,i}=\sum_{j=1}^t{\text{Softmax}_j\left(\frac{q_{t,i}^Tk_{j,i}}{\sqrt{d_h+d_h^R}}\right)v_{j,i}^C},\tag{10}

最后,连接注意力各个头的输出,并通过投影得到整个多头注意力的输出:

ut=WO[ot,1;ot,2;...;ot,nh],(11)u_t=W^O[o_{t,1};o_{t,2};...;o_{t,n_h}],\tag{11}

其中,WORd×dhnhW^O\in\mathbb{R}^{d\times d_hn_h}表示输出投影矩阵。

2.1.2 无辅助损失负载均衡的DeepSeekMoE

DeepSeekMoE基本架构。对于前馈神经网络(FFN),DeepSeek-V3采用DeepSeekMoE架构。与传统的MoE架构(如GShard)相比,DeepSeekMoE使用更精细粒度的专家,并将部分专家设置为共享专家。设utu_t表示第tt个token的FFN的输入(即上一节注意力的输出),论文按式(12)计算FFN的输出hth_t'

ht=ut+i=1NsFFNt(s)(ut)+i=1Nrgi,tFFNi(r)(ut),(12)h_t'=u_t+\sum_{i=1}^{N_s}{\text{FFN}_t^{(s)}(u_t)}+\sum_{i=1}^{N_r}{g_{i,t}\text{FFN}_i^{(r)}(u_t)},\tag{12}

其中,NsN_sNrN_r分别表示共享专家和路由专家的数量,FFFi(s)()\text{FFF}_i^{(s)}(\cdot)FFNi(r)()\text{FFN}_i^{(r)}(\cdot)分别表示第ii个共享专家和第ii个路由专家的前馈神经网络,KrK_r表示激活的路由专家数量,gi,tg_{i,t}表示第ii个路由专家概率归一化后的门控值。

由式(13)对第ii个路由专家的原始门控值进行概率归一化:

gi,t=gi,tj=1Nrgj,t,(13)g_{i,t}=\frac{g_{i,t}'}{\sum_{j=1}^{N_r}{g_{j,t}'}},\tag{13}

其中,gi,tg_{i,t}'表示第ii个路由专家的原始门控值。

由式(14)计算第ii个路由专家的原始门控值:

gi,t={si,t,si,tTopk({sj,t1jNr},Kr),0,otherwise,(14)g_{i,t}'=\begin{cases} s_{i,t},&s_{i,t}\in\text{Topk}(\{s_{j,t}|1\le j\le N_r\},K_r),\\ 0,&\text{otherwise}, \end{cases}\tag{14}

其中,si,ts_{i,t}表示第ii个路由专家与token的亲合度,KrK_r表示激活的路由专家数量,Topk(,K)\text{Topk}(\cdot,K)表示与token最亲和的KK个路由专家组成的集合,即与token最亲和的KrK_r个路由专家,其原始门控值为与token的亲和度,其他路由专家,其原始门控值为0。

由式(15)计算第ii个路由专家与token的亲和度:

si,t=Sigmoid(utTei)(15)s_{i,t}=\text{Sigmoid}(u_t^Te_i)\tag{15}

其中,eie_i表示第ii个路由专家的聚簇向量。与DeepSeek-V2略有不同,DeepSeek-V3使用Sigmoid函数计算亲和度,并对所有选定的路由专家的亲和度进行归一化以生成门控值。

**无辅助损失的负载均衡(Auxiliary-Loss-Free Load Balancing)。**对于MoE模型,专家负载不均衡会导致路由崩溃,并降低专家并行场景下的计算效率。传统解决方案通常依赖引入辅助损失来避免负载不均衡。然而,过大的辅助损失会损害模型性能。为了在负载均衡和模型性能之间实现更好的权衡,论文引入无辅助损失的负载均衡策略以确保负载均衡。具体来说,论文为每个专家引入一个偏差项bib_i,并将其添加到相应的亲和度si,ts_{i,t}中,然后使用添加偏差项的亲和度进行排序,以确定前KK个路由专家:

gi,t={si,t,si,t+biTopk({sj,t+bj1jNr},Kr),0,otherwise,(16)g_{i,t}'=\begin{cases} s_{i,t},&s_{i,t}+b_i\in\text{Topk}(\{s_{j,t}+b_j|1\le j\le N_r\},K_r),\\ 0,&\text{otherwise}, \end{cases}\tag{16}

需要注意的是,偏差项仅用于路由,与FFN的输出相乘的门控值仍源自原始亲和度si,ts_{i,t}。在训练过程中,论文监控每个训练步骤中整个批次的专家负载。在每个步骤结束时,如果某些专家过载,则将其偏差项减小γ\gamma,如果某些专家负载不足,则将其偏差项增大γ\gamma,其中γ\gamma是一个被称为偏差更新速度的超参数。通过上述策略的动态调整,DeepSeek-V3在训练过程中能够保持专家负载均衡,并且比通过辅助损失优化负载均衡的模型性能更好。

序列粒度的辅助损失(Complementary Sequence-Wise Auxiliary Loss)。尽管DeepSeek-V3主要依靠无辅助损失策略来实现负载均衡,但为了防止单个序列内出现极端不均衡,论文还引入了序列粒度的平衡损失:

LBal=αi=1NrfiPi,(17)\mathcal{L}_{\text{Bal}}=\alpha\sum_{i=1}^{N_r}{f_iP_i},\tag{17}

其中,平衡因子α\alpha是一个超参数,在DeepSeek-V3中,其被赋予一个极小的值。

对于第ii个专家,其fif_i由式(18)计算:

fi=NrKrTt=1T1(si,tTopk({sj,t1jNr},Kr)),(18)f_i=\frac{N_r}{K_rT}\sum_{t=1}^{T}{\mathbb{1}\left(s_{i,t}\in\text{Topk}(\{s_{j,t}|1\le j\le N_r\},K_r)\right)},\tag{18}

其中,1()\mathbb{1}(\cdot)表示指示函数,TT表示序列中的token数量,式(18)中,对于第ii个专家,统计序列中和该专家较亲和的token(token和该专家的亲和度在所有专家中排在前KrK_r)个数,fif_i越大,则序列和第ii个专家越亲和。

由式(19)对token和第ii个专家的亲和度基于所有专家进行概率归一化:

si,t=si,tj=1Nrsj,t,(19)s_{i,t}'=\frac{s_{i,t}}{\sum_{j=1}^{N_r}{s_{j,t}}},\tag{19}

对于第ii个专家,其PiP_i由式(20)计算:

Pi=1Tt=1Tsi,t,(20)P_i=\frac{1}{T}\sum_{t=1}^{T}{s_{i,t}'},\tag{20}

求和序列中所有token和第ii个专家概率归一化后的亲和度。

通过引入序列粒度的平衡损失促使每个序列上的专家负载趋于均衡。

节点受限路由(Node-Limited Routing)。与DeepSeek-V2使用的设备受限路由类似,DeepSeek-V3也采用受限路由机制来限制训练期间的通信成本,不同之处是在节点粒度进行限制。简而言之,论文确保每个token最多被发送到MM个节点,这些节点是根据分布在每个节点上的亲合度最高的KrM\frac{K_r}{M}个专家的亲和度分数之和来选择的。在这种约束下,DeepSeek-V3的MoE训练框架几乎可以实现完全的计算-通信重叠。

**不丢弃token(No Token-Dropping)。**由于有效的负载均衡策略,DeepSeek-V3在整个训练过程中保持良好的负载均衡。因此,DeepSeek-V3在训练期间不会丢弃任何token。此外,论文还实施了特定的部署策略以确保推理期间的负载均衡(后续章节会介绍),所以DeepSeek-V3在推理期间也不会丢弃token。

2.2 多token预测

图3 多Token预测(Multi-Token Prediction,MTP)的实现

Gloeckle等人的启发,论文在训练DeepSeek-V3时引入多token预测(Multi-Token Prediction,MTP)目标,该目标将预测范围扩展到除下一个token以外的再往后多个token。一方面,MTP目标使训练信号更密集,可能提高数据效率。另一方面,MTP可能使模型能够为更好地预测未来token预先规划其表征。图3展示了DeepSeek-V3的MTP实现方式。与Gloeckle等人使用独立输出头并行预测DD个额外token不同,DeepSeek-V3顺序预测额外token,并在每个预测深度之间保持完整的因果链。以下介绍MTP实现的详细信息。
**MTP模块(MTP Modules)。**具体来说,论文在前序介绍的主模型基础上,串行引入DD个先后依赖的MTP模块来预测除下一个token以外的再往后DD个token,即对于序列中的第ii个输入token tit_i,由主模型预测第i+1i+1个token,由第kk个MTP模块预测第i+k+1i+k+1个token。第kk个MTP模块由一个共享嵌入层Emb()\text{Emb}(\cdot)(主模型和所有MTP模块共享,图3中绿色的Embedding Layer块)、一个共享输出头OutHead()\text{OutHead}(\cdot)(主模型和所有MTP模块共享,图3中绿色的Output Head块)、一个Transformer块TRMk()\text{TRM}_{k}(\cdot)(每个MTP模块独有)和一个投影矩阵MkRd×2dM_{k} \in \mathbb{R}^{d \times 2d}(每个MTP模块独有)组成。

对于序列中的第ii个输入token tit_{i},在第kk个预测深度(即第kk个MTP模块,由该模块预测第i+k+1i+k+1个token),论文首先执行由式(21)表示的操作,将第ii个token在第k1k - 1深度、即第k1k - 1个MTP模块的Transformer块输出的的表征hik1Rdh_{i}^{k - 1} \in \mathbb{R}^{d}与第(i+k)(i + k)个token(即由第kk个MTP模块预测的第(i+k+1)(i+k+1)个token的前一个token)的嵌入Emb(ti+k)Rd\text{Emb}(t_{i + k}) \in \mathbb{R}^{d}先分别进行RMS归一化,再拼接在一起,最后通过投影矩阵MkM_k进行线性投影:

hik=Mk[RMSNorm(hik1);RMSNorm(Emb(ti+k))],(21)h_i'^k=M_k[\text{RMSNorm}(h_i^{k-1});\text{RMSNorm}(\text{Emb}(t_{i+k}))],\tag{21}

其中,[;][\cdot;\cdot]表示连接。特别地,当k=1k = 1时,hik1h_{i}^{k - 1}表示主模型的Transformer块输出的表征。第kk个预测深度(即第kk个MTP模块)中由式(21)得到的输出hikh_{i}'^{k}进一步作为当前MTP模块的Transformer块的输入,得到当前MTP模块的Transformer块输出的表征hikh_{i}^{k}

h1:Tkk=TRMk(h1:Tkk),(22)h_{1:T-k}^k=\text{TRM}_k(h_{1:T-k}'^k),\tag{22}

其中,TT表示输入序列长度,i:j_{i:j}表示切片操作(包括左右边界),因此式(22)表示对于序列中从第1个token到第(Tk)(T-k)个token中的每一个token tit_i,由每一个MTP模块(例如,第kk个MTP模块,由该模块预测第i+k+1i+k+1个token)分别得到表征hikh_{i}^{k}

最后,以hikh_{i}^{k}作为输入,第kk个MTP模块的共享输出头计算第kk个额外预测token的概率分布Pi+1+kkRVP_{i + 1 + k}^{k} \in \mathbb{R}^{V},其中VV表示词汇表大小:

Pi+k+1k=OutHead(hik)(23)P_{i+k+1}^k=\text{OutHead}(h_i^k)\tag{23}

输出头OutHead()\text{OutHead}(\cdot)将表征hikh_{i}^{k}线性映射为logits,然后应用Softmax函数计算第kk个额外预测token的概率分布。

此外,每个MTP模块的输出头都与主模型共享。论文保持预测因果链(当前MTP模块的输入依赖上一个MTP模块的Transformer块的输出)的原则与EAGLE类似,但EAGLE的主要目标是推理时的推测解码(Speculative Decoding),而论文主要利用MTP来改进训练。

**MTP训练目标(MTP Training Objective)。**对于每个预测深度,论文计算一个交叉熵损失LMTPk\mathcal{L}_{\text{MTP}}^{k}

LMTPk=CrossEntropy(p2+k:T+1k,t2+k:T+1)=1Ti=2+kT+1logPik[ti],(24)\mathcal{L}_{\text{MTP}}^k=\text{CrossEntropy}(p_{2+k:T+1}^k,t_{2+k:T+1})=-\frac{1}{T}\sum_{i=2+k}^{T+1}{\log{P_i^k[t_i]}},\tag{24}

其中,TT表示输入序列长度,tit_{i}表示第ii个token的真实值,Pik[ti]P_{i}^{k}[t_{i}]表示由第kk个MTP模块给出的第ii个token的真实值tit_{i}的相应预测概率,式(24)表示对于第kk个MTP模块,其会给出序列中从第(2+k)(2+k)个token到第(T+1)(T+1)个token(原始序列尾部会被追加一个特殊token——“EOS”表示序列末尾)的真实值的相应预测概率,式(24)会对上述概率取对数并求和作为第kk个MTP模块的交叉熵损失。

最后,论文计算所有深度的MTP损失的平均值,并乘以一个加权因子λ\lambda,以获得整体的MTP损失LMTP\mathcal{L}_{\text{MTP}},将它作为DeepSeek-V3的额外训练目标:

LMTP=λDk=1DLMTPk.(25)\mathcal{L}_{\text{MTP}}=\frac{\lambda}{D}\sum_{k=1}^{D}{\mathcal{L}_{\text{MTP}}^k}.\tag{25}

**MTP在推理中的应用(MTP in Inference)。**论文的MTP策略主要用于提高主模型的性能,因此在推理时,可以直接丢弃MTP模块,主模型可以独立正常运行。此外,也可以在推理时引入这些MTP模块用于推测解码,以进一步提高生成速度。

3. 基础设施

在本节中,论文详细介绍DeepSeek-V3中用于训练和推理的基础设施,包括计算集群、训练框架、FP8训练支持、推理和部署策略以及对硬件设计的建议。

3.1 计算集群

DeepSeek-V3在一个配备了2048个NVIDIA H800 GPU的集群上进行训练。集群中的每个节点包含8个GPU,节点内的GPU通过NVLink和NVSwitch连接。不同节点之间使用InfiniBand(IB)进行通信。

3.2 训练框架

DeepSeek-V3的训练由HAI-LLM框架支持,这是一个由DeepSeek的工程师全新构建的高效轻量级训练框架。总体而言,DeepSeek-V3采用16路流水线并行(Pipeline Parallelism,PP)、跨8个节点的64路专家并行(Expert Parallelism,EP)和ZeRO-1数据并行(Data Parallelism,DP)。

为了便于DeepSeek-V3的高效训练,论文进行了细致的工程优化。首先,论文设计了DualPipe算法以实现高效的流水线并行。与现有PP方法相比,DualPipe的流水线气泡更少。更重要的是,它在正向和反向过程中重叠了计算和通信阶段,从而解决了跨节点专家并行带来的高通信开销问题。其次,论文开发了高效的跨节点全对全通信内核,以充分利用IB和NVLink带宽,并节省用于通信的流式多处理器(Streaming Multiprocessors,SMs)。最后,论文对训练期间的内存占用进行了细致优化,从而能够在不使用昂贵的张量并行(Tensor Parallelism,TP)的情况下训练DeepSeek-V3。

3.2.1 DualPipe和计算-通信重叠

对于DeepSeek-V3,跨节点专家并行带来的通信开销导致计算-通信比约为1:1,效率较低。为应对这一挑战,论文设计了一种创新的流水线并行算法DualPipe,它不仅通过有效重叠前向传播和反向传播中的计算-通信阶段来加速模型训练,还减少了流水线气泡。

图4 在一对独立的前向传播和反向传播的块内重叠计算和通信的策略

DualPipe的关键思想是在一对相互独立的前向传播和反向传播的块内重叠计算和通信。具体来说,论文将每个块分为四个组件:注意力(ATTN)、全对全分发(DISPATCH)、多层感知机(MLP)和全对全合并(COMBINE)。特别地,对于反向传播的块,注意力和多层感知机都参考ZeroBubble,进一步分为两部分:输入的反向传播梯度(即图4中的ATTN(B)和MLP(B))和权重的反向传播梯度(即图4中的ATTN(W)和MLP(B))。此外,DeepSeek-V3在通信上还有一个PP通信组件。

如图4所示,对于一对相互独立的前向传播和反向传播的块(图4示例中,黄色表示前向传播,绿色表示输入的反向传播,蓝色表示权重的反向传播),论文重新排列这些组件,并手动调整用于通信和计算的GPU SM比例。基于这种重叠策略,论文可以确保在执行过程中全对全通信(DISPATCH和COMBINE)和PP通信都能完全和计算重叠、被隐藏。

图5 完整的DualPipe调度示例

基于这种高效的重叠策略,完整的DualPipe调度如图5所示。它采用双向流水线调度,从流水线的两端同时输入微批次,并且大部分通信可以完全重叠。图5示例采用8个流水线并行,在两个方向上输入20个微批次,在一个方向上依次输入前10个批次(图5标注了该方向上的批次ID,从0到9),在另一个方向上依次输入后10个批次(图5未标注该方向上的批次ID),两个方向的批次对称。图5示例中由共享黑色边框包围的两个单元格(左黄右绿)即在一对相互独立的前向传播和反向传播的块内重叠计算和通信。

这种重叠还确保了随着模型进一步扩展,只要保持恒定的计算-通信比,仍然可以在节点间使用精细粒度的专家,同时实现近乎零的全对全通信开销。

表2 不同流水线并行方法在流水线气泡和内存使用方面的比较

此外,即使在通信负担不重的更一般场景中,DualPipe仍然具有效率优势。在表2中,论文总结了不同流水线并行方法在流水线气泡和内存使用方面的情况,其中,PPPP表示流水线并行的并行度,FF表示前向传播的块的执行时间,BB表示反向传播的块的执行时间,WW表示反向传播的块中权重部分的执行时间,F&BF\&B表示两个相互重叠的前向传播和反向传播的块的执行时间。如表所示,与ZB1P1F1B相比,DualPipe显著减少了流水线气泡,同时峰值激活内存仅增加了1PP\frac{1}{PP}倍。尽管DualPipe需要保留两份模型参数,但由于在训练期间使用较大的EP大小,因此这并不会显著增加内存消耗。与Chimera相比,DualPipe只要求流水线并行度和微批次数能被2整除,而不要求微批次数能被流水线并行度整除。此外,对于DualPipe,随着微批次数的增加,气泡和激活内存都不会增加。

3.2.2 跨节点全对全通信的高效实现

为了确保DualPipe有足够的计算性能,论文定制了高效的跨节点全对全通信内核(包括分发和合并),以节省用于通信的SM数量。内核的实现与MoE门控算法和集群网络拓扑协同设计。具体来说,在DeepSeek-V3的集群中,节点间的GPU通过IB互连,节点内的GPU通过NVLink通信。NVLink提供160GB/s的带宽,大约是IB(50 GB/s)的3.2倍。为了有效利用IB和NVLink的不同带宽,论文将每个token最多分配到4个节点,从而减少IB的流量。对于每个token,在做出路由决策后,它将首先通过IB传输到目标节点上具有相同节点内索引的GPU。一旦到达目标节点,再通过NVLink立即转发到承载目标专家的特定GPU,而不会被随后到达的token阻塞。通过这种方式,IB和NVLink的通信完全重叠,每个token平均在每个节点可以高效选择3.2个专家,且不会产生NVLink的额外开销。这意味着,尽管DeepSeek-V3在实际中只选择8个路由专家,但在保持相同通信成本的情况下,它最多可以将这个数字扩展到13个专家(4个节点×3.2个专家/节点)。总体而言,在这样的通信策略下,仅需20个SM就足以充分利用IB和NVLink的带宽。

详细来说,论文采用了Warp Specialization技术,并将20个SM划分为10个通信通道。在分发过程中,(1)IB发送、(2)IB到NVLink的转发和(3)NVLink接收分别由各自的线程束(warp)处理。分配给每个通信任务的线程束数量会根据所有SM上的负载动态调整。同样,在合并过程中,(1)NVLink发送、(2)NVLink到IB的转发和累加,以及(3)IB接收和累加也由各自的且动态调整的线程束处理。此外,分发和合并内核均与计算流重叠,因此论文也考虑了它们对其他的SM的计算内核的影响。具体而言,论文采用了定制的PTX(Parallel Thread Execution,PTX是NVIDIA为其GPU设计的一种中间指令集架构,其位于高层次GPU编程语言和低层次机器码之间)指令,并自动调整通信块大小,这显著减少了L2缓存的使用以及对其他的SM的影响。

3.2.3 最小开销下的极低内存占用

为了减少训练期间的内存占用,论文采用了以下技术:

  • RMS归一化和MLA上投影的重计算:在反向传播过程中,论文重新计算RMS归一化和MLA上投影,从而无需持久存储它们输出的激活。通过少量额外的计算开销,该策略显著降低了存储激活所需的内存。
  • CPU中的指数移动平均:在训练期间,我们保存模型参数的指数移动平均(EMA,Exponential Moving Average),以便在学习率衰减后对模型性能进行早期估计。EMA参数存储在CPU内存中,并在每个训练步骤后异步更新。这种方法使得能够在不产生额外内存或时间开销的情况下维护EMA参数。
  • 多token预测的共享嵌入和输出头:借助DualPipe策略,论文将模型的浅层(包括嵌入层)和深层(包括输出头)部署在相同的流水线并行等级上。这种安排使得MTP模块和主模型之间可以在物理上共享嵌入和输出头的参数和梯度。这种物理共享机制进一步提高了内存效率。

3.3 FP8精度的训练

3.3.1 混合精度框架

基于低精度训练中已广泛采用的技术,论文提出了一种用于FP8训练的混合精度框架。在这个框架中,大多数计算密集型操作采用FP8精度,而一些关键操作则保持原始数据格式,以平衡训练效率和数值稳定性。整体框架如图6所示。

图6 混合精度框架,其中仅列出和线性投影相关的矩阵相乘操作

首先,为了加速模型训练,大多数核心计算,即矩阵相乘(GEMM,General Matrix Multiplication)操作,采用FP8精度。这些GEMM操作接收FP8精度的张量作为输入,并生成BF16或FP32精度的输出。如图6所示,与线性投影相关的三个GEMM操作,即前向传播(Fprop)、激活(某层的输出,也是相应下一层的输入)的反向传播(Dgrad)和权重的反向传递(Wgrad),均采用FP8精度执行。这种设计使得计算速度在理论上比原始的BF16精度提高了一倍。此外,采用FP8精度的权重反向传播(Wgrad)的GEMM操作允许以FP8精度存储激活,以便在反向传播中使用,这也显著降低了存储激活的内存消耗。

尽管FP8精度具有效率优势,但某些算子由于对低精度计算敏感,仍然需要更高的精度。此外,一些低成本算子也可以使用更高的精度,其对整体训练成本的影响可忽略不计。因此,经过仔细研究,论文对以下组件保持原始精度(例如BF16或FP32):嵌入模块、输出头、MoE门控模块、归一化算子和注意力算子。在这些组件保持高精度确保了DeepSeek-V3训练的稳定性。为了进一步保证数值稳定性,论文以更高的精度存储主权重、权重梯度和优化器状态。虽然在这些组件保持高精度会带来一些内存开销,但通过流水线并行进行高效分片,其影响可以降至最低。

3.3.2 通过量化和乘法提高精度

基于上述混合精度框架,论文还引入了几种策略来提高低精度训练的准确性。

图7 细粒度量化和提升累加精度

细粒度量化(Fine-Grained Quantization):在低精度训练框架中,由于FP8精度的可表示范围有限(受其减少的指数位限制),所以上溢和下溢是常见的挑战。一种标准的解决方法是,将输入张量的绝对值的最大值缩放到FP8精度的可表示值的最大值,使输入分布与FP8精度的可表示范围对齐。这种方法会使得低精度训练对激活异常值高度敏感,进而严重降低量化精度。为了解决这个问题,论文提出了一种细粒度量化方法,在更细的粒度上应用缩放。如图7(a)所示,(1)对于激活,论文按照1×1281×128的tile(即每个token的每128个通道)对元素进行分组和缩放;(2)对于权重,论文按照128×128128×128的块(即每128个输入通道叉乘每128个输出通道)对元素进行分组和缩放。这种方法确保量化过程能够根据较小的元素组调整缩放比例,从而更好地适应异常值。

上述细粒度量化方法的一个关键修改是在GEMM操作的内维度(内维度决定了矩阵乘法过程中元素乘法和累加的次数,在内维度上划分细粒度量化的分组)上引入各分组的缩放因子。标准的FP8精度的GEMM操作并不直接支持此功能,但结合我们精确的FP32累加策略,可以高效地实现。

值得注意的是,论文中的细粒度量化策略与微缩放(Microscaling)数据格式的思想高度一致,而NVIDIA下一代GPU(Blackwell系列)的张量内核已宣布支持具有更细量化粒度的微缩放格式。

提升累加精度(Increasing Accumulation Precision):低精度的GEMM操作经常受到下溢问题的困扰,其准确性在很大程度上依赖于采用FP32精度的高精度累加。然而,根据DeepSeek的观察,NVIDIA H800 GPU上FP8精度的GEMM操作的累加精度仅保留约14位,明显低于FP32精度的累加精度。当内维度KK较大(这是大模型训练中增加批次大小和模型宽度时的典型场景)时,这个问题会更加突出。以两个内维度K=4096K = 4096的随机矩阵的GEMM操作为例,通过测试,张量内容中受限的累加精度导致最大接近2%的相对误差。尽管存在上述这些问题,受限的累加精度在一些FP8框架中仍然是默认选项,这严重限制了训练精度。

为了解决这个问题,DeepSeek通过依赖CUDA内核提升累加精度。该过程如图7(b)所示。具体来说,在张量内核上执行矩阵相乘累加(MMA,Matrix Multiply-Accumulate)操作时,中间结果使用受限的位宽进行累加。一旦累加的间隔达到NCN_{C},当前结果将被复制到CUDA内核的FP32寄存器中,在那里采用F32精度的累加。如前所述,细粒度量化在GEMM操作的内维度KK上引入各分组的缩放因子。这些缩放因子可以在CUDA内核上以极小的额外计算成本进行高效乘法运算,作为反量化过程。

上述提升累加精度的操作会降低单个线程束组的线程束组粒度矩阵相乘累加(WGMMA,Warpgroup-level Matrix Multiply-Accumulate)指令的发出频率。但在H800架构中,通常两个WGMMA可以同时执行:当一个线程束组执行上述提升累加精度的操作时,另一个线程束组能够执行MMA操作。这种设计使两个操作能够重叠,保持张量内核的高利用率。根据论文的实验,设置NC=128N_{C}=128个元素(相当于4个WGMMA),是能够显著提高精度且不会引入大量开销的最小累加间隔。

尾数优先于指数(Mantissa over Exponents):FP8精度有2种格式,分别是E4M3(即4位指数和3位尾数)和E5M2(即5位指数和2位尾数)。与先前工作采用的混合的FP8精度的格式(在前向传播中使用E4M3格式,在激活的反向传播和权重的反向传播中使用E5M2格式)不同,论文在所有张量上采用E4M3格式以获得更高的精度。论文将这种方法的可行性归因于所采用的细粒度量化策略,即按tile和块进行缩放。通过对较小的元素分组进行操作,可以有效地在这些分组元素之间共享指数位,从而减轻受限可表示范围的影响。

在线量化(Online Quantization):在张量粒度的量化框架中应用的延迟量化,可以通过维护先前迭代中的绝对值的最大值的历史来推断其当前值。为了确保准确的缩放并简化框架,论文为每个1×1281×128的激活tile或128×128128×128的权重块在线计算绝对值的最大值。基于该值,进而推导出缩放因子,然后将激活或权重在线量化为FP8精度。

3.3.3 低精度存储和通信

结合上述FP8精度的训练框架,论文通过将缓存的激活和优化器状态压缩为更低精度的格式,进一步降低内存消耗和通信开销。

低精度的优化器状态:论文采用BF16精度替代FP32精度来跟踪AdamW优化器中的一阶和二阶矩,而没有明显的性能下降。但主权重和梯度仍采用FP32精度,以确保整个训练过程中的数值稳定性。

低精度的激活:如图6所示,权重的反向传播采用FP8精度执行。为减少内存消耗,相应也会选择以FP8精度缓存激活,用于线性算子的反向传播。不过,对于一些操作,为实现低成本下的高精度训练,也进行了特殊考虑:

  1. 注意力算子之后线性层的输入:这些激活也用于注意力算子的反向传播,因此对精度很敏感。论文专门为这些激活采用定制的E5M6格式。此外,在反向传播中,这些激活将从1×1281\times128的量化tile转换为128×1128\times1的tile。为避免引入额外的量化误差,所有缩放因子均进行舍入缩放,例如2的整数次幂。
  2. MoE中SwiGLU算子的输入:为进一步降低内存成本,论文缓存SwiGLU算子的输入,并在反向传播中重新计算其输出。这些激活也使用前述的细粒度量化方法存储为FP8精度,在内存效率和计算精度之间取得平衡。

低精度通信:通信带宽是MoE模型训练的关键瓶颈。为缓解这一瓶颈,论文在MoE中的上投影之前将激活量化为 FP8精度,然后再应用分发组件,这与MoE上投影中的FP8精度的前向传播兼容。与注意力算子之后线性层的输入类似,这种激活的缩放因子也为2的整数次幂。在MoE下投影之前的激活梯度也采用类似策略。对于前向和反向合并(COMBINE)组件,论文将它们保留为BF16精度,从而在训练流程的关键部分保持训练精度。

3.4 推理和部署

论文在H800集群上部署DeepSeek-V3,集群内每个节点的GPU通过NVLink互连,跨集群的GPU通过IB互连。为同时确保在线服务的高可用和高吞吐量,我们采用以下将预填充(Prefilling)和解码(Decoding)分开的部署策略。

3.4.1 预填充

预填充阶段的最小部署单元由4个节点和32个GPU组成。注意力部分采用4路张量并行(TP4)和序列并行(SP),结合8路数据并行(DP8)。其较小的TP大小限制了TP通信的开销。对于MoE部分,论文采用32路专家并行(EP32),确保每个专家处理足够大的批次大小,从而提高计算效率。对于MoE的全对全通信,论文使用与训练相同的方法:首先通过IB在节点间传输token,然后通过NVLink在节点内的GPU之间转发。特别地,对于浅层的稠密MLP,论文使用1路张量并行以节省TP通信。

为了在MoE的不同专家之间实现负载均衡,论文需要确保每个GPU处理的token数量大致相同。为此,论文引入了冗余专家的部署策略,即复制高负载专家并进行冗余部署。高负载专家根据在线部署期间收集的统计信息进行检测,并定期(例如每10分钟)进行调整。确定冗余专家集后,论文根据观察到的负载在节点内的GPU之间重新排列专家,力求在不增加跨节点全对全通信开销的情况下尽可能平衡GPU之间的负载。对于DeepSeek-V3的部署,论文为预填充阶段设置了32个冗余专家。对于每个GPU,除了原本承载的8个专家外,还将承载一个额外的冗余专家。

此外,在预填充阶段,为提高吞吐量并隐藏全对全和TP通信的开销,论文同时处理两个计算工作量相似的微批次,将一个微批次的注意力和MoE操作与另一个微批次的分发和合并操作重叠。

最后,DeepSeek正在探索专家的动态冗余策略,即每个GPU承载更多专家(例如16个专家),但在每个推理步骤中仅激活9个。在每层的全对全操作开始之前,即时计算全局最优路由方案。鉴于预填充阶段涉及大量计算,计算此路由方案的开销几乎可以忽略不计。

3.4.2 解码

在解码过程中,论文将共享专家视为路由专家。从这个角度来看,每个token在路由时将选择9个专家,其中共享专家被视为始终会被选择的高负载专家。解码阶段的最小部署单元由40个节点和320个GPU组成。注意力部分采用4路张量并行(TP4)和序列并行(SP),结合80路数据并行(DP80),而MoE部分采用320路专家并行(EP320)。对于MoE部分,每个GPU仅承载一个专家,64个GPU负责承载冗余专家和共享专家。分发(DISPATCH)和合并(COMBINE)部分的全对全通信通过IB直接点对点传输实现低延迟。此外,论文利用IBGDA技术进一步最小化延迟并提高通信效率。

与预填充类似,论文根据在线服务的专家负载统计信息,在特定间隔内定期确定冗余专家的集合。不过,由于每个GPU仅承载一个专家,所以无需重新排列专家。DeepSeek也在探索解码阶段的动态冗余策略,但这需要更仔细地优化计算全局最优路由方案的算法,并与分发内核融合以降低开销。

此外,为提高吞吐量并隐藏全对全通信的开销,DeepSeek也在探索在解码阶段同时处理两个计算工作量相似的微批次。与预填充不同,解码阶段注意力计算消耗的时间占比较大。因此,论文将一个微批次的注意力与另一个微批次的分发+MoE+合并操作重叠。在解码阶段,每个专家的批次大小相对较小(通常在256个token以内),瓶颈在于内存访问而非计算。由于MoE部分仅需加载一个专家的参数,内存访问开销极小,因此使用较少的SM对整体性能影响不大。因此,为避免影响注意力部分的计算速度,可以仅为分发+MoE+合并分配一小部分SM。

3.5 硬件设计建议

论文在本节基于前述的各项基础设施优化向AI硬件供应商提出以下芯片设计建议。

3.5.1 通信硬件

在DeepSeek-V3中,论文实现了计算和通信的重叠,以在计算过程中隐藏通信延迟。与串行计算和通信相比,这显著降低了对通信带宽的依赖。然而,当前的通信实现依赖昂贵的SM,这将限制计算吞吐量。此外,使用SM进行通信会导致显著的低效率,因为张量内核会被完全闲置。

目前,SM主要在全对全通信中执行以下任务:

  • 转发数据(Forwarding data),在IB和NVLink之间转发数据,同时聚合从单个GPU发往同一节点内多个GPU的IB流量。
  • 传输数据(Transporting data),在RDMA缓冲区和输入/输出缓冲区之间传输数据。
  • 执行归约操作(Executing reduce operation),执行全对全合并的归约操作。
  • 管理细粒度的内存布局(Managing fine-graind memory layout),在通过IB和NVLink将分块数据传输到多个专家的过程中,管理细粒度的内存布局。

论文期望未来的供应商开发能够将这些通信任务从宝贵的计算单元SM剥离的硬件,作为GPU协处理器或类似NVIDIA SHARP的网络协处理器。此外,为降低应用程序编程的复杂性,论文希望这种硬件从计算单元的角度统一IB(横向扩展)和NVLink(纵向扩展)网络。有了这个统一的接口,计算单元可以基于简单原语提交通信请求,便捷地完成在整个IB-NVLink统一域内的读取、写入、广播和归约等操作。

3.5.2 计算硬件

提高张量内核中FP8 GEMM的累加精度:在当前NVIDIA Hopper架构的张量内核实现中,FP8 GEMM采用定点累加方式,在加法运算前,根据最大指数通过右移来对齐尾数乘积。论文的实验表明,它在符号填充右移后仅使用每个尾数乘积的最高14位,并截断超出该范围的位。然而,为了从32次FP8精度的乘法的累加中获得精确的FP32精度的结果,至少需要34位精度。因此,论文建议未来的芯片设计增加张量内核中的累加精度,以支持全精度累加,或者根据训练和推理算法的精度要求选择合适的累加位宽。这种方法可确保误差保持在可接受范围内,同时保持计算效率。

支持按tile和块量化:当前的GPU仅支持张量级量化,缺乏对像论文提出的细粒度量化的原生支持。在当前的实现中,当达到NCN_{C}间隔时,部分结果将从张量内核复制到CUDA内核,乘以缩放因子,并添加到CUDA内核的FP32寄存器中。尽管结合FP32累加策略,反量化开销显著降低,但张量内核和CUDA内核之间频繁的数据移动仍然限制了计算效率。因此,论文建议未来的芯片通过使张量内核能够接收缩放因子并实现带组缩放的MMA来支持细粒度量化。这样,部分和的累加及反量化可以直接在张量内核内完成,直到产生最终结果,避免频繁的数据移动。

支持在线量化:尽管在线量化在论文的研究中显示出有效性,但当前的实现难以有效支持它。在现有过程中,需要从HBM读取128个BF16精度的激活值(前一次计算的输出)进行量化,量化后的FP8精度的值再写回HBM,然后在MMA中再次读取。为解决这种低效率问题,论文建议未来的芯片将FP8转换和TMA访问集成到单个操作中,以便在激活从全局内存传输到共享内存的过程中完成量化,避免频繁的内存读写。论文还建议支持线程束级的转换指令以提高速度,这进一步有助于更好地融合层归一化和FP8转换。或者,可以采用近内存计算方法,将计算逻辑放置在HBM附近。在这种情况下,BF16精度的元素在从HBM读取到GPU时可以直接转换为FP8精度,从而将片外内存访问减少约50%。

支持转置GEMM操作:当前架构使矩阵转置与GEMM操作的融合变得繁琐。在DeepSeek-V3的工作流程中,前向传播中的激活被量化为FP8精度的1×1281\times128 的tile并存储。在反向传播中,需要读出矩阵、反量化、转置、重新量化为128×1128\times1 的tile并存储在HBM中。为减少内存操作,论文建议未来的芯片在MMA操作之前,对于训练和推理所需的精度,能够直接从共享内存进行矩阵的转置读取。结合FP8转换和TMA访问的融合,这一增强将显著简化量化工作流程。

4. 预训练

4.1 数据构建

与DeepSeek-V2相比,DeepSeek-V3优化了预训练语料库,提高了数学和编程样本的比例,同时将多语言覆盖范围扩展到英语和中文之外。它还改进了数据处理流程,在保持语料库多样性的同时尽量减少冗余。数据处理方面采用文档打包方法,来保证数据完整性,而并未采用跨样本注意力掩码。DeepSeek-V3的训练语料库经分词器处理后,包含14.8T个高质量且多样的token。

在DeepSeekCoder-V2的训练过程中观察到:Fill-in-Middle(FIM)策略在根据上下文线索准确预测中间文本的同时,并没有削弱下一个token的预测能力。因此,DeepSeek-V3的预训练中也采用了FIM策略,使用Prefix-Suffix-Middle(PSM)框架来构建数据,格式如下:

<fim_begin>fpre<fim_hole>fsuf<fim_end>fmiddle<eos_token><|\text{fim\_begin}|>f_{\text{pre}}<|\text{fim\_hole}|>f_{\text{suf}}<|\text{fim\_end}|> f_{\text{middle}}<|\text{eos\_token}|>

这种结构应用在文档层预打包过程中。FIM策略的应用比例为0.1。

DeepSeek-V3使用128K词表的Byte-level BPE(字节对编码)技术,并调整了预分词器和训练数据以提升多语言压缩效率。新的预分词器引入了组合标点符号和换行符的token,使文本的切分更符合语言结构和语义理解,有助于模型更好地捕捉文本中的逻辑关系和结构信息。然而,当模型处理没有换行符的多行提示,尤其是少样本评估提示时,这个技巧可能会引入token边界偏差。为解决此问题,DeepSeek-V3在训练过程中会随机拆分一定比例的这种组合token,使模型接触到更广泛的特殊情况,从而减轻这种偏差。

4.2 超参数

模型超参数

DeepSeek-V3 Transformer层数设置为61,隐藏层维度设置为7168。所有可学习参数均按照标准差为0.006进行随机初始化。MLA的注意力头数nhn_{h}设置为128,每个头的维度dhd_{h}设置为128。KV压缩维度dcd_{c}设置为512,查询压缩维度dcd_{c}'设置为1536。对于解耦的查询和键,每个头的维度dhRd_{h}^{R}设置为64。除了前三层,DeepSeek-V3将其他层的前馈神经网络替换为MoE。每个MoE层由1个共享专家和256个路由专家组成,每个专家的中间隐藏层维度为2048。在路由专家中,每个token会激活8个专家,并且每个token最多会被发送到4个节点。多token预测深度DD设置为1,即除了预测下一个token外,还会预测下下一个token。与DeepSeek-V2一样,DeepSeek-V3在压缩的隐向量后引入了额外的RMS归一化层。在这种配置下,DeepSeek-V3共有671B个参数,每个token激活37B个参数。

训练超参数

DeepSeek-V3采用AdamW优化器,超参数设置为β1=0.9\beta_{1}=0.9β2=0.95\beta_{2}=0.95,权重衰减为0.1。预训练最大序列长度设置为4K,token规模为14.8T。学习率调度方面,最初的2K步将学习率从0线性增加到2.2×1042.2×10^{-4};之后以2.2×1042.2×10^{-4}的恒定学习率训练10T个token;随后的4.3T个token的训练,按照余弦衰减曲线逐渐将学习率衰减到2.2×1052.2×10^{-5};在训练最后500B个token时,前333B个token使用2.2×1052.2×10^{-5}的恒定学习率,剩余的167B个token切换到7.3×1067.3×10^{-6}的恒定学习率。梯度裁剪范数设置为1.0。DeepSeek-V3采用动态调整批量大小策略,前469B个token的训练将批量大小从3072逐步增加到15360,剩余的训练过程保持批量大小为15360。DeepSeek-V3利用流水线并行技术,将模型按层部署在不同的GPU上。对于每一层,专家模型均匀地部署在8个节点、64个GPU上。节点受限路由保证每个token最多会被发送到4个节点(即M=4M = 4)。采用无辅助损失的负载均衡,前14.3T个token的训练偏差更新速度γ\gamma设置为0.001,剩余的500B个token的训练偏差更新速度γ\gamma设置为0.0。为避免任何单个序列内出现极端不平衡,序列粒度的辅助损失的平衡因子α\alpha设置为0.0001。MTP损失权重λ\lambda在前10T个token的训练中设置为0.3,在剩余的4.8T个token的训练中设置为0.1。

4.3 长上下文扩展

与DeepSeek-V2类似,DeepSeek-V3也具备长上下文能力。DeepSeek-V3在预训练阶段后,应用YaRN进行上下文扩展,经过两个额外的训练阶段后(每个阶段1000步),逐步将上下文窗口从4K扩展到32K再扩展到128K。同DeepSeek-V2一样,YaRN只应用在解耦键ktRk_{t}^{R},两阶段采用相同的超参数,其中s=40s = 40α=1\alpha = 1β=32\beta = 32t=0.1lns+1\sqrt{t}=0.1 \ln s + 1。第一阶段,序列长度设置为32K,批量大小为1920。第二阶段,序列长度增加到128K,批量大小减少到480。两个阶段的学习率都设置为7.3×1067.3×10^{-6},与预训练阶段的最终学习率一致。

图8 Needle In A Haystack(简称 NIAH)测试的评估结果

通过这两个阶段的扩展训练,DeepSeek-V3能够处理长度高达128K的输入,同时保持强大的性能。图8表明,经过监督微调后,DeepSeek-V3在NIAH测试中取得了显著的成绩,证明了其在长达128K的上下文窗口长度内具有一致的稳健性。

4.4 评估

4.4.1 评估基准

DeepSeek-V3的基线模型是在以英语和中文为主的多语言语料库上进行预训练的。因此,性能评估采用一系列的英语和中文基准以及一个多语言基准,并基于集成在HAI-LLM(这是一个由DeepSeek的工程师全新构建的高效轻量级训练框架)中的内部评估框架进行。所考虑的基准分类如下,其中带下划线的是中文的,带下划线且标红的是多语言的:

  • 多学科多选题数据集:包括MMLU、MMLU-Redux、MMLU-Pro、MMMLU、C-Eval和CMMLU。
  • 语言理解和推理数据集:包括HellaSwag、PIQA、ARC和BigBench Hard(BBH)。
  • 闭卷问答数据集:包括TriviaQA和NaturalQuestions。
  • **阅读理解数据集:**包括RACE、DROP、C3和CMRC。
  • **指代消解数据集:**包括CLUEWSC和WinoGrande。
  • 语言建模数据集:包括Pile。
  • **中文理解和文化相关数据集:**包括CCPM。
  • 数学数据集:包括GSM8K、MATH、MGSM和CMath。
  • 编码数据集:包括HumanEval、LiveCodeBench-Base(0801-1101)、MBPP和CRUXEval。
  • 标准化考试数据集:包括AGIEval。需要注意的是,AGIEval同时包含英语和中文子集。

遵循之前的工作,对于包括HellaSwag、PIQA、WinoGrande、RACE-Middle、RACE-High、MMLU、MMLU-Redux、MMLU-Pro、MMMLU、ARC-Easy、ARC-Challenge、C-Eval、CMMLU、C3和CCPM在内的数据集,论文采用基于困惑度的评估;对于TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、MGSM、HumanEval、MBPP、LiveCodeBench-Base、CRUXEval、BBH、AGIEval、CLUEWSC、CMRC和CMath,论文采用基于生成的评估。此外,对于Pile-test,论文采用基于语言建模的评估,并使用Bits-Per-Byte(BPB)作为指标,以确保在使用不同分词器的模型之间进行公平比较。

4.4.2 评估结果

表3 DeepSeek-V3基线模型与其他开源模型的评估结果的比较

表3将DeepSeek-V3基线模型与其他最先进的开源模型进行了比较,包括DeepSeek-V2-Base、Qwen2.5 72B Base和LLaMA-3.1 405B Base。论文确保在相同的评估设置下,使用内部评估框架对所有模型进行评估。总体而言,DeepSeek-V3-Base全面超越了DeepSeek-V2-Base和Qwen2.5 72B Base,并在大多数基准测试中超过了LLaMA-3.1 405B Base,基本上成为了最强的开源模型。

具体地,DeepSeek-V3-Base与其他开源模型分别进行比较:(1)与DeepSeek-V2-Base相比,由于模型架构的改进、模型规模和训练token数量的增加以及数据质量的提升,DeepSeek-V3-Base性能得到了显著提升。(2)与目前最先进的中文开源模型Qwen2.5 72B Base相比,DeepSeek-V3-Base的激活参数仅为其一半,但仍展现出显著的优势,尤其是在英语、多语言、编码和数学基准测试中。在中文基准测试中,除了中文多学科多选题任务CMMLU外,DeepSeek-V3-Base的表现也优于Qwen2.5 72B。(3)与拥有11倍激活参数的最大开源模型LLaMA-3.1 405B Base相比,DeepSeek-V3-Base在多语言、编码和数学基准测试中也表现得更好。在英语和中文语言基准测试中,DeepSeek-V3-Base表现出具有竞争力或更优的性能,在BBH、MMLU、DROP、C-Eval、CMMLU和CCPM等测试中的表现尤为突出。

由于采用了高效的架构和全面的工程优化,DeepSeek-V3实现了极高的训练效率。在这样的训练框架和基础设施下,使用1T个token训练DeepSeek-V3仅需18万个H800 GPU小时,这比训练72B或405B参数的稠密模型成本低得多。

4.5 讨论

4.5.1 多token预测的消融研究

表4展示了MTP策略的消融实验结果,使用两个不同规模的基线模型验证MTP策略。小规模场景下,MoE模型的参数规模为15.7B,使用1.33T个token进行训练。在大规模场景下,MoE模型的参数规模为228.7B,使用540B个token进行训练。在此基础上,添加一个深度为1的MTP模块,训练两个采用MTP策略的模型进行比较。在推理过程中,直接舍弃MTP模块,这样相比较的模型在推理成本上完全相同。从表中可以看出,MTP策略在大多数评估基准测试上,都提升了模型性能。

表4 MTP策略的消融实验结果,MTP策略在大多数评估基准上持续提升了模型性能

4.5.2 无辅助损失负载均衡策略的消融研究

表5展示了无辅助损失负载均衡策略的消融实验结果,使用两个不同规模的基线模型验证该策略。小规模场景下,MoE模型的参数规模为15.7B,使用1.33T个token进行训练。在大规模场景下,MoE模型的参数规模为228.7B,使用578B个token进行训练。这两个基线模型均只使用辅助损失来实现负载平衡,且门控函数的计算逻辑为取前KK个亲合度、归一化后再输入Sigmoid函数得到门控值。控制辅助损失相关的超参数与DeepSeek-V2-Lite和DeepSeek-V2相同。在这两个基线模型的基础上,去除所有辅助损失并引入无辅助损失负载均衡策略进行比较。从表中可以看出,无辅助损失负载均衡策略在大多数评估基准上均能取得更好的模型性能。

表5 无辅助损失负载均衡策略的消融实验结果,无辅助损失负载均衡策略在大多数评估基准上均能使模型取得更优的性能

4.5.3 按批次负载均衡与按序列负载均衡

无辅助损失负载均衡和按序列辅助损失两类方法之间的关键区别在于平衡范围:按批次与按序列。与按序列辅助损失相比,按批次负载均衡具备更灵活的约束,它不对每个序列强制执行域内平衡。这种灵活性使专家们能够更出色地在不同领域实现专业化。为了验证这一点,论文分析了两个模型(即一个16B参数的辅助损失模型和一个16B参数的无辅助损失模型)在Pile测试集3个不同领域的专家负载情况。如图9所示,与预期一致,无辅助损失模型表现出更好的专家专业化模式。

为了进一步研究灵活性与模型性能优势之间的相关性,论文还对按批次辅助损失方法进行了验证,该方法鼓励在每个训练批次而非在每个序列上实现负载均衡。实验结果表明,当实现相近水平的按批次负载平衡时,按批次辅助损失也能实现与无辅助损失方法相似的模型性能。具体来说,1B MoE模型的验证损失分别为:2.258(使用按序列辅助损失方法)、2.253(使用无辅助损失方法)和2.253(使用按批次辅助损失方法)。3B MoE模型也得到了类似的结果,使用按序列辅助损失的模型验证损失为2.085,而使用无辅助损失方法或按批次辅助损失的模型验证损失均为2.080。

此外,尽管按批次负载均衡方法表现出一致的性能优势,但它们在效率方面也面临两个潜在挑战:(1)某些序列或小批次内的负载不平衡;(2)推理期间因领域转移导致的负载不平衡。第一个挑战可以通过使用大规模专家并行和数据并行的训练框架自然解决,该框架保证了每个微批次的大小。对于第二个挑战,DeepSeek-V3设计并实现了一个带有冗余专家部署的高效推理框架(如3.4节所述)来克服它。

图9 在Pile测试集3个不同领域上,无辅助损失模型与辅助损失模型的专家负载情况

5. 后训练

5.1 监督微调

DeepSeek-V3精心构建了指令微调数据集,其中包含涵盖多个领域的150万个实例,每个领域根据其特定需求采用不同的数据构建方法。

推理数据

对于与推理相关的数据集(包括数学、编码竞赛问题和逻辑谜题等),DeepSeek-V3采用内部的DeepSeek-R1 模型生成这些数据。虽然R1模型生成的数据准确性很高,但也存在一些问题,比如过度思考、格式不佳、长度过长等。R1生成的推理数据具有高准确性,常规生成的推理数据具有简洁清晰性,论文的目标是在两者之间找到平衡,以获得高质量的监督微调(SFT)数据。

DeepSeek-V3针对这些特定领域(如编码、数学或通用推理)开发了一个专家模型,作为最终模型的数据生成器,该模型采用监督微调(SFT)和强化学习(RL)相结合的训练流程。

在监督微调(SFT)阶段,为每个实例生成两类SFT样本:一是<问题,原始响应>,用于模型学习基础的问题模式。二是<系统提示,问题,R1响应>。系统提示被精心设计,引导模型进行深入反思和自我验证,提升回复的质量和可靠性。

在强化学习(RL)阶段,即使无明确系统提示时,模型也采用高温采样探索不同的回复方式,根据之前的经验和奖励反馈调整回复策略,生成融合R1和原始数据模式的回复。经过数百步的强化学习迭代后,中间阶段的强化学习模型学会了更好地将R1模式融入回复中,从而战略性地提升整体性能。

在完成强化学习(RL)阶段后,基于专家模型生成数据,然后通过拒绝采样筛选出高质量的数据用于最终模型的监督微调。这种方法可以确保最终训练数据,即能保留DeepSeek-R1的高准确性优势,又能生成简洁有效的回复。

非推理数据

对于非推理数据,如创意写作、角色扮演和简单问答,利用DeepSeek-V2.5生成回复,并对这些回复进行人工审核和编辑,以确保质量。

监督微调设置

使用微调数据集,DeepSeek-V3-Base进行了两个轮次的微调。其中,学习率调整采用余弦衰减,初始是5×1065×10^{-6},逐渐减少至1×1061×10^{-6}。微调训练时,每个序列从多个样本打包,并采用掩码策略保证样本之间还是隔离互不可见的。

5.2 强化学习

5.2.1 奖励模型

DeepSeek-V3在强化学习过程中采用了基于规则的奖励模型(RM)和基于模型的奖励模型。

基于规则的奖励模型:对于可以使用明确规则进行验证的问题,论文采用基于规则的奖励系统来给予模型反馈。例如,某些数学问题有确定的答案,要求模型以指定格式(如在框内)给出最终答案,这样就可以应用规则来验证其正确性。同样,对于力扣(LeetCode)上的问题,利用编译器根据测试用例生成反馈。优先采用基于规则的验证方式,以确保更高的可靠性,因为这种方法不易被操纵或利用。

基于模型的奖励模型:对于答案形式自由的事实性问题,论文依靠奖励模型来判断回答是否符合预期的事实答案。反之,对于没有明确事实答案的问题(如创意写作),奖励模型则将问题和相应的答案作为输入,对答案进行评估并提供反馈。该奖励模型基于DeepSeek-V3监督微调检查点进行训练,这意味着它继承了DeepSeek-V3在前期监督微调中学习到的能力。为了提高奖励模型的可靠性,论文构建了偏好数据。这些偏好数据不仅包括最终的奖励数值,还包括得出该奖励数值所依据的思维链。在一些特定任务中,可能存在一些不良策略试图通过操纵奖励机制来获取高奖励,这种方法有助于降低奖励操作风险。

5.2.2 组相对策略优化

与DeepSeek-V2类似,DeepSeek-V3采用了组相对策略优化(GRPO)。该方法摒弃了通常与策略模型规模相同的奖励模型,而是以组的平均奖励作为基线。具体来说,对于每个问题qq,GRPO从旧策略模型πθold\pi_{\theta_{old}}中采样一组输出{o1,o2,,oG}\{o_{1}, o_{2}, \cdots, o_{G}\},然后通过最大化以下目标来优化策略模型πθ\pi_{\theta}

JGRPO(θ)=E[qP(Q),{oi}i=1Gπθold(Oq)]1Gi=1G(min(πθ(oiq)πθold(oiq)Ai,clip(πθ(oiq)πθold(oiq),1ε,1+ε)Ai)βDKL(πθπref)),(26)\begin{aligned} \mathcal{J}_{GRPO }(\theta) & =\mathbb{E}\left[q \sim P(Q),\left\{o_{i}\right\}_{i=1}^{G} \sim \pi_{\theta_{old }}(O | q)\right] \\ & \frac{1}{G} \sum_{i=1}^{G}\left(\min \left(\frac{\pi_{\theta}\left(o_{i} | q\right)}{\pi_{\theta_{old }}\left(o_{i} | q\right)} A_{i}, \text{clip}\left(\frac{\pi_{\theta}\left(o_{i} | q\right)}{\pi_{\theta_{old }}\left(o_{i} | q\right)}, 1-\varepsilon, 1+\varepsilon\right) A_{i}\right)-\beta \mathbb{D}_{K L}\left(\pi_{\theta} \| \pi_{r e f}\right)\right), \end{aligned}\tag{26}

其中

DKL(πθπref)=πref(oiq)πθ(oiq)logπref(oiq)πθ(oiq)1,(27)\mathbb{D}_{K L}\left(\pi_{\theta} \| \pi_{r e f}\right)=\frac{\pi_{r e f}\left(o_{i} | q\right)}{\pi_{\theta}\left(o_{i} | q\right)}-log \frac{\pi_{r e f}\left(o_{i} | q\right)}{\pi_{\theta}\left(o_{i} | q\right)}-1,\tag{27}

ε\varepsilonβ\beta是超参数,πref\pi_{ref}是参考策略模型,AiA_{i}是优势,由每组输出对应的奖励{r1,r2,,rG}\{r_{1}, r_{2}, \cdots, r_{G}\}得出:

Ai=rimean({r1,r2,,rG})std({r1,r2,,rG}).(28)A_{i}=\frac{r_{i}-\text{mean}\left(\left\{r_{1}, r_{2}, \cdots, r_{G}\right\}\right)}{\text{std}\left(\left\{r_{1}, r_{2}, \cdots, r_{G}\right\}\right)}.\tag{28}

在强化学习阶段,论文纳入了来自不同领域的提示,如编码、数学、写作、角色扮演和问答。这种方法不仅使模型更符合人类偏好,还提高了在基准测试中的性能,特别是在可用的监督微调数据有限的情况下。

5.3 评估

5.3.1 评估设置

评估基准:除了在基准测试集上评估基础模型外,DeepSeek-V3在以下基准测试集上进一步评估指令模型:IFEval、FRAMES、LongBench v2、GPQA、SimpleQA、C-SimpleQA、SWE-Bench Verified、Aider、LiveCodeBench(2024年8月至11月的问题)、Codeforces、中国国家高中数学奥林匹克竞赛(CNMO 2024)以及美国数学邀请赛2024(AIME 2024)。

对比基线:全面评估了聊天模型与业界领先大模型,包括DeepSeek-V2-0506、DeepSeek-V2.5-0905、Qwen2.5 72B Instruct、LLaMA-3.1 405B Instruct、Claude-Sonnet-3.5-1022和GPT-4o-0513。其中,DeepSeek-V2模型系列使用其最具代表性的变体。闭源模型通过它们各自的API进行评估。

详细的评估配置

1)标准基准测试:MMLU、DROP、GPQA和SimpleQA使用来自simple-evals框架的评估提示;在零样本学习中,MMLU-Redux使用零样本评估(Zero-Eval)提示格式;其他测试集使用数据集创建者提供的默认提示及其原始评估协议。

2)代码基准测试:HumanEval-Mul数据集总共涵盖8种主流编程语言(Python、Java、C++、C#、JavaScript、TypeScript、PHP和Bash);LiveCodeBench数据集(2024年8月-11月收集)运用思维链(CoT)和非思维链两个方法进行评估;Codeforces数据集通过参赛者的百分比进行评估;SWE Verified数据集使用无代理框架进行评估;Aider相关的测试集采用“diff”格式评估。

3)数学基准测试:AIME和CNMO的评估温度设为0.7,结果取16次运行的平均值;MATH-500采用贪婪解码。

对于每个基准测试,允许模型输出的最大词元数为8192个。

表6 DeepSeek-V3与其他代表性聊天模型的比较

5.3.2 标准评估

表6评估结果表明DeepSeek-V3是性能最佳的开源模型,与GPT-4o和Claude-3.5-Sonnet等前沿闭源模型相比,也颇具竞争力。

英文基准测试

MMLU是一个广受认可的基准测试集,旨在评估大语言模型在不同知识领域和任务中的表现。

  • 在标准MMLU上,DeepSeek-V3表现出强大的竞争力,与LLaMA-3.1-405B、GPT-4o和Claude-Sonnet 3.5等顶级模型相当,同时显著超越Qwen2.5 72B。
  • 在MMLU-Pro(一个更具挑战性的教育知识基准测试)上,DeepSeek-V3表现出色,仅次于Claude-Sonnet 3.5。
  • 在MMLU-Redux(MMLU的修正标签优化版本)上,DeepSeek-V3超越了同类模型。

在GPQA-Diamond(一个博士水平的评估测试平台)上,DeepSeek-V3取得了卓越的成绩,仅次于Claude 3.5 Sonnet,且大幅领先所有其他竞争对手。

在DROP、LongBench v2和FRAMES等长文本理解基准测试中,DeepSeek-V3持续展现其作为顶级模型的地位。

  • 在DROP的3-shot设置中,F1分数取得了令人瞩目的91.6分,在该类别中超越了所有其他模型。
  • 在FRAMES(一个需要在100K词元上下文上进行问答的基准测试)上,DeepSeek-V3紧随GPT-4o之后,同时大幅领先所有其他模型。这表明DeepSeek-V3在处理极长文本任务方面具有强大的能力。
  • 在LongBench v2上,DeepSeek-V3表现一流,进一步验证了其处理长文本的能力,LongBench v2是在DeepSeek-V3发布前几周才发布的数据集。

在事实性知识基准测试SimpleQA上,DeepSeek-V3落后于GPT-4o和Claude-Sonnet,这主要归因于其设计重点和资源分配。DeepSeek-V3将更多的训练词元用于学习中文知识,从而在C-SimpleQA上取得了出色的表现。

在指令遵循基准测试IF-Eval中,DeepSeek-V3显著超越其前身DeepSeek-V2系列,突出了它在理解和遵循用户定义格式约束方面能力的提升。

代码与数学测试基准

对于大语言模型来说,编码是一项具有挑战性且实用的任务。其中有以工程为重点的测试任务,如SWE-Bench-Verified和Aider等,以及以算法为重点的测试任务,如HumanEval和LiveCodeBench等。在工程任务中,DeepSeek-V3落后于Claude-Sonnet-3.5-1022,但显著超越开源模型。开源的DeepSeek-V3有望推动编码相关工程任务的进步。通过开放自身强大的能力,DeepSeek-V3可以在软件工程和算法开发等领域推动创新和改进,赋能开发者和研究人员,突破开源模型在编码任务中所能达到的极限。在算法任务中,DeepSeek-V3展现出卓越的性能,在HumanEval-Mul和LiveCodeBench等基准测试中超越了所有基线模型。这可归因于其先进的知识蒸馏技术,该技术有效地提升了模型在以算法为重点的任务中的代码生成和问题解决能力。

在数学基准测试中,DeepSeek-V3展现出卓越的性能,显著超越基线模型,为非o1模型树立了新的最先进标准。具体地,在AIME、MATH-500和CNMO 2024上,DeepSeek-V3的绝对分数比排名第二的模型Qwen2.5 72B高出约10%,对于如此具有挑战性的基准测试而言,这是一个相当大的差距。这种卓越的能力凸显了从DeepSeek-R1采用的蒸馏技术的有效性,事实证明该技术对非o1模型非常有益。

中文基准测试

Qwen和DeepSeek是两个对中文和英文都有强大支持的代表性模型。在事实性基准测试中文SimpleQA上,尽管Qwen2.5-72B所使用的训练语料库更大,包含18T词元,比DeepSeek-V3预训练所使用的14.8T词元多20%,但DeepSeek-V3仍比Qwen2.5-72B高出16.4分。

在中文教育知识评估的代表性基准测试C-Eval以及中文CLUEWSC(Winograd Schema Challenge)上,DeepSeek-V3和Qwen2.5-72B表现出相似的性能水平,这表明这两个模型在具有挑战性的中文推理和教育任务方面都经过了良好的优化。

5.3.3 开放式评估

表7 英语开放式对话评估,AlpacaEval 2.0使用长度受控胜率作为衡量指标

除了常规的标准基准测试外,论文还引入大语言模型作为评判者,评估模型在开放式生成任务上的表现,结果见表。参照AlpacaEval 2.0和Arena-Hard的原始配置,使用GPT-4-Turbo-1106作为评判者进行对模型两两比较。

在Arena-Hard测试中,DeepSeek-V3与基线模型GPT-4-0314相比,赢得了超过86%的胜率,表现与Claude-Sonnet-3.5-1022等顶级模型相当。这突出了DeepSeek-V3强大的能力,特别是在处理复杂提示(包括编码和调试)任务方面。此外,DeepSeek-V3取得了一个突破性的里程碑,成为首个在Arena-Hard基准测试中胜率超过 85%的开源模型。这一成就显著缩小了开源模型与闭源模型之间的性能差距,为开源模型在具有挑战性的领域中所能取得的成果树立了新的标准。

同样,DeepSeek-V3在AlpacaEval 2.0上也展现出卓越的性能,超过了闭源和开源模型。这证明了它在写作任务和处理简单问答场景方面的出色能力。值得注意的是,它比DeepSeek-V2.5-0905大幅领先20%,在处理简单任务方面有了大幅提升,也说明V3的技术优化是行之有效的。

5.3.4 DeepSeek-V3作为生成式奖励模型

论文将对DeepSeek-V3与业界领先的GPT-4o和Claude-3.5在评判能力方面进行比较。表8展示了这些模型在RewardBench中的表现。DeepSeek-V3与GPT-4o-0806和Claude-3.5-Sonnet-1022最佳版本表现相当,同时超越了其他版本。此外,DeepSeek-V3的评判能力还可以通过投票技术得到提升。因此,我们将DeepSeek-V3与投票机制结合,为开放式问题提供自我反馈,从而提高对齐过程的有效性和稳健性。

表8 在RewardBench测试集上,GPT-4o、Claude-3.5-sonnet和DeepSeek-V3的性能表现

表9 DeepSeek-R1知识蒸馏的贡献,LiveCodeBench和MATH-500的评估设置与表6相同

5.4 讨论

5.4.1 DeepSeek-R1知识蒸馏

基于DeepSeek-V2.5,对来自DeepSeek-R1的知识蒸馏进行了消融实验。基线模型使用简短思维链(CoT)数据进行训练,对比模型则采用上述专家模型生成的数据。

表9展示了蒸馏数据的有效性,在LiveCodeBench和MATH-500基准测试中都有显著提升。同时,实验中还得出一个有趣的权衡:知识蒸馏虽能带来更好的性能,但也会大幅增加平均响应长度。为了在准确性和计算效率之间保持平衡,我们为DeepSeek-V3的知识蒸馏精心选择了最优设置。

研究表明,从推理模型进行知识蒸馏为后训练优化提供了一个很有前景的方向。尽管目前的工作重点是从数学和编码领域提取数据进行蒸馏,但这种方法在更广泛的任务领域中,也显示出应用潜力。在这些领域所展现出的有效性表明,长思维链蒸馏对于提升其他需要复杂推理的认知任务中的模型性能,同样可能具有重要价值。在不同领域进一步探索这种方法,是未来研究的一个重要方向。

5.4.2 自奖励机制

奖励在强化学习中起着关键作用,引导着优化过程。有些领域可以通过外部工具直接进行验证,比如编码或数学场景,强化学习展现出卓越的效果。然而,在更普遍的场景中,通过硬编码构建反馈机制并不现实。DeepSeek-V3针对这些更广泛的场景,采用了“可控生成式人工智能”(Constitutional AI)方法,将DeepSeek-V3自身的投票评估结果用作反馈源。这种方法产生了显著的对齐效果,大幅提升了DeepSeek-V3在主观评估中的表现。通过整合额外的可控输入,DeepSeek-V3能够朝着可控的方向进行优化。我们认为,将补充信息与大语言模型(LLM)相结合作为反馈源的范式至关重要。大语言模型就像一个通用处理器,能够将来自不同场景的非结构化信息转化为奖励,最终推动大语言模型的自我提升。除了自我奖励,我们还致力于探索其他通用且可扩展的奖励方法,以持续提升模型在一般场景下的能力。

5.4.3 多令牌预测评估

DeepSeek-V3并非仅预测下一个单一词元,而是通过多词元预测(MTP)技术预测接下来的2个词元。结合推测解码框架,它能够显著加快模型的解码速度。那自然引出一个问题,额外预测词元的接受率如何?根据评估,在各种生成主题中,第二个词元预测的接受率在85%到90%之间,显示出稳定的可靠性。如此高的接受率使得DeepSeek-V3能够显著提升解码速度,每秒处理词元数(TPS)达到原来的1.8倍。

6 结论、局限性和未来方向

本文中介绍了DeepSeek-V3,这是一个大规模混合专家(MoE)语言模型,总参数达6710亿,激活参数为370亿,在14.8T的token上进行训练。除了MLA和DeepSeekMoE架构,它还首创了无辅助损失的负载均衡策略,并设定了多词元预测训练目标以提升性能。得益于对FP8训练的支持以及精细的工程优化,DeepSeek-V3的训练具有较高的成本效益。训练后的处理也成功地从DeepSeek-R1系列模型中提炼出推理能力。综合评估表明,DeepSeek-V3已成为目前最强大的开源模型,其性能可与GPT-4o和Claude-3.5-Sonnet等领先的闭源模型相媲美。尽管性能强大,但它仍保持了经济的训练成本。包括预训练、上下文长度扩展和训练后处理在内,其完整训练仅需278.8万个H800 GPU小时。

在认可其强大性能和成本效益的同时,论文也认识到DeepSeek-V3存在一些局限性,尤其是在部署方面。首先,为确保高效推理,DeepSeek-V3推荐的部署单元相对较大,这可能会给小型团队带来负担。其次,尽管论文为DeepSeek-V3制定的部署策略已使其端到端生成速度达到DeepSeek-V2的两倍以上,但仍有进一步提升的空间。幸运的是,随着更先进硬件的发展,这些局限性有望自然得到解决。

DeepSeek始终坚持长期主义的开源模型路线,旨在稳步迈向通用人工智能(AGI)的最终目标。未来,DeeSeek计划在以下几个方向进行重点研究投入。

  • 将持续研究和优化模型架构,致力于进一步提高训练和推理效率,努力实现对无限上下文长度的高效支持。此外,将尝试突破Transformer架构的限制,从而拓展其建模能力的边界。
  • 将不断迭代训练数据的数量和质量,并探索纳入更多的训练信号源,力求在更全面的维度上推动数据规模的扩展。
  • 将持续探索和提升模型的深度思考能力,通过扩展推理长度和深度来增强其智能水平和问题解决能力。
  • 将探索更全面、多维度的模型评估方法,以避免在研究过程中出现只针对固定基准测试集进行优化的倾向,这种倾向可能会对模型能力产生误导性认知。