系列说明:这是 DeepSeek V4 深度解析系列的第二篇。上一篇我们讲了"是什么"——百万上下文、计算量降到十分之一、KV 缓存降到 10%。这一篇,我们讲"为什么能做到"。
🔪 序章:一个外科医生的问题
有一种手术,叫做"选择性记忆切除"。
不是科幻小说里的情节。
是神经外科的真实操作——在某些癫痫患者的治疗中,医生会精确切除海马体的特定区域,保留患者的语言能力、运动能力,甚至大部分长期记忆,只消除那些引发病灶的特定神经回路。
这个手术的难点不在于"切多少"。
难点在于:切哪里。
切错了,患者可能失去所有记忆。
切对了,患者可以正常生活,只是再也不会记得某些特定的事。
DeepSeek V4 在做的事,和这个手术惊人地相似。
它面对的问题是:一个大模型在处理100万个 token 时,需要记住什么,可以忘记什么,以及——如何在"记住"和"忘记"之间,找到那条精确的切割线?
这条切割线,就是 V4 架构创新的核心。
上一篇,我们用"读小说"的比喻解释了 CSA 和 HCA 的直觉。
这一篇,我们要深入手术室,看清楚那把手术刀的形状。
🧠 一、先说清楚:V3 已经很好了,V4 为什么还不够?
要理解 V4 的创新,必须先理解 V3 的极限。
DeepSeek V3 使用的是 MLA(Multi-head Latent Attention,多头潜在注意力) 。
这是 DeepSeek 在 V2 时代就提出的技术,当时已经是业界领先的长上下文解决方案。
MLA 的核心思路是:
不存储完整的 KV(Key-Value)矩阵,而是存储一个压缩后的"潜在向量",需要时再解压。
💡 技术深扒:什么是 KV Cache?
在 Transformer 的注意力机制里,每个 token 在处理时会生成三个向量:
- Q(Query) :这个 token 想问什么
- K(Key) :这个 token 能回答什么
- V(Value) :这个 token 携带的信息
当模型处理第 N 个 token 时,它需要回头看前面所有 token 的 K 和 V,才能计算注意力权重。
这些历史的 K 和 V,就是 KV Cache。
上下文越长,KV Cache 越大。
100万 token 的 KV Cache,在标准 Transformer 里,大约需要数百 GB 的显存。这就是为什么长上下文是一个工程噩梦。
MLA 的做法是:把每个 token 的 KV 矩阵,压缩成一个低维的"潜在向量"(Latent Vector)。
这个潜在向量的维度,远小于原始 KV 矩阵。
存储时只存潜在向量,使用时再通过一个解压矩阵还原出近似的 KV。
这个方法很聪明。
它把 KV Cache 的大小,从原来的 100% 降到了大约 30-40%。
但 V4 的目标是降到 10%。
MLA 还差了 3-4 倍。
差距在哪里?
答案是:MLA 在"头维度"(head dimension)上做压缩,而 V4 在"token 维度"上做压缩。
这两种压缩方式,有着本质的区别。
🔬 二、两种压缩:头维度 vs token 维度
这是理解 V4 架构创新的关键。
先解释"头维度"是什么。
Transformer 的注意力机制,通常是"多头"的(Multi-head)。
所谓"多头",就是把注意力计算分成多个并行的"头",每个头关注不同的语义维度。
比如,一个模型可能有 128 个注意力头。
每个头负责捕捉不同类型的语义关系:有的头关注语法结构,有的头关注语义相似性,有的头关注位置关系……
MLA 的压缩,发生在"头"这个层面。
它把 128 个头的 KV 矩阵,压缩成一个共享的低维潜在向量。
这相当于:把 128 个专家的笔记,压缩成一份摘要。
💡 技术深扒:MLA 的压缩逻辑
想象一个有 128 位专家的委员会,每位专家都在记笔记。
标准 Transformer:每位专家保留完整笔记(128 份完整笔记)
MLA:把 128 份笔记压缩成 1 份"精华摘要",需要时再还原
压缩比:约 128:1(但还原时有信息损失)
这就是 MLA 能把 KV Cache 降到 30-40% 的原因。
但问题是:这份"精华摘要",对每个 token 都是独立的。
100万个 token,就有 100万份"精华摘要"。每份摘要虽然比原来小,但数量没变。
V4 的 CSA,换了一个维度来压缩。
它不是压缩"每个 token 的头维度",而是压缩"token 的数量本身"。
具体来说:
CSA 把上下文中的 token,按照重要性分成两类:
近期 token:最近的几千个 token,完整保留,精确计算注意力。
远程 token:更早的 token,不是逐个保留,而是把一组 token 压缩成一个"代表向量"。
💡 技术深扒:token 维度压缩的本质
想象你在读一本1000页的小说,现在读到第900页。
MLA 的做法:把前900页每一页的笔记都压缩一下,但每页都有一份笔记。
CSA 的做法:把前800页合并成100个"章节摘要",只有最近100页保留逐页笔记。
结果:
- MLA:900份压缩笔记
- CSA:100份章节摘要 + 100份逐页笔记 = 200份
存储量:CSA 约是 MLA 的 22%。这就是为什么 CSA 能把 KV Cache 进一步压缩到 10% 的关键。
但这里有一个显而易见的问题:
把多个 token 压缩成一个"代表向量",信息不就丢失了吗?
这个问题,正是 V4 架构设计最精妙的地方。
🎯 三、信息去哪了?——压缩的哲学
信息确实丢失了。
但丢失的,是"可以丢失的信息"。
这听起来像废话。但它背后有一个深刻的洞察:
在长上下文中,不同位置的 token,对当前计算的重要性是极度不均匀的。
💡 技术深扒:注意力的稀疏性
研究人员发现,在实际的注意力计算中,绝大多数的注意力权重都集中在少数几个 token 上。
具体来说:
- 最近的 token(局部上下文) :注意力权重最高
- 特定的关键 token(如问题的主语、关键概念) :注意力权重较高
- 大量的"背景 token" :注意力权重接近于零
这意味着:在100万个 token 里,真正"被关注"的,可能只有几千个。
这就是"注意力稀疏性"——它是 V4 所有压缩策略的理论基础。
基于这个洞察,V4 设计了三种不同的注意力策略,分别处理不同"距离"的上下文:
策略一:近程精确注意力(Full Attention)
对最近的几千个 token,使用完整的注意力计算。
不压缩,不近似,精确到每一个 token。
原因:近期上下文对当前生成的影响最大,不能有任何信息损失。
策略二:CSA(Compressed Sparse Attention,压缩稀疏注意力)
对中程上下文(几千到几十万 token),使用 CSA。
把一组 token 压缩成一个代表向量,但保留最重要的信息。
原因:中程上下文仍然重要,但不需要逐 token 的精确度。
策略三:HCA(Heavily Compressed Attention,深度压缩注意力)
对远程上下文(几十万到百万 token),使用 HCA。
压缩比更高,信息损失更大,但存储开销极低。
原因:远程上下文的注意力权重本来就接近于零,极度压缩几乎不影响输出质量。
💡 技术深扒:三种策略的数字对比
假设上下文长度为100万 token:
| 区域 | token 数量 | 策略 | KV Cache 占比 |
|---|---|---|---|
| 近程(最近4K) | 4,000 | Full Attention | 完整保留 |
| 中程(4K-100K) | 96,000 | CSA | 压缩至约 1/10 |
| 远程(100K-1M) | 900,000 | HCA | 压缩至约 1/100 |
综合下来,整体 KV Cache 大约是原来的 10%。这就是官方数据"KV 缓存降至约 10%"的来源。
这个设计有一种优雅的对称性。
它不是在"均匀地压缩所有记忆",而是在"按重要性分配记忆资源"。
就像人类的记忆系统:
你对昨天发生的事记得清清楚楚,对上个月的事只记得大概,对十年前的事只剩下几个关键画面。
这不是记忆力的退化,而是记忆系统的智慧。
⚡ 四、DSA:另一把手术刀
CSA 和 HCA 解决的是"存什么"的问题。
但还有另一个问题: "算什么"。
即使 KV Cache 降到了 10%,计算注意力权重本身,仍然需要大量的计算。
这就是 DSA(DeepSeek Sparse Attention,DeepSeek 稀疏注意力) 要解决的问题。
DSA 的核心思路是:
既然注意力权重本来就是稀疏的(大多数接近于零),那为什么要把所有的 token 对都计算一遍?
💡 技术深扒:稀疏注意力的计算逻辑
标准注意力:每个 token 和其他所有 token 都计算一次相关性(N² 次计算)
DSA:预先判断哪些 token 对"可能有高相关性",只计算这些对(远小于 N² 次)
怎么预判?DSA 使用了一种"局部性假设":
- 相邻的 token 之间,相关性通常较高(局部窗口)
- 特定的"关键 token"(如句子开头、段落标题),与所有 token 都有较高相关性(全局 token)
- 其余的 token 对,相关性通常较低,可以跳过
通过这种预筛选,DSA 把实际需要计算的 token 对数量,降低了 80-90%。
DSA 和 CSA/HCA 的配合,形成了一个完整的"双重稀疏"策略:
- CSA/HCA:减少需要存储的 KV Cache(存储稀疏)
- DSA:减少需要计算的注意力对(计算稀疏)
两者叠加,就是官方数据中"单 token 计算量比 V3.2 降低 3.7~9.8 倍"的来源。
🗺️ 五、从 100% 到 10%:完整的压缩路径
现在,我们可以把整个压缩路径串起来了。
从 V3.2 的标准 MLA,到 V4 的 CSA+HCA+DSA,KV Cache 是怎么一步步从 100% 降到 10% 的?
💡 技术深扒:完整压缩路径
起点:标准 Transformer(= 100%)
每个 token 保留完整的 KV 矩阵,所有 token 对都计算注意力。
第一步:MLA(V3 的方案)→ 约 35%
在"头维度"上压缩:把多头 KV 矩阵压缩成低维潜在向量。每个 token 仍然有一份潜在向量,但比完整 KV 矩阵小得多。
第二步:CSA(V4 新增)→ 约 15%
在"token 维度"上压缩:把中程上下文的多个 token 合并成代表向量。token 数量减少,KV Cache 进一步缩小。
第三步:HCA(V4 新增)→ 约 10%
对远程上下文进行极度压缩:压缩比高达 1/100。远程上下文的 KV Cache 几乎可以忽略不计。
第四步:DSA(V4 新增)→ 计算量降低 3.7~9.8 倍
稀疏注意力:只计算高相关性的 token 对,跳过大量低相关性计算。这一步不直接影响 KV Cache 大小,但大幅降低了计算量。
终点:V4-Pro 的实际表现
- KV Cache:约为 V3.2 的 10%
- 单 token 计算量:约为 V3.2 的 27% (V4-Flash 约为 10%)
这条路径,不是一次性的架构革命。
它是一系列精心设计的"手术",每一刀都切在正确的位置。
🧮 六、信息损失:被压缩的智能去哪了?
说了这么多压缩,有一个问题必须正面回答:
压缩掉的信息,真的不重要吗?模型会因此变笨吗?
这是一个合理的担忧。
答案是:会有损失,但损失是可控的,而且在大多数任务上几乎不可感知。
原因有三:
第一,注意力稀疏性是真实存在的。
大量实验证明,在实际的注意力计算中,绝大多数权重确实接近于零。压缩掉这些"零权重"对应的信息,对输出几乎没有影响。
第二,压缩是有选择性的。
CSA 和 HCA 不是随机压缩,而是保留"重要信息",压缩"背景信息"。具体来说,它们会优先保留:高频出现的概念、与当前查询语义相关的内容、结构性标记(段落开头、关键词等)。
第三,模型是在压缩后的数据上训练的。
V4 不是先训练一个标准模型,再强行压缩。它是从一开始就在 CSA+HCA+DSA 的架构下训练的。这意味着模型已经"学会了"如何在压缩的信息下工作,它的参数已经适应了这种信息密度。
💡 技术深扒:一个反直觉的发现
研究人员发现,在某些任务上,压缩后的模型表现反而比完整模型更好。
原因可能是:压缩迫使模型更关注"真正重要的信息",而不是被大量无关的背景信息干扰。
这有点像人类的"遗忘曲线"——适度的遗忘,反而有助于记忆的整合和提取。
当然,这不是普遍规律。在需要精确回忆特定细节的任务上,压缩仍然会带来性能损失。
这就是为什么 V4 对近程上下文保留了完整的 Full Attention——那些细节,不能丢。
📐 七、一个更深的问题:什么是"智能的最小单位"?
讲到这里,我想停下来,说一个更大的问题。
V4 的架构创新,表面上是工程优化。
但它背后,隐藏着一个关于"智能本质"的深刻假设:
智能不需要记住所有事情。智能需要的,是在正确的时刻,提取正确的信息。
这个假设,和人类认知科学的研究结论高度吻合。
人类的工作记忆(Working Memory)容量极其有限——大约只能同时处理 7±2 个信息块。
但人类能够完成极其复杂的认知任务。
原因不是人类的记忆容量大,而是人类的注意力系统极其高效——它能在海量的长期记忆中,精确地提取当前任务所需的信息。
V4 的 CSA+HCA+DSA,本质上是在模拟这个过程。
💡 技术深扒:从"存储"到"索引"的范式转变
传统大模型的长上下文策略:存储范式
- 目标:把所有 token 的信息都保留下来
- 代价:存储和计算随上下文线性增长
- 极限:显存和算力的物理上限
V4 的长上下文策略:索引范式
- 目标:建立高效的信息检索机制,按需提取
- 代价:少量的信息损失(可控)
- 极限:远高于存储范式,理论上可以无限扩展
这个范式转变,可能是未来大模型长上下文发展的主要方向。
🌌 八、V3 到 V4:一次架构哲学的升级
现在,我们可以回答开头的问题了:
V3 的 MLA 已经很好了,V4 为什么还不够?
因为 MLA 是在"头维度"上做优化,它的极限是把 KV Cache 降到 30-40%。
而 V4 的目标是百万上下文的"标配化"——不是让少数高端用户用得起,而是让所有人都用得起。
要实现这个目标,30-40% 还不够。
必须降到 10%。
这需要换一个维度——从"头维度压缩"升级到"token 维度压缩"。
这不是量变,是质变。
💡 技术深扒:为什么 token 维度压缩更难?
头维度压缩(MLA)相对"安全":
- 每个 token 仍然有独立的表示
- 压缩发生在语义空间内部,不影响 token 之间的关系
token 维度压缩(CSA/HCA)更"危险":
- 多个 token 被合并成一个代表向量
- 如果合并策略不对,可能丢失关键的 token 间关系
- 需要模型在训练时就"学会"如何在压缩信息下工作
这就是为什么 V4 的训练难度,远高于 V3。它不只是换了一个注意力机制,而是改变了模型处理信息的基本方式。
这种改变,需要整个训练流程的配合:
- Muon 优化器:让模型在更复杂的损失景观中稳定收敛
- mHC(流形约束超连接) :保证信号在深层网络中的稳定传播
- 32万亿 token 的训练数据:让模型充分学习如何在压缩信息下工作
这三者,共同支撑了 CSA+HCA+DSA 的架构创新。
缺少任何一个,V4 的性能都可能大打折扣。
🎬 九、写在最后:手术的意义
回到开头的比喻。
外科医生做选择性记忆切除,不是为了让患者"更聪明"。
而是为了让患者"更健康"——在保留核心功能的前提下,消除那些消耗资源却没有价值的神经回路。
DeepSeek V4 的架构创新,也是这个逻辑。
不是为了让模型"记住更多"。
而是为了让模型"用更少的资源,做同样的事"。
这背后有一个朴素的工程哲学:
真正的智能,不在于拥有多少,而在于知道什么时候用什么。
当 KV Cache 从 100% 降到 10%,当计算量从 100% 降到 27%,发生的不只是成本的降低。
发生的,是一种可能性的打开。
原本需要数百万元算力才能跑通的应用,现在只需要几万元。
原本只有大公司才能负担的百万上下文,现在每个开发者都能用。
这不是技术的进步。这是技术的民主化。
刘慈欣在《球状闪电》里写过一句话:
"宇宙的本质是简单的,复杂的只是我们的无知。"
V4 的架构,某种程度上,是在用工程的方式,逼近这种简单。
把复杂的注意力计算,简化成"记住什么,忘记什么"的选择。
把百万 token 的信息洪流,压缩成一个精确的索引系统。
把"更大"的执念,换成"更聪明"的追求。
这条路,还很长。
但 V4 迈出的这一步,方向是对的。