备注:回顾看过的论文,对目前看过的DeepSeek-V2进行整理在此总结(注:笔者水平有限,若有描述不当之处,欢迎大家留言。后期会继续更新LLM系列,文生图系列,VLM系列,agent系列等。如果看完有收获,可以【点赞】【收藏】【加粉】)

阐述的思维逻辑:会给出论文中的核心点和核心点的描述。   

一句话总结:DeepSeek-V2 是一个追求“强性能、高经济性、高效率”的混合专家(MoE)语言模型,其核心创新集中在对**注意力机制(MLA)前馈网络(DeepSeekMoE)**的彻底革新上,以实现参数效率和推理效率的飞跃

技术亮点

1 多头潜注意力(Multi-head Latent Attention, MLA):MLA 是 DeepSeek-V2 区别于其他 MoE 模型(如 Mixtral)的最主要技术创新,旨在解决长上下文推理的内存(KV Cache)瓶颈。

  • 机制:MLA 将传统的 Key (K) 和 Query (Q) 投影分解为两个低秩组件:

        低秩组件(Latent Component):通过低秩投影捕捉序列中的通用、冗余信息,并进行跨层共享,大幅降低存储密度。

        密集组件(Dense Component):用于保留局部或特定于上下文的精细信息。

  • KV Cache 压缩:通过这种解耦和低秩表示,MLA 极大地压缩了 KV Cache 的规模。论文显示,DeepSeek-V2 的 KV Cache 大小仅为同等 Dense 模型或标准 MHA 模型的约 1/4 到 1/2.8,显著降低了长上下文推理的显存占用和推理延迟。

MoE 与 MLA 的高效融合:DeepSeek-V2 采用了一种结合了专家混合(MoE)和新型注意力机制(MLA)的创新架构,实现了参数总量与实际计算量的高效分离。

  • 参数规模与稀疏性:DeepSeek-V2 的总参数规模高达 2360 亿(236B),但每个 Token 实际激活的参数量仅为 210 亿(21B)。这种极高的稀疏性是实现低计算成本的基础。

  • MoE 继承:继承了 DeepSeekMoE 中细粒度专家切分和共享/路由专家隔离的核心设计,确保了模型的知识专精化和参数的高效利用。

备注:后续为机器翻译·

摘要

        我们发布了 DeepSeek-V2,这是一款具有经济化训练与高效推理特点的强大 Mixture-of-Experts(MoE)语言模型。其总参数量为 2360 亿,其中每个 token 仅激活 210 亿 参数,并支持 128K tokens 的上下文长度。DeepSeek-V2 采用了包括多头潜在注意力(MLA)和DeepSeekMoE 【2】在内的创新架构。MLA 通过将 Key-Value(KV)缓存显著压缩为潜在向量,保证了高效推理;而 DeepSeekMoE 则通过稀疏计算,使大模型的训练以更低成本完成。与DeepSeek 67B 相比,DeepSeek-V2 在显著提升性能的同时,节省了 42.5% 的训练成本、减少了 93.3% 的 KV 缓存、并将最大生成吞吐提升了 5.76 倍。我们在包含 8.1 万亿 tokens 的高质量、多来源语料上预训练了 DeepSeek-V2,并进一步进行**监督微调(SFT)和强化学习(RL)**以充分释放其潜力。评估结果显示,即便每次仅激活 210 亿参数,DeepSeek-V2 及其聊天版本仍在开源模型中取得了顶级表现。模型检查点可在
https://github.com/deepseek-ai/DeepSeek-V2 获取。

一 介绍

       在过去的几年中,大型语言模型(LLMs)(Anthropic, 2023;Google, 2023;OpenAI, 2022, 2023)快速发展,让我们看到了通用人工智能(AGI)曙光的初现。总体而言,LLM 的智能水平往往会随着参数规模的提升而提高,使其能够在各种任务中展现出涌现能力(Wei et al., 2022)。然而,这种提升往往伴随着训练所需计算资源的增长,并可能导致推理吞吐量下降。这些限制为 LLM 的广泛部署和应用带来了显著挑战。为了解决这一问题,我们提出了 DeepSeek-V2,一款强大的开源 Mixture-of-Experts(MoE)语言模型,其特征是通过创新的 Transformer 架构实现经济化训练与高效推理。它拥有 2360 亿 总参数,其中 210 亿 在每个 token 上被激活,并支持 128K tokens 的上下文长度。

        我们在 Transformer 框架(Vaswani et al., 2017)中优化了注意力模块与前馈网络(FFN),提出了 Multi-head Latent Attention(MLA)与 DeepSeekMoE。(1)在注意力机制方面,多头注意力(MHA)(Vaswani et al., 2017)的 Key-Value(KV)缓存成为 LLM 推理效率的主要瓶颈。已有多种方法尝试解决这一问题,包括 Grouped-Query Attention(GQA)(Ainslie et al., 2023)与 Multi-Query Attention(MQA)(Shazeer, 2019)。但这些方法在减少 KV 缓存时往往会牺牲模型性能。为了同时获得性能与效率,我们提出了 MLA,这是一种具备低秩 Key-Value 联合压缩能力的注意力机制。实验表明,MLA 在性能上优于 MHA,同时在推理阶段显著压缩 KV 缓存,从而大幅提升推理效率。(2)在前馈网络(FFN)方面,我们采用了 DeepSeekMoE 架构(Dai et al., 2024),其使用细粒度专家切分与共享专家隔离机制,以增强专家专精能力。与传统 MoE 架构如 GShard(Lepikhin et al., 2021)相比,DeepSeekMoE 显示出显著优势,使我们能以更低成本训练出强大模型。由于训练过程中采用了专家并行,我们还设计了额外机制以控制通信开销并确保负载均衡。结合以上两项技术,DeepSeek-V2 同时具备强性能(Figure 1(a))、经济化训练成本以及高效推理吞吐(Figure 1(b))。

图 1(a) 不同开源模型的 MMLU 准确率与激活参数的关系。(b)DeepSeek 67B(Dense)和DeepSeek-V2 的训练成本和推理效率。

        我们构建了一个由 8.1 万亿 tokens 组成的高质量、多来源预训练语料库。与 DeepSeek 67B(我们的前一版本)(DeepSeek-AI, 2024)相比,本语料库在数据规模(尤其是中文数据)与质量上均有显著提升。我们首先在完整预训练语料上预训练 DeepSeek-V2,然后收集 150 万 条跨领域对话(包括数学、代码、写作、推理、安全等),对模型进行监督微调(SFT),形成 DeepSeek-V2 Chat(SFT)。最后,我们参考 DeepSeekMath(Shao et al., 2024),使用 Group Relative Policy Optimization(GRPO)进一步对齐模型,使之更符合人类偏好,得到 DeepSeek-V2 Chat(RL)。

        我们在大量中英文基准上评估了 DeepSeek-V2,并与代表性开源模型进行对比。结果显示,即便每次仅激活 210 亿参数,DeepSeek-V2 仍取得开源模型中的顶级性能,成为最强的开源 MoE 语言模型。Figure 1(a) 进一步展示,在 MMLU 基准上,DeepSeek-V2 以极少激活参数获得领先成绩。此外,Figure 1(b) 显示,与 DeepSeek 67B 相比,DeepSeek-V2 节省了 42.5% 的训练成本,减少了 93.3% 的 KV 缓存,并将最大生成吞吐提升了 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 的结果进一步表明其中文能力超过所有开源模型,甚至优于大多数闭源模型。

        为了进一步推动 MLA 与 DeepSeekMoE 的研究与应用,我们还开源了 DeepSeek-V2-Lite,这是一个更小但仍采用 MLA 与 DeepSeekMoE 的模型,总参数为 157 亿,其中 24 亿 在每个 token 上被激活。关于 DeepSeek-V2-Lite 的细节见附录 B。

        在本文其余部分中,我们将首先介绍 DeepSeek-V2 的模型架构(第 2 节)。随后介绍预训练过程,包括数据构建、超参设置、训练基础设施、长上下文扩展,以及性能与效率评估(第 3 节)。之后,我们展示对齐过程,包括 SFT、RL、评估与讨论(第 4 节)。最后,我们总结结论,讨论 DeepSeek-V2 当前的局限,并介绍未来工作(第 5 节)。

二 架构

        总体而言,DeepSeek-V2 仍基于 Transformer 架构(Vaswani et al., 2017),其中每个 Transformer Block 都包含一个注意力模块与一个前馈网络(FFN)。但在注意力与 FFN 这两个部分,我们均设计并采用了创新架构:在注意力部分,我们提出了 MLA,它利用低秩 Key-Value 联合压缩来解决推理阶段 KV 缓存成为瓶颈的问题,从而支持高效推理;在 FFN 方面,我们采用 DeepSeekMoE(Dai et al., 2024),这是一种高性能 MoE 架构,可让我们以更低的成本训练出强大的模型。DeepSeek-V2 的架构示意如 Figure 2 所示。本节将介绍 MLA 与 DeepSeekMoE 的细节。对于其他小的设置(如层归一化与 FFN 激活函数),除非特别说明,DeepSeek-V2 继承 DeepSeek 67B(DeepSeek-AI, 2024)的配置。

图2 展示了 DeepSeek-V2 的架构。MLA 通过显著减少生成所需的键值缓存来确保高效的推理,而DeepseekMoE 则通过稀疏架构以经济的成本训练强大的模型。
2.1 Multi-Head Latent Attention:提升推理效率

       传统 Transformer 模型通常采用 Multi-Head Attention(MHA)(Vaswani et al., 2017),但在生成阶段,庞大的 Key-Value(KV)缓存会成为推理效率的瓶颈。为减少 KV 缓存,研究者提出了 Multi-Query Attention(MQA)(Shazeer, 2019)与 Grouped-Query Attention(GQA)(Ainslie et al., 2023)。这些方法虽然显著减少了 KV 缓存,但性能往往无法达到 MHA(我们在附录 D.1 中提供了 MHA、GQA、MQA 的消融实验)。

        在 DeepSeek-V2 中,我们设计了新型注意力机制 —— Multi-head Latent Attention(MLA)。凭借低秩 Key-Value 联合压缩,MLA 不仅性能优于 MHA,而且所需 KV 缓存量显著更小。本节将介绍 MLA 的架构,并在附录 D.2 中提供 MLA 与 MHA 的对比。

2.1.1  预备知识:标准多头注意力

        我们首先回顾标准 MHA 机制作为背景。设 𝑑 为 embedding 维度,𝑛ℎ 为注意力头数量,𝑑ℎ 为每个头的维度,hₜ ∈ ℝᵈ 为第 𝑡 个 token 输入到某注意力层的向量。标准 MHA 首先通过三个矩阵 𝑊_Q、𝑊_K、𝑊_V ∈ ℝ^(𝑑ℎ𝑛ℎ×𝑑) 生成qₜ、kₜ、vₜ ∈ ℝ^(𝑑ℎ𝑛ℎ)分别为:

        然后,q𝑡 、k𝑡 、v𝑡 会被切分成 𝑛ℎ 个 head 以进行多头注意力计算:

        其中 q𝑡,𝑖、k𝑡,𝑖、v𝑡,𝑖 ∈ R𝑑ℎ 分别表示第 𝑖 个注意力头的 query、key 和 value;𝑊𝑂 ∈ R𝑑×𝑑ℎ𝑛ℎ 表示输出投影矩阵。在推理阶段,为了加速推理,所有 key 与 value 都需要被缓存,因此 MHA 需要为每个 token 缓存 2𝑛ℎ𝑑ℎ𝑙 个元素。实际部署中,这样巨大的 KV 缓存成为限制最大 batch size 与序列长度的主要瓶颈。

2.1.2 低秩 Key-Value 联合压缩

        MLA 的核心在于对 key 与 value 进行低秩联合压缩,以减少 KV cache:

        其中 c𝐾𝑉𝑡 ∈ R𝑑𝑐 是 key 和 value 的压缩潜向量;𝑑𝑐(≪ 𝑑ℎ𝑛ℎ)为 KV 压缩维度;𝑊𝐷𝐾𝑉 ∈ R𝑑𝑐×𝑑 为下投影矩阵;𝑊𝑈𝐾、𝑊𝑈𝑉 ∈ R𝑑ℎ𝑛ℎ×𝑑𝑐 分别为 key 和 value 的上投影矩阵。推理阶段,MLA 只需缓存 c𝐾𝑉𝑡,因此 KV cache 仅包含 𝑑𝑐𝑙 个元素,其中 𝑙 为层数。此外,由于在推理时 𝑊𝑈𝐾 可以吸收到 𝑊𝑄 中,而 𝑊𝑈𝑉 可以吸收到 𝑊𝑂 中,我们甚至无需显式计算注意力的 key 与 value。图 3 直观展示了 MLA 中的 KV 联合压缩如何减少 KV 缓存。

图 3 为多头注意力机制(MHA)、分组查询注意力机制 (GOA)、多查询注意力机制(MOA) 和多头潜在注意力机制(MLA) 的简化示意图。MLA 通过将键和值联合压缩成一个潜在向量,显著减少了推理过程中的键值缓存。

        此外,为了减少训练时的激活内存,我们对 query 也进行低秩压缩(尽管无法减少 KV cache):

        其中 c𝑄𝑡 ∈ R𝑑′𝑐 是 query 的压缩潜向量;𝑑′𝑐(≪ 𝑑ℎ𝑛ℎ)为 query 压缩维度;𝑊𝐷𝑄 ∈ R𝑑′𝑐×𝑑、𝑊𝑈𝑄 ∈ R𝑑ℎ𝑛ℎ×𝑑′𝑐 分别为 query 的下投影与上投影矩阵。

2.1.3. 解耦式 RoPE 位置编码

        延续 DeepSeek 67B (DeepSeek-AI, 2024),我们希望在 DeepSeek-V2 中使用 RoPE (Su et al., 2024)。然而,RoPE 与低秩 KV 压缩不兼容:具体来说,RoPE 对 key 与 query 都是位置敏感的;若对压缩后的 k𝐶𝑡 使用 RoPE,则 𝑊𝑈𝐾 会与位置敏感的 RoPE 矩阵耦合;因此在推理时 𝑊𝑈𝐾 无法继续吸收到 𝑊𝑄 中,因为 RoPE 矩阵与当前生成 token 的位置有关,矩阵乘法不满足交换律;结果就是推理时不得不重新计算所有前缀 token 的 key,大幅降低推理速度。

        作为解决方案,我们提出了解耦 RoPE(decoupled RoPE)策略,该策略使用额外的多头查询 q^R_{t,i} ∈ R^{d^R_h} 和一个共享的键 k^R_{t} ∈ R^{d^R_h} 来承载 RoPE,其中 d^R_h 表示解耦后的查询与键在每个注意力头中的维度。配备了解耦 RoPE 策略后,MLA 执行如下计算:

其中,W^{QR}\epsilon R^{d_{h}^{R}nh\times d_{c}^{,}}W^{KR}\epsilon R^{d_{h}^{R}\times d}是分别用于生成解耦(decoupled)查询(queries)和键(key)的矩阵;RoPE(.)表示应用旋转位置编码(RoPE matrices)的操作;而 [.; .]表示拼接操作(concatenation operation)。在推理(inference)过程中,解耦的键也需要被缓存。因此,DeepSeek-V2 总共需要一个包含(d_{c}+d_{h}^{R})l 个元素的 KV 缓存。

        为了展示 MLA(Multi-head Latent Attention,多头潜注意力)的完整计算过程,我们还在附录 C 中整理并提供了它的全部公式。

2.1.4 键值缓存比较

        我们在表1中展示了不同注意力机制之间每个令牌的KV缓存的比较。MLA只需要少量的KV缓存,相当于GQA只有2.25个组,但可以实现比MHA更强的性能。

表 1 | 不同注意力机制的每个 token 的 KV 缓存比较。$n_h$ 表示注意力头的数量,$d_h$ 表示每个注意力头的维度,$l$ 表示层数,$n_g$ 表示 GQA 中的组数,$d_c$ 和 $d_{R}^{h}$ 分别表示 KV 压缩维度和 MLA 中解耦查询和键的每个头的维度。KV 缓存的数量通过元素数量来衡量,忽略存储精度。对于 DeepSeek-V2,$d_c$ 设置为 $4d_h$,$d_{R}^{h}$ 设置为 $\frac{d_h}{2}$。因此,其 KV 缓存与 GQA 只有 2.25 组相等,但其性能强于 MHA。
2.2 DeepSeekMoE:以经济的成本训练强大的模型
2.2.1 基本架构

        对于FFN,我们采用DeepSeekMoE架构(Dai等人,2024)。DeepSeekMoE有两个关键思想:将专家细分为更细粒度的专家,以实现更高的专家专业化和更准确的知识获取,以及隔离一些共享专家,以减少路由专家之间的知识冗余。在激活参数和总专家参数数量相同的情况下,DeepSeekMoE可以大大优于GShard等传统MoE架构(Lepikhin等人,2021)。
        设 ut为第 t个令牌的 FFN 输入,我们计算FFN输出ht′ 如下:

     其中,$N_s$$N_r$ 分别表示共享专家和路由专家的数量;$FFN(s)i(\cdot)$$FFN(r)i(\cdot)$ 分别表示第$i$个共享专家和第$i$个路由专家;$K_r$表示激活的路由专家数量;$g{i,t}$是第 i个专家的门控值;$s{i,t}$ 是 token 到专家的亲和度;$e_i$是该层中第 i个路由专家的质心;Topk($\cdot$, $K$) 表示包含计算的 t号 token 和所有路由专家的亲和度得分中前 k个最高得分的集合。

 2.2.2 设备限制路由

        我们设计了一种设备限制路由机制来约束 MoE 相关的通信成本。当使用专家并行时,路由专家将分布在多个设备上。对于每个 token,其 MoE 相关的通信频率与目标专家所覆盖的设备数量成正比。由于 DeepSeekMoE 中专家的精细分段,激活的专家数量可能较大,因此如果应用专家并行,MoE 相关的通信成本将更高。

        对于 DeepSeek-V2,除了简单的 top-K 路由专家选择外,我们还确保每个 token 的目标专家最多会分布在 M个设备上。具体而言,对于每个 token,我们首先选择具有最高亲和度得分的 M个设备。然后,在这 M个设备上执行 top-K 选择。实际中我们发现,当 $M \geq 3$时,设备限制路由可以获得与不受限制的 top-K 路由相当的良好性能。

2.2.3 负载平衡的辅助损失

        我们在自动学习的路由策略中考虑了负载平衡。首先,不平衡的负载将增加路由崩溃的风险(Shazeer 等,2017),防止某些专家得到充分训练和利用。其次,当使用专家并行时,不平衡的负载将降低计算效率。在 DeepSeek-V2 的训练过程中,我们设计了三种辅助损失,用于分别控制专家级负载平衡($L_{ExpBal}$)、设备级负载平衡($L_{DevBal}$)和通信平衡($L_{CommBal}$)。

        专家级平衡损失。我们使用专家级平衡损失(Fedus 等,2021;Lepikhin 等,2021)来缓解路由崩溃的风险。

        其中,$\alpha_1$是一个超参数,称为专家级平衡因子;$1(\cdot)$表示指示函数;$T$表示序列中的 token 数量。

设备级平衡损失。除了专家级平衡损失,我们还设计了设备级平衡损失,以确保不同设备之间的计算平衡。在 DeepSeek-V2 的训练过程中,我们将所有路由专家划分为$D$个组 {E1, E2, ..., Eₖ},并将每个组部署到单个设备上。设备级平衡损失的计算方式如下:

        其中,$\alpha_2$是一个超参数,称为设备级平衡因子。

通信平衡损失。最后,我们引入了通信平衡损失,以确保每个设备的通信平衡。尽管设备限制路由机制保证了每个设备的发送通信是有界的,但如果某个设备接收的 token 数量超过其他设备,实际的通信效率也会受到影响。为了缓解这个问题,我们设计了如下的通信平衡损失:

        

        其中,$\alpha_3$是一个超参数,称为通信平衡因子。设备限制路由机制的操作原则是确保每个设备最多将 $M \times T$ 隐藏状态发送给其他设备。同时,通信平衡损失被用于鼓励每个设备从其他设备接收大约 $M \times T$隐藏状态。通信平衡损失保证了设备之间的信息交换平衡,促进了高效的通信。

2.2.4. Token Dropping 策略

        尽管负载平衡损失旨在促进负载的平衡,但需要意识到它们不能保证严格的负载平衡。为了进一步减轻因负载不平衡导致的计算浪费,我们在训练过程中引入了设备级的 token-dropping 策略。该方法首先计算每个设备的平均计算预算,这意味着每个设备的容量因子等于 1.0。然后,受到 Riquelme 等人(2021)的启发,我们在每个设备上丢弃亲和度最低的 token,直到达到计算预算。此外,我们确保约 10% 的训练序列中的 token 永远不会被丢弃。通过这种方式,我们可以根据效率需求灵活决定在推理过程中是否丢弃 token,并始终确保训练和推理的一致性。

三 预训练

3.1 实验设置
3.1.1 数据构建

        在保持与 DeepSeek 67B 相同的数据处理阶段的同时,我们扩展了数据量并提升了数据质量。为了扩大我们的预训练语料库,我们探索了互联网数据的潜力并优化了清洗过程,从而恢复了大量被错误删除的数据。此外,我们还加入了更多中文数据,旨在更好地利用中国互联网的语料库。除了数据量外,我们还注重数据质量。我们通过各种来源的高质量数据来丰富我们的预训练语料库,同时改进了基于质量的过滤算法。改进后的算法确保大量无用数据会被删除,而有价值的数据将大部分保留。此外,我们过滤掉了语料库中的有争议内容,以减轻特定地区文化带来的数据偏差。关于此过滤策略的影响,详见附录 E。

        我们采用与 DeepSeek 67B 相同的分词器,该分词器基于字节级字节对编码(BBPE)算法,词汇量为 100K。我们的分词预训练语料库包含 8.1T token,其中中文 token 数量大约比英文多 12%。

3.1.2. 超参数

        模型超参数:我们将 Transformer 层数设置为 60,隐藏维度设置为 5120。所有可学习的参数都随机初始化,标准差为 0.006。在 MLA 中,我们将注意力头数 $n_h$ 设置为 128,每个头的维度 $d_h$设置为 128。KV 压缩维度$d_c$设置为 512,查询压缩维度 $d'c$设置为 1536。对于解耦查询和键,我们将每个头的维度 $d{R}^{h}$设置为 64。按照 Dai 等人(2024)的做法,我们将除了第一层外的所有 FFN 替换为 MoE 层。每个 MoE 层由 2 个共享专家和 160 个路由专家组成,其中每个专家的中间隐藏维度为 1536。在路由专家中,每个 token 将激活 6 个专家。此外,低秩压缩和细粒度专家分段会影响层的输出规模。因此,在实际操作中,我们在压缩后的潜在向量之后使用额外的 RMS Norm 层,并在宽度瓶颈(即压缩后的潜在向量和路由专家的中间隐藏状态)上乘以额外的缩放因子,以确保稳定的训练。在此配置下,DeepSeek-V2 包含 236B 个总参数,其中 21B 个参数为每个 token 激活。

        训练超参数:我们使用 AdamW 优化器(Loshchilov 和 Hutter,2017),超参数设置为 $\beta_1 = 0.9$$\beta_2 = 0.95$权重衰减为 0.1。学习率采用 warmup-and-step-decay 策略(DeepSeek-AI,2024)。在前 2K 步期间,学习率从 0 线性增加到最大值。随后,在训练约 60% 的 token 后,学习率乘以 0.316,在训练约 90% 的 token 后再次乘以 0.316。最大学习率设置为 $2.4 \times 10^{-4}$,梯度裁剪的范数设置为 1.0。我们还使用批量大小调度策略,在训练前 225B token 时,批量大小从 2304 逐渐增加到 9216,然后在剩余训练中保持 9216。我们将最大序列长度设置为 4K,并在 8.1T token 上训练 DeepSeek-V2。我们利用流水线并行性将模型的不同层部署在不同的设备上,对于每一层,路由专家将均匀分布在 8 个设备上($D = 8$)。对于设备限制路由,每个 token 最多会被发送到 3 个设备($M = 3$)。对于平衡损失,我们将$\alpha_1$设置为 0.003,$\alpha_2$设置为 0.05,$\alpha_3$ 设置为 0.02。在训练过程中,我们采用 token-dropping 策略加速,但在评估时不丢弃任何 token。

3.1.3. 基础设施

        DeepSeek-V2 基于 HAI-LLM 框架(High-flyer,2023)进行训练,这是一种由我们工程师内部开发的高效轻量训练框架。它采用了 16 路零气泡流水线并行(Qi 等,2023)、8 路专家并行(Lepikhin 等,2021)和 ZeRO-1 数据并行(Rajbhandari 等,2020)。考虑到 DeepSeek-V2 激活的参数较少,并且部分运算通过重新计算以节省激活内存,因此可以在不需要张量并行的情况下进行训练,从而降低了通信开销。此外,为了进一步提高训练效率,我们将共享专家的计算与专家并行的全到全通信进行重叠。我们还为不同专家之间的通信、路由算法和融合线性计算定制了更快的 CUDA 内核。

        我们在配备 NVIDIA H800 GPU 的集群上进行所有实验。H800 集群中的每个节点包含 8 个 GPU,这些 GPU 通过 NVLink 和 NVSwitch 在节点内连接。跨节点之间,采用 InfiniBand 互连以促进通信。

3.1.4. 长序列扩展

在 DeepSeek-V2 的初始预训练之后,我们使用 YaRN(Peng 等,2023)将默认的上下文窗口长度从 4K 扩展到 128K。YaRN 特别应用于解耦共享键$k_R^t$,因为它负责携带 RoPE(Su 等,2024)【3】。对于 YaRN,我们将缩放因子 $s$设置为 40,$\alpha$ 设置为 1,$\beta$设置为 32,目标最大上下文长度设置为 160K。在这些设置下,我们预计模型在上下文长度为 128K 时表现良好。略微偏离原始 YaRN,由于我们不同的注意力机制,我们调整了长度缩放因子以调节注意力熵。该因子 $\sqrt{t}$计算为$\sqrt{t} = 0.0707 \ln s + 1$,旨在最小化困惑度。

        我们额外训练了 1000 步,序列长度为 32K,批量大小为 576 个序列。尽管训练仅在 32K 序列长度下进行,但模型在评估时表现出在 128K 上下文长度下的稳健性能。如图 4 所示,在 “Needle In A Haystack”(NIAH)测试中,DeepSeek-V2 在所有上下文窗口长度为 128K 的情况下表现良好。

图 4"大海捞针”(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等人,2018年)。
        参考消歧数据集包括WanoGrande 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、WinoGrand、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采用基于生成的评估。此外,我们对桩测试进行了基于语言建模的评估,并使用每字节比特数(BPB)作为指标,以确保具有不同标记器的模型之间的公平比较。

        为了直观地了解这些基准,我们在附录F中还提供了每个基准的评估格式。

3.2.2 评估结果

        在表2中,我们将DeepSeek-V2与几个具有代表性的开源模型进行了比较,包括DeepSeek 67B(DeepSeek AI,2024)(我们之前的版本)、Qwen1.5 72B(Bai等人,2023)、LLaMA3 70B(AI@Meta2024)和混音器8x22B(米斯特拉尔,2024)。我们使用内部评估框架评估所有这些模型,并确保它们共享相同的评估设置。总体而言,在只有21B个激活参数的情况下,DeepSeek-V2在几乎所有基准测试中都明显优于DeepSeek 67B,并在开源模型中实现了顶级性能。 

表2 DeepSeek-V2 与其他代表性开源模型的比较所有模型均在我们的内部框架中评估,并采用相同的评估设置。粗体表示最佳,下划线表示次佳。分数差距小于 0.3 的模型被视为处于同一水平。仅激活210 亿个参数,DeepSeek-V2 就在开源模型中取得了顶尖的性能。

        此外,我们详细地逐一比较了DeepSeek-V2与其开源版本。(1)与Qwen1.5 72B(另一种支持中英文的模型)相比,DeepSeek-V2在大多数英语、代码和数学基准测试中显示出压倒性的优势。至于中国的基准测试,Qwen1.572B在多学科多项选择任务上表现更好,而DeepSeek-V2在其他任务上表现相当或更好。请注意,对于CHID基准,Qwen1.5 72B的标记器将在我们的评估框架中遇到错误,因此我们将Qwen1.572B的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在不到四分之一的英语令牌上进行了训练。因此,我们承认DeepSeek-V2在基本英语能力方面与LLaMA3 70B仍存在轻微差距。然而,即使训练令牌和激活参数少得多,DeepSeek-V2仍然表现出与LLaMA3 70B相当的代码和数学能力。此外,作为一种双语语言模型,DeepSeek-V2在中国基准测试中的表现远远优于LLaMA3 70B。
        最后,值得一提的是,某些先前的研究(Hu等人,2024)在预训练阶段纳入了SFT数据,而DeepSeek-V2在预训练期间从未接触过SFT数据。

3.2.3 训练和推理效率

         训练费用。由于DeepSeek-V2为每个令牌激活的参数较少,需要的FLOP也比DeepSeek 67B少,因此理论上训练DeepSeek-V2比训练DeepSeek 67/B更经济。尽管训练MoE模型会引入额外的通信开销,但通过我们的操作员和通信优化,DeepSeek-V2的训练可以获得相对较高的模型FLOP利用率(MFU)。在H800集群上的实际训练中,对于每万亿个令牌的训练,DeepSeek 67B需要300.6K GPU小时,而DeepSeek-V2只需要172.8K GPU小时。

        推理效率。为了高效地部署DeepSeek-V2进行服务,我们首先将其参数转换为FP8的精度。此外,我们还对DeepSeek-V2执行KV缓存量化(Hooper et al.,2024;赵et al.,2023),以进一步将其KV缓存中的每个元素平均压缩为6位。
受益于MLA和这些优化,实际部署的DeepSeek-V2需要的KV缓存比DeepSeek 67B少得多,因此可以处理更大的批处理大小。我们根据实际部署的DeepSeek 67B服务的提示和生成长度分布来评估DeepSeek-V2的生成吞吐量。
在配备8个H800 GPU的单个节点上,DeepSeek-V2的生成吞吐量超过每秒50K个令牌,是DeepSeek 67B最大生成吞吐量的5.76倍。此外,DeepSeek-V2的即时输入吞吐量超过每秒10万个令牌。

四 对齐

4.1 监督微调

        基于我们之前的研究(DeepSeek AI,2024),我们策划了我们的指令调优数据集,其中包括150万个实例,包括120万个有用实例和30万个安全实例。与初始版本相比,我们提高了数据质量,以减轻幻觉反应并提高写作水平。我们用2个epoch对DeepSeek-V2进行微调,学习率设置为5×10−6。对于DeepSeek-V2聊天(SFT)的评估,我们主要包括基于生成的基准测试,除了几个代表性的多项选择任务(MMLU和ARC)。我们还对DeepSeek-V2聊天(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聊天、LLaMA-3-70B指令和Mistral-8x22B指令。至于DeepSeek 67B聊天,我们直接参考了我们之前版本中报告的评估结果。

4.2 强化学习

        为了进一步释放 DeepSeek-V2的潜力并使其与人类偏好保持一致,我们进行了强化学习(RL)来调整其偏好。

        强化学习算法为了节省强化学习的训练成本,我们采用了组相对策略优化(GRPO)(Shao等人,2024),它放弃了通常与策略模型大小相同的批评模型,而是根据组分数估计基线。具体来说,对于每个问题q qq,GRPO 从旧策略中采样一组输出 { o 1 , o 2 , ⋅ ⋅ , o G } 然后通过最大化以下目标来优化策略模型:

        训练策略 在我们的初步实验中,我们发现对推理数据(如代码和数学提示)的 RL 训练展现出与通用数据训练不同的独特特性。例如,我们的模型在数学和编程能力上可以在更长的训练步骤中持续提升。因此,我们采用了两阶段 RL 训练策略,首先进行推理对齐,然后进行人类偏好对齐。在第一个推理对齐阶段,我们为代码和数学推理任务训练一个奖励模型 $R_M^{reasoning}$,并通过 $R_M^{reasoning}$的反馈来优化策略模型:

        在第二个人类偏好对齐阶段,我们采用了一个多奖励框架,从一个有用的奖励模型$R_M^{helpful}$、一个安全奖励模型$R_M^{safety}$ 和一个基于规则的奖励模型 $R_M^{rule}$中获取奖励。响应$o_i$的最终奖励为:

其中,$c_1, c_2$$c_3$ 是相应的系数。

        为了获得可靠的奖励模型,这些模型在 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) 在两个基准上都优于 Mixtral 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。在 GPT-4-0613 和 ERNIEBot 4.0 的比较中,DeepSeek-V2 Chat (SFT) 和 DeepSeek-V2 Chat (RL) 都表现出了强大的中文能力,确保了我们的模型在支持中文的顶级 LLM 中占据领先地位。具体来说,DeepSeek-V2 Chat (RL) 在中文语言理解方面表现卓越,超越了包括 GPT-4-Turbo-1106-Preview 在内的所有模型。另一方面,DeepSeek-V2 Chat (RL) 的推理能力仍略逊于像 Erniebot-4.0 和 GPT-4s 这样的大型模型。

表3:DeepSeek-V2 Chat (SFT)、DeepSeek-V2Chat (RL) 和其他代表性开源聊天模型的比较。关于TriviaQA 和 NaturalQuestions,值得注意的是,诸如 LLaMA3 70B Instruct 之类的聊天模型可能并不严格遵守少样本设置中通常指定的格式约束。因此这可能导致我们评估框架中某些模型的性能被低估。
表 4英语开放式对话评估。对于 AlpacaEval 2.0,我们使用长度控制后的胜率作为评估指标。
表5 AlignBench 排行榜(基于 GPT-4-0613 评分)。模型按总分降序排列。标有*的模型表示我们通过其 API 服务或开放加权模型对其进行评估,而非参考其原始论文中报告的结果。Erniebot-4.0 和Moonshot 的后缀表示我们调用其 API 的时间戳.

4.4 讨论

        SFT数据量。围绕大型SFT语料库的必要性的讨论一直是激烈争论的话题。之前的研究(Young等人,2024;Zhou等人,2024)认为,不到1万个SFT数据实例就足以产生令人满意的结果。然而,在我们的实验中,如果我们使用的实例少于10K,我们观察到IFEval基准的性能会显著下降。一种可能的解释是,语言模型需要一定数量的数据来培养特定的技能。虽然所需的数据量可能会随着模型大小的增加而减少,但不能完全消除。我们的观察强调,迫切需要足够的数据来为LLM提供所需的能力。此外,SFT数据的质量也至关重要,特别是对于涉及写作或开放式问题的任务。

        强化学习的对齐成本。在人类偏好对齐过程中,我们观察到,就人工智能和人类评估者的评分而言,开放式生成基准的性能显著提高。然而,我们也注意到了一种“对齐税”现象(欧阳等人,2022),即对齐过程会对BBH等一些标准基准的性能产生负面影响。为了减轻对齐税,在RL阶段,我们在数据处理和改进培训策略方面做出了重大努力,最终在标准和开放式基准的性能之间实现了可容忍的权衡。探索如何在不损害其总体性能的情况下使模型与人类偏好相一致,为未来的研究提供了一个有价值的方向。

        在线强化学习。在我们的偏好对齐实验中,我们发现在线方法明显优于离线方法。因此,我们投入了巨大的努力来实现一个在线RL框架,以对齐DeepSeek-V2。关于在线或离线偏好对齐的结论在不同的情况下可能会有所不同,我们将在未来的工作中对它们进行更彻底的比较和分析。

五 结论,局限和未来的工作

        本文介绍了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仅支持文本模式。在我们的前瞻性议程中,我们打算使我们的模型能够支持多种模式,在更广泛的场景中增强其多功能性和实用性。

参考文献

1DeepSeek-V2 : https://arxiv.org/pdf/2405.04434

2 DeepSeek Moe解读:https://blog.csdn.net/qq_29296685/article/details/155285982?spm=1001.2014.3001.5501

3 大模型位置编码:https://blog.csdn.net/qq_29296685/article/details/153988822?spm=1001.2014.3001.5501

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐