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

17 KiB
Raw Blame History

DeepSeek-V2:一个强劲、经济且高效的混合专家语言模型

原文标题:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model arXiv:2405.04434 | 发布:2024-05-07(最后修订 2024-06-19) 作者/机构:DeepSeek-AI,Aixin Liu、Bei Feng、Bin Wang 等(DeepSeek(深度求索)) 原文 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) 每字节比特数