DeepSeek-V2:一种强大、经济且高效的混合专家语言模型
摘要
我们提出DeepSeek-V2,一种强大的混合专家(MoE)语言模型,具有经济高效的训练和推理特性。该模型总参数量为2360亿,其中每个token激活210亿参数,并支持128K tokens的上下文长度。DeepSeek-V2采用了创新架构,包括多头潜在注意力(MLA)和DeepSeekMoE。 MLA通过将键值(KV)缓存显著压缩为潜在向量,确保了高效的推理性能; 而DeepSeekMoE则通过稀疏计算实现了以经济成本训练强大模型。与DeepSeek 67B相比,DeepSeek-V2实现了显著更强的性能,同时节省了42.5%的训练成本,将KV缓存减少了93.3%,并将最大生成吞吐量提升至5.76倍。我们在高质量多源语料库(包含8.1T tokens)上对DeepSeek-V2进行预训练,并进一步执行监督微调(SFT)和强化学习(RL)以充分释放其潜力。评估结果表明,即使仅激活210亿参数,DeepSeek-V2及其聊天版本在开源模型中仍能实现顶级性能。模型检查点可在https://github.com/deepseek-ai/DeepSeek-V2 获取。
1 引言
在过去的几年中,大语言模型(LLMs)(Anthropic, 2023; Google, 2023; OpenAI, 2022, 2023)经历了快速发展,让我们一窥通用人工智能(AGI)的曙光。通常,LLM的智能随着参数数量的增加而提高,使其能够在各种任务中表现出涌现能力(Wei et al., 2022)。然而,这种提升伴随着训练所需的更大计算资源以及推理吞吐量可能下降的代价。这些限制带来了重大挑战,阻碍了LLM的广泛应用和使用。为解决这一问题,我们推出了DeepSeek-V2,一种强大的开源混合专家(MoE)语言模型,通过创新的Transformer架构实现经济高效的训练和推理。该模型配备了总计2360亿参数,其中每个token激活210亿参数,并支持128K tokens的上下文长度。
我们在Transformer框架(Vaswani et al., 2017)内优化了注意力模块和前馈网络(FFNs),采用了我们提出的多头潜在注意力(MLA)和DeepSeekMoE。(1)在注意力机制方面,多头注意力(MHA)(Vaswani et al., 2017)的键值(KV)缓存对LLM的推理效率构成了重大障碍。人们已经探索了各种方法来解决这个问题,包括分组查询注意力(GQA)(Ainslie et al., 2023)和多查询注意力(MQA)(Shazeer, 2019)。然而,这些方法往往在尝试减少KV缓存时牺牲了性能。为了兼顾两者,我们引入了MLA,一种配备低秩键值联合压缩的注意力机制。从经验上看,MLA相比MHA实现了更优的性能,同时显著减少了推理过程中的KV缓存,从而提高了推理效率。(2)对于前馈网络(FFNs),我们遵循DeepSeekMoE架构(Dai et al., 2024),该架构采用细粒度专家分割和共享专家隔离,以实现专家专业化的更高潜力。与传统的MoE架构(如GShard)(Lepikhin et al., 2021)相比,DeepSeekMoE架构展现出巨大优势,使我们能够以经济成本训练强大模型。由于我们在训练中采用专家并行,我们还设计了补充机制来控制通信开销并确保负载均衡。通过结合这两种技术,DeepSeek-V2同时具备强大的性能(图1(a))、经济的训练成本和高效的推理吞吐量(图1(b))。
我们构建了一个高质量多源预训练语料库,包含8.1T tokens。与DeepSeek 67B(我们之前的版本)(DeepSeek-AI, 2024)使用的语料库相比,该语料库具有更大量的数据,尤其是中文数据,以及更高的数据质量。我们首先在完整的预训练语料库上对DeepSeek-V2进行预训练。然后,我们收集了150万次对话会话,涵盖数学、代码、写作、推理、安全等多个领域,对DeepSeek-V2 Chat(SFT)执行监督微调(SFT)。最后,我们遵循DeepSeekMath(Shao et al., 2024)采用组相对策略优化(GRPO)进一步将模型与人类偏好对齐,生成DeepSeek-V2 Chat(RL)。
我们在英语和中文的广泛基准上评估了DeepSeek-V2,并与代表性开源模型进行比较。评估结果表明,即使仅激活210亿参数,DeepSeek-V2仍在开源模型中实现了顶级性能,成为最强的开源MoE语言模型。图1(a)突出显示,在MMLU上,DeepSeek-V2仅用少量激活参数就实现了排名靠前的性能。此外,如图1(b)所示,与DeepSeek 67B相比,DeepSeek-V2节省了42.5%的训练成本,将KV缓存减少了93.3%,并将最大生成吞吐量提升至5.76倍。我们还对DeepSeek-V2 Chat(SFT)和DeepSeek-V2 Chat(RL)在开放式基准上进行了评估。值得注意的是,DeepSeek-V2 Chat(RL)在AlpacaEval 2.0(Dubois et al., 2024)上实现了38.9%的长度控制胜率,在MT-Bench(Zheng et al., 2023)上获得8.97的总体分数,在AlignBench(Liu et al., 2023)上获得7.91的总体分数。英语开放式对话评估表明,DeepSeek-V2 Chat(RL)在开源聊天模型中具有顶级性能。此外,AlignBench上的评估表明,在中文方面,DeepSeek-V2 Chat(RL)优于所有开源模型,甚至超过了大多数闭源模型。
为促进对MLA和DeepSeekMoE的进一步研究和开发,我们还向开源社区发布了DeepSeek-V2-Lite,这是一个配备MLA和DeepSeekMoE的较小模型。它总共有157亿参数,其中每个token激活24亿参数。有关DeepSeek-V2-Lite的详细描述可在附录B中找到。
在本文的其余部分,我们首先详细描述了DeepSeek-V2的模型架构(第2节)。随后,我们介绍了我们的预训练工作,包括训练数据构建、超参数设置、基础设施、长上下文扩展以及模型性能和效率评估(第3节)。接着,我们展示了我们在对齐方面的努力,包括监督微调(SFT)、强化学习(RL)、评估结果及其他讨论(第4节)。最后,我们总结了结论,讨论了DeepSeek-V2的当前局限性,并概述了我们未来的工作(第5节)。
2 架构
总体而言,DeepSeek-V2仍然采用Transformer架构(Vaswani et al., 2017),其中每个Transformer块由注意力模块和前馈网络(FFN)组成。然而,对于注意力模块和FFN,我们都设计并采用了创新架构。在注意力方面,我们设计了MLA,它利用低秩键值联合压缩来消除推理时键值缓存的瓶颈,从而支持高效推理。对于FFN,我们采用了DeepSeekMoE架构(Dai et al., 2024),这是一种高性能MoE架构,能够以经济成本训练强大模型。图2展示了DeepSeek-V2的架构示意图,本节将详细介绍MLA和DeepSeekMoE。对于其他细微之处(例如,层归一化和FFN中的激活函数),除非特别说明,DeepSeek-V2遵循DeepSeek 67B(DeepSeek-AI, 2024)的设置。
2.1 多头潜在注意力:提升推理效率
传统Transformer模型通常采用多头注意力(MHA)(Vaswani et al., 2017),但在生成过程中,其庞大的键值(KV)缓存将成为限制推理效率的瓶颈。为了减少KV缓存,提出了多查询注意力(MQA)(Shazeer, 2019)和分组查询注意力(GQA)(Ainslie et al., 2023)。它们需要较小规模的KV缓存,但其性能无法与MHA匹配(我们在附录D.1中提供了MHA、GQA和MQA的消融实验)。
对于DeepSeek-V2,我们设计了一种创新的注意力机制,称为多头潜在注意力(MLA)。配备低秩键值联合压缩,MLA比MHA实现了更好的性能,但需要显著更少的KV缓存。我们将在下文中介绍其架构,并在附录D.2中提供MLA与MHA的比较。
2.1.1 预备知识:标准多头注意力
我们首先介绍标准MHA机制作为背景。设d为嵌入维度,nhn_{h}nh为注意力头的数量,dhd_{h}dh为每个头的维度,ht∈Rd~\mathbf{h}_{t}\in\mathbb{R}^{\widetilde{d}}ht∈Rd为第t个token在注意力层的注意力输入。标准MHA首先通过三个矩阵WQW^{Q}WQ、WKW^{K}WK、WV∈Rdhnh×d∙W^{V}\in\mathbb{R}^{d_{h}\overset{\bullet}{n_{h}\times d}}WV∈Rdhnh×d∙分别产生qt,kt,vt∈Rdhnh\mathbf{q}_{t},\mathbf{k}_{t},\mathbf{v}_{t}\in\mathbb{R}^{d_{h}n_{h}}qt,kt,vt∈Rdhnh:
qt=WQht,kt=WKht,vt=WVht,\begin{aligned}{\mathbf{q}_{t}}&{{}=W^{Q}\mathbf{h}_{t},}\\ {\mathbf{k}_{t}}&{{}=W^{K}\mathbf{h}_{t},}\\ {\mathbf{v}_{t}}&{{}=W^{V}\mathbf{h}_{t},}\end{aligned}qtktvt=WQht,=WKht,=WVht,
然后,qt,kt,vt\mathbf{q}_{t},\mathbf{k}_{t},\mathbf{v}_{t}qt,kt,vt将被切分为nhn_{h}nh个头进行多头注意力计算:
[qt,1;qt,2;...;qt,nh]=qt,[\mathbf{q}_{t,1}\mathbf{;}\mathbf{q}_{t,2}\mathbf{;...;}\mathbf{q}_{t,n_{h}}]=\mathbf{q}_{t},[qt,1;qt,2;...;qt,nh]=qt,
[kt,1;kt,2;...;kt,nh]=kt,[\mathbf{k}_{t,1}\mathbf{;}\mathbf{k}_{t,2}\mathbf{;...;}\mathbf{k}_{t,n_{h}}]=\mathbf{k}_{t},[kt,1;kt,2;...;kt,nh]=kt,
[vt,1;vt,2;…;vt,nh]=vt,\left[\mathbf{v}_{t,1}\mathbf{;}\mathbf{v}_{t,2}\mathbf{;}\ldots\mathbf{;}\mathbf{v}_{t,n_{h}}\right]=\mathbf{v}_{t},[vt,1;vt,2;…;vt,nh]=vt,
ot,i=∑j=1tSoftmaxj(qt,iTkj,idh)vj,i,\mathbf{o}_{t,i}=\sum_{j=1}^{t}\mathrm{Softmax}_{j}(\frac{\mathbf{q}_{t,i}^{T}\mathbf{k}_{j,i}}{\sqrt{d_{h}}})\mathbf{v}_{j,i},ot,i=j=1∑tSoftmaxj(dhqt,iTkj,i)vj,i,
ut=WO[ot,1;ot,2;...;ot,nh],\mathbf{u}_{t}=W^{O}\left[\mathbf{o}_{t,1};\mathbf{o}_{t,2};...;\mathbf{o}_{t,n_{h}}\right],ut=WO[ot,1;ot,2;...;ot,nh],
其中qt,i,kt,i,vt,i∈Rdh\mathbf{q}_{t,i},\mathbf{k}_{t,i},\mathbf{v}_{t,i}\in\mathbb{R}^{d_{h}}qt,i,kt,i,vt,i∈Rdh分别表示第i个注意力头的查询、键和值;WO∈Rd×dhnhW^{O}\in\mathbb{R}^{d\times d_{h}n_{h}}WO∈Rd×dhnh表示输出投影矩阵。在推理过程中,所有键和值都需要缓存以加速推理,因此MHA需要为每个token缓存2nhdhl2n_{h}d_{h}l2nhdhl个元素。在模型部署中,这种庞大的KV缓存是限制最大批大小和序列长度的主要瓶颈。
2.1.2 低秩键值联合压缩
MLA的核心是对键和值进行低秩联合压缩以减少KV缓存:
ctKV=WDKVht,\mathbf{c}_{t}^{K V}=W^{D K V}\mathbf{h}_{t},ctKV=WDKVht,
ktC=WUKctKV,\mathbf{k}_{t}^{C}=W^{U K}\mathbf{c}_{t}^{K V},ktC=WUKctKV,
vtC=WUVctKV,\mathbf{v}_{t}^{C}=W^{U V}\mathbf{c}_{t}^{K V},vtC=WUVctKV,
其中ctKV∈Rdc\pmb{\mathscr{c}}_{t}^{K V}\in\mathbb{R}^{d_{c}}ctKV∈Rdc是键和值的压缩潜在向量;dc(≪dhnh)d_{c}\bigl(\ll d_{h}n_{h}\bigr)dc(≪dhnh)表示KV压缩维度;WDKVˉ∈Rdc×d\bar{W^{D K V}}\in\mathbb{R}^{d_{c}\times d}WDKVˉ∈Rdc×d是下投影矩阵;WUK˙,WUV∈Rdhnh×dlW^{\dot{U K}},W^{U V}\in\mathbb{R}^{d_{h}n_{h}\times d_{l}}WUK˙,WUV∈Rdhnh×dl分别是键和值的上投影矩阵。在推理过程中,MLA只需要缓存ctKV\mathbf{c}_{t}^{K V}ctKV,因此其KV缓存仅有dcld_cldcl个元素,其中l表示层数。此外,在推理过程中,由于WUKW^{U K}WUK可以被吸收进WQW^{Q}WQ,WUVW^{U V}WUV可以被吸收进WOW^{O}WO,我们甚至不需要为注意力计算输出键和值。图3直观地展示了MLA中KV联合压缩如何减少KV缓存。
此外,为了减少训练过程中的激活内存,我们还对查询进行了低秩压缩,即使它不能减少KV缓存:
ctQ=WDQht,qtC=WUQctQ,\begin{aligned}{\pmb{\mathrm{c}}_{t}^{Q}}&{{}=W^{D Q}\pmb{\mathrm{h}}_{t},}\\ {\pmb{\mathrm{q}}_{t}^{C}}&{{}=W^{U Q}\pmb{\mathrm{c}}_{t}^{Q},}\end{aligned}ctQqtC=WDQht,=WUQctQ,
其中ctQ∈Rdc′\pmb{\mathscr{c}}_{t}^{Q}\in\mathbb{R}^{d_{c}^{\prime}}ctQ∈Rdc′是查询的压缩潜在向量;dc′(≪ dhnh)d_{c}^{\prime}\bigl(\ll\;d_{h}n_{h}\bigr)dc′(≪dhnh)表示查询压缩维度;WDQ∈Rdc′×d,WUQ∈Rdhnh^×dc′W^{D Q}\in\mathbb{R}^{d_{c}^{\prime}\times d},W^{U Q}\in\mathbb{R}^{\widehat{d_{h}n_{h}}\times d_{c}^{\prime}}WDQ∈Rdc′×d,WUQ∈Rdhnh×dc′分别是查询的下投影和上投影矩阵。
2.1.3 解耦旋转位置编码
遵循DeepSeek 67B(DeepSeek-AI, 2024),我们打算为DeepSeek-V2使用旋转位置编码(RoPE)(Su et al., 2024)。然而,RoPE与低秩KV压缩不兼容。具体来说,RoPE对键和查询都具有位置敏感性。如果我们对键ktC,WUˉK\mathbf{k}_{t}^{C},W^{\bar{U}K}ktC,WUˉK应用RoPE,公式10中的WUˉKW^{\bar{U}K}WUˉK将与位置敏感的RoPE矩阵耦合。在这种情况下,WUKW^{U K}WUK在推理过程中不能再被吸收进WQW^{Q}WQ,因为一个与当前生成token相关的RoPE矩阵将位于WQW^{Q}WQ和WUKW^{U K}WUK之间,而矩阵乘法不遵守交换律。因此,我们必须在推理过程中重新计算所有前缀token的键,这将显著阻碍推理效率。
作为解决方案,我们提出了使用额外的多头查询qt,iR∈RdhR\mathbf{q}_{t,i}^{R}\in\mathbb{R}^{d_{h}^{R}}qt,iR∈RdhR和共享键ktR∈RdhR\mathbf{k}_{t}^{R}\in\mathbb{R}^{d_{h}^{R}}ktR∈RdhR来承载RoPE的解耦RoPE策略,其中dhRd_{h}^{R}dhR表示解耦查询和键的每头维度。配备解耦RoPE策略,MLA执行以下计算:
[qt,1R;qt,2R;...;qt,nhR]=qtR=RoPE(WQRctQ),[\mathbf{q}_{t,1}^{R};\mathbf{q}_{t,2}^{R};...;\mathbf{q}_{t,n_{h}}^{R}]=\mathbf{q}_{t}^{R}=\mathrm{RoPE}(W^{Q R}\mathbf{c}_{t}^{Q}),[qt,1R;qt,2R;...;qt,nhR]=qtR=RoPE(WQRctQ),
ktR=RoPE(WKRht),\mathbf{k}_{t}^{R}=\mathrm{RoPE}(W^{K R}\mathbf{h}_{t}),ktR=RoPE(WKRht),
qt,i=[qt,iC;qt,iR],\begin{array}{r}{\mathbf{q}_{t,i}=[\mathbf{q}_{t,i}^{C};\mathbf{q}_{t,i}^{R}],}\end{array}qt,i=[qt,iC;qt,iR],
kt,i=[kt,iC;ktR],\mathbf{k}_{t,i}=[\mathbf{k}_{t,i}^{C};\mathbf{k}_{t}^{R}],kt,i=[kt,iC;ktR],
ot,i=∑j=1tSoftmaxj(qt,iTkj,idh+dhR)vj,iC,\mathbf{o}_{t,i}=\sum_{j=1}^{t}\mathrm{Softmax}_{j}(\frac{\mathbf{q}_{t,i}^{T}\mathbf{k}_{j,i}}{\sqrt{d_{h}+d_{h}^{R}}})\mathbf{v}_{j,i}^{C},ot,i=j=1∑tSoftmaxj(dh+dhRqt,iTkj,i)vj,iC,
ut=WO[ot,1;ot,2;...;ot,nh],\mathbf{u}_{t}=W^{O}\big[\mathbf{o}_{t,1};\mathbf{o}_{t,2};...;\mathbf{o}_{t,n_{h}}\big],ut=WO[ot,1;ot,2;...;ot,nh],
其中WQR∈RdhRnh×dc′W^{Q R}\in\mathbb{R}^{d_{h}^{R}n_{h}\times d_{c}^{\prime}}WQR∈RdhRnh×dc′和WKR∈RdhR×dW^{K R}\in\mathbb{R}^{d_{h}^{R}\times d}WKR∈RdhR×d分别是产生解耦查询和键的矩阵;RoPE(·)表示应用RoPE矩阵的操作;[⋅;⋅][\cdot;\cdot][⋅;⋅]表示连接操作。在推理过程中,解耦键也需要缓存。因此,DeepSeek-V2需要包含(dc+dhR)l\big(d_{c}+d_{h}^{R}\big)l(dc+dhR)l个元素的总KV缓存。
为了展示MLA的完整计算过程,我们还在附录C中组织并提供了其完整公式。
2.1.4 键值缓存对比
我们在表1中展示了不同注意力机制每token的KV缓存对比。MLA只需要很少的KV缓存,相当于仅有2.25组的GQA,但可以实现比MHA更强的性能。
表1 | 不同注意力机制每token的KV缓存对比。nhn_{h}nh表示注意力头的数量,dhd_{h}dh表示每个注意力头的维度,l表示层数,ngn_{g}ng表示GQA中的组数,dcd_{c}dc和dhRd_{h}^{R}dhR分别表示MLA中KV压缩维度和解耦查询及键的每头维度。KV缓存的量通过元素数量来衡量,不考虑存储精度。对于DeepSeek-V2,dcd_{c}dc设置为4dh4d_{h}4dh,dhRd_{h}^{R}dhR设置为dh2\frac{d_{h}}{2}2dh。因此,其KV缓存相当于仅有2.25组的GQA,但其性能强于MHA。
2.2 DeepSeekMoE:以经济成本训练强大模型
2.2.1 基本架构
对于FFN,我们采用DeepSeekMoE架构(Dai et al., 2024)。DeepSeekMoE有两个关键思想:将专家分割为更细粒度以实现更高的专家专业化和更精确的知识获取,以及隔离一些共享专家以减轻路由专家之间的知识冗余。在相同数量的激活和总专家参数下,DeepSeekMoE可以大幅优于传统的MoE架构如GShard(Lepikhin et al., 2021)。
设ut\mathbf{u}_{t}ut为第t个token的FFN输入,我们计算FFN输出ht′\mathbf{h}_{t}^{\prime}ht′如下:
ht′=ut+∑i=1NsFFNi(s)(ut)+∑i=1Nrgi,tFFNi(r)(ut),gi,t={si,t,si,t∈Topk({sj,t∣1≤j≤Nr},Kr),0,otherwise,si,t=Softmaxi(utTei),\begin{aligned}\mathbf{h}_{t}^{\prime}&=\mathbf{u}_{t}+\sum_{i=1}^{N_{s}}\operatorname{FFN}_{i}^{(s)}\left(\mathbf{u}_{t}\right)+\sum_{i=1}^{N_{r}}g_{i,t}\operatorname{FFN}_{i}^{(r)}\left(\mathbf{u}_{t}\right),\\g_{i,t}&=\begin{cases}s_{i,t},&s_{i,t}\in\operatorname{Topk}(\{s_{j,t}|1\leq j\leq N_{r}\},K_{r}),\\0,&otherwise,\end{cases}\\s_{i,t}&=\operatorname{Softmax}_{i}\left(\mathbf{u}_{t}^{T}\mathbf{e}_{i}\right),\end{aligned}ht′gi,tsi,t=ut+i=1∑NsFFNi(s)(ut)+i=1∑Nrgi,tFFNi(r)(ut),={si,t,0,si,t∈Topk({sj,t∣1≤j≤Nr},Kr),otherwise,=Softmaxi(utTei),
其中NsN_{s}Ns和NrN_{r}Nr分别表示共享专家和路由专家的数量;FFNi(s)(⋅)\operatorname{FFN}_{i}^{(s)}(\cdot)FFNi(s)(⋅)和FFNi(r)(⋅)\operatorname{FFN}_{i}^{(r)}(\cdot)FFNi(r)(⋅)分别表示第i个共享专家和第i个路由专家;KrK_{r}Kr表示激活的路由专家数量;gi,tg_{i,t}gi,t是第i个专家的门控值;Si,t\mathcal{S}_{i,t}Si,t是token到专家的亲和度;e是该层中第i个路由专家的质心;Topk(·, K)表示包含为第t个token和所有路由专家计算的亲和度分数中K个最高分数的集合。
2.2.2 设备限制路由
我们设计了一种设备限制路由机制来限制MoE相关的通信成本。当采用专家并行时,路由专家将分布在多个设备上。对于每个token,其MoE相关的通信频率与其目标专家所覆盖的设备数量成正比。由于DeepSeekMoE中的细粒度专家分割,激活的专家数量可能很大,因此如果我们应用专家并行,MoE相关的通信将更加昂贵。
对于DeepSeek-V2,除了朴素的路由专家top-K选择外,我们还额外确保每个token的目标专家将分布在最多M个设备上。具体来说,对于每个token,我们首先选择包含专家亲和度分数最高的M个设备。然后,我们在这些M个设备上的专家中执行top-K选择。在实践中,我们发现当M⩾3M\geqslant3M⩾3时,设备限制路由可以实现与无限制top-K路由大致相当的良好性能。
2.2.3 负载均衡辅助损失
我们考虑了自动学习路由策略的负载均衡。首先,不平衡的负载会增加路由崩溃(Shazeer et al., 2017)的风险,阻止某些专家得到充分训练和利用。其次,当采用专家并行时,不平衡的负载会降低计算效率。在DeepSeek-V2的训练过程中,我们设计了三种辅助损失,分别用于控制专家级负载均衡(LExpBal\mathcal{L}_{\mathrm{ExpBal}}LExpBal)、设备级负载均衡(LDevBal\mathcal{L}_{\mathrm{DevBal}}LDevBal)和通信均衡(LCommBal\mathcal{L}_{\mathrm{CommBal}}LCommBal)。
专家级均衡损失。我们使用专家级均衡损失(Fedus et al., 2021; Lepikhin et al., 2021)来减轻路由崩溃的风险:
LExpBal=α1∑i=1NrfiPi,fi=NrKrT∑t=1T1(Token t selects Expert i),Pi=1T∑t=1Tsi,t,\begin{aligned}\mathcal{L}_{\mathrm{ExpBal}}&=\alpha_{1}\sum_{i=1}^{N_{r}}f_{i}P_{i},\\f_{i}&=\frac{N_{r}}{K_{r}T}\sum_{t=1}^{T}\mathbb{1}(\mathrm{Token}\;t\;\mathrm{selects}\;\mathrm{Expert}\;i),\\P_{i}&=\frac{1}{T}\sum_{t=1}^{T}s_{i,t},\end{aligned}LExpBalfiPi=α1i=1∑NrfiPi,=KrTNrt=1∑T1(TokentselectsExperti),=T1t=1∑Tsi,t,
其中α1\alpha_{1}α1是一个称为专家级均衡因子的超参数;1(·)表示指示函数;T表示序列中的token数量。
设备级均衡损失。除了专家级均衡损失外,我们还额外设计了一个设备级均衡损失,以确保不同设备之间的计算均衡。在DeepSeek-V2的训练过程中,我们将所有路由专家划分为D组{E1,E2,...,ED}\{\mathcal{E}_{1},\mathcal{E}_{2},...,\mathcal{E}_{D}\}{E1,E2,...,ED},并将每组部署在单个设备上。设备级均衡损失计算如下:
LDevBal=α2∑i=1Dfi′Pi′,\mathcal{L}_{\mathrm{DevBal}}=\alpha_{2}\sum_{i=1}^{D}f_{i}^{\prime}P_{i}^{\prime},LDevBal=α2i=1∑Dfi′Pi′,
fi′=1∣Ei∣∑j∈Eifj,f_{i}^{\prime}=\frac{1}{|\mathcal{E}_{i}|}\sum_{j\in\mathcal{E}_{i}}f_{j},fi′=∣Ei∣1j∈Ei∑fj,
Pi′=∑j∈EiPj,P_{i}^{\prime}=\sum_{j\in\mathcal{E}_{i}}P_{j},Pi′=j∈Ei∑Pj,
其中α2\alpha_{2}α2是一个称为设备级均衡因子的超参数。
通信均衡损失。最后,我们引入通信均衡损失,以确保每个设备的通信均衡。虽然设备限制路由机制保证了每个设备的发送通信受到限制,但如果某个设备接收的token比其他设备多,实际通信效率也会受到影响。为缓解此问题,我们设计了如下通信均衡损失:
LCommBal=α3∑i=1Dfi′′Pi′′,fi′′=DMT∑t=1T1(TokentissenttoDevicei),Pi′′=∑j∈EiPj,\begin{aligned}\mathcal{L}_{CommBal}&=\alpha_{3}\sum_{i=1}^{D}f_{i}^{\prime\prime}P_{i}^{\prime\prime},\\f_{i}^{\prime\prime}&=\frac{D}{MT}\sum_{t=1}^{T}\mathbb{1}(Token t is sent to Device i),\\P_{i}^{\prime\prime}&=\sum_{j\in\mathcal{E}_{i}}P_{j},\end{aligned}LCommBalfi′′Pi′′=α3i=1∑Dfi′′Pi′′,=MTDt=1∑T1(TokentissenttoDevicei),=j∈Ei∑Pj,
其中α3\alpha_{3}α3是一个称为通信均衡因子的超参数。设备限制路由机制的工作原理是确保每个设备最多向其他设备传输MT个隐藏状态。同时,通信均衡损失用于鼓励每个设备从其他设备接收约MT个隐藏状态。通信均衡损失保证了设备之间信息的均衡交换,促进了高效的通信。
2.2.4 令牌丢弃策略
虽然均衡损失旨在鼓励负载均衡,但重要的是要认识到它们不能保证严格的负载均衡。为了进一步减轻由负载不均衡引起的计算浪费,我们在训练期间引入了设备级令牌丢弃策略。该方法首先计算每个设备的平均计算预算,这意味着每个设备的容量因子相当于1.0。然后,受Riquelme et al. (2021)的启发,我们在每个设备上丢弃亲和度分数最低的token,直到达到计算预算。此外,我们确保大约10%的训练序列中的token永远不会被丢弃。通过这种方式,我们可以根据效率要求灵活决定在推理期间是否丢弃token,并始终确保训练和推理之间的一致性。
3. 预训练
3.1. 实验设置
3.1.1. 数据构建
虽然保持与DeepSeek 67B相同的数据处理阶段,但我们扩展了数据量并提高了数据质量。为了扩大我们的预训练语料库,我们探索了互联网数据的潜力并优化了清洗流程,从而恢复了大量被错误删除的数据。此外,我们整合了更多中文数据,旨在更好地利用中文互联网上可用的语料库。除了数据量外,我们还关注数据质量。我们通过各种来源的高质量数据丰富了预训练语料库,同时改进了基于质量的过滤算法。改进后的算法确保大量无益数据将被删除,而有价值的数据将大部分保留。此外,我们从预训练语料库中过滤掉有争议的内容,以减轻特定区域文化引入的数据偏差。关于此过滤策略影响的详细讨论见附录E。
我们采用与DeepSeek 67B相同的分词器,该分词器基于字节级字节对编码(BBPE)算法构建,词汇量大小为100K。我们的分词化预训练语料库包含8.1T tokens,其中中文tokens比英文tokens多约12%。
3.1.2. 超参数
模型超参数。我们将Transformer层数设置为60,隐藏维度设置为5120。所有可学习参数均以标准差为0.006随机初始化。在MLA中,我们将注意力头数nhn_{h}nh设置为128,每头维度dhd_{h}dh设置为128。KV压缩维度dcd_{c}dc设置为512,查询压缩维度dc′d_{c}^{\prime}dc′设置为1536。对于解耦查询和键,我们将每头维度dhRd_{h}^{R}dhR设置为64。按照Dai等人(2024)的做法,我们将除第一层外的所有FFN替换为MoE层。每个MoE层由2个共享专家和160个路由专家组成,其中每个专家的中间隐藏维度为1536。在路由专家中,每个token将激活6个专家。此外,低秩压缩和细粒度专家分割将影响层的输出规模。因此,在实践中,我们在压缩的潜在向量后使用额外的RMS Norm层,并在宽度瓶颈处(即压缩的潜在向量和路由专家的中间隐藏状态)乘以额外的缩放因子,以确保训练稳定。在此配置下,DeepSeek-V2包含236B总参数,其中每个token激活21B参数。
训练超参数。我们采用AdamW优化器(Loshchilov和Hutter, 2017),超参数设置为β1=0.9,β2=0.95\beta_{1}=0.9,\beta_{2}=0.95β1=0.9,β2=0.95,权重衰减为0.1。学习率使用预热和逐步衰减策略调度(DeepSeek-AI, 2024)。最初,学习率在前2K步线性增加到最大值。随后,在训练约60%的tokens后,学习率乘以0.316,再次在训练约90%的tokens后乘以0.316。最大学习率设置为2.4×10−42.4\times10^{-4}2.4×10−4,梯度裁剪范数设置为1.0。我们还使用批大小调度策略,其中批大小在训练前225B tokens时从2304逐渐增加到9216,然后在剩余训练中保持9216。我们将最大序列长度设置为4K,并在8.1T tokens上训练DeepSeek-V2。我们利用流水线并行将模型的不同层部署在不同设备上,对于每一层,路由专家将均匀部署在8个设备上(D=8D=8D=8)。对于设备限制路由,每个token最多发送到3个设备(M=3M=3M=3)。对于平衡损失,我们设置α1\alpha_{1}α1为0.003,α2\alpha_{2}α2为0.05,α3\alpha_{3}α3为0.02。我们在训练期间使用令牌丢弃策略进行加速,但不丢弃任何令牌进行评估。
3.1.3. 基础设施
DeepSeek-V2基于HAI-LLM框架(High-flyer, 2023)训练,这是我们工程师内部开发的一个高效轻量级训练框架。它采用16路无气泡流水线并行(Qi等人, 2023),8路专家并行(Lepikhin等人, 2021),以及ZeRO-1数据并行(Rajbhandari等人, 2020)。鉴于DeepSeek-V2具有相对较少的激活参数,并且部分算子被重新计算以节省激活内存,它可以无需张量并行进行训练,从而减少通信开销。此外,为了进一步提高训练效率,我们将共享专家的计算与专家并行的全对全通信重叠。我们还为通信、路由算法和跨不同专家的融合线性计算定制了更快的CUDA内核。此外,MLA还基于FlashAttention-2(Dao, 2023)的改进版本进行了优化。
我们在配备NVIDIA H800 GPU的集群上进行所有实验。H800集群中的每个节点包含8个GPU,节点内通过NVLink和NVSwitch连接。节点之间,使用InfiniBand互连促进通信。
3.1.4. 长上下文扩展
在DeepSeek-V2的初始预训练后,我们使用YaRN(Peng等人, 2023)将默认上下文窗口长度从4K扩展到128K。YaRN专门应用于解耦共享键ktR\mathbf{k}_{t}^{R}ktR,因为它负责承载RoPE(Su等人, 2024)。对于YaRN,我们将比例s设置为40,α设置为1,β设置为32,目标最大上下文长度设置为160K。在此设置下,我们可以预期模型在128K上下文长度下表现良好。由于我们不同的注意力机制,我们稍微偏离了原始YaRN,调整了长度缩放因子以调节注意力熵。因子t\sqrt{t}t计算为t=0.0707lns+1\sqrt{t}=0.0707\ln s+1t=0.0707lns+1,旨在最小化困惑度。
我们还额外训练了模型1000步,序列为32K,批大小为576个序列。虽然训练仅在32K序列长度下进行,但模型在128K上下文长度下评估时仍表现出稳健性能。如图4所示,“针在 haystack 中”(NIAH)测试的结果表明,DeepSeek-V2在所有上下文窗口长度高达128K的情况下表现良好。
3.2. 评估
3.2.1. 评估基准
DeepSeek-V2在双语语料库上预训练,因此我们在英语和中文的一系列基准上对其进行评估。我们的评估基于集成在我们HAI-LLM框架中的内部评估框架。包含的基准分类如下,其中带下划线的基准是中文的:
多学科多项选择数据集包括MMLU(Hendrycks等人, 2020)、C-Eval(Huang等人, 2023)和CMMLU(Li等人, 2023)。
语言理解和推理数据集包括HellaSwag(Zellers等人, 2019)、PIQA(Bisk等人, 2020)、ARC(Clark等人, 2018)和BigBench Hard(BBH)(Suzgun等人, 2022)。
闭卷问答数据集包括TriviaQA(Joshi等人, 2017)和NaturalQuestions(Kwiatkowski等人, 2019)。
阅读理解数据集包括RACE Lai等人(2017)、DROP(Dua等人, 2019)、C3(Sun等人, 2019)和CMRC(Cui等人, 2019)。
引用消歧数据集包括WinoGrande Sakaguchi等人(2019)和CLUEWSC(Xu等人, 2020)。
语言建模数据集包括Pile(Gao等人, 2020)。
中文理解和文化数据集包括CHID(Zheng等人, 2019)和CCPM(Li等人, 2021)。
数学数据集包括GSM8K(Cobbe等人, 2021)、MATH(Hendrycks等人, 2021)和CMath(Wei等人, 2023)。
代码数据集包括HumanEval(Chen等人, 2021)、MBPP(Austin等人, 2021)和CRUXEval(Gu等人, 2024)。
标准化考试包括AGIEval(Zhong等人, 2023)。注意AGIEval包括英语和中文子集。
按照我们之前的工作(DeepSeek-AI, 2024),我们对包括HellaSwag、PIQA、WinoGrande、RACE-Middle、RACE-High、MMLU、ARC-Easy、ARC-Challenge、CHID、C-Eval、CMMLU、C3和CCPM在内的数据集采用基于困惑度的评估,对TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、HumanEval、MBPP、CRUXEval、BBH、AGIEval、CLUEWSC、CMRC和CMath采用基于生成的评估。此外,我们对Pile-test执行基于语言建模的评估,并使用Bits-Per-Byte(BPB)作为指标,以确保在具有不同分词器的模型之间进行公平比较。
为了直观地了解这些基准,我们在附录G中额外提供了每个基准的评估格式。
3.2.2. 评估结果
在表2中,我们将DeepSeek-V2与几个代表性的开源模型进行比较,包括DeepSeek 67B(DeepSeek-AI, 2024)(我们之前的版本)、Qwen1.5 72B(Bai等人, 2023)、LLaMA3 70B(AI@Meta, 2024)和Mixtral 8x22B(Mistral, 2024)。我们在内部评估框架中评估所有这些模型,并确保它们共享相同的评估设置。总体而言,仅使用21B激活参数,DeepSeek-V2在几乎所有基准上都显著优于DeepSeek 67B,并在开源模型中实现了顶级性能。
进一步,我们详细地将DeepSeek-V2与其开源对应物逐一比较。(1) 与同样支持中文和英语的Qwen1.5 72B相比,DeepSeek-V2在大多数英语、代码和数学基准上表现出压倒性优势。对于中文基准,Qwen1.5 72B在多学科多项选择任务上表现更好,而DeepSeek-V2在其他任务上相当或更好。注意,对于CHID基准,Qwen1.5 72B的分词器在我们的评估框架中会遇到错误,因此我们为Qwen1.5 72B留空CHID分数。(2) 与Mixtral 8x22B相比,DeepSeek-V2在英语性能上相当或更好,除了TriviaQA、NaturalQuestions和HellaSwag,这些与英语常识知识密切相关。值得注意的是,DeepSeek-V2在MMLU上优于Mixtral 8x22B。在代码和数学基准上,DeepSeek-V2表现出与Mixtral 8x22B相当的性能。由于Mixtral 8x22B没有专门针对中文数据进行训练,其中文能力远远落后于DeepSeek-V2。(3) 与LLaMA3 70B相比,DeepSeek-V2在不到四分之一的英语tokens上进行训练。因此,我们承认DeepSeek-V2在基本英语能力方面与LLaMA3 70B仍存在微小差距。然而,即使训练tokens和激活参数少得多,DeepSeek-V2在代码和数学能力方面仍表现出与LLaMA3 70B相当的水平。此外,作为双语语言模型,DeepSeek-V2在中文基准上远超LLaMA3 70B。
最后,值得一提的是,某些先前研究(Hu等人, 2024)在预训练阶段合并了SFT数据,而DeepSeek-V2在预训练期间从未接触过SFT数据。
3.2.3. 训练和推理效率
训练成本。由于DeepSeek-V2每个token激活的参数较少,所需的FLOPs比DeepSeek 67B少,理论上训练DeepSeek-V2比训练DeepSeek 67B更经济。尽管训练MoE模型会引入额外的通信开销,但通过我们的算子和通信优化,DeepSeek-V2的训练可以达到相对较高的模型FLOPs利用率(MFU)。在我们H800集群的实际训练中,每训练一万亿tokens,DeepSeek 67B需要300.6K GPU小时,而DeepSeek-V2仅需172.8K GPU小时,即稀疏的DeepSeek-V2相比密集的DeepSeek 67B可以节省42.5%的训练成本。
推理效率。为了高效部署DeepSeek-V2提供服务,我们首先将其参数转换为FP8精度。此外,我们还对DeepSeek-V2执行KV缓存量化(Hooper等人, 2024; Zhao等人, 2023),以进一步将KV缓存中的每个元素平均压缩为6位。得益于MLA和这些优化,实际部署的DeepSeek-V2所需的KV缓存比DeepSeek 67B显著减少,因此可以服务更大的批大小。我们基于实际部署的DeepSeek 67B服务的提示和生成长度分布评估DeepSeek-V2的生成吞吐量。在配备8个H800 GPU的单个节点上,DeepSeek-V2实现了超过50K tokens/秒的生成吞吐量,这是DeepSeek 67B最大生成吞吐量的5.76倍。此外,DeepSeek-V2的提示输入吞吐量超过100K tokens/秒。
4. 对齐
4.1. 监督微调
基于我们之前的研究(DeepSeek-AI, 2024),我们整理了包含150万实例的指令微调数据集,其中包括120万实例用于有用性,30万实例用于安全性。与初始版本相比,我们提高了数据质量,以减少幻觉响应并增强写作能力。我们对DeepSeek-V2进行了2轮微调,学习率设置为5×10−65\times10^{-6}5×10−6。对于DeepSeek-V2 Chat(SFT)的评估,我们主要包含基于生成的基准测试,除了几个代表性的多项选择任务(MMLU和ARC)。我们还使用提示级别宽松准确率作为指标,对DeepSeek-V2 Chat(SFT)进行了指令跟随评估(IFEval)(Zhou等人,2023)。此外,我们使用2023年9月1日至2024年4月1日的LiveCodeBench(Jain等人,2024)问题来评估聊天模型。除了标准基准外,我们还在开放式对话基准上进一步评估了我们的模型,包括MT-Bench(Zheng等人,2023)、AlpacaEval 2.0(Dubois等人,2024)和AlignBench(Liu等人,2023)。为了比较,我们还在我们的评估框架和设置中评估了Qwen1.5 72B Chat、LLaMA-3-70B Instruct和Mistral-8x22B Instruct。对于DeepSeek 67B Chat,我们直接参考了我们在先前版本中报告的评估结果。
4.2. 强化学习
为了进一步释放DeepSeek-V2的潜力并使其与人类偏好对齐,我们进行了强化学习(RL)来调整其偏好。
强化学习算法。为了节省RL的训练成本,我们采用组相对策略优化(GRPO)(Shao等人,2024),它放弃了通常与策略模型大小相同的评论模型,而是从组分数中估计基线。具体来说,对于每个问题q,GRPO从旧策略πθold\pi_{\theta_{old}}πθold中采样一组输出{o1,o2,⋯ ,oG}\{o_{1},o_{2},\cdots,o_{G}\}{o1,o2,⋯,oG},然后通过最大化以下目标来优化策略模型πθ\pi_{\theta}πθ:
JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O∣q)]1G∑i=1G(min(πθ(oi∣q)πθold(oi∣q)Ai,clip(πθ(oi∣q)πθold(oi∣q),1−ε,1+ε)Ai)−βDKL(πθ∣∣πref)),\begin{align*}\mathcal{J}_{GRPO}(\theta)&=\mathbb{E}[q\sim P(Q),\{o_i\}_{i=1}^G\sim\pi_{\theta_{old}}(O|q)]\\&\frac{1}{G}\sum_{i=1}^G\left(\min\left(\frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{old}}(o_i|q)}A_i,\operatorname{clip}\left(\frac{\pi_{\theta}(o_i|q)}{\pi_{\theta_{old}}(o_i|q)},1-\varepsilon,1+\varepsilon\right)A_i\right)-\beta\mathbb{D}_{KL}\left(\pi_{\theta}||\pi_{ref}\right)\right),\end{align*}JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O∣q)]G1i=1∑G(min(πθold(oi∣q)πθ(oi∣q)Ai,clip(πθold(oi∣q)πθ(oi∣q),1−ε,1+ε)Ai)−βDKL(πθ∣∣πref)),
DKL(πθ∣∣πref)=πref(oi∣q)πθ(oi∣q)−logπref(oi∣q)πθ(oi∣q)−1,\mathbb{D}_{KL}\left(\pi_{\theta}||\pi_{ref}\right)=\frac{\pi_{ref}(o_{i}|q)}{\pi_{\theta}(o_{i}|q)}-\log\frac{\pi_{ref}(o_{i}|q)}{\pi_{\theta}(o_{i}|q)}-1,DKL(πθ∣∣πref)=πθ(oi∣q)πref(oi∣q)−logπθ(oi∣q)πref(oi∣q)−1,
其中ε和β\betaβ是超参数;AiA_{i}Ai是优势,使用一组奖励{r1,r2,⋯ ,rG}\{r_{1},r_{2},\cdots,r_{G}\}{r1,r2,⋯,rG}计算,对应于每组内的输出:
Ai=ri−mean({r1,r2,⋯ ,rG})std({r1,r2,⋯ ,rG}).A_{i}=\frac{r_{i}-\mathrm{mean}\big(\big\{r_{1},r_{2},\cdots,r_{G}\big\}\big)}{\mathrm{std}\big(\big\{r_{1},r_{2},\cdots,r_{G}\big\}\big)}.Ai=std({r1,r2,⋯,rG})ri−mean({r1,r2,⋯,rG}).
训练策略。在我们的初步实验中,我们发现基于推理数据(如代码和数学提示)的RL训练表现出与基于一般数据训练不同的独特特征。例如,我们模型的数学和编码能力可以在更长的训练步骤中持续提高。因此,我们采用两阶段RL训练策略,首先进行推理对齐,然后进行人类偏好对齐。在第一阶段推理对齐中,我们为代码和数学推理任务训练奖励模型RMreasoningRM_{reasoning}RMreasoning,并使用RMreasoningRM_{reasoning}RMreasoning的反馈优化策略模型:
ri=RMreasoning(oi).r_{i}=RM_{reasoning}\big(o_{i}\big).ri=RMreasoning(oi).
在第二阶段人类偏好对齐中,我们采用多奖励框架,从有用奖励模型RMhelpfulRM_{helpful}RMhelpful、安全奖励模型RMsafetyRM_{safety}RMsafety和基于规则的奖励模型RMruleRM_{rule}RMrule获取奖励。响应oio_{i}oi的最终奖励为:
ri=c1⋅RMhelpful(oi)+c2⋅RMsafety(oi)+c3⋅RMrule(oi),r_{i}=c_{1}\cdot RM_{helpful}\big(o_{i}\big)+c_{2}\cdot RM_{safety}\big(o_{i}\big)+c_{3}\cdot RM_{rule}\big(o_{i}\big),ri=c1⋅RMhelpful(oi)+c2⋅RMsafety(oi)+c3⋅RMrule(oi),
其中c1,c2,c_{1},c_{2},c1,c2,和c3c_{3}c3是相应的系数。
为了获得在RL训练中起关键作用的可靠奖励模型,我们仔细收集偏好数据,并精心进行质量过滤和比例调整。我们基于编译器反馈获取代码偏好数据,基于真实标签获取数学偏好数据。对于奖励模型训练,我们使用DeepSeek-V2 Chat(SFT)初始化奖励模型,并使用点对点或成对损失进行训练。在我们的实验中,我们观察到RL训练可以完全挖掘并激活我们模型的潜力,使其能够从可能的响应中选择正确且令人满意的答案。
训练效率优化。在极大模型上进行RL训练对训练框架提出了高要求。它需要仔细的工程优化来管理GPU内存和RAM压力,同时保持快速的训练速度。为了实现这一目标,我们实施了以下工程优化。(1)首先,我们提出了一种混合引擎,为训练和推理分别采用不同的并行策略,以实现更高的GPU利用率。(2)其次,我们利用具有大批次的vLLM(Kwon等人,2023)作为我们的推理后端,以加速推理速度。(3)第三,我们精心设计了将模型卸载到CPU并重新加载到GPU的调度策略,这在训练速度和内存消耗之间实现了近乎最优的平衡。
4.3. 评估结果
标准基准上的评估。首先,我们在标准基准上评估DeepSeek-V2 Chat(SFT)和DeepSeek-V2 Chat(RL)。值得注意的是,与基础版本相比,DeepSeek-V2 Chat(SFT)在GSM8K、MATH和HumanEval评估中表现出显著改进。这一进展可归因于我们的SFT数据包含了大量与数学和代码相关的内容。此外,DeepSeek-V2 Chat(RL)进一步提升了数学和代码基准的性能。我们在附录F中展示了更多代码和数学评估。
关于与其他模型的比较,我们首先将DeepSeek-V2 Chat(SFT)与Qwen1.5 72B Chat进行比较,发现DeepSeek-V2 Chat(SFT)在几乎所有英语、数学和代码基准上都超过了Qwen1.5 72B Chat。在中文基准上,DeepSeek-V2 Chat(SFT)在多学科多项选择任务上的分数略低于Qwen1.5 72B Chat,这与从它们基础版本观察到的性能一致。当与最先进的开源MoE模型Mixtral 8x22B Instruct相比时,DeepSeek-V2 Chat(SFT)在大多数基准上表现更好,除了NaturalQuestions和IFEval。此外,与最先进的开源模型LLaMA3 70B Chat相比,DeepSeek-V2 Chat(SFT)在与代码和数学相关的基准上表现出相似的性能。LLaMA3 70B Chat在MMLU和IFEval上表现更好,而DeepSeek-V2 Chat(SFT)在中文任务上表现出更强的性能。最终,DeepSeek-V2 Chat(RL)与DeepSeek-V2 Chat(SFT)相比,在数学和代码任务上表现出进一步增强的性能。这些比较突显了DeepSeek-V2 Chat在各种领域和语言中与其他语言模型相比的优势。
开放式生成评估。我们在开放式对话基准上继续对我们的模型进行额外评估。对于英语开放式对话生成,我们使用MT-Bench和AlpacaEval 2.0作为基准。表4中显示的评估结果表明,DeepSeek-V2 Chat(RL)在DeepSeek-V2 Chat(SFT)上表现出显著的性能优势。这一结果展示了我们RL训练在实现改进对齐方面的有效性。与其他开源模型相比,DeepSeek-V2 Chat(RL)在两个基准上都优于Mistral 8x22B Instruct和Qwen1.5 72B Chat。与LLaMA3 70B Instruct相比,DeepSeek-V2 Chat(RL)在MT-Bench上表现出具有竞争力的性能,并在AlpacaEval 2.0上显著优于它。这些结果突显了DeepSeek-V2 Chat(RL)在生成高质量和上下文相关响应方面的强大性能,特别是在基于指令的对话任务中。
此外,我们基于AlignBench评估中文开放式生成能力。如表5所示,DeepSeek-V2 Chat(RL)相比DeepSeek-V2 Chat(SFT)表现出轻微优势。值得注意的是,DeepSeek-V2 Chat(SFT)显著超过了所有开源中文模型。它在中文推理和语言方面显著优于排名第二的开源模型Qwen1.5 72B Chat。此外,DeepSeek-V2 Chat(SFT)和DeepSeek-V2 Chat(RL)都超过了GPT-4-0613和ERNIEBot 4.0,巩固了我们的模型在支持中文的顶级LLM中的地位。具体来说,DeepSeek-V2 Chat(RL)在中文语言理解方面表现出色,超过了包括GPT-4-Turbo-1106-Preview在内的所有模型。另一方面,DeepSeek-V2 Chat(RL)的推理能力仍然落后于大型模型,如Erniebot-4.0和GPT-4。
SFT数据量。关于大型SFT语料库必要性的讨论一直是一个激烈争论的话题。先前的研究(Young等人,2024;Zhou等人,2024)认为,少于10K实例的SFT数据足以产生令人满意的结果。然而,在我们的实验中,如果我们使用少于10K实例,我们在IFEval基准上观察到显著的性能下降。可能的解释是,语言模型需要一定量的数据来发展特定技能。虽然所需数据量可能随着模型大小的增加而减少,但它不能完全消除。我们的观察强调了为LLM提供所需能力所需充足数据的关键需求。此外,SFT数据的质量也很重要,特别是对于涉及写作或开放式问题的任务。
强化学习的对齐税。在人类偏好对齐过程中,我们观察到在AI和人类评估者评分的开放式生成基准上,性能显著提升。然而,我们也注意到"对齐税"(Ouyang等人,2022)现象,即对齐过程可能会对某些标准基准(如BBH)的性能产生负面影响。为了缓解对齐税,在RL阶段,我们在数据处理和改进训练策略方面做出了重大努力,最终在标准和开放式基准的性能之间实现了可接受的权衡。探索如何在不损害其一般性能的情况下将模型与人类偏好对齐,是未来研究的一个有价值的方向。
在线强化学习。在我们的偏好对齐实验中,我们发现在线方法明显优于离线方法。因此,我们投入巨大努力实施在线RL框架,以对齐DeepSeek-V2。关于在线或离线偏好对齐的结论可能在不同背景下有所不同,我们将对它们之间更全面的比较和分析留待未来工作。
5. 结论、局限性与未来工作
在本文中,我们介绍了DeepSeek-V2,一个支持128K上下文长度的大型MoE语言模型。除了强大的性能外,它还以其经济高效的训练和推理为特点,这得益于其创新架构,包括MLA和DeepSeekMoE。实际上,与DeepSeek 67B相比,DeepSeek-V2实现了显著更强的性能,同时节省了42.5%的训练成本,将KV缓存减少了93.3%,并将最大生成吞吐量提升至5.76倍。评估结果进一步表明,即使仅激活21B参数,DeepSeek-V2也在开源模型中实现了顶级性能,并成为最强的开源MoE模型。
DeepSeek-V2及其聊天版本与其他LLM共享公认的局限性,包括预训练后缺乏持续的知识更新、可能生成未经验证的建议等非事实信息,以及产生幻觉的可能性。此外,由于我们的数据主要由中文和英文内容组成,我们的模型在其他语言方面可能表现出有限的能力。在超出中文和英文的场景中,应谨慎使用。
DeepSeek将长期投资于开源大型模型,旨在逐步接近通用人工智能的目标。
在我们持续的探索中,我们致力于设计方法,使MoE模型能够进一步扩展,同时保持经济高效的训练和推理成本。我们下一步的目标是在即将发布的版本中实现与GPT-4相当的性能。
我们的对齐团队不断努力提升我们的模型,旨在开发不仅有用而且对全球用户诚实和安全的模型。我们的最终目标是将模型的价值观与人类价值观对齐,同时最小化对人类监督的需求。通过优先考虑伦理考虑和负责任的开发,我们致力于为社会创造积极和有益的影响。
目前,DeepSeek-V2设计为仅支持文本模态。在我们前瞻性的议程中,我们打算使我们的模型支持多模态,增强其在更广泛场景中的多功能性和实用性。
附录 A. 贡献与致谢
研究与工程
Aixin Liu
Bingxuan Wang
Bo Liu
Chenggang Zhao
Chengqi Deng
Chong Ruan
Damai Dai
Daya Guo
Dejian Yang
Deli Chen
Erhang Li
Fangyun Lin
Fuli Luo
Guangbo Hao
Guanting Chen
Guowei Li
H. Zhang
Hanwei Xu
Hao Yang
Haowei Zhang
Honghui Ding
Huajian Xin
Huazuo Gao
Hui Qu
Jianzhong Guo
Jiashi Li
Jingyang Yuan
Junjie Qiu
Junxiao Song
Kai Dong
Kaige Gao
Kang Guan
Lean Wang
Lecong Zhang
Liang Zhao
Liyue Zhang
Mingchuan Zhang
Minghua Zhang
Minghui Tang
Panpan Huang
Peiyi Wang
Qihao Zhu
Qinyu Chen
Qiushi Du
Ruiqi Ge
Ruizhe Pan
Runxin Xu
Shanghao Lu
Shangyan Zhou
Shanhuang Chen
Shengfeng Ye
Shirong Ma
Shiyu Wang
Shuiping Yu
Shunfeng Zhou
Size Zheng
Tian Pei
Wangding Zeng
Wen Liu
Wenfeng Liang
Wenjun Gao
Wentao Zhang
Xiao Bi
Xiaohan Wang
Xiaodong Liu
Xiaokang Chen
Xiaotao Nie
Xin Liu
Xin Xie
Xingkai Yu
Xinyu Yang
Xuan Lu
Xuecheng Su
Y.Wu
Y.K. Li
Y.X. Wei
Yanhong Xu
Yao Li
Yao Zhao
Yaofeng Sun
Yaohui Wang
Yichao Zhang
Yiliang Xiong
Yilong Zhao
Ying He
Yishi Piao
Yixin Dong
Yixuan Tan
Yiyuan Liu
Yongji Wang
Yongqiang Guo
Yuduan Wang
Yuheng Zou
Yuxiang You
Yuxuan Liu
Z.Z. Ren
Zehui Ren
Zhangli Sha
Zhe Fu
Zhenda Xie
Zhewen Hao
Zhihong Shao
Zhuoshu Li
Zihan Wang
Zihui Gu
Zilin Li
Ziwei Xie
Zhipeng Xu
Zhongyu Zhang
业务与合规
Bin Wang
Dongjie Ji
Jian Liang
Jin Chen
Leyi Xia
Miaojun Wang
Mingming Li
Peng Zhang
Shaoqing Wu
Shengfeng Ye
T. Wang
W.L. Xiao
Wei An
Xianzu Wang
Ying Tang
Yukun Zha
Yuting Yan
Zhen Zhang
Zhiniu Wen
数据标注
Bei Feng
Hui Li
J.L. Cai
Jiaqi Ni
Lei Xu
Meng Li
Ning Tian
R.J. Chen
R.L. Jin
Ruyi Chen
S.S. Li
Shuang Zhou
Tian Yuan
Tianyu Sun
X.Q. Li
Xiangyue Jin
Xiaojin Shen
Xiaosha Chen
Xiaowen Sun
Xiaoxiang Wang
Xinnan Song
Xinyi Zhou
Y.X. Zhu
Yanhong Xu
Yanping Huang
Yaohui Li
Yi Zheng
Yuchen Zhu
Yunxian Ma
Zhen Huang
在每个角色中,作者按名字首字母顺序排列。特别地,Huazuo Gao和Wangding Zeng在MLA架构的研究中做出了关键创新。此外,我们要感谢Jianlin Su就位置嵌入进行的有益讨论。我们感谢所有为DeepSeek-V2做出贡献但未在论文中提及的人士。DeepSeek相信,创新、新颖和好奇心是通往AGI道路上必不可少的要素。
B. DeepSeek-V2-Lite:配备MLA和DeepSeekMoE的16B模型
B.1 模型描述
架构。DeepSeek-V2-Lite有27层,隐藏维度为2048。它也采用MLA,有16个注意力头,每个头的维度为128。其KV压缩维度为512,但与DeepSeek-V2略有不同,它不压缩查询。对于解耦查询和键,它具有每头维度64。DeepSeek-V2-Lite也采用DeepSeekMoE,除第一层外的所有FFN都被替换为MoE层。每个MoE层由2个共享专家和64个路由专家组成,其中每个专家的中间隐藏维度为1408。在路由专家中,每个token将激活6个专家。在此配置下,DeepSeek-V2-Lite包含15.7B总参数,其中每个token激活2.4B参数。
训练细节。DeepSeek-V2-Lite也是从头开始在与DeepSeek-V2相同的预训练语料库上训练的,该语料库未被任何SFT数据污染。它使用AdamW优化器,超参数设置为β1=0.9,β2=0.95,\beta_{1}=0.9,\beta_{2}=0.95,β1=0.9,β2=0.95,,权重衰减为0.1。学习率使用预热和逐步衰减策略进行调度。最初,学习率在前2K步线性增加到最大值。随后,在训练约80%的tokens后,学习率乘以0.316,再次在训练约90%的tokens后乘以0.316。最大学习率设置为4.2×10−44.2\times10^{-4}4.2×10−4,梯度裁剪范数设置为1.0。我们不为其采用批大小调度策略,而是以4608个序列的恒定批大小进行训练。在预训练期间,我们将最大序列长度设置为4K,并在5.7T tokens上训练DeepSeek-V2-Lite。我们利用流水线并行将它的不同层部署在不同设备上,但对于每一层,所有专家将部署在同一设备上。因此,我们仅为其采用较小的专家级平衡损失(α1=0.001\alpha_{1}=0.001α1=0.001),不采用设备级平衡损失和通信平衡损失。预训练后,我们还对DeepSeek-V2-Lite执行长上下文扩展和SFT,得到一个名为DeepSeek-V2-Lite Chat的聊天模型。
B.2 性能评估
基础模型。我们在表6中评估DeepSeek-V2-Lite的性能,并将其与我们之前的小型基础模型进行比较。DeepSeek-V2-Lite表现出压倒性的性能优势,特别是在推理、编码和数学方面。
聊天模型。我们在表7中评估DeepSeek-V2-Lite Chat的性能,并将其与我们之前的小型聊天模型进行比较。DeepSeek-V2-Lite也大幅优于我们之前的小型聊天模型。
C. MLA完整公式
为了展示MLA的完整计算过程,我们在下文中提供其完整公式:
ctQ=WDQht,\mathbf{c}_{t}^{Q}=W^{D Q}\mathbf{h}_{t},ctQ=WDQht,
[qt,1C;qt,2C;...;qt,nhC]=qtC=WUQctQ,\lbrack\mathbf{q}_{t,1}^{C};\mathbf{q}_{t,2}^{C};...;\mathbf{q}_{t,n_{h}}^{C}]=\mathbf{q}_{t}^{C}=W^{U Q}\mathbf{c}_{t}^{Q},[qt,1C;qt,2C;...;qt,nhC]=qtC=WUQctQ,
[qt,1R;qt,2R;...;qt,nhR]=qtR=RoPE(WQRctQ),[\mathbf{q}_{t,1}^{R};\mathbf{q}_{t,2}^{R};...;\mathbf{q}_{t,n_{h}}^{R}]=\mathbf{q}_{t}^{R}=\mathrm{RoPE}(W^{Q R}\mathbf{c}_{t}^{Q}),[qt,1R;qt,2R;...;qt,nhR]=qtR=RoPE(WQRctQ),
qt,i=[qt,iC;qt,iR],\begin{array}{r}{\mathbf{q}_{t,i}=[\mathbf{q}_{t,i}^{C};\mathbf{q}_{t,i}^{R}],}\end{array}qt,i=[qt,iC;qt,iR],
ctKV=WDKVht,\boxed{\mathbf{c}_{t}^{K V}}=W^{D K V}\mathbf{h}_{t},ctKV=WDKVht,
[kt,1C;kt,2C;...;kt,nhC]=ktC=WUKctKV,[\mathbf{k}_{t,1}^{C};\mathbf{k}_{t,2}^{C};...;\mathbf{k}_{t,n_{h}}^{C}]=\mathbf{k}_{t}^{C}=W^{U K}\mathbf{c}_{t}^{K V},[kt,1C;kt,2C;...;kt,nhC]=ktC=WUKctKV,
ktR=RoPE(WKRht),\boxed{\mathbf{k}_{t}^{R}}=\mathrm{RoPE}(W^{K R}\mathbf{h}_{t}),ktR=RoPE(WKRht),
kt,i=[kt,iC;ktR],\mathbf{k}_{t,i}=[\mathbf{k}_{t,i}^{C};\mathbf{k}_{t}^{R}],kt,i=[kt,iC;ktR],
[vt,1C;vt,2C;...;vt,nhC]=vtC=WUVctKV,\begin{array}{r}{\big[\mathbf{v}_{t,1}^{C};\mathbf{v}_{t,2}^{C};...;\mathbf{v}_{t,n_{h}}^{C}\big]=\mathbf{v}_{t}^{C}=W^{U V}\mathbf{c}_{t}^{K V},}\end{array}[vt,1C;vt,2C;...;vt,nhC]=vtC=WUVctKV,
ot,i=∑j=1tSoftmaxj(qt,iTkj,idh+dhR)vj,iC,\mathbf{o}_{t,i}=\sum_{j=1}^{t}\mathrm{Softmax}_{j}(\frac{\mathbf{q}_{t,i}^{T}\mathbf{k}_{j,i}}{\sqrt{d_{h}+d_{h}^{R}}})\mathbf{v}_{j,i}^{C},ot,i=j=1∑tSoftmaxj(dh+dhRqt,iTkj,i)vj,iC,
ut=WO[ot,1;ot,2;...;ot,nh],\mathbf{u}_{t}=W^{O}\big[\mathbf{o}_{t,1};\mathbf{o}_{t,2};...;\mathbf{o}_{t,n_{h}}\big],ut=WO[ot,1;ot,2;...;ot,nh],
其中蓝色框中的向量需要缓存以用于生成。在推理过程中,朴素公式需要从ctKV\mathbf{c}_{t}^{K V}ctKV恢复ktC\mathbf{k}_{t}^{C}ktC和vtC\mathbf{v}_{t}^{C}vtC以用于注意力计算。幸运的是,由于矩阵乘法的结合律,我们可以将WUKW^{U K}WUK吸收到WUQW^{U Q}WUQ中,将WUVW^{U V}WUV吸收到WOW^{O}WO中。因此,我们不需要为每个查询计算出键和值。通过此优化,我们避免了在推理过程中重新计算ktC\mathbf{k}_{t}^{C}ktC和vtC\mathbf{v}_{t}^{C}vtC的计算开销。
D. 注意力机制消融实验
D.1 MHA、GQA和MQA消融
我们在表8中展示了在四个困难基准上使用MHA、GQA和MQA的7B密集模型的评估结果。所有这三个模型都在1.33T tokens上训练,并且除了注意力机制外共享相同的架构。此外,为了公平比较,我们通过调整层数将它们的参数数量对齐到约7B。从表中,我们可以发现MHA在这些基准上明显优于GQA和MQA。
D.2 MLA与MHA比较
在表9中,我们展示了分别配备MLA和MHA的MoE模型在四个困难基准上的评估结果。为了得出可靠的结论,我们在两个规模上训练和评估模型。两个小型MoE模型包含约16B总参数,我们在1.33T tokens上训练它们。两个大型MoE模型包含约250B总参数,我们在420B tokens上训练它们。此外,两个小型MoE模型和两个大型MoE模型分别共享相同的架构,除了注意力机制。从表中,我们可以观察到MLA比MHA表现更好。更重要的是,MLA所需的KV缓存量(小型MoE模型为14%,大型MoE模型为4%)比MHA显著减少。
E. 关于预训练数据去偏的讨论
在预训练数据准备过程中,我们识别并过滤掉有争议的内容,例如受区域文化影响的价值观,以避免我们的模型在这些有争议的话题上表现出不必要的主观偏见。因此,我们观察到DeepSeek-V2在与特定区域文化密切相关的测试集上表现略差。例如,在MMLU上评估时,尽管DeepSeek-V2在大多数测试集上与Mixtral 8x22B等竞争对手相比表现相当或更优,但在与美国价值观主要相关的Humanity-Moral子集上仍然落后。
此外,我们对该子集进行了人工分析。三位受过良好教育的人类标注者对MMLU Humanity-Moral子集中的420个道德场景进行独立标注。然后,我们计算他们标注与真实标签之间的一致性。如表10所示,三位人类标注者和真实标签彼此之间表现出较低的一致性。因此,我们将DeepSeek-V2在这些价值敏感测试集上的异常性能归因于我们在预训练语料库去偏方面的努力。
F. 数学和代码的额外评估
评估使用了SC-Math6语料库,该语料库包含数千个中文数学问题。DeepSeek-V2 Chat(RL)优于所有中文LLM,包括开源和闭源模型。
我们在图5中进一步分享了HumanEval和LiveCodeBench的更多结果,其中LiveCodeBench的问题选自2023年9月1日至2024年4月1日。如图所示,DeepSeek-V2 Chat(RL)在LiveCodeBench上表现出相当熟练的能力,其Pass@1分数甚至超过了某些大型模型。这一表现突显了DeepSeek-V2 Chat(RL)在处理实时编码任务方面的强大能力。
G. 评估格式
我们分别在表12-37中展示了每个基准的评估格式。
表12 | AGIEval的一个示例。