【大模型LLM】【DeepSeek-V2】DeepSeek-V2:A Strong, Economical, and Efficient Mixture-of-Experts Language Mod

DeepSeek-V2:一种强大、经济且高效的专家混合语言模型在这里插入图片描述

0.论文摘要

我们推出DeepSeek-V2,这是一款强大的专家混合(MoE)语言模型,具有经济高效的训练和推理能力。该模型包含2360亿个参数,其中每个token激活210亿个参数,并支持128K token的上下文长度。DeepSeek-V2采用了创新的架构,包括多头潜在注意力(MLA)和DeepSeekMoE。MLA通过将键值(KV)缓存显著压缩为潜在向量,确保了高效的推理,而DeepSeekMoE则通过稀疏计算实现了以经济成本训练强大模型。与DeepSeek 67B相比,DeepSeek-V2在显著提升性能的同时,节省了42.5%的训练成本,减少了93.3%的KV缓存,并将最大生成吞吐量提升至5.76倍。我们在由8.1万亿token组成的高质量多源语料库上对DeepSeek-V2进行了预训练,并进一步进行了监督微调(SFT)和强化学习(RL),以充分释放其潜力。评估结果表明,即使仅激活210亿个参数,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 token的上下文长度。

我们在Transformer框架(Vaswani等,2017)中优化了注意力模块和前馈网络(FFNs),并提出了多头潜在注意力(MLA)和DeepSeekMoE。(1)在注意力机制的背景下,多头注意力(MHA)(Vaswani等,2017)的键值(KV)缓存对大型语言模型(LLMs)的推理效率构成了显著障碍。为了解决这一问题,研究者们探索了多种方法,包括分组查询注意力(GQA)(Ainslie等,2023)和多查询注意力(MQA)(Shazeer,2019)。然而,这些方法在尝试减少KV缓存时往往牺牲了性能。为了兼顾两者,我们引入了MLA,这是一种配备了低秩键值联合压缩的注意力机制。实验表明,MLA在性能上优于MHA,同时显著减少了推理过程中的KV缓存,从而提升了推理效率。(2)对于前馈网络(FFNs),我们采用了DeepSeekMoE架构(Dai等,2024),该架构通过细粒度的专家分割和共享专家隔离,提升了专家专业化的潜力。与传统的MoE架构(如GShard,Lepikhin等,2021)相比,DeepSeekMoE架构展现了显著优势,使我们能够以经济成本训练强大的模型。在训练过程中,我们采用了专家并行机制,并设计了辅助机制来控制通信开销并确保负载均衡。通过结合这两种技术,DeepSeek-V2在性能(图1(a))、经济训练成本和高效推理吞吐量(图1(b))方面均表现出色。

在这里插入图片描述

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

我们构建了一个高质量、多源的预训练语料库,包含8.1万亿个token。与DeepSeek 67B(我们之前的发布版本)所使用的语料库(DeepSeek-AI, 2024)相比,该语料库在数据量上有所扩展,尤其是中文数据,并且数据质量更高。我们首先在完整的预训练语料库上对DeepSeek-V2进行预训练。然后,我们收集了150万个涵盖数学、代码、写作、推理、安全等多个领域的对话会话,用于对DeepSeek-V2 Chat进行监督微调(SFT)。最后,我们遵循DeepSeekMath(Shao et al., 2024)的方法,采用组相对策略优化(GRPO)进一步将模型与人类偏好对齐,并生成DeepSeek-V2 Chat(RL)。

我们在广泛的中英文基准测试中评估了DeepSeek-V2,并将其与代表性的开源模型进行了比较。评估结果显示,即使仅激活了21B参数,DeepSeek-V2仍然在开源模型中表现出顶级性能,成为最强大的开源MoE语言模型。图1(a)突出显示,在MMLU上,DeepSeek-V2仅用少量激活参数就取得了排名靠前的性能。此外,如图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等,2024)上取得了38.9的长度控制胜率,在MT-Bench(Zheng等,2023)上取得了8.97的综合得分,在AlignBench(Liu等,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 等,2017),其中每个 Transformer 模块由一个注意力模块和一个前馈网络(FFN)组成。然而,对于注意力模块和 FFN,我们设计并采用了创新的架构。在注意力方面,我们设计了 MLA,它利用低秩键值联合压缩来消除推理时键值缓存的瓶颈,从而支持高效推理。对于 FFN,我们采用了 DeepSeekMoE 架构(Dai 等,2024),这是一种高性能的 MoE 架构,能够以经济成本训练强大的模型。图 2 展示了 DeepSeek-V2 的架构示意图,我们将在本节中详细介绍 MLA 和 DeepSeekMoE。对于其他细节(例如层归一化和 FFN 中的激活函数),除非特别说明,DeepSeek-V2 遵循 DeepSeek 67B(DeepSeek-AI,2024)的设置。

在这里插入图片描述

图2 | DeepSeek-V2架构示意图。MLA通过显著减少生成过程中的KV缓存,确保了高效推理;而DeepSeekMoE通过稀疏架构,以经济成本训练出强大的模型。

2.1. 多头潜在注意力:提升推理效率

传统的Transformer模型通常采用多头注意力机制(MHA)(Vaswani等,2017),但在生成过程中,其庞大的键值(KV)缓存会成为限制推理效率的瓶颈。为了减少KV缓存,多查询注意力机制(MQA)(Shazeer,2019)和分组查询注意力机制(GQA)(Ainslie等,2023)被提出。它们所需的KV缓存规模较小,但其性能无法与MHA相媲美(我们在附录D.1中提供了MHA、GQA和MQA的消融实验)。

对于DeepSeek-V2,我们设计了一种创新的注意力机制,称为多头潜在注意力(Multi-head Latent Attention, MLA)。通过配备低秩键值联合压缩技术,MLA在性能上优于多头注意力机制(MHA),同时所需的键值缓存显著减少。我们将在下文中介绍其架构,并在附录D.2中提供MLA与MHA的对比。

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

我们首先介绍标准的多头注意力机制(MHA)作为背景。设 d d d为嵌入维度, n h n_h nh为注意力头的数量, d h d_h dh为每个头的维度, h t ∈ R d h_t ∈ R^d htRd为注意力层中第t个token的注意力输入。标准的MHA首先通过三个矩阵 W Q 、 W K 、 W V ∈ R d h n h × d W^Q、W^K、W^V ∈ R^{d_hn_h×d} WQWKWVRdhnh×d分别生成 q t 、 k t 、 v t ∈ R d h n h q_t、k_t、v_t ∈ R^{d_hn_h} qtktvtRdhnh

在这里插入图片描述
然后, q t 、 k t 、 v t q_t、k_t、v_t qtktvt 将被切分为 n h n_h nh 个头,用于多头注意力计算:

在这里插入图片描述
其中, q t , i 、 k t , i 、 v t , i ∈ R d h q_{t,i}、k_{t,i}、v_{t,i} ∈ R^{d_h} qt,ikt,ivt,iRdh 分别表示第 i i i 个注意力头的查询、键和值; W O ∈ R d × d h n h W^O ∈ R^{d×d_hn_h} WORd×dhnh 表示输出投影矩阵。在推理过程中,所有键和值都需要缓存以加速推理,因此多头注意力机制(MHA)需要为每个标记缓存 2 n h d h l 2n_hd_hl 2nhdhl 个元素。在模型部署中,这种庞大的键值缓存是一个主要瓶颈,限制了最大批处理大小和序列长度。

2.1.2. 低秩键值联合压缩

MLA的核心是对键和值进行低秩联合压缩,以减少KV缓存:

在这里插入图片描述

其中, c t K V ∈ R d c c^{KV}_t ∈ R^{d_c} ctKVRdc 是键和值的压缩潜在向量; d c ( ≪ d h n h ) d_c(≪ d_hn_h) dcdhnh表示键值压缩维度; W D K V ∈ R d c × d W^{DKV} ∈ R^{d_c×d} WDKVRdc×d 是下投影矩阵; W U K 、 W U V ∈ R d h n h × d c W^{UK}、W^{UV} ∈ R^{d_hn_h×d_c} WUKWUVRdhnh×dc 分别是键和值的上投影矩阵。在推理过程中,MLA 只需缓存 c t K V c^{KV}_t ctKV,因此其键值缓存仅包含 d c l d_cl dcl 个元素,其中 l 表示层数。此外,在推理过程中,由于 W U K W^{UK} WUK 可以被吸收到 W Q W^Q WQ 中, W U V W^{UV} WUV可以被吸收到 W O W^O WO 中,我们甚至不需要为注意力计算键和值。图 3 直观地展示了 MLA 中的键值联合压缩如何减少键值缓存。
在这里插入图片描述
图3 | 多头注意力机制(MHA)、分组查询注意力机制(GQA)、多查询注意力机制(MQA)和多头潜在注意力机制(MLA)的简化示意图。通过将键和值联合压缩为潜在向量,MLA在推理过程中显著减少了KV缓存。

此外,为了减少训练过程中的激活内存,即使无法减少KV缓存,我们也对查询进行了低秩压缩:

在这里插入图片描述

其中, c t Q ∈ R d c ′ c^Q_t ∈ R^{d^′_c} ctQRdc 是查询的压缩潜在向量; d c ′ ( ≪ d h n h ) d^′_c (≪ d_hn_h) dc(dhnh) 表示查询的压缩维度; W D Q ∈ R d c ′ × d W^{DQ} ∈ R^{d^′_c×d} WDQRdc×d W U Q ∈ R d h n h × d c ′ W^{UQ} ∈ R^{d_hn_h×d^′_c} WUQRdhnh×dc 分别是查询的下投影矩阵和上投影矩阵。

2.1.3. 解耦旋转位置嵌入

在DeepSeek 67B(DeepSeek-AI,2024)之后,我们计划在DeepSeek-V2中使用旋转位置编码(RoPE)(Su等,2024)。然而,RoPE与低秩KV压缩不兼容。具体来说,RoPE对键和查询都是位置敏感的。如果我们在键 k t C k^C_t ktC上应用RoPE,方程10中的 W U K W^{UK} WUK将与一个位置敏感的RoPE矩阵耦合。这样一来,在推理过程中, W U K W^{UK} WUK无法再被吸收到 W Q W^Q WQ中,因为与当前生成令牌相关的RoPE矩阵将位于 W Q W^Q WQ W U K W^{UK} WUK之间,而矩阵乘法不满足交换律。因此,我们必须在推理过程中重新计算所有前缀令牌的键,这将显著影响推理效率。

作为一种解决方案,我们提出了解耦RoPE策略,该策略使用额外的多头查询 q t , i R ∈ R d h R q^R_{t,i} ∈ R^{d^R_h} qt,iRRdhR和共享键 k t R ∈ R d h R k^R_t ∈ R^{d^R_h} ktRRdhR来承载RoPE,其中 d h R d^R_h dhR表示解耦查询和键的每头维度。配备了解耦RoPE策略后,MLA执行以下计算:

在这里插入图片描述

其中 W Q R ∈ R d h R n h × d c ′ W^{QR} ∈ R^{d^R_hn_h×d^′_c} WQRRdhRnh×dc W K R ∈ R d h R × d W^{KR} ∈ R^{d^R_h ×d} WKRRdhR×d 是分别用于生成解耦查询和键的矩阵;RoPE(·) 表示应用 RoPE 矩阵的操作; [ ⋅ ; ⋅ ] [·; ·] [⋅;⋅] 表示连接操作。在推理过程中,解耦的键也应被缓存。因此,DeepSeek-V2 总共需要一个包含 ( d c + d h R ) l (d_c + d^R_h )l (dc+dhR)l 个元素的 KV 缓存。

为了展示MLA的完整计算过程,我们还在附录C中整理并提供了其完整公式。

2.1.4. 键值缓存对比

我们在表1中展示了不同注意力机制下每个token的KV缓存对比。MLA仅需少量KV缓存,相当于仅有2.25组的GQA,但能够实现比MHA更强的性能。

在这里插入图片描述

表1 | 不同注意力机制下每个token的KV缓存对比。 n h n_h nh表示注意力头的数量, d h d_h dh表示每个注意力头的维度, l l l表示层数, n g n_g ng表示GQA中的组数, d c d_c dc d h R d^R_h dhR分别表示MLA中解耦查询和键的KV压缩维度和每个头的维度。KV缓存的数量以元素数量衡量,不考虑存储精度。对于DeepSeek-V2, d c d_c dc设置为 4 d h 4d_h 4dh d h R d^R_h dhR设置为 d h / 2 d_h/2 dh/2。因此,其KV缓存仅相当于2.25组的GQA,但其性能强于MHA。

2.2 DeepSeekMoE:以经济成本训练强大模型

2.2.1 基本架构

对于FFNs,我们采用了DeepSeekMoE架构(Dai等,2024)。DeepSeekMoE有两个关键思想:将专家细分为更精细的粒度,以提高专家的专业性和知识获取的准确性;以及隔离一些共享专家,以减少路由专家之间的知识冗余。在激活专家和总专家参数数量相同的情况下,DeepSeekMoE能够大幅超越传统的MoE架构,如GShard(Lepikhin等,2021)。

u t u_t ut 为第 t 个 token 的 FFN 输入,我们按如下方式计算 FFN 输出 h ′ t h^′ t ht

在这里插入图片描述
其中, N s N_s Ns N r N_r Nr 分别表示共享专家和路由专家的数量; F F N i ( s ) ( ⋅ ) FFN^{(s)}_i (·) FFNi(s)() F F N i ( r ) ( ⋅ ) FFN^{(r)}_i(·) FFNi(r)() 分别表示第 i i i 个共享专家和第 i i i 个路由专家; K r K_r Kr 表示激活的路由专家数量; g i , t g_{i,t} gi,t 表示第 i i i 个专家的门控值; s i , t s_{i,t} si,t 表示第 t t t 个令牌与专家的亲和度; e i e_i ei 表示该层中第 i i i 个路由专家的质心; T o p k ( ⋅ , K ) Topk(·, K) Topk(⋅,K) 表示由第 t t t 个令牌与所有路由专家计算的亲和度得分中前 K K K 个最高得分组成的集合。

2.2.2. 设备受限路由

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

对于DeepSeek-V2,除了简单的基于top-K选择路由专家外,我们还额外确保每个token的目标专家最多分布在M个设备上。具体来说,对于每个token,我们首先选择包含最高亲和度得分专家的M个设备。然后,在这些M个设备上的专家中进行top-K选择。在实际应用中,我们发现当M ⩾ 3时,设备受限的路由能够实现与无限制的top-K路由大致相当的良好性能。

2.2.3. 负载均衡的辅助损失

我们在自动学习路由策略时考虑了负载均衡。首先,负载不均衡会增加路由崩溃的风险(Shazeer等,2017),导致某些专家无法得到充分训练和利用。其次,当采用专家并行时,负载不均衡会降低计算效率。在DeepSeek-V2的训练过程中,我们设计了三种辅助损失函数,分别用于控制专家级负载均衡( L E x p B a l \mathcal{L}_{ExpBal} LExpBal)、设备级负载均衡( L D e v B a l \mathcal{L}_{DevBal} LDevBal)和通信均衡( L C o m m B a l \mathcal{L}_{CommBal} LCommBal)。

专家级平衡损失。我们采用专家级平衡损失(Fedus等,2021;Lepikhin等,2021)来降低路由崩溃的风险:

在这里插入图片描述
其中,α1 是一个称为专家级平衡因子的超参数;1(·) 表示指示函数;T 表示序列中的标记数量。

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

在这里插入图片描述
其中,α2 是一个称为设备级平衡因子的超参数。

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

在这里插入图片描述
其中,α3 是一个称为通信平衡因子的超参数。设备受限的路由机制基于确保每个设备最多向其他设备传输 MT 个隐藏状态的原则运行。同时,采用通信平衡损失来鼓励每个设备从其他设备接收大约 MT 个隐藏状态。通信平衡损失保证了设备之间信息的均衡交换,从而促进高效的通信。

2.2.4. 令牌丢弃策略

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

3.预训练

3.1 实验设置

3.1.1 数据构建

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

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

3.1.2 超参数

模型超参数

我们将Transformer层数设置为60,隐藏维度设置为5120。所有可学习参数均以标准差0.006随机初始化。在MLA中,我们将注意力头数nh设置为128,每个头的维度 d h d_h dh设置为128。KV压缩维度 d c d_c dc设置为512,查询压缩维度 d c ′ d^′_c dc设置为1536。对于解耦的查询和键,我们将每个头的维度 d h R d^R_h dhR设置为64。根据Dai等人(2024)的研究,我们将除第一层外的所有FFN替换为MoE层。每个MoE层由2个共享专家和160个路由专家组成,其中每个专家的中间隐藏维度为1536。在路由专家中,每个token将激活6个专家。此外,低秩压缩和细粒度专家分割会影响层的输出规模。因此,在实践中,我们在压缩后的潜在向量后使用额外的RMS Norm层,并在宽度瓶颈处(即压缩后的潜在向量和路由专家的中间隐藏状态)乘以额外的缩放因子,以确保训练的稳定性。在此配置下,DeepSeek-V2共包含2360亿个参数,其中每个token激活210亿个参数。

训练超参数

我们采用AdamW优化器(Loshchilov和Hutter,2017),超参数设置为β1 = 0.9,β2 = 0.95,weight_decay = 0.1。学习率采用预热和阶梯衰减策略(DeepSeek-AI,2024)进行调度。初始阶段,学习率在前2K步中从0线性增加到最大值。随后,在训练约60%的token后,学习率乘以0.316,在训练约90%的token后再次乘以0.316。最大学习率设置为2.4 × 10−4,梯度裁剪范数设置为1.0。我们还采用了批量大小调度策略,在前225B token的训练中,批量大小从2304逐步增加到9216,之后在剩余训练中保持9216。我们将最大序列长度设置为4K,并在8.1T token上训练DeepSeek-V2。我们利用流水线并行将模型的不同层部署在不同设备上,对于每一层,路由的专家将均匀部署在8个设备上(D = 8)。对于设备限制的路由,每个token最多发送到3个设备(M = 3)。对于平衡损失,我们将α1设置为0.003,α2设置为0.05,α3设置为0.02。我们在训练期间采用token丢弃策略以加速训练,但在评估时不丢弃任何token。

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特别应用于解耦的共享键kR t,因为它负责携带RoPE(Su等,2024)。对于YaRN,我们将缩放因子s设置为40,α设置为1,β设置为32,目标最大上下文长度设置为160K。在这些设置下,我们可以预期模型在128K的上下文长度下表现良好。与原始的YaRN略有不同,由于我们独特的注意力机制,我们调整了长度缩放因子以调节注意力熵。因子 t \sqrt{t} t 的计算公式为 t = 0.0707 l n s + 1 \sqrt{t}= 0.0707 ln s + 1 t =0.0707lns+1,旨在最小化困惑度。

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进行了基于语言建模的评估,并使用比特每字节(BPB)作为指标,以确保不同分词器模型之间的公平比较。

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)。我们使用内部评估框架对所有模型进行了评估,并确保它们共享相同的评估设置。总体而言,DeepSeek-V2仅激活了21B参数,便在几乎所有基准测试中显著超越了DeepSeek 67B,并在开源模型中达到了顶级性能。

在这里插入图片描述
表2 | DeepSeek-V2与其他代表性开源模型的对比。所有模型均在我们的内部框架中进行评估,并共享相同的评估设置。加粗表示最佳,下划线表示次佳。分数差距小于0.3的视为同一水平。DeepSeek-V2仅激活了21B参数,便在开源模型中达到了顶级性能。

此外,我们逐一详细比较了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的英文训练数据量不到其四分之一。因此,我们承认DeepSeek-V2在基础英文能力上与LLaMA3 70B仍存在一定差距。然而,即使训练数据和激活参数远少于LLaMA3 70B,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集群训练中,每训练一万亿token,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个token,是DeepSeek 67B最大生成吞吐量的5.76倍。此外,DeepSeek-V2的提示输入吞吐量超过每秒100K个token。

4.对齐

4.1 监督微调

基于我们之前的研究(DeepSeek-AI, 2024),我们精心构建了指令微调数据集,包含150万条实例,其中120万条用于提升帮助性,30万条用于提升安全性。与初始版本相比,我们提高了数据质量,以减少幻觉性回答并增强写作能力。我们对DeepSeek-V2进行了2个epoch的微调,学习率设置为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从旧策略 π θ o l d π_{θ_{old}} πθold中采样一组输出{o1, o2, · · · , oG},然后通过最大化以下目标来优化策略模型 π θ π_θ πθ

在这里插入图片描述
其中ε和β是超参数;Ai是优势值,通过使用与每组输出对应的一组奖励{r1, r2, . . . , rG}计算得出:
在这里插入图片描述
训练策略。在我们的初步实验中,我们发现针对推理数据(如代码和数学提示)的强化学习训练表现出与通用数据训练不同的独特特征。例如,我们的模型在数学和编码能力上可以在更长的训练步数中持续提升。因此,我们采用了两阶段的强化学习训练策略,首先进行推理对齐,然后进行人类偏好对齐。在第一个推理对齐阶段,我们为代码和数学推理任务训练了一个奖励模型 R M r e a s o n i n g RM_{reasoning} RMreasoning,并利用 R M r e a s o n i n g RM_{reasoning} RMreasoning的反馈优化策略模型:

在这里插入图片描述
在第二个人类偏好对齐阶段,我们采用了一个多奖励框架,该框架从有用性奖励模型 R M h e l p f u l RM_{helpful} RMhelpful、安全性奖励模型 R M s a f e t y RM_{safety} RMsafety和基于规则的奖励模型 R M r u l e RM_{rule} RMrule中获取奖励。最终对响应 o i o_i oi的奖励为
在这里插入图片描述

其中,c1、c2 和 c3 是对应的系数。

为了获得在强化学习训练中起关键作用的可靠奖励模型,我们精心收集偏好数据,并细致地进行质量过滤和比例调整。我们基于编译器反馈获取代码偏好数据,基于真实标签获取数学偏好数据。在奖励模型训练中,我们使用DeepSeek-V2 Chat(SFT)初始化奖励模型,并使用点对点或成对损失进行训练。在我们的实验中,我们观察到强化学习训练能够充分挖掘并激活模型的潜力,使其能够从可能的响应中选择出正确且令人满意的答案。

训练效率优化。在超大规模模型上进行强化学习训练对训练框架提出了极高的要求。它需要精细的工程优化来管理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 (SFT)相比,DeepSeek-V2 Chat (RL)在数学和编码任务上进一步提升了性能。这些比较突显了DeepSeek-V2 Chat在不同领域和语言中相对于其他语言模型的优势。

在开放式生成任务上的评估。我们继续对模型在开放式对话基准上进行额外评估。对于英语开放式对话生成,我们使用MT-Bench和AlpacaEval 2.0作为基准。表4中的评估结果显示,DeepSeek-V2 Chat(RL)相较于DeepSeek-V2 Chat(SFT)具有显著的性能优势。这一结果展示了我们的RL训练在实现更好对齐方面的有效性。与其他开源模型相比,DeepSeek-V2 Chat(RL)在MT-Bench和AlpacaEval 2.0上均表现出优于Mistral 8x22B Instruct和Qwen1.5 72B Chat的性能。与LLaMA3 70B Instruct相比,DeepSeek-V2 Chat(RL)在MT-Bench上表现出竞争力,并在AlpacaEval 2.0上显著超越。这些结果突显了DeepSeek-V2 Chat(RL)在生成高质量且上下文相关响应方面的强大性能,尤其是在基于指令的对话任务中。

在这里插入图片描述

表4 | 英语开放式对话评估。对于AlpacaEval 2.0,我们使用长度控制的胜率作为评估指标。

此外,我们基于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,进一步巩固了我们的模型在支持中文的顶级大语言模型中的地位。具体而言,DeepSeek-V2 Chat(RL)在中文语言理解方面表现出色,超越了包括GPT-4-Turbo-1106-Preview在内的所有模型。另一方面,DeepSeek-V2 Chat(RL)的推理能力仍落后于Erniebot-4.0和GPT-4s等大型模型。

在这里插入图片描述
表5 | 由GPT-4-0613评分的AlignBench排行榜。模型根据总分按降序排列。标有*的模型表示我们通过其API服务或开源权重模型进行评估,而非引用其原始论文中报告的结果。Erniebot-4.0和Moonshot的后缀表示我们调用其API时的时间戳。

4.4 讨论

SFT数据量。关于是否需要大量SFT语料的讨论一直是一个激烈争论的话题。先前的研究(Young等,2024;Zhou等,2024)认为,少于10K条SFT数据足以产生令人满意的结果。然而,在我们的实验中,我们发现如果使用少于10K条数据,IFEval基准上的性能会显著下降。一个可能的解释是,语言模型需要一定量的数据来发展特定技能。尽管随着模型规模的增加,所需的数据量可能会减少,但它不能被完全消除。我们的观察强调了为LLM提供足够数据以赋予其所需能力的关键性。此外,SFT数据的质量也至关重要,尤其是在涉及写作或开放式问题的任务中。

强化学习的对齐代价。在人类偏好对齐过程中,我们观察到在开放式生成基准测试中,无论是AI还是人类评估者给出的评分都有显著提升。然而,我们也注意到一种“对齐代价”现象(Ouyang等,2022),即对齐过程可能会对某些标准基准测试(如BBH)的性能产生负面影响。为了缓解对齐代价,在强化学习阶段,我们在数据处理和训练策略改进方面做出了大量努力,最终在标准基准测试和开放式基准测试的性能之间取得了可接受的平衡。探索如何在不对模型通用性能造成损害的情况下使其与人类偏好对齐,为未来的研究提供了一个有价值的方向。

在线强化学习。在我们的偏好对齐实验中,我们发现在线方法显著优于离线方法。因此,我们投入了大量精力来实现一个在线强化学习框架,用于对齐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及其聊天版本与其他大型语言模型一样,存在一些公认的局限性,包括预训练后缺乏持续的知识更新、可能生成未经证实的建议等非事实性信息,以及产生幻觉的可能性。此外,由于我们的数据主要包含中文和英文内容,模型在其他语言上的表现可能有限。在中文和英文以外的场景中,应谨慎使用。

深度求索将以长期主义持续投入开源大模型,致力于逐步接近通用人工智能的目标。

• 在我们持续的探索中,我们致力于设计方法,使MoE模型能够进一步扩展,同时保持经济的训练和推理成本。我们下一步的目标是在即将发布的版本中实现与GPT-4相当的性能。

• 我们的对齐团队不断努力增强我们的模型,旨在开发一个不仅有用,而且诚实且安全的模型,供全球用户使用。我们的最终目标是将模型的价值与人类价值观对齐,同时尽量减少对人类监督的需求。通过优先考虑伦理问题和负责任的发展,我们致力于对社会产生积极和有益的影响。

• 目前,DeepSeek-V2仅设计为支持文本模态。在我们前瞻性的计划中,我们打算让我们的模型支持多种模态,增强其在更广泛场景中的多功能性和实用性。

6.附录

B. DeepSeek-V2-Lite:配备MLA和DeepSeekMoE的160亿参数模型

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 总共包含 157 亿个参数,其中每个 token 激活的参数为 24 亿。

训练细节。DeepSeek-V2-Lite 同样在 DeepSeek-V2 的预训练语料库上从头开始训练,该语料库未受到任何 SFT 数据的污染。它使用 AdamW 优化器,超参数设置为 β1 = 0.9,β2 = 0.95,weight_decay = 0.1。学习率采用预热和阶梯衰减策略进行调度。最初,学习率在前 2K 步中从 0 线性增加到最大值。随后,在训练约 80% 的 token 后,学习率乘以 0.316,在训练约 90% 的 token 后再次乘以 0.316。最大学习率设置为 4.2 × 10−4,梯度裁剪范数设置为 1.0。我们未对其采用批量大小调度策略,而是以恒定的批量大小 4608 个序列进行训练。在预训练期间,我们将最大序列长度设置为 4K,并在 5.7T 的 token 上训练 DeepSeek-V2-Lite。我们利用流水线并行将不同层部署在不同设备上,但对于每一层,所有专家都将部署在同一设备上。因此,我们仅采用了一个较小的专家级平衡损失,α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的完整计算过程,我们在下面提供了其完整的公式:

在这里插入图片描述
蓝色框中的向量需要缓存以供生成使用。在推理过程中,朴素公式需要从 c t K V c^{KV}_t ctKV中恢复 k t C k^C_t ktC v t C v^C_t vtC以进行注意力计算。幸运的是,由于矩阵乘法的结合律,我们可以将 W U K W^{UK} WUK吸收到 W U Q W^{UQ} WUQ中,将 W U V W^{UV} WUV吸收到 W O W^O WO中。因此,我们不需要为每个查询单独计算键和值。通过这种优化,我们避免了在推理过程中重新计算 k t C k^C_t ktC v t C v^C_t vtC的计算开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子-Alex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值