mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
3865 字
11 分钟
DeepSeek-V2:MLA+MoE 降成本
2026-07-27

DeepSeek-V2 论文解读:MLA 和 MoE,一头一尾把成本打下来#

论文:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model 作者:DeepSeek-AI DeepSeek-V2 是承上启下的一作:attention 这边有了全新的 MLA,FFN 那边沿用了上一篇的 DeepSeekMoE。V3 的架构骨架就是它搭的,甚至 R1 也是从它对齐出来的。理解 DeepSeek 后续所有工作的钥匙,一半在这篇里。


一、引言:两个瓶颈,一前一后#

开头把问题说得明白:模型越大越强,但代价是训练算力涨、推理吞吐掉。尤其是推理,有个隐藏的拦路虎——attention 的 KV cache。

Transformer 生成的时候,每个 token 的 key 和 value 都要缓存下来给后面的 token 用,序列越长、batch 越大,这个缓存越大,直接卡住最大 batch 和序列长度。为了省它,之前有人做 Grouped-Query Attention(GQA)和 Multi-Query Attention(MQA),但省缓存的同时性能也打折,不如标准的 MHA(Multi-Head Attention,多头注意力)。

DeepSeek 的思路是”我全都要”:设计一个 attention 机制,KV cache 比 GQA 还小,性能却比 MHA 还强——这就是 Multi-head Latent Attention(MLA)。FFN 那边则直接接上自家上一代的 DeepSeekMoE,稀疏计算,用更省的钱把模型练强。

把这两个凑一起就是 DeepSeek-V2:236B 总参数,每个 token 只激活 21B,上下文 128K。跟上一代稠密的 DeepSeek 67B 比,一组数字非常扎眼:

  • 训练成本省 42.5%
  • KV cache 减 93.3%
  • 最大生成吞吐提 5.76 倍
  • 性能还全面反超

这就是标题里三个词的意思:Strong(强)、Economical(省)、Efficient(快)。

二、MLA:把 KV cache 压成一个”小向量”#

为什么 KV cache 是瓶颈。 标准 MHA 里,每个 token 每层要缓存 2·n_h·d_h 个元素(所有头的 key 和 value)。头多、层深,这个数字巨大。

低秩联合压缩。 MLA 的核心是一招降维:不直接缓存 key 和 value,而是先投影到一个低维的 latent(潜在)向量 c_KV,叫”KV 联合压缩”。生成时只缓存这个压缩向量,用的时候再靠上投影矩阵把它还原成 key、value。这样每个 token 每层只需缓存 d_c 个元素,d_c 远小于原来的维度。

这招还有个额外的红利:因为 key 的还原矩阵 W_UK 可以”吸收”进 query 的投影矩阵 W_Q,value 的还原矩阵 W_UV 可以吸收进输出矩阵 W_O,推理时甚至不需要显式算出 key 和 value,直接在压缩空间里算 attention。训练时 query 也做同样的低秩压缩省显存(虽然它不影响 KV cache)。

解耦 RoPE。 这里有个技术上的坎:位置编码 RoPE 跟低秩压缩不兼容。RoPE 对 key 和 query 都敏感,一旦给 key 套上位置相关的 RoPE 矩阵,还原矩阵 W_UK 就没法吸收进 W_Q 了(因为中间夹着位置矩阵,矩阵乘法不交换),推理就得把前缀所有 token 的 key 重新算一遍,效率全没。

解法是”解耦 RoPE”:额外加一组多头的 query 和一个共享的 key,专门用来承载 RoPE 的位置信息。主路走压缩向量,旁路走位置信息,互不干扰。代价只是多缓存一小段解耦 key,可以忽略。

效果对照。 表格很清楚:MHA 每 token 缓存 2·n_h·d_h·l 个元素,GQA 是 2·n_g·d_h·l,MQA 是 2·d_h·l,MLA 只要 (d_c + d_Rh)·l,约等于 9/2·d_h·l。换算一下:MLA 的 KV cache 量级等于只有 2.25 个组的 GQA,但性能比 MHA 还强。DeepSeek-V2 里 d_c = 512(等于 4·d_h),解耦的每头维度是 64。

三、DeepSeekMoE:上一代的专家,这一代继续用#

FFN 部分直接采用 DeepSeekMoE 架构:细粒度专家切分加共享专家隔离。V2 里每层 2 个共享专家加 160 个路由专家,每个专家中间隐层维度 1536,每个 token 激活 6 个路由专家。

因为用了 expert parallelism(专家并行),路由专家分布在多卡上,这篇补了几个工程细节:

Device-Limited Routing(设备受限路由)。 细粒度切分后激活的专家数量多,如果专家乱分布在很多卡上,每个 token 的通信开销就大。做法是:每个 token 先挑亲和分最高的 M 个设备(V2 里 M=3),只在选中的设备里做 top-K。这样每个 token 最多跨 3 张卡,通信有上界,实测 M≥3 时性能跟不设限的 top-K 差不多。

三种辅助损失。 除了防 routing collapse(路由崩溃)的专家级平衡损失和保证卡间算力均衡的设备级平衡损失,还多了一个通信平衡损失,专门保证每张卡接收的 token 数也均衡,否则发送量有上界、接收量没谱,通信照样堵。

Token-Dropping(token 丢弃)。 平衡损失不能保证严格均衡,训练时再加一层保险:每张卡算平均计算预算,亲和分最低的 token 直接丢掉,丢到预算以内。留了个口子:大约 10% 的训练序列的 token 永远不丢。这样训练和推理的丢弃策略可以灵活对齐。

四、预训练:8.1T token,中文占大头#

数据处理沿用 DeepSeek 67B 的三阶段流程,但量加了、质升了:挖掘互联网数据潜力、优化清洗流程,“抢救”回一大批被误删的数据;中文数据特意加多,分词后中文 token 比英文多约 12%。还特意过滤掉有争议的内容,缓解地域文化带来的数据偏见。

模型配置:60 层、隐层 5120、128 个头(每头 128 维)、KV 压缩维度 512、query 压缩维度 1536、解耦每头维度 64。训练超参:AdamW、warmup 后阶梯下降、最大学习率 2.4e-4、batch size 从 2304 渐增到 9216。

长上下文扩展。 预训练默认序列长度 4K,之后用 YaRN 把上下文一路扩到 128K,scale 设 40、目标 160K。因为注意力结构特殊,作者把 YaRN 的熵调节因子改成了 √t = 0.0707·ln s + 1,用来压困惑度。训练只额外跑了 1000 步、序列长度 32K,但测 128K 时依然稳——“Needle In A Haystack”(大海捞针)测试从 1K 到 128K 全绿。

五、评估:21B 激活参数,打遍开源#

先看数字。21B 激活参数对 67B 稠密参数,DeepSeek-V2 在几乎所有 benchmark 上碾压 DeepSeek 67B。跟其它开源模型比:

  • 对 Qwen1.5 72B:英文、代码、数学全面胜出;中文多选题略输,其它项持平或更好。
  • 对 Mixtral 8x22B:英文整体相当或更好(英语常识类略输),MMLU 反超,代码数学相当;中文大幅领先(Mixtral 没吃中文数据)。
  • 对 LLaMA3 70B:英文基础能力有轻微差距——这个差距是坦率承认的,因为 DeepSeek-V2 的英文 token 只有 LLaMA3 的不到四分之一。但代码数学能力相当,中文 benchmark 碾压。

作者还特意点了一句:DeepSeek-V2 预训练阶段从未见过 SFT 数据。

训练成本。 H800 集群上每训 1T token,DeepSeek 67B 要 300.6K GPU 小时,DeepSeek-V2 只要 172.8K,省 42.5%。虽然 MoE 有额外通信开销,但算子和通信都优化过,MFU(算力利用率)不低。

推理效率。 部署时参数转 FP8,KV cache 再量化到平均每元素 6 bit。单机 8 张 H800,生成吞吐超 5 万 token/秒,是 DeepSeek 67B 的 5.76 倍;prompt 输入吞吐超 10 万 token/秒。

六、对齐:SFT 加两阶段 RL#

SFT。 1.5M 条指令数据(有用性 120 万 + 安全性 30 万),比初版提升了数据质量,重点治幻觉、提写作。微调 2 个 epoch,学习率 5e-6。SFT 后 GSM8K、MATH、HumanEval 大涨,因为 SFT 数据里数学代码含量高。

RL。 这里用了 GRPO(Group Relative Policy Optimization),这是从 DeepSeekMath 继承的算法。它跟 PPO 最大的区别:不要 critic 模型(那个通常跟策略模型一样大的值函数网络),而是对同一道题采一组输出,用组内分数的均值、标准差当基线算 advantage。省掉 critic 就是省一大笔训练开销。

RL 分两阶段。第一阶段”推理对齐”:专门训一个数学代码的奖励模型,用它的反馈优化策略。第二阶段”人类偏好对齐”:多奖励框架,有用性 + 安全性 + 规则奖励加权求和。代码偏好数据来自编译器反馈,数学偏好数据来自标准答案,奖励模型用 DeepSeek-V2 Chat (SFT) 初始化。工程上也下了功夫:混合引擎(训练和推理用不同并行策略)、vLLM 大 batch 推理后端、CPU 卸载调度。

评估成绩。 DeepSeek-V2 Chat (RL):MT-Bench 8.97、AlpacaEval 2.0 长度控制胜率 38.9、AlignBench 7.91。英文开放域对话在开源模型里是顶级;中文 AlignBench 上超越所有开源模型,甚至打败大多数闭源模型——中文语言理解单项超过 GPT-4-Turbo-1106-Preview,只有推理单项还落后于 ERNIEBot-4.0 和 GPT-4 这种巨无霸。

七、讨论:几条工程经验的沉淀#

SFT 数据量不能太少。 有工作说不到 1 万条 SFT 数据就够用,但 DeepSeek-V2 实验发现少于 1 万条时 IFEval 明显掉。解释是:模型需要一定数据量才能长出特定技能,虽然这个量随模型变大而减少,但不会归零。

Alignment Tax(对齐税)。 RL 让开放域生成大涨,但 BBH 这类标准 benchmark 被拖累——这就是对齐税。作者靠数据处理和训练策略把这笔税压到能接受的范围,但也承认”既对齐又不牺牲通用能力”是个值得继续研究的方向。

Online RL 优于 offline。 偏好对齐里在线方法明显强于离线方法,为此他们砸了很多功夫实现在线 RL 框架。

八、结论、局限与展望#

结论就是开头的三件套:性能强、训练省、推理快,21B 激活参数跻身当时最强开源模型之列。

局限还是那老三样:知识不更新、会幻觉、非中英语言弱。

展望里有一条特别值得注意:下一步的目标是”性能追平 GPT-4”——这就是 DeepSeek-V3 的方向。另外预告了要支持多模态。这两条后来都兑现了,只是多模态那条拐了个弯。

收尾:我的一点看法#

V2 这篇的价值,我认为被严重低估了。DeepSeekMoE 那篇解决的是”同样的算力,MoE 怎么比 GShard 更强”,V2 解决的是”推理时 KV cache 怎么不把 MoE 卡死”。两个问题合起来,才让”大而省”成为可能。

MLA 是个真正的原创点,值得单独夸。KV cache 是推理成本的隐藏大头,GQA、MQA 为了省它都牺牲了性能,MLA 用低秩压缩不仅没牺牲,还更强了。那个”上投影矩阵吸收进 W_Q / W_O”的细节尤其漂亮——推理时 key 和 value 根本不用算出来,等于把降维的收益吃干榨净。后来 DeepSeek-V3 用的也是 MLA,说明这个设计经住了规模考验。

还有一个值得品的位置:这篇论文的字里行间都在省。省训练用 MoE,省推理用 MLA,省 KV cache 用量化,省 RL 用 GRPO 砍掉 critic。它不是某个单一技术惊艳,而是一整套”省钱哲学”。放到 2024 年中,这套组合拳打出来的性价比,是其它开源模型很难跟的。

当然话说回来,英文基础能力确实被 LLaMA3 甩了一点——英文 token 不到人家的四分之一,这个账赖不掉。但中文一骑绝尘、代码数学相当,已经够它站在第一梯队。


附:核心数据速查#

DeepSeek-V2 基本盘

项目数值
总参数 / 激活参数236B / 21B
上下文长度128K
预训练数据8.1T tokens(中文 token 比英文多约 12%)
层数 / 隐层维度60 / 5120
attention 头数128(每头 128 维)
共享 / 路由专家2 + 160(每 token 激活 6 个路由专家)
每专家中间维度1536

对 DeepSeek 67B 的三项效率提升

指标数值
训练成本省 42.5%(300.6K → 172.8K GPU 小时 / 每 T token)
KV cache减 93.3%
最大生成吞吐提升至 5.76 倍(单机 8×H800 超 5 万 token/秒)
prompt 输入吞吐超 10 万 token/秒

关键 benchmark(Base,21B 激活参数)

  • MMLU 78.5;GSM8K 79.2;MATH 43.6;HumanEval 48.8;MBPP 66.6
  • C-Eval 81.7;CMMLU 84.0;CHID 92.7;CCPM 93.1

Chat (RL) 开放域成绩

  • MT-Bench 8.97;AlpacaEval 2.0 长度控制胜率 38.9;AlignBench 7.91

KV cache 每 token 对比(l = 层数)

注意力机制KV cache能力
MHA2·n_h·d_h·l
GQA2·n_g·d_h·l中等
MQA2·d_h·l
MLA(d_c+d_Rh)·l ≈ 4.5·d_h·l更强

关键概念清单

  • MLA = Multi-head Latent Attention,多头潜在注意力(低秩 KV 联合压缩)
  • KV cache = 推理时为加速生成的键值缓存
  • latent = 潜在向量(压缩后的低维表示)
  • decoupled RoPE = 解耦旋转位置编码(让 RoPE 与低秩压缩兼容)
  • DeepSeekMoE = 细粒度专家切分 + 共享专家隔离的 MoE 架构
  • expert parallelism = 专家并行(专家分布在不同设备上)
  • device-limited routing = 设备受限路由(每 token 最多跨 M 台设备)
  • routing collapse = 路由崩溃(少数专家霸榜)
  • token-dropping = 训练时按亲和分丢弃 token 保负载均衡
  • YaRN = 长上下文外推方法(4K → 128K)
  • GRPO = Group Relative Policy Optimization,组相对策略优化(无 critic 的 RL 算法)
  • alignment tax = 对齐税(对齐过程伤害部分 benchmark 性能)
  • AlpacaEval / MT-Bench / AlignBench = 中英开放域对话评测基准
  • MFU = Model FLOPs Utilization,模型算力利用率
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

DeepSeek-V2:MLA+MoE 降成本
https://mizuki-eaf.pages.dev/posts/deepseek/deepseek-v2mlamoe-降成本/
作者
无名之子
发布于
2026-07-27
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录