← 返回写作
12 分钟阅读

DeepSeek的推理为什么比别人便宜一个数量级?——MLA、MoE、MTP技术拆解

DeepSeek的推理为什么比别人便宜一个数量级?——MLA、MoE、MTP技术拆解

DeepSeek的推理为什么比别人便宜一个数量级?——MLA、MoE、MTP技术拆解

如果你最近调过各家大模型的API,你一定注意到一件事。

GPT-4o 的价格大概是输入 $2.5/1M token,输出 $10/1M token。Claude Opus 4 更贵一些。但 DeepSeek V3 呢?输入 $0.27/1M token,输出 $1.1/1M token。输出价格差了将近10倍。

这就引出一个很自然的问题:DeepSeek 凭什么便宜这么多?是补贴烧钱?还是有什么硬核的技术突破?

答案在后半段。DeepSeek 的推理成本优势来自三项核心技术的组合:MLA(Multi-Head Latent Attention,多头潜在注意力)、MoE(Mixture of Experts,专家混合)和 MTP(Multi-Token Prediction,多token预测)。

这三项技术单独拿出来,每一项都能省一些成本。组合在一起,打出了一个数量级的成本差。

这篇文章把这三项技术从头拆一遍。读完你会知道,不是 DeepSeek 在烧钱补贴——是它的推理架构确实和 GPT-4o 不在同一代。

Cover

先搞清楚:推理成本到底花在哪

在拆 MLA 之前,先得回答一个更基础的问题:一次推理到底哪里花钱?

你在 API 上花的每一分钱,对应的是 GPU 上的一次计算。而 GPU 上最贵的东西,不是计算本身,是显存带宽

回顾一下 Transformer 的推理过程。当模型收到你的输入 token 序列后,分两个阶段工作。

Prefill 阶段:所有输入 token 并行通过 Transformer 各层,一次性算出每个 token 在每一层的 Key 和 Value 向量,存进 KV Cache。这个阶段是算力密集的——GPU 的 Tensor Core 被喂饱,利用率高。

Decode 阶段:每生成一个新 token,都要用新 token 的 Query 去和 KV Cache 里所有历史 token 的 Key/Value 做注意力计算。这个阶段是显存带宽密集的——每次生成都要把整个 KV Cache 从显存读到计算单元,搬运数据的开销远大于计算本身。

问题就出在这个 KV Cache 上。

KV Cache 的大小跟四个因素成正比:层数 × 隐藏维度 × 上下文长度 × 批处理大小。一个 70B 参数的标准 Transformer 模型,在 8K 上下文、batch=32 的场景下,KV Cache 可以轻松占满 80GB 显存。

而 GPU 的显存是有限的。H100 单卡 80GB,H200 141GB。模型参数本身就要占掉一半以上,留给 KV Cache 的空间非常紧张。

推理成本的核心矛盾就在这:KV Cache 越大 → 单卡能同时服务的请求越少 → 摊到每个请求上的 GPU 成本越高。

如果你能把 KV Cache 缩小 10 倍,一张卡就能服务 10 倍的请求。单次推理的成本就降下来了。

DeepSeek 的 MLA 干的就是这件事。

推理成本矛盾

MLA:把 KV Cache 压缩到原来的 1/5

标准的多头注意力(MHA)是怎么产生 KV Cache 的?

假设当前这一层的输入隐藏维度是 d(比如 4096)。对每个 token,模型会通过三个权重矩阵分别算出 Q、K、V 向量:

1
2
3
Q = x · W_Q    (维度: d → d_q)
K = x · W_K (维度: d → d_k)
V = x · W_V (维度: d → d_v)

其中 W_QW_KW_V 是三个可训练的权重矩阵。对于标准的 MHA,d_q = d_k = d_v = d。每个 token 每层产生的 KV 向量总大小就是 2 × d 个元素。如果用 bf16 存储(每个元素 2 字节),一个 token 一层的 KV Cache 就是 4 × d 字节。

但问题来了:K 和 V 这两个向量,真的是独立的吗?

MLA 的核心洞察是:K 和 V 不是独立的信息源,它们共享很大一部分底层表示。与其分别从 x 投影到 K 和 V,不如先把 x 压缩到一个低维的”潜在空间”,再从潜在空间分别展开成 K 和 V。

具体来说,MLA 的做法是:

第一步,把输入 x 通过一个降维矩阵 W_DKV 压缩成一个低维向量 c(维度 d_c << d):

1
c = x · W_DKV    (维度: d → d_c)

这个 c 就是所谓的”潜在向量”(Latent Vector)。d_c 的大小通常是 d 的 1/3 到 1/5。比如 DeepSeek V3 里,d ≈ 7168,d_c ≈ 512。

第二步,当需要 K 和 V 的时候,再从 c 分别通过两个升维矩阵展开:

1
2
K = c · W_UK    (维度: d_c → d_k)
V = c · W_UV (维度: d_c → d_v)

这里的 W_UKW_UV 是升维矩阵(U 代表 Up-projection)。

关键来了:缓存什么?

在标准 MHA 里,你必须缓存完整的 K 和 V 向量,每个 token 每层的大小是 d_k + d_v ≈ 2d。

在 MLA 里,你只需要缓存那个压缩后的潜在向量 c。每个 token 每层的大小只有 d_c(通常是 d 的 1/3 到 1/5)。

需要做注意力的时候,临时把 c 展开成 K 和 V。虽然展开需要额外计算,但这个计算量远小于省下来的显存带宽。

KV Cache 缩小了多少?以 DeepSeek V3 的参数为例:d ≈ 7168,d_c ≈ 512。标准 K+V 每 token 每层大约 14K 元素,MLA 只需要 512 元素。压缩比接近 28 倍

但注意,这只是 KV Cache 存储部分的压缩。实际做注意力时,Q 的维度没变,和 K 做点积的复杂度不变。也就是说,MLA 省的是显存,不省计算量

但对于 Decode 阶段(显存带宽密集),省显存就是省钱。KV Cache 缩小 5-10 倍,意味着同样的 GPU 可以同时服务 5-10 倍的并发请求,每次请求分摊的 GPU 成本也就降了 5-10 倍。

而且 MLA 还有一个隐形收益:可以支持更长的上下文。如果 KV Cache 占用显存变小了,你就能在同样的硬件上塞进更多 token 的历史,支持更大的上下文窗口。

MLA原理

MoE:671B 参数,每次推理只用 37B

MLA 解决的是显存问题。MoE 解决的是计算量问题。

DeepSeek V3 是一个总参数量 671B 的超大模型。如果每次推理都把全部 671B 参数跑一遍,那就算 KV Cache 优化得再好,计算成本也压不下来。

MoE 的思路是:模型虽然大,但每次推理只激活其中一小部分。

具体怎么做的?把 Transformer 的 FFN 层(前馈网络,Transformer 里最吃计算的部分)拆成多个”专家”(Expert)。每个专家是一个独立的小 FFN。

DeepSeek V3 有 256 个路由专家(Routed Expert),外加少量共享专家(Shared Expert)。每层一个 Router(路由器,一个小型门控网络),根据当前 token 的内容,动态选择激活哪几个专家。

对于一个给定的 token:

1
2
Router 输出:softmax(x · W_r) → [256 个分数]
选 Top-8 激活,其余 248 个专家这轮不参与计算

也就是说,每个 token 只经过 8 个专家的计算,加上 1 个共享专家,总共约37B 激活参数。占 671B 总参数的 5.5%。

计算量直接砍了 18 倍。

这带来了几个工程上的影响:

训练时:671B 的模型,实际每次前向只需要 37B 的计算量。意味着训练速度大幅提升——DeepSeek V3 的训练成本约 560 万美元,而同等参数量的 Dense 模型(比如 LLaMA 3 405B)训练成本是这个的 5-10 倍。

推理时:虽然需要把所有 671B 参数加载到显存(因为不同 token 可能激活不同专家),但每次前向的实际 FLOPs 只相当于一个 37B 的模型。推理延迟由激活参数决定,不是总参数。

专家负载均衡:MoE 训练的一个核心挑战是”专家坍塌”——Router 可能只把 token 分配给少数几个专家,其他专家被闲置。DeepSeek 通过一个辅助的负载均衡损失(Load Balancing Loss)来鼓励均匀分配,同时用设备级的路由策略来减少跨节点的通信开销。

MoE 还有一个在长序列下很关键的优势:Attention 层的总内存不变,但因为 FFN 只激活一小部分专家,KV Cache 和模型并发的压力被分开了——模型本体大,但计算量小。这恰好和 MLA 形成了互补:MLA 压 KV Cache(显存瓶颈),MoE 压 FFN 计算(算力瓶颈)。

MoE架构

MTP:一次生成多个 token

MLA 压显存,MoE 压计算。现在来看第三个优化:MTP,它从吞吐量角度省钱。

标准的自回归生成(Autoregressive Decoding)是”一次一个 token”。生成第 i 个 token → 拼到输入序列末尾 → 再生成第 i+1 个。每一步都要走一遍完整的 Transformer 前向。

MTP 的做法是:一次前向,同时预测未来 N 个 token

DeepSeek V3 用 N=2(同时预测当前 token 和下一个 token),DeepSeek 的论文中提到他们验证了 N=2 到 N=4,在 N=2 时性价比最优。

具体架构上,MTP 在 Transformer 的主输出层之上,加了一个额外的预测头(Prediction Head)。主模型输出当前 token 的 logits 的同时,MTP 头用一个小的 Transformer 模块去预测下一个 token。可以理解为在 Decode 阶段打了”提前量”。

带来的收益:

吞吐量翻倍:一次前向出 2 个 token,同样时间多生成一倍内容。虽然 MTP 头本身也消耗少量计算,但这部分远小于重新跑一次完整 Decode。

验证阶段加速:在投机解码(Speculative Decoding)场景下,MTP 可以直接作为”草稿模型”(Draft Model),不需要额外的小模型。大模型自己预测未来 token,然后一次性验证。这在在线服务场景下特别有用。

训练信号增强:MTP 让模型在训练时就学会预测”未来”,这个更强的任务反过来提升了模型对因果关系的建模能力。DeepSeek 的论文数据显示,MTP 对下游任务(尤其是长文本和推理任务)有持续的微小提升。

MTP 的代价主要是训练成本增加(多了 MTP 头的参数和梯度),对推理来说几乎没有额外成本。是一次性的训练投资,换来后续每次推理的吞吐量翻倍。

MTP原理

三者叠加:一个数量级的成本差是怎么打出来的

现在把 MLA、MoE、MTP 放在一起看。

假设有一个标准 70B Dense Transformer 模型作为 Baseline。我们看一下 DeepSeek V3 在每个成本维度上的优化:

维度 Baseline(70B Dense) DeepSeek V3 优化倍数
KV Cache 显存 每 token 每层 2d 元素 MLA:d_c ≈ d/5 ~5x
激活参数 70B 全激活 MoE:37B/671B ~2x vs 70B Dense(若按同等总参比则是 18x)
单次 Decode 效率 1 token/前向 MTP:2 token/前向 ~2x

这三项是乘法关系

  • MLA 让同样显存服务更多并发 → 每请求 GPU 成本 ÷ 5
  • MoE 让每次前向计算量更小 → 每请求 GPU 耗时 ÷ 2
  • MTP 让每次前向产出更多 token → 每请求 GPU 耗时 ÷ 2

综合下来,推理成本节省了约 5 × 2 × 2 ≈ 20 倍。这就是你看到的 API 价格差 10-20 倍的技术解释。

但数字不是精确乘出来的。实际业务中,推理成本还受以下因素影响:

  • 请求并发度:MLA 的收益在高并发场景下更明显。低并发时,KV Cache 本来就不紧张,MLA 的优势打折。
  • 请求长度分布:MTP 对长输出(长文生成、代码生成)收益大。对短问答场景(平均输出 < 50 token),MTP 多预测的那一个 token 价值不大。
  • MoE 的通信开销:分布式推理时,不同专家可能分布在不同 GPU 上,token 的动态路由会产生跨卡通信。这是 MoE 的隐形开销,在单卡推理时不明显,跨卡时会吃掉一部分收益。
  • 硬件适配:MLA 和 MTP 需要专门的算子优化才能充分发挥。如果用标准 PyTorch 实现,性能可能远不如 DeepSeek 内部高度优化的 C++/CUDA kernel。

这也是为什么 DeepSeek 选择把这些技术全部开源:MLA 的论文、V3 的技术报告、甚至部分训练细节都公开了。因为技术壁垒不在于”知道这些方案”,而在于把它们在工程层面高效实现出来。

三者叠加

为什么其他大厂不跟进?

一个很自然的疑问:如果 MLA + MoE + MTP 这么好,为什么 OpenAI、Google、Anthropic 不直接抄?

原因很复杂,但核心有几条:

MoE 的工程复杂度:训练一个 671B 的 MoE 模型,需要处理专家负载均衡、跨节点路由通信、MoE 特有的训练不稳定性。Dense 模型(如 GPT-4o 可能是 ~200B Dense)架构更简单,工程风险更低。不是不能做,而是需要投入大量的工程精力去做——而大厂的既有模型架构已经沉淀了大量优化资源,短时间切 MoE 不一定是理性的。

推理部署的不同策略:OpenAI/Anthropic 的商业模式更偏向超大规模集中推理——同一个模型服务几千万用户,通过极致的批处理和定制硬件(如 TPU)摊薄成本。DeepSeek 的选择是用架构创新换硬件成本——让没那么强的硬件(H800 而不是 H100)也能高效推理。两种策略的优化方向不同。

MLA 的兼容性成本:标准 MHA 有成熟的 FlashAttention 优化(Dao 的 FlashAttention-2/3 已成为事实标准)。MLA 需要重新实现注意力 kernel,这不是几个工程师几个月能搞定的事。DeepSeek 自己为 MLA 写了专门的 CUDA kernel,这个工程量大部分团队负担不起。

MTP 不是 DeepSeek 首创:一次预测多个 token 的想法学术界早就有(Meta 的 Multi-Token Prediction、Google 的 Medusa),但 DeepSeek 把它和 MLA/MoE 组合在一起,并且在超大规模模型上验证了有效性。这是”组合创新”而非”原创发明”。

本质上,DeepSeek 的竞争策略是:用算法创新弥补算力差距。在芯片受限的情况下(H800 而不是 H100/H200),通过架构设计让有限算力发挥更大价值。而美国大厂拿着最强的硬件,优化的优先级是最大吞吐而非最低成本。

技术对比

一张图总结 DeepSeek 的推理架构

把上面这些东西串起来,一次 DeepSeek V3 的推理过程是这样的:

第一步:Tokenize 输入文本,转化成 token ID 序列。

第二步:Prefill。所有输入 token 并行通过 Transformer 各层。每个 token 在每层通过 MLA 算出压缩的潜在向量 c,存入 KV Cache(而不是存完整的 K/V)。MoE 的 Router 为每个 token 动态选择激活 8/256 个专家。Prefill 产出的 KV Cache 体积大约是标准 MHA 的 1/5。

第三步:Decode 循环。每一步通过 MTP 一次预测 2 个 token。新 token 的 Q 通过标准投影计算,K/V 从缓存的 c 实时展开。MoE 为每个新 token 激活不同的专家子集。每步完成后,新 token 的 c 追加到 KV Cache。

整个过程中,MLA 控制显存占用,MoE 控制计算量,MTP 控制吞吐密度。三项技术在不同的维度上各自节省成本,叠加出一个数量级的 API 价格差。

写在最后

DeepSeek 的”便宜”,不是补贴烧钱,不是 VC 的免费午餐。是三个技术决策的叠加:

  • MLA 把 KV Cache 压缩了 5-10 倍
  • MoE 让 671B 模型每次只算 37B
  • MTP 让一次前向产出两个 token

这三件事,单独拿出来都不算颠覆性创新。MLA 本质是一个低秩分解(SVD/PCA 的思路在深度学习里用了几十年),MoE 早在 2017 年就被 Google 提出,MTP 在学术界也有先例。

但 DeepSeek 是第一个把这三项技术在大规模生产模型中同时工程化落地的团队。而且他们选择了开源,把技术细节、训练方法、模型权重都公开了。结果就是:一个 API 价格只有 GPT-4o 1/10 的模型,在大多数评测基准上分数持平甚至反超。

这对所有做 AI 应用的人都是一个信号:模型推理的价格,还没有降到地板。MLA 之后还会有新的注意力压缩方法,MoE 之后还会有更高效的路由策略,MTP 的 N 还可能从 2 变 4、变 8。

明年这个时候,”便宜一个数量级”可能就不再是新闻了。

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
谢谢你看我的文章,我们,下次再见。

/ 参考资料
DeepSeek-V3 Technical Report (DeepSeek-AI, 2024)
DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model (DeepSeek-AI, 2024)
Multi-Head Latent Attention: A First-Principles Derivation (DeepSeek-AI, 2024)
Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (Shazeer et al., 2017)
Better & Faster Large Language Models via Multi-token Prediction (Gloeckle et al., 2024)
FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision (Shah et al., 2024)
vLLM: Efficient Memory Management for Large Language Model Serving with PagedAttention (Kwon et al., 2023)

Ask Leslie

从本站公开文章中寻找答案。当前版本在浏览器本地检索,不上传问题,也不会编造不存在的经历。

输入一个问题,我会把你带到 Leslie 写过的相关内容。

微信联系

Leslie Zhang 的微信二维码

扫码添加 Leslie,建议备注你的名字与来意。