DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model
DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model
DeepSeek-AI
1. Introduction
主要贡献与创新点
本文介绍了 DeepSeek-V2,这是一个强大的开源混合专家(MoE)语言模型,以其经济的训练成本和高效的推理能力为特征。针对大语言模型(LLM)通常随着参数增加导致训练计算资源消耗巨大和推理吞吐量降低的问题,DeepSeek-V2 提出了创新的架构解决方案。
该模型拥有总计 236B 的参数,其中每个 token 激活 21B 参数,并支持 128K token 的上下文长度。主要创新点包括:
1. 多头潜在注意力(Multi-head Latent Attention, MLA):旨在解决传统多头注意力(MHA)在推理时的 Key-Value (KV) 缓存瓶颈。MLA 通过将 KV 缓存显著压缩为潜在向量,保证了高效的推理。
2. DeepSeekMoE 架构:采用细粒度专家分割和共享专家隔离策略,通过稀疏计算以经济的成本训练强模型。
与 DeepSeek 67B 相比,DeepSeek-V2 在性能显著增强的同时,节省了 42.5% 的训练成本,减少了 93.3% 的 KV 缓存,并将最大生成吞吐量提升至 5.76 倍。模型在包含 8.1T token 的高质量多源语料库上进行预训练,并通过监督微调(SFT)和强化学习(RL)进一步释放潜力。评估结果表明,即使只有 21B 的激活参数,DeepSeek-V2 及其对话版本在开源模型中仍处于顶尖水平。
2. Architecture
DeepSeek-V2 整体仍基于 Transformer 架构,但在注意力模块和前馈网络(FFN)上采用了创新设计。
2.1. Multi-Head Latent Attention: Boosting Inference Efficiency
注意力机制的演进与 MLA 的提出。传统 Transformer 模型通常采用多头注意力(MHA),但在生成过程中,庞大的键值(KV)缓存成为限制推理效率的瓶颈。虽然多查询注意力(MQA)和分组查询注意力(GQA)通过减少 KV 缓存量来应对这一问题,但这通常以牺牲性能为代价。DeepSeek-V2 设计了多头潜在注意力(MLA),利用低秩键值联合压缩技术,在实现优于 MHA 性能的同时,显著减少了推理时的 KV 缓存量。
标准多头注意力(MHA)回顾。在标准 MHA 中,对于第 $t$ 个 token 的注意力输入 $h_t$,首先通过三个矩阵生成查询 $q_t$、键 $k_t$ 和值 $v_t$:
$$\mathbf{q}_t = W^Q \mathbf{h}_t,$$随后进行切头和多头注意力计算。由于推理时需要缓存所有键和值,MHA 每个 token 需要缓存 $2n_h d_h l$ 个元素(其中 $n_h$ 为头数,$d_h$ 为每头维度,$l$ 为层数),这构成了巨大的部署瓶颈。
低秩键值联合压缩(Low-Rank Key-Value Joint Compression)。MLA 的核心在于对键和值进行低秩联合压缩以减少 KV 缓存。具体的计算方式如下:
其中 $c_{KV}$ 是压缩后的潜在向量;$d_c$ 是 KV 压缩维度(远小于 $n_h d_h$)。在推理过程中,MLA 只需要缓存 $c_{KV}$,因此每层只有 $d_c$ 个元素。此外,由于 $W^{UK}$ 可以被吸收到 $W^Q$ 中,$W^{UV}$ 可以被吸收到 $W^O$ 中,推理时甚至不需要计算出键和值。为了减少训练时的激活显存,作者还对查询进行了低秩压缩:
$$\mathbf{c}_{t}^{KV}=W^{DKV}\mathbf{h}_{t}$$解耦旋转位置嵌入(Decoupled Rotary Position Embedding)。DeepSeek-V2 意图使用旋转位置嵌入(RoPE),但 RoPE 对键和查询都是位置敏感的,如果直接应用于压缩后的键,会导致 $W^{UK}$ 无法在推理时被吸收,从而丧失效率优势。为此,作者提出了解耦 RoPE 策略,使用额外的多头查询 $q_{t,i}^R$ 和共享键 $k_t^R$ 来携带 RoPE 信息:
$$\mathbf{v}_t^C = W^{UV}\mathbf{c}_t^{KV},$$在推理过程中,解耦的键也需要被缓存,因此总的 KV 缓存包含 $(d_c + d_h^R)l$ 个元素。
KV 缓存对比。如表 1 所示,MLA 所需的 KV 缓存量极小,仅相当于拥有 2.25 组的 GQA,但能实现比 MHA 更强的性能。
2.2. DeepSeekMoE: Training Strong Models at Economical Costs
2.2.1. Basic Architecture
基础架构设计。DeepSeek-V2 采用了 DeepSeekMoE 架构,其核心思想包括两点:将专家分割成更细的粒度以实现更高的专家专业化,以及隔离部分共享专家以减少路由专家间的知识冗余。FFN 输出 $h'_t$ 计算如下:
$$\mathbf{h}_{t}^{\prime}=\mathbf{u}_{t}+\sum_{i=1}^{N_{s}} \mathrm{FFN}_{i}^{(s)}\left(\mathbf{u}_{t}\right)+\sum_{i=1}^{N_{r}} g_{i, t} \mathrm{FFN}_{i}^{(r)}\left(\mathbf{u}_{t}\right),$$其中 $N_s$ 和 $N_r$ 分别是共享专家和路由专家的数量,$K_r$ 是激活的路由专家数量。
2.2.2. Device-Limited Routing
设备受限路由机制。为了限制专家并行(Expert Parallelism)相关的通信成本,DeepSeek-V2 设计了设备受限路由机制。由于细粒度专家分割导致激活专家数量较多,若不加限制,通信开销会很大。该机制确保每个 token 的目标专家分布在最多 $M$ 个设备上。具体做法是:首先为每个 token 选择拥有最高亲和力分数的 $M$ 个设备,然后在这些 $M$ 个设备上的专家中进行 Top-K 选择。实践发现,当 $M \ge 3$ 时,该机制能达到与无限制 Top-K 路由相当的性能。
2.2.3. Auxiliary Loss for Load Balance
负载均衡辅助损失。为了自动学习路由策略并保证负载均衡,训练中引入了三种辅助损失:
-
专家级平衡损失(Expert-Level Balance Loss):用于减轻路由崩溃风险。
$$\mathcal{L}_{\text{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}(\text{Token } t \text{ selects Expert } i),$$$$P_{i}=\frac{1}{T} \sum_{t=1}^{T} s_{i, t},$$ -
设备级平衡损失(Device-Level Balance Loss):确保不同设备间的计算负载均衡。将所有路由专家划分为 $D$ 组部署在不同设备上,损失计算如下:
$$\mathcal{L}_{\text{DevBal}} = \alpha_2 \sum_{i=1}^D f_i' P_i',$$
$$f_i^{\prime}=\frac{1}{\left|\mathcal{E}_i\right|} \sum_{j \in \mathcal{E}_i} f_j,$$$$P_{i}^{\prime}=\sum_{j \in \mathcal{E}_{i}} P_{j},$$ -
通信平衡损失(Communication Balance Loss):虽然设备受限路由限制了发送通信,但为了防止某些设备接收过多 token 影响效率,引入通信平衡损失以鼓励各设备接收均衡的信息量:
$$\mathcal{L}_{\text{CommBal}} = \alpha_3 \sum_{i=1}^D f_i'' P_i'',$$
$$f_i'' = \frac{D}{MT} \sum_{t=1}^{T} \mathbb{1} (\text{Token } t \text{ is sent to Device } i),$$$$P_{i}^{\prime \prime}=\sum_{j \in \mathcal{E}_{i}} P_{j},$$
2.2.4. Token-Dropping Strategy
Token 丢弃策略。虽然平衡损失能鼓励负载均衡,但无法保证严格平衡。为了进一步减少由负载不均引起的计算浪费,训练中引入了设备级的 Token 丢弃策略。首先计算每个设备的平均计算预算(容量因子为 1.0),然后丢弃每个设备上亲和力分数最低的 token 直至满足预算。此外,策略确保约 10% 的训练序列所属的 token 永远不会被丢弃。这种方法允许在推理时根据效率需求灵活决定是否丢弃 token,并保持训练与推理的一致性。
3. Pre-Training
3.1 Experimental Setups (实验环境总结)
-
数据集:
- 构建了包含 8.1T token 的高质量多源预训练语料库。
- 相比 DeepSeek 67B,增加了数据量(尤其是中文数据),优化了清洗流程,并引入了更严格的质量过滤和去偏见策略。
- Tokenizer:基于 Byte-level Byte-Pair Encoding (BBPE),词表大小 100K。
-
模型架构参数:
- Total Parameters: 236B;Activated Parameters: 21B。
- 层数:60;隐藏层维度:5120。
- MLA 设置:头数 $n_h=128$,每头维度 $d_h=128$,KV 压缩维度 $d_c=512$,查询压缩维度 $d'_c=1536$,解耦 RoPE 维度 $d_h^R=64$。
- MoE 设置:每层 2 个共享专家,160 个路由专家(每个专家中间维度 1536),每个 token 激活 6 个路由专家。
-
硬件与基础设施:
- 集群:NVIDIA H800 GPU 集群,节点内 NVLink/NVSwitch 互联,节点间 InfiniBand 互联。
- 框架:HAI-LLM 训练框架。
- 并行策略:16 路 Zero-Bubble 流水线并行,8 路专家并行,ZeRO-1 数据并行。无需张量并行。
-
长上下文扩展:
- 使用 YaRN 方法将上下文窗口从 4K 扩展到 128K。
- 在 32K 序列长度下额外训练 1000 步。
3.2 Evaluations (实验结果总结)
-
基准测试表现:
- DeepSeek-V2 在仅激活 21B 参数的情况下,显著优于 DeepSeek 67B。
- 英文、数学与代码能力:在绝大多数基准测试中优于 Qwen1.5 72B;与 Mixtral 8x22B 相比,在 MMLU 上表现更优,代码和数学能力相当;与 LLaMA3 70B 相比,代码和数学能力相当,尽管训练数据量少得多。
- 中文能力:作为双语模型,DeepSeek-V2 在中文基准测试上大幅领先 LLaMA3 70B 和 Mixtral 8x22B,与 Qwen1.5 72B 相比互有胜负(Qwen 在多学科选择题上稍好,DeepSeek-V2 在其他方面相当或更好)。
-
长上下文性能:
- 在 "Needle In A Haystack" (NIAH) 测试中,DeepSeek-V2 在高达 128K 的上下文长度内均表现良好(Figure 4)。
-
训练与推理效率:
- 训练成本:每万亿 token 的训练只需 172.8K GPU 小时,相比 DeepSeek 67B 节省了 42.5% 的成本。
- 推理效率:在 FP8 精度和 KV 缓存量化(6-bit)下,单节点(8x H800)生成吞吐量超过 50K tokens/s,是 DeepSeek 67B 的 5.76 倍。
5. Conclusion (结论总结)
DeepSeek-V2 展示了强大的性能、经济的训练成本和高效的推理能力。得益于 MLA 和 DeepSeekMoE 架构,它在仅激活 21B 参数的情况下,成为最强的开源 MoE 模型,并在多项基准测试中达到顶尖水平。
未来工作展望:
- MoE 扩展:探索在保持经济成本的同时进一步扩大 MoE 模型规模的方法,目标是在下一版本中达到 GPT-4 级别的性能。
- 对齐优化:持续改进模型对齐,使其更加有益、诚实和安全,尽量减少人工监督。
- 多模态支持:计划赋予模型多模态能力,以适应更广泛的应用场景。
6. Appendix (附录缩写)
A. Contributions and Acknowledgments (略)
B. DeepSeek-V2-Lite: A 16B Model Equipped with MLA and DeepSeekMoE
模型描述与训练细节。DeepSeek-V2-Lite 是一个总参数 15.7B、激活参数 2.4B 的较小版本。它拥有 27 层,隐藏层维度 2048,同样采用 MLA(16头,不压缩查询)和 DeepSeekMoE(64个路由专家,激活6个)。该模型在 5.7T token 上从头训练,并未接触 SFT 数据。训练使用 AdamW 优化器,最大学习率 4.2e-4,并未采用设备级和通信平衡损失。
性能评估。如表 6 和表 7 所示,DeepSeek-V2-Lite 及其 Chat 版本在性能上显著优于之前的 DeepSeek 7B 和 DeepSeekMoE 16B 模型,特别是在推理、代码和数学方面展示了压倒性优势。
C. Full Formulas of MLA
MLA 的完整计算过程如下:
$$\mathbf{c}_{t}^{Q}=W^{D Q} \mathbf{h}_{t},$$蓝色框中的向量需要在推理时缓存。由于矩阵乘法的结合律,推理时无需显式计算键和值,从而避免了重计算开销。
D. Ablation of Attention Mechanisms
MHA, GQA, MQA 的消融实验。表 8 展示了 7B 稠密模型上的对比结果。在参数量对齐的情况下,MHA 在困难基准测试上显著优于 GQA 和 MQA。
MLA 与 MHA 的对比。表 9 展示了在 MoE 模型上 MLA 与 MHA 的对比。无论是在小规模(16B)还是大规模(250B)模型上,MLA 不仅性能优于 MHA,而且所需的 KV 缓存显著更少(小模型仅需 14%,大模型仅需 4%)。
E. Discussion About Pre-Training Data Debiasing
预训练数据去偏见讨论。为了避免模型在特定地区文化话题上表现出主观偏见,作者在预训练数据准备阶段过滤了有争议的内容。这导致 DeepSeek-V2 在与特定地区文化密切相关的测试集(如 MMLU Humanity-Moral 子集)上表现稍差。人工分析表明,该子集的答案在不同人类标注者之间的一致性也很低(表 10),说明其具有争议性。
7. Supplementary Details: Alignment (对齐细节)
本节补充了原论文第 4 章关于对齐的细节,遵循方法细节的缩写要求。
4.1. Supervised Fine-Tuning
SFT 数据构建与训练。基于之前的研究,作者整理了包含 1.5M 实例的指令微调数据集,其中包括 1.2M 的有用性实例和 0.3M 的安全性实例。数据质量经过优化,旨在减少幻觉并提升写作能力。DeepSeek-V2 进行了 2 个 epoch 的微调,学习率设为 5e-6。
4.2. Reinforcement Learning
强化学习算法 (GRPO)。为了节省 RL 的训练成本,DeepSeek-V2 采用了 组相对策略优化 (Group Relative Policy Optimization, GRPO)。该方法摒弃了通常与策略模型大小相同的 Critic 模型,而是从组分数中估计基线。具体而言,对于每个问题 $q$,GRPO 从旧策略 $\pi_{\theta_{old}}$ 中采样一组输出 $\{o_1, o_2, \cdots, o_G\}$,然后通过最大化以下目标来优化策略模型 $\pi_\theta$:
$$\begin{aligned} \begin{aligned} \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, \text{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{aligned} \end{aligned}$$其中优势 $A_i$ 使用组内输出对应的奖励 $\{r_1, r_2, \dots, r_G\}$ 计算:
$$A_{i}=\frac{r_{i}-mean(\{r_{1},r_{2},\cdots,r_{G}\})}{std(\{r_{1},r_{2},\cdots,r_{G}\})}.$$两阶段训练策略。由于推理任务(代码、数学)与通用任务的训练特性不同,作者采用了两阶段 RL 训练策略:
1. 推理对齐(Reasoning Alignment):首先训练一个用于代码和数学推理任务的奖励模型 $RM_{reasoning}$,并基于其反馈优化策略模型:
2. 人类偏好对齐(Human Preference Alignment):采用多奖励框架,结合有用性奖励模型 $RM_{helpful}$、安全性奖励模型 $RM_{safety}$ 和基于规则的奖励模型 $RM_{rule}$。最终奖励计算如下:
训练效率优化。针对超大模型的 RL 训练,实施了多项工程优化:
* 混合引擎:训练和推理采用不同的并行策略以提高 GPU 利用率。
* vLLM 后端:利用 vLLM 和大 batch size 加速推理生成。
* 调度策略:精心设计的 CPU 卸载和 GPU 加载调度,平衡速度与内存消耗。
4.3. Evaluation Results (对齐评估)
标准基准测试。DeepSeek-V2 Chat (SFT) 在 GSM8K、MATH 和 HumanEval 上相比基础版本有显著提升。DeepSeek-V2 Chat (RL) 进一步提升了数学和代码基准测试的性能。与 Qwen1.5 72B Chat、Mixtral 8x22B Instruct 和 LLaMA3 70B Chat 相比,DeepSeek-V2 Chat 在大多数基准上表现出众,特别是在中文任务、数学和代码领域。
开放式生成评估。
* 英文:在 MT-Bench 和 AlpacaEval 2.0 上,DeepSeek-V2 Chat (RL) 显著优于 SFT 版本,显示了 RL 的有效性。RL 版本在 AlpacaEval 2.0 上击败了 LLaMA3 70B Instruct。
* 中文:在 AlignBench 上,DeepSeek-V2 Chat (RL) 优于所有开源中文模型,甚至在中文语言理解上超过了 GPT-4-Turbo。
4.4. Discussion
SFT 数据量。实验表明,少于 10K 的 SFT 数据会导致 IFEval 性能显著下降,说明大模型仍需足够的数据来习得特定能力。
对齐税 (Alignment Tax)。RL 虽然提升了开放式生成能力,但在某些标准基准(如 BBH)上存在性能损失。通过改进数据和策略,作者实现了可接受的权衡。
在线强化学习。实验发现,在线 RL 方法显著优于离线方法。
💬 评论讨论
欢迎在这里分享您的想法和见解!