DeepSeek V4的CSA和HCA:如何把百万上下文压缩到不烧显卡


别把注意力机制想得太玄乎,它本质上就是个信息筛选的活儿,只不过现在筛得越来越狠了。

DeepSeek V4搞出的CSA和HCA两种压缩注意力,核心目标就是让大模型在处理超长上下文时别那么费劲。它俩不像MLA那种每个token都保留压缩信息的做法,而是直接对历史token分组打包,让模型需要记住的东西变少,从而省下大量计算和内存开销。

简单说,就是把旧记忆压缩成摘要,新记忆留着详细看。

CSA选择性地翻看压缩历史

CSA的全称是压缩稀疏注意力,它干的第一件事就是分组压缩。比如把每4个历史token压成一个条目,这就让缓存的长度一下子缩水了。但光压缩还不够,模型要是一视同仁地看所有压缩条目,那计算量还是很大。

所以CSA加了稀疏选择机制。它只挑一部分压缩块来认真看,其他的就扫一眼甚至不看。这就像你翻一本厚厚的会议记录,没必要逐字逐句读,只挑标题和摘要部分重点看就行。模型通过某种评分机制,决定哪些压缩历史块值得投入注意力。

这种做法的好处是保留了相对多的细节,因为压缩率不算狠,每组才压4个token。但坏处是它得做选择,选择本身也有计算成本。而且万一选错了关键信息,模型就可能漏掉重要内容。这就像你跳着读文章,运气好抓住重点,运气不好就错过了关键段落。

HCA玩命压缩然后全盘扫视

HCA就比CSA极端多了。它把128个token压成一条KV条目,压缩力度直接拉满。这么一搞,缓存里的条目数锐减,模型面对百万级上下文时,需要处理的条目可能就剩几千个了。

因为条目变少,HCA就不用搞稀疏选择那一套了。它对所有压缩条目都做密集注意力,也就是挨个仔细看一遍。这就像你把一本厚书缩成几页纸的摘要,然后逐字逐句读摘要。虽然丢掉了大量细节,但至少把梗概全过了一遍。

HCA的算账逻辑很清楚:压缩阶段猛一点,但注意力阶段省事。CSA是压缩阶段温和,注意力阶段搞筛选。两种策略在不同层级交替使用,等于让模型既能通过CSA获得相对精细的旧信息,又能通过HCA以极低成本覆盖极长的历史。

两种机制搭配着用比单打独斗强

DeepSeek V4没傻到整个模型只用一种压缩方式。它在不同层交替使用CSA和HCA,这种混搭策略挺聪明。某些层负责用CSA做精细筛选,另一些层用HCA做宽覆盖,两者互补。

更重要的是,它俩都保留了一条本地滑动窗口分支。这个分支专门处理最近的未压缩token,确保新信息能被完整记住。旧信息可以被压缩,但刚聊到的话题必须原汁原味保留。这就像你记笔记,三天前的事可以写个摘要,但刚才讲的要点得逐字记。

这种设计照顾到了语言理解的实际需求。一般来说,最近的上下文最相关,越远的信息越需要压缩。CSA和HCA主要负责处理远端历史,而近端内容通过滑动窗口保持高保真。三层结构——近端完整、CSA压缩筛选、HCA深度压缩——构成了完整的长上下文处理方案。

CSA和HCA的成本账本算得很精

根据DeepSeek V4的技术报告,这套组合拳带来的效率提升相当可观。跟V3.2比,V4-Pro的单token推理FLOPs降到了27%,KV缓存大小只剩10%。V4-Flash更夸张,FLOPs只有10%,缓存只有7%。

这些数字背后有个关键点:省下的不仅是存储,还有计算。注意力机制的计算复杂度跟序列长度是平方关系,序列越长计算量涨得越吓人。通过压缩序列长度,计算量直接降维。HCA把128个token压成1个,相当于注意力计算时序列长度缩短了128倍。

但要注意,压缩本身也有开销。分组压缩需要额外的计算步骤,稀疏选择需要评分和排序。DeepSeek V4能在整体上省这么多,说明压缩带来的收益远大于压缩本身的开销。这就像快递打包,虽然打包费点时间,但整车运输省下的油钱和路费更多。

别把CSA和HCA当成MLA的替代品

MLA走的是另一条路子,它每个token都保留一个压缩的潜在KV条目,序列长度不变,但每个条目变窄了。CSA和HCA则是序列长度缩短,每个条目可能保持较宽。两者压缩的维度不同。

DeepSeek V4实际上是把两者结合用了。它既有MLA风格的紧凑条目,又加了CSA和HCA的序列压缩。所以准确说它不是取代MLA,而是在MLA的基础上加了第二层压缩。就像你先用zip压缩文件,再用rar压一遍,虽然听着多余,但确实能让包更小。

论文里的实验数据也表明,这种组合效果不错。但得说清楚,这些漂亮数字是整个系统优化的结果。数据质量、训练策略、mHC残差结构、精度选择、系统级实现,这些环节都贡献了力量。CSA和HCA是其中一环,单独拎出来不一定能复制同样的效果。

压缩力度和细节保留永远在打架

CSA和HCA的取舍本质上就是信息压缩的经典矛盾:想省空间就得丢细节,想保细节就省不了空间。CSA选择牺牲部分覆盖范围来保留更多信息,HCA选择牺牲信息量来换取全面覆盖。

这对模型的实际表现有直接影响。如果任务需要精确的远距离依赖,比如长文档里的具体数字或专有名词,CSA可能更有优势。如果任务只需要主题层面的理解,比如给整篇文章做个总结,HCA就够了。

DeepSeek V4在每层交替使用两种机制,某种程度上是在不同抽象层级做不同取舍。浅层可能更依赖HCA做全局概览,深层更依赖CSA抓关键细节。这种分层处理符合直觉——先看个大概,再挑重点细究。

这玩意儿不是给普通显卡准备的

虽然CSA和HCA把长上下文成本压下来了,但百万级token的处理依然是个烧钱活儿。V4-Pro号称单token推理FLOPs降到原来的27%,但那是跟V3.2比,基数本身就很大。普通显卡跑这个量级的上下文,该崩还是崩。

这些技术主要面向大规模推理场景,比如处理整本书、超长代码库、多年份的财务报告。日常聊天或写短文根本用不到这种级别。就像你买个载重20吨的卡车去超市买菜,性能再强也是浪费。

所以看这些效率数字得带点平常心。进步是实打实的,但它的受众是那些真正需要处理海量信息的业务。对一般用户来说,模型回复快了、上下文窗口大了,感受到的是结果,背后的CSA和HCA则是让这些结果变得经济可行的工程技术。

未来压缩方向可能更野

CSA和HCA代表了当前注意力压缩的两个主流方向:分组压缩加稀疏选择,以及极端压缩加密集注意。但这条路远没到尽头。有人已经在研究动态压缩率,让模型根据内容重要性决定每组压几个token。还有人搞可学习的压缩策略,让模型自己琢磨怎么分组最划算。

DeepSeek V4这套方案的价值在于,它证明了序列维度压缩是可行且高效的。之前大家都在token维度做文章,现在发现沿着序列长度下手效果更直接。这可能会带动一波新的压缩思路,比如混合不同粒度的压缩,或者根据任务类型动态切换CSA和HCA的比例。

不过也得泼盆冷水。压缩终究是丢信息,丢多少、丢什么,依然是个经验活儿。没有理论能精确算出压到多少最合适,全靠实验试错。这就意味着每次模型升级,这套压缩参数都得重新调一遍,工程成本不低。



CSA和HCA让长上下文变得更便宜了,但信息压缩的代价永远在那里。模型看似记住了百万token,实际上它只记得住一份精心编排的摘要。这跟人类读书一样,你不可能记住每个字,但聪明人懂得把书读薄。

只是大模型的“读薄”方式,比我们想象的更简单粗暴,也更省钱。省钱是好事,但别指望它记住你三句话前埋的伏笔,它可能早把那几句话打包扔进回收站了。