Files
note_sync/大模型/deepseek/01-基础模型/03-DeepSeek-V2-2405.04434.md
T

120 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DeepSeek-V2:一个强劲、经济且高效的混合专家语言模型
> **原文标题**:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model
> **arXiv**:[2405.04434](https://arxiv.org/abs/2405.04434) | **发布**:2024-05-07(最后修订 2024-06-19)
> **作者/机构**:DeepSeek-AI,Aixin Liu、Bei Feng、Bin Wang 等(DeepSeek(深度求索))
> **原文 PDF**:[03-DeepSeek-V2-2405.04434.pdf](./03-DeepSeek-V2-2405.04434.pdf)
## 一、摘要(全文翻译)
我们提出 DeepSeek-V2,一个强劲的混合专家(Mixture-of-Experts, MoE)语言模型,其特点是训练经济、推理高效。它包含 236B 总参数,其中每个 token 激活 21B 参数,并支持 128K token 的上下文长度。DeepSeek-V2 采用了包括多头潜在注意力(Multi-head Latent Attention, MLA)与 DeepSeekMoE 在内的创新架构。MLA 通过将键值(Key-Value, KV)缓存显著压缩为一个潜在向量来保证高效推理,而 DeepSeekMoE 则通过稀疏计算使得以经济成本训练强劲模型成为可能。与 DeepSeek 67B 相比,DeepSeek-V2 取得了显著更强的性能,同时节省了 42.5% 的训练成本,将 KV 缓存减少了 93.3%,并把最大生成吞吐提升到 5.76 倍。我们在一个由 8.1T token 组成的高质量、多来源语料上预训练 DeepSeek-V2,并进一步执行监督微调(Supervised Fine-Tuning, SFT)与强化学习(Reinforcement Learning, RL)以充分释放其潜力。评估结果显示,即使仅有 21B 激活参数,DeepSeek-V2 及其对话版本仍然在开源模型中达到顶尖性能。模型 checkpoint 可在 https://github.com/deepseek-ai/DeepSeek-V2 获取。
## 二、核心贡献
1. **多头潜在注意力(MLA)**:针对多头注意力(MHA)推理时 KV 缓存过大、而 MQA/GQA 又牺牲性能的两难,提出用低秩联合压缩把键和值压成一个潜在向量,KV 缓存降至 $(d_c+d_h^R)l \approx \frac{9}{2}d_h l$,仅相当于 2.25 组的 GQA,但性能反而强于 MHA。
2. **解耦旋转位置编码(Decoupled RoPE)**:解决 RoPE 与低秩 KV 压缩不兼容(上投影矩阵无法被吸收进 $W^Q$,导致推理时须重算全部前缀 key)的矛盾,用额外的多头查询与共享 key 单独承载位置信息。
3. **DeepSeekMoE 稀疏架构**:沿用细粒度专家切分与共享专家隔离,实现 236B 总参数、仅 21B 激活;并配套设备受限路由、三种负载均衡损失与 token 丢弃,控制专家并行的通信与负载。
4. **训练经济性**:在 8.1T token 上预训练,每训练 1T token 仅需 172.8K GPU 小时,相比稠密的 DeepSeek 67B(300.6K GPU 小时)节省 42.5% 训练成本。
5. **推理高效性**:KV 缓存减少 93.3%,单节点 8×H800 上生成吞吐超过 50K tokens/s,为 DeepSeek 67B 最大生成吞吐的 5.76 倍,prompt 输入吞吐超过 100K tokens/s。
6. **性能与开源**:21B 激活参数即成为最强开源 MoE 语言模型;同时开源 15.7B 总参数、2.4B 激活的 DeepSeek-V2-Lite。
## 三、方法与技术要点
### 3.1 背景:为什么 KV 缓存是推理瓶颈
标准 MHA 先用 $W^Q,W^K,W^V\in\mathbb{R}^{d_h n_h\times d}$ 生成 $\mathbf{q}_t,\mathbf{k}_t,\mathbf{v}_t$,再切成 $n_h$ 个头做注意力。推理时所有 key 和 value 都必须缓存,因此 MHA 每个 token 需要缓存 $2n_h d_h l$ 个元素($l$ 为层数)。这一沉重缓存在部署中限制了最大 batch size 与序列长度——这正是 MQA($2d_h l$)和 GQA($2n_g d_h l$)想要缓解的问题,但它们以性能下降为代价(附录 D.1:7B 稠密模型 MMLU 上 MHA 45.2 明显优于 GQA 41.2 与 MQA 37.9)。
### 3.2 低秩键值联合压缩
MLA 的核心是把 key 与 value 联合压缩到低维潜在向量:先下投影 $\mathbf{c}_t^{KV}=W^{DKV}\mathbf{h}_t$($\mathbf{c}_t^{KV}\in\mathbb{R}^{d_c}$,$d_c\ll d_h n_h$),再由上投影还原 $\mathbf{k}_t^{C}=W^{UK}\mathbf{c}_t^{KV}$、$\mathbf{v}_t^{C}=W^{UV}\mathbf{c}_t^{KV}$。推理时只需缓存 $\mathbf{c}_t^{KV}$,KV 缓存降为 $d_c l$ 个元素;而且 $W^{UK}$ 可以被吸收进 $W^Q$、$W^{UV}$ 可以被吸收进 $W^O$,因此甚至不必显式计算 key 与 value。此外,查询也被低秩压缩($\mathbf{c}_t^{Q}=W^{DQ}\mathbf{h}_t$,$\mathbf{q}_t^{C}=W^{UQ}\mathbf{c}_t^{Q}$,$d_c'=1536$),虽然这不能减少 KV 缓存,但能降低训练时的激活显存。
### 3.3 解耦旋转位置编码
RoPE 对 key 和 query 都是位置敏感的。若直接对 $\mathbf{k}_t^{C}$ 施加 RoPE,$W^{UK}$ 就会与位置相关的 RoPE 矩阵耦合,而矩阵乘法不满足交换律,$W^{UK}$ 便无法再被吸收进 $W^Q$,推理时必须为所有前缀 token 重算 key,严重拖慢推理——这就是"RoPE 与低秩 KV 压缩不兼容"的实质。解决方案是让额外的多头查询 $\mathbf{q}_{t,i}^{R}\in\mathbb{R}^{d_h^{R}}$ 与共享 key $\mathbf{k}_t^{R}=\operatorname{RoPE}(W^{KR}\mathbf{h}_t)$ 单独承载 RoPE,再与压缩分支拼接后计算注意力。代价是解耦 key 也须缓存,故总 KV 缓存为 $(d_c+d_h^{R})l$。论文取 $d_c=4d_h$、$d_h^{R}=\frac{d_h}{2}$,于是得到 $\frac{9}{2}d_h l$,恰等于只有 2.25 组的 GQA,却强于 MHA。
### 3.4 设备受限路由、负载均衡与 Token 丢弃
对 FFN 部分,DeepSeekMoE 把专家切得更细以获得更高专家专业化,并隔离出一批共享专家以缓解路由专家间的知识冗余:$\mathbf{h}_t'=\mathbf{u}_t+\sum_{i=1}^{N_s}\operatorname{FFN}_i^{(s)}(\mathbf{u}_t)+\sum_{i=1}^{N_r}g_{i,t}\operatorname{FFN}_i^{(r)}(\mathbf{u}_t)$,其中门控值 $g_{i,t}$ 只在亲和度 $s_{i,t}=\operatorname{Softmax}_i(\mathbf{u}_t^{T}\mathbf{e}_i)$ 的 top-$K_r$ 上非零。由于专家切分很细、激活专家数多,专家并行下的通信代价很高,因此引入**设备受限路由**:先选出亲和度分数最高的 $M$ 台设备,再只在这 $M$ 台设备上的专家里做 top-K 选择;实验发现 $M\geqslant 3$ 时性能已与无限制 top-K 路由大致对齐。为抑制路由坍缩并平衡计算与通信,训练中叠加三种辅助损失:专家级 $\mathcal{L}_{\mathrm{ExpBal}}=\alpha_1\sum_{i=1}^{N_r}f_iP_i$、设备级 $\mathcal{L}_{\mathrm{DevBal}}=\alpha_2\sum_{i=1}^{D}f_i'P_i'$、通信级 $\mathcal{L}_{\mathrm{CommBal}}=\alpha_3\sum_{i=1}^{D}f_i''P_i''$($f$ 为被选中/被发送的比例,$P$ 为平均亲和度)。设备受限路由保证每台设备最多发送 $MT$ 个隐状态,通信均衡损失则鼓励每台设备接收约 $MT$ 个,从而均衡设备间信息交换。最后,由于均衡损失无法保证严格均衡,训练时采用**设备级 token 丢弃**:以容量因子 1.0 为预算,丢弃各设备上亲和度最低的 token,但保证约 10% 训练序列的 token 永不被丢弃,从而在训练与推理间保持一致。
### 3.5 预训练设置与长上下文扩展
模型为 60 层、隐维度 5120,参数按标准差 0.006 随机初始化;MLA 中 $n_h=128$、$d_h=128$、$d_c=512$、$d_c'=1536$、$d_h^{R}=64$。除第一层外所有 FFN 替换为 MoE 层,每层 2 个共享专家 + 160 个路由专家,专家中间维度 1536,每 token 激活 6 个路由专家。由于低秩压缩与细粒度专家切分会改变层的输出尺度,论文在压缩潜在向量后加 RMS Norm,并在"宽度瓶颈"处(压缩潜在向量与专家中间隐状态)乘额外缩放因子以保证训练稳定。训练用 AdamW($\beta_1=0.9$、$\beta_2=0.95$、weight decay 0.1),学习率按 warmup-and-step-decay 调度:前 2K 步线性升到 $2.4\times10^{-4}$,训练约 60% 和 90% token 时各乘 0.316;梯度裁剪范数为 1.0;batch size 在首个 225B token 内从 2304 渐增至 9216 后保持不变;最大序列长度 4K,共训练 8.1T token。路由方面 $D=8$(每层专家均摊到 8 台设备)、$M=3$,三个均衡因子取 $\alpha_1=0.003$、$\alpha_2=0.05$、$\alpha_3=0.02$。基础设施基于内部 HAI-LLM 框架,采用 16 路 zero-bubble 流水线并行、8 路专家并行与 ZeRO-1 数据并行;因激活参数少且部分算子重算以省激活显存,无需张量并行,通信开销更低;共享专家计算与 all-to-all 通信重叠,并为通信、路由与跨专家融合线性计算定制了 CUDA kernel,MLA 基于改进版 FlashAttention-2 优化;实验在 NVIDIA H800 集群上完成。预训练后使用 YaRN 把上下文从 4K 扩到 128K,且只作用于承载 RoPE 的解耦共享 key $\mathbf{k}_t^{R}$;参数取 $s=40$、$\alpha=1$、$\beta=32$、目标最大长度 160K,并把长度缩放因子调整为 $\sqrt{t}=0.0707\ln s+1$ 以调制注意力熵、最小化困惑度;额外只以 32K 长度、576 条序列的 batch 训练 1000 步,却能在 128K 上下文上保持稳健(NIAH 测试在直至 128K 的窗口长度上表现良好)。
### 3.6 数据与对齐
数据构建沿用 DeepSeek 67B 的处理阶段,但扩大数据量并提升质量:优化清洗流程找回被误删数据、纳入更多中文数据、改进质量过滤算法,并过滤有争议内容以缓解区域文化带来的数据偏差;分词器与 DeepSeek 67B 相同(Byte-level BPE,词表 100K)。最终语料 8.1T token,其中中文 token 比英文多约 12%。对齐阶段先用 1.5M 条指令数据(1.2M 有用性 + 0.3M 安全性)做 2 个 epoch 的 SFT,学习率 $5\times10^{-6}$;随后用 GRPO 做强化学习,它省去通常与策略模型同规模的 critic 模型,改由组内得分估计基线:对每个问题采样一组输出 $\{o_1,\dots,o_G\}$,目标为裁剪后的重要性比率乘优势 $A_i=\frac{r_i-\mathrm{mean}(\{r_1,\dots,r_G\})}{\mathrm{std}(\{r_1,\dots,r_G\})}$,并加 KL 惩罚项 $\beta\mathbb{D}_{KL}(\pi_\theta||\pi_{ref})$。RL 分两阶段:先做推理对齐(用 $\mathrm{RM}_{reasoning}$ 反馈优化代码与数学能力),再做人类偏好对齐($r_i=c_1\mathrm{RM}_{helpful}+c_2\mathrm{RM}_{safety}+c_3\mathrm{RM}_{rule}$)。工程上提出训练/推理使用不同并行策略的混合引擎、以 vLLM 大 batch 作推理后端,并设计 CPU offload 与回载调度,在速度与显存间取得近最优平衡。
## 四、主要实验结果
**基座模型开源对比(Table 2,同一内部评测框架)**
| 基准 / 任务 | 本模型(DeepSeek-V2,21B 激活) | 对比对象 | 说明 |
|---|---|---|---|
| MMLU (Acc., 5-shot) | 78.5 | LLaMA3 70B 78.9;Mixtral 8x22B 77.6;Qwen1.5 72B 77.2;DeepSeek 67B 71.3 | 差距 0.3 内视为同级 |
| Pile-test (BPB) | 0.606 | LLaMA3 70B 0.602;Mixtral 0.623;Qwen1.5 0.637;DeepSeek 67B 0.642 | 仅略逊于 LLaMA3 |
| BBH (EM, 3-shot) | 78.9 | LLaMA3 81.0;Mixtral 78.9;DeepSeek 67B 68.7 | 与 Mixtral 持平 |
| DROP (F1, 3-shot) | 80.1 | LLaMA3 82.5;Mixtral 80.4 | |
| TriviaQA (EM) / NaturalQuestions (EM) | 79.9 / 38.7 | Mixtral 82.1 / 39.6;LLaMA3 81.6 / 40.2 | 与英文常识知识强相关的短板 |
| AGIEval (Acc., 0-shot) | 51.2 | Qwen1.5 64.4;LLaMA3 49.8;Mixtral 43.4 | 明显落后 Qwen1.5 |
| HumanEval (Pass@1) / MBPP | 48.8 / 66.6 | Mixtral 53.1 / 64.2;LLaMA3 48.2 / 68.6 | 代码与 Mixtral 相当 |
| CRUXEval-I / CRUXEval-O (Acc.) | 52.8 / 49.8 | Mixtral 52.4 / 52.8;LLaMA3 49.4 / 54.3 | |
| GSM8K (EM) / MATH (EM) | 79.2 / 43.6 | LLaMA3 83.0 / 42.2;Mixtral 80.3 / 42.5 | MATH 上为对比中最高 |
| CMath (EM, 3-shot) | 78.7 | Qwen1.5 77.8;LLaMA3 73.9;Mixtral 72.3 | 中文数学领先 |
| C-Eval (Acc.) / CMMLU (Acc.) | 81.7 / 84.0 | Qwen1.5 83.7 / 84.3;LLaMA3 67.5 / 69.3 | Qwen1.5 在中文多学科选择题上更好 |
| CMRC (EM) / C3 (Acc.) / CHID (Acc.) / CCPM (Acc.) | 77.5 / 77.4 / 92.7 / 93.1 | Qwen1.5 66.6 / 78.2 / — / 88.1;DeepSeek 67B 73.4 / 75.3 / 92.1 / 88.5 | 中文全面领先 |
**对话模型与开放式生成(Table 3–5)**
| 基准 / 任务 | 本模型 | 对比对象 | 说明 |
|---|---|---|---|
| MT-Bench | Chat (RL) 8.97 | LLaMA3 70B Inst. 8.95;Qwen1.5 72B Chat 8.61;Mixtral 8x22B Inst. 8.66 | Chat (SFT) 为 8.62 |
| AlpacaEval 2.0(长度控制胜率) | Chat (RL) 38.9 | Qwen1.5 36.6;LLaMA3 34.4;Mixtral 30.9 | Chat (SFT) 为 30.0 |
| AlignBench(总分,GPT-4-0613 打分) | Chat (RL) 7.91 / Chat (SFT) 7.74 | ERNIEBot-4.0 7.89;GPT-4-0613 7.53;GPT-4-1106-Preview 8.01 | 中文超越全部开源模型与多数闭源模型 |
| MMLU / IFEval(chat) | SFT 78.4 / 64.1;RL 77.8 / 63.8 | LLaMA3 70B Inst. 80.3 / 79.7 | RL 反而略降,且指令跟随明显落后 |
| GSM8K / MATH / HumanEval | RL 92.2 / 53.9 / 81.1 | LLaMA3 93.2 / 48.5 / 76.2;Mixtral 87.9 / 49.8 / 75.0 | RL 相比 SFT(90.8 / 52.7 / 76.8)进一步提升 |
| LiveCodeBench (Pass@1) | RL 32.5 | LLaMA3 30.5;Mixtral 25.0 | SFT 为 28.7 |
| SC-Math6(中文数学,综合分) | RL 83.35 | GPT-4-1106-Preview 90.71;ERNIEBot 4.0 85.60;Qwen-110B-Chat 83.25 | 优于所有中文 LLM,仍低于 GPT-4 |
**效率与消融**
| 基准 / 任务 | 本模型 | 对比对象 | 说明 |
|---|---|---|---|
| 训练成本(每 1T token) | 172.8K GPU 小时 | DeepSeek 67B 300.6K GPU 小时 | 节省 42.5% |
| KV 缓存 / token(大 MoE,Table 9) | MLA 34.6K 元素 | MHA 860.2K 元素 | 约为 4%(小 MoE 为 14%) |
| 生成吞吐(单节点 8×H800) | >50K tokens/s(prompt 输入 >100K tokens/s) | DeepSeek 67B | 最大生成吞吐的 5.76 倍 |
| 大 MoE 消融 MMLU / BBH(Table 9) | MLA 59.0 / 50.7 | MHA 57.5 / 46.6 | MLA 性能更强且缓存小两个数量级 |
| DeepSeek-V2-Lite 基座 MMLU / GSM8K | 58.3 / 41.1 | DeepSeekMoE 16B 45.0 / 18.8;DeepSeek 7B 48.2 / 17.4 | 15.7B 总参、2.4B 激活、5.7T token |
总体来看,DeepSeek-V2 以 21B 激活参数在绝大多数基准上显著超过 DeepSeek 67B,并与 70B 级稠密模型同级:数学(MATH 43.6 为对比最高)、中文(C-Eval/CMMLU/CCPM/CMRC 等)与代码多处领先;短板集中在与英文常识知识强相关的 TriviaQA、NaturalQuestions、HellaSwag,中文多学科选择题略逊于 Qwen1.5 72B,指令跟随(IFEval 64.1 对 79.7)明显落后 LLaMA3 70B。对话版本中 RL 阶段在数学、代码与开放式生成上进一步提升,AlpacaEval 2.0 与 MT-Bench 均超过同期开源模型,AlignBench 中文总分超过 ERNIEBot-4.0 与 GPT-4-0613,但推理能力仍落后巨型模型。
## 五、结论、局限与影响
- **结论**:DeepSeek-V2 是一个支持 128K 上下文的大型 MoE 语言模型,凭借 MLA 与 DeepSeekMoE 同时实现了强劲性能、经济的训练成本与高效的推理。相比 DeepSeek 67B,它性能显著更强,同时节省 42.5% 训练成本、减少 93.3% KV 缓存、把最大生成吞吐提升到 5.76 倍;仅用 21B 激活参数即成为最强开源 MoE 模型。
- **局限性**:作者自述与其他 LLM 共有的局限包括:预训练后缺乏持续的知识更新、可能生成未经核实的建议等非事实信息、以及存在幻觉;由于训练数据以中英文为主,其他语言能力可能有限,中英文之外应谨慎使用。附录 E 另指出,为对预训练语料去偏(过滤争议性内容),模型在与特定区域文化紧密相关的测试集上表现略差:如 MMLU 的 Humanity-Moral 子集落后于 Mixtral 8x22B,而人工标注者在该子集 420 个道德情景上与标准答案的一致性很低(与标注者 3 之间仅 42.1%)。讨论部分还指出 SFT 数据少于 10K 条时 IFEval 显著下降、RL 存在"对齐税"(损害 BBH 等基准),且在线 RL 明显优于离线 RL。
- **影响**:MLA 与 DeepSeekMoE 证明稀疏架构能在压缩 KV 缓存的同时不牺牲(甚至提升)性能,确立了"总参数大、激活参数小、缓存极小"的工程范式;模型权重与 DeepSeek-V2-Lite 均已开源。作者表示下一步目标是在后续版本中达到与 GPT-4 相当的性能,并继续在保持经济成本的前提下扩大 MoE 规模、把模型从纯文本扩展到多模态。
## 六、关键术语对照表
| English | 中文 |
|---|---|
| Mixture-of-Experts (MoE) | 混合专家 |
| Multi-head Latent Attention (MLA) | 多头潜在注意力 |
| Key-Value (KV) Cache | 键值缓存 |
| Low-Rank Key-Value Joint Compression | 低秩键值联合压缩 |
| Decoupled Rotary Position Embedding | 解耦旋转位置编码 |
| Rotary Position Embedding (RoPE) | 旋转位置编码 |
| Multi-Head Attention (MHA) | 多头注意力 |
| Grouped-Query Attention (GQA) | 分组查询注意力 |
| Multi-Query Attention (MQA) | 多查询注意力 |
| DeepSeekMoE | DeepSeek 混合专家架构 |
| Fine-Grained Expert Segmentation | 细粒度专家切分 |
| Shared Expert Isolation | 共享专家隔离 |
| Device-Limited Routing | 设备受限路由 |
| Expert Parallelism | 专家并行 |
| Auxiliary Loss for Load Balance | 负载均衡辅助损失 |
| Token-Dropping Strategy | Token 丢弃策略 |
| Group Relative Policy Optimization (GRPO) | 组相对策略优化 |
| Supervised Fine-Tuning (SFT) | 监督微调 |
| Alignment Tax | 对齐税 |
| Bits-Per-Byte (BPB) | 每字节比特数 |