【转载】大语言模型架构最新进展:KV共享、mHC与压缩注意力

原文地址:Recent Developments in LLM Architectures: KV Sharing, mHC, and Compressed Attention,by Sebastian Raschka, 2025-05-16

大语言模型架构最新进展:KV共享、mHC与压缩注意力

从 Gemma 4 到 DeepSeek V4:开源大模型如何降低长上下文成本

短暂休假陪伴家人后,我很高兴回归,跟进这几周密集发布的开源大语言模型。其中最突出的一点是,新一代架构都将重心放在了长上下文效率优化上。

随着推理模型与智能体工作流需要保留更多 token(且保留时长更长),KV 缓存大小、内存带宽与注意力计算成本很快成为核心瓶颈。为此,大模型开发者正在引入越来越多的架构技巧来降低这些开销。

本文重点分析四个典型设计:Gemma 4 的 KV 共享与逐层嵌入、Laguna XS.2 的逐层注意力配额、ZAYA1-8B 的压缩卷积注意力,以及 DeepSeek V4 的流形约束超连接(mHC)+ 压缩注意力方案。

在我的架构示意图里,这些改动大多看起来只是微调,但其中不少是相当精巧的设计变更,值得展开详细讨论。


figure01

图 1 2026 年 4-5 月发布的主流开源大模型架构示意图。完整图片与更多细节可在我的大模型架构图库中查看。图中未列出所有模型尺寸;Qwen3.6 包含 27B 与 35B-A3B 版本,ZAYA1 以 8B 模型为代表(省略 ZAYA1-base 与 ZAYA1-reasoning-base 版本)。虚线框标注的架构将在本文中详细解读。

需要说明的是,本文聚焦架构设计,因此不会过多讨论数据集配比、训练调度、训练后优化、RLHF 方案、基准测试榜单与产品对比。即便限定了范围,内容依然十分丰富。和往常一样,这篇文章的篇幅最终超出了我的预期,因此我会把重点放在 Transformer 块、残差流、KV 缓存与注意力计算内部的改动上。

另外请注意,我只介绍那些具备创新性、且我此前未在其他文章中讲解过的设计。具体包括:

  • Gemma 4 的 KV 共享与逐层嵌入

  • ZAYA1 的压缩卷积注意力

  • Laguna XS.2 的注意力配额机制

  • DeepSeek V4 的 mHC 与压缩注意力

往期内容

在进入新主题之前,先列出两篇会反复引用的往期文章。第一篇系统介绍了近期 MoE 模型的架构背景、专家路由、激活参数与模型尺寸对比;第二篇覆盖了下文会频繁提到的注意力基础概念,包括 MHA、MQA、GQA、MLA、滑动窗口注意力、稀疏注意力与混合注意力设计。

  • 《大语言模型架构大盘点》,塞巴斯蒂安・拉施卡博士,2025 年 7 月 19 日
    最后更新:2026 年 4 月 2 日(第 23 节新增 Gemma 4)

  • 《现代大模型注意力变体可视化指南》,塞巴斯蒂安・拉施卡博士,3 月 22 日

我原本计划写 DeepSeek V4,但它至今尚未正式发布,于是我利用这段时间整理了过去几年讲解过的各类大模型架构,把它们系统化地梳理完善。

我还把其中不少知识点做成了独立的短篇教程,放在大模型架构图库中。例如读者可以在对应模型卡片与概念标签下,找到关于 GQA、MLA、滑动窗口注意力、DeepSeek 稀疏注意力、MoE 路由等概念的精简讲解。


1. 跨层复用 KV 张量以缩减缓存(Gemma 4)

我们的架构演进之旅从 4 月初说起 —— 当时谷歌发布了全新的开源 Gemma 4 系列模型。该系列主要分为三大类:

  • Gemma 4 E2B 与 E4B:面向移动端与小型本地(嵌入式)设备(即物联网场景)

  • Gemma 4 26B 混合专家(MoE)模型:面向高效本地推理优化

  • Gemma 4 31B 稠密模型:追求最高效果,且训练后优化更便捷(MoE 模型的调优复杂度更高)

figure02

图 2:Gemma 4 架构示意图

E2B 与 E4B 版本的第一个架构小改动,是采用了共享 KV 缓存机制:后续层复用前面层的键值状态,以此降低长上下文下的内存占用与计算量。

这种 KV 共享并非 Gemma 4 首创。例如 Brandon 等人在 NeurIPS 2024 发表的《通过跨层注意力缩减 Transformer 键值缓存》中就提出了该思路。但 Gemma 4 是首个将这一概念落地的主流架构。(注意:跨层注意力与交叉注意力是两个不同概念。)

在深入讲解 KV 共享之前,先简单说说背后的动机。正如我近几个月多次提到的,当前大模型架构设计的核心主题之一就是缩减 KV 缓存体积,而缩减 KV 缓存的根本目的是降低内存需求,从而支持更长的上下文 —— 这在推理模型与智能体时代尤为重要。关于 KV 缓存的更多背景,可参考我的文章《从零理解并实现大模型 KV 缓存》。

我在上一篇《现代大模型注意力变体可视化指南》中介绍的主流注意力变体,几乎都是为缩减 KV 缓存设计的。

举个经典例子(Gemma 4 也在使用):分组查询注意力(GQA)通过让多个查询头共享同一组键值(KV)头,来减小 KV 缓存体积,如下图所示。

figure03

图 3:分组查询注意力(GQA)在多个查询(Q)头之间共享同一组键(K)与值(V)头

如前所述,Gemma 4 采用了 GQA。但除此之外,它还进一步在不同层之间共享 KV 投影,而非每层的注意力模块都独立计算 KV。这种 KV 共享机制也被称为跨层注意力,原理如下图所示。

figure04

图 4:常规 Transformer 块在每个注意力模块中独立计算 Q、K、V 投影(左);跨层注意力设计在多层之间共享同一组 K、V 投影(右)

正如图 2 架构概览所暗示的,Gemma 4 E2B 采用常规 GQA,并以 4:1 的比例搭配滑动窗口注意力。(更准确地说,Gemma 4 E2B 使用的是 MQA,即 GQA 单 KV 头的特例。)

在 GQA(或 MQA)基础上,KV 共享的运行逻辑是:后续层不再独立计算自身的键值投影,而是复用同类型注意力中最近一个非共享层的 KV 张量。也就是说,滑动窗口层复用前一个滑动窗口层的 KV,全注意力层复用前一个全注意力层的 KV。各层依然会独立计算查询投影,因此每层都能形成自己的注意力模式,但开销大、占内存的 KV 缓存可以在多层之间复用。

举例来说,Gemma 4 E2B 共有 35 个 Transformer 层,其中仅前 15 层独立计算 KV 投影,后 20 层复用同类型注意力中最近非共享层的 KV 张量。类似地,Gemma 4 E4B 有 42 层,其中 24 层独立计算 KV,最后 18 层共享 KV。

这种设计到底能省多少?由于约一半的 KV 在层间共享,KV 缓存体积大约能减少一半。以最小的 E2B 模型为例,在 128K 长上下文、bfloat16 精度下,可节省 2.7GB 显存(E4B 版本在 128K 上下文下约节省 6GB)。

figure05

图 5:类 Gemma 4 E2B 配置下,GQA 与跨层 KV 共享带来的 KV 缓存显存节省。为简化示意,未计入滑动窗口注意力的额外节省

当然,KV 共享的缺点也很明显:它本质是对完整注意力的 “近似”,或者更准确地说,会降低模型容量。不过根据跨层注意力论文的结论,(在已测试的小模型上)这种影响可以非常微弱。


2. 逐层嵌入与 “有效” 参数量(Gemma 4 E2B/E4B)

Gemma 4 E2B 与 E4B 还有第二项效率导向的设计,叫做逐层嵌入(Per-Layer Embeddings, PLE),它和前面的 KV 共享是相互独立的机制。

KV 共享用于缩减 KV 缓存,而 PLE 聚焦于参数效率:它让小型 Gemma 4 模型能够利用更多 token 专属信息,同时不会让 Transformer 主干的计算成本膨胀到同总参数量稠密模型的水平。

例如,Gemma 4 E2B 与 E4B 中的 “E” 代表 “有效(effective)”。具体来说,Gemma 4 E2B 标注的有效参数量为 23 亿,若计入嵌入层则总参数量为 51 亿;同理,Gemma 4 E4B 有效参数量为 45 亿,含嵌入层总参数量为 80 亿。

简而言之,“E” 系列模型的 Transformer 主干计算量接近较小的有效参数量,而更大的数字包含了额外的嵌入表层。(关于嵌入层的工作原理,可参考我的代码笔记《理解嵌入层与线性层的区别》。)

从概念上看,新增的 PLE 路径如下:

figure06

图 6:带 PLE 残差路径的简化 Gemma 4 块。常规块先计算注意力与前馈网络的残差更新,得到的隐状态对层专属 PLE 向量做门控,再将投影后的 PLE 更新作为额外残差项加在块末尾

PLE 向量本身在重复的 Transformer 块之外预先构造。简化来看,PLE 的生成有两个输入:其一,token ID 经过逐层嵌入查表;其二,常规 token 嵌入经过线性投影,映射到同一个打包后的 PLE 空间。两部分相加、缩放并重塑为张量,每层对应一个切片,每个 Transformer 块获取自己的那一片。

figure07

图 7:PLE 构造简化示意。token ID 提供逐层嵌入查表,常规 token 嵌入投影到同一空间,两者结合后重塑,使每个 Transformer 块获得专属的层 PLE 切片

关键细节在于:PLE 并不是给每个 Transformer 块都配一套完整独立的常规 token 嵌入层,而是只做一次逐层嵌入查表,再通过 “重塑 / 选取第 l 层” 的方式,给每层分配一小段 token 专属嵌入切片。

也就是说,对每个输入 token,Gemma 4 会生成一个打包的 PLE 张量,其中每个解码层对应一个小向量。在前向传播时,第 l 层只读取自己对应的切片(即图 6 中 Gemma4WithPLEBlock 里的 ple_l)。

在 Transformer 块内部,常规的注意力与前馈分支照常运行:块先计算注意力残差更新,再计算前馈残差更新;在第二次残差相加后,得到的隐状态(图 6 伪代码中记为 z)用于对层专属 PLE 向量做门控。经过门控的 PLE 向量再投影回模型隐层维度,做归一化后,作为额外的残差项相加。

可以这样直观理解:Transformer 块的主干依然是注意力 + 前馈网络的主路径,而 Gemma 4 在前馈分支之后追加了一个小型的层专属 token 向量。它通过嵌入参数与小型投影提升表征能力,只增加少量计算开销,避免了把整个 Transformer 栈都扩容到大参数量级的成本。

为什么要做 PLE?更简单的方案是直接缩小稠密模型,比如减少层数、收窄隐状态或缩小前馈网络。这确实能降低显存与延迟,但也会削弱模型核心计算部分的容量。

PLE 设计让高成本的 Transformer 块保持在较小的 “有效” 规模,同时把额外容量放在逐层嵌入表中。这些嵌入参数以查表为主,可被缓存,成本远低于新增注意力或前馈网络权重。

当然,这一设计的有效性还需以谷歌的实验为准。如果能有对比研究,看看 E2B 设计与常规 23 亿、51 亿参数量的 Gemma 4 模型表现差异,会很有参考价值。

另外,PLE 原则上并不局限于小模型,大模型也可以附加逐层嵌入切片。但大模型本身容量已经充足,这些额外嵌入的增益可能有限;而且对于大模型,我们通常用 MoE 设计来提升容量、同时控制计算规模。

顺便一提,如果想看相对简洁易读的代码实现,我从零实现了 Gemma 4 E2B 与 E4B 模型,可在这里查看。

figure08

图 8:我从零实现的 Gemma 4 代码截图


3. 逐层注意力配额(Laguna XS.2)

Laguna 是欧洲公司 Poolside 推出的首个开源模型,该公司专注于训练代码领域大模型。我有几位前同事近年加入了 Poolside,团队实力很强。看到更多企业开源自家模型,是件值得高兴的事。

乍看之下,Laguna XS.2 的架构非常标准,但有一个细节我没在图里塞进去,我们可以称之为 “逐层注意力配额”。

figure09

图 9:Poolside 的 Laguna XS.2 架构

注意力配额的核心思路是:不给每个 Transformer 层分配完全相同的注意力预算,而是让不同层的注意力开销有所差异。该模型共 40 层,其中 30 层为滑动窗口注意力,10 层为全局 / 全注意力。和通常设计一样,滑动窗口层只在局部窗口内做注意力(此处窗口为 512 token),因此 KV 缓存与注意力计算成本更低;全局层成本更高,但保留了访问上下文窗口内全部信息的能力。

这种滑动窗口 + 全局 / 全注意力的混合模式并非 Laguna XS.2 独有,Gemma 4 等很多架构都在使用。

真正的创新点在于每层查询头数量可调。例如 Hugging Face 模型库的 config.json 里有num_attention_heads_per_layer配置项,允许不同层拥有不同数量的查询头,同时保持 KV 缓存的形状兼容。

figure10

图 10:Laguna 的逐层查询头配额:全注意力层每个 KV 头对应 6 个查询头,滑动窗口注意力层每个 KV 头对应 8 个查询头

也就是说,Laguna XS.2 给滑动窗口层分配更多查询头,给全局层分配更少查询头,同时 KV 头固定为 8 个 —— 这就是配置文件里真正的逐层头配额机制。

Laguna XS.2 是近期生产级开源模型中,逐层查询头配额设计最具代表性的案例。但 “按层调整模型容量” 这一思路,至少可以追溯到苹果 2024 年的 OpenELM。

再说回这种设计的意义:和 KV 共享类似,核心是把注意力容量用在最有价值的地方,而非每层平均分配。具体来说,全注意力层需要遍历整个上下文,成本很高,因此 Laguna 相比滑动窗口注意力模块,给它们分配了更少的查询头。

(补充一个小实现细节:Laguna 还对每个注意力头的输出做门控,这和 Qwen3-Next 等模型的设计有些相似。由于我在往期文章中已经讲过,这里就不再展开。)


4. 压缩卷积注意力(ZAYA1-8B)

和 Laguna 类似,ZAYA1-8B 是开源模型赛道的新选手,由 Zyphra 公司开发。这次发布的一个有意思的细节是:该模型是在 AMD GPU 上训练的,而非更主流的 NVIDIA GPU 或谷歌 TPU。

而它最核心的架构特点,是压缩卷积注意力(CCA)与分组查询注意力结合使用。和 MLA 类设计主要用潜表征作为紧凑 KV 缓存格式不同,CCA 直接在压缩后的潜空间内完成完整的注意力运算,后文会详细说明。

(注:ZAYA1-8B 的 config.json 里列出了 80 个交替的层条目,而非传统的 40 个 Transformer 块。这些条目在 CCA/GQA 注意力层与 MoE 前馈层之间交替。但在架构图中,更方便的画法是 40 个重复的 “注意力 + MoE” 单元,两者在概念上是等价的。)

figure11

图 11:Zaya1(8B)的 Transformer 块采用压缩卷积注意力

正如图中所示,ZAYA1-8B 将压缩卷积注意力(CCA)与 4:1 比例的 GQA 结合使用。核心在于它的注意力块以 CCA 为核心,而非常规的滑动窗口注意力块。

什么是压缩卷积注意力?

我认为 CCA 在思路上和 DeepSeek 模型的多头潜注意力(MLA)相近 —— 两者都在注意力块中引入了压缩的潜表征,但对潜空间的使用方式不同。MLA 主要用潜表征来减小 KV 缓存:KV 张量以紧凑形式存储,在实际计算注意力时再投影到注意力头空间。

figure12

图 12:常规多头注意力(MHA)与多头潜注意力(MLA)对比

而 CCA 会对 Q、K、V 全部做压缩,并且直接在压缩后的潜空间内执行注意力运算。这也是为什么 CCA 不仅能缩减 KV 缓存体积,还能降低预填充与训练阶段的注意力浮点运算量(FLOPs)。

图 13:多头潜注意力(MLA)与压缩卷积注意力(CCA)对比

figure13

如图 13 所示,在 CCA 中,压缩后的潜表征直接输入注意力机制,得到的压缩注意力向量再做上投影。

注意它之所以叫 “压缩卷积注意力” 而非单纯的 “压缩注意力”,是因为在潜空间的 K、Q 表征上还额外做了卷积混合。图 12 里没画出卷积混合部分,不然画面会太挤,但原理并不复杂。

正如图 13 暗示的,卷积混合直接作用在压缩后的 Q、K 张量上。压缩会让 Q、K、V 的维度变窄,从而节省计算与缓存,但也会降低注意力的表达能力。卷积是一种低成本方式,能在压缩后的 Q、K 向量用于计算注意力分数之前,给它们补充局部上下文信息。(卷积混合只作用于 Q 和 K,不作用于 V—— 因为 Q 和 K 决定注意力分数,而 V 是通过分数加权求和的内容。)

figure14

图 14:序列混合卷积的概念示意

除了图 14 的序列混合,还有通道混合组件,原理类似,这里就不放图了。

CCA 看起来是 Zyphra 提出的注意力机制,在 ZAYA1-8B 技术报告发布之前就已存在。独立的 CCA 论文《压缩卷积注意力:在压缩潜空间中实现高效注意力》于 2025 年 10 月首次发布,正式提出了 CCA 机制,而 ZAYA1-8B 将其作为核心组件之一。

但问题来了:它比 MLA 更好吗?根据 CCA 论文的实验结果,是的 —— 在同等压缩比例下,CCA 的表现优于 MLA。

figure15

图 15:CCA 论文配图标注,来源:https://arxiv.org/abs/2510.04476

总的来说,最值得关注的就是这种新型注意力机制。该模型还采用了非常极端(极高稀疏度)的 MoE 配置,每个 token 仅激活一个路由专家,但这部分设计我们更熟悉。CCA 的特别之处在于,它直接在压缩潜空间内执行注意力运算,并通过对压缩 Q、K 做卷积混合来缓解压缩带来的表达力限制。简言之,ZAYA1-8B 不仅在前馈层省计算,也在注意力机制本身做优化。


5. CSA/HCA、mHC 与压缩注意力缓存(DeepSeek V4)

DeepSeek V4 是今年迄今为止热度最高、模型规模最大的发布。有意思的是,在下表的所有模型中,DeepSeek V4-Pro 也是激活参数占比最低的 MoE 模型。

figure16

图 16:MoE 模型激活参数占比图。可在此查看 HTML 版本:https://sebastianraschka.com/llm-architecture-gallery/active-parameter-ratio/

注:激活参数占比只是观察维度之一,它无法反映 KV 缓存大小、注意力模式、上下文长度、路由开销、硬件效率与训练质量,但用于快速对比稀疏模型很有帮助。

关于 DeepSeek V4 可以聊的内容很多,但既然它已经被大量报道,且本文聚焦架构微调,我会重点讲两个相比前代架构的全新核心改动:

  • 用于拓宽残差通路的 mHC

  • 用于长上下文注意力压缩与稀疏化的 CSA/HCA

看下面的 DeepSeek V4 架构图,会觉得设计很复杂。理解它的有效方式是:把残差路径的改动(mHC),与注意力路径的改动(CSA/HCA、压缩注意力缓存)分开来看。

figure17

图 17:DeepSeek V4-Pro 架构概览

5.1 流形约束超连接(mHC)

先从 DeepSeek V4 的 mHC 组件说起。这项技术源自 DeepSeek 团队去年(2025 年 12 月 31 日)发布的研究论文《mHC:流形约束超连接》。不过在那篇论文中,该技术仅在 27B 规模的实验模型上验证过,如今出现在他们的旗舰产品中,说明这一思路在生产环境中表现良好。

mHC 的核心思路,是对 Transformer 块内部的残差连接设计做现代化改造 —— 这一点很有新意,因为架构微调通常都集中在注意力机制、归一化层位置与 MoE 部分。

mHC 建立在先前的超连接(Hyper-Connections)研究基础上(Zhu 等人 2024 年提出),我们先简单介绍一下超连接。超连接本质上是对 Transformer 块内单条残差流的改造:将其替换为多条并行残差流,并在流之间加入可学习的映射。

(对残差连接不熟悉的读者,可以看我多年前做的残差神经网络视频,里面讲解了基本原理。)

超连接的核心目标是拓宽残差流。我们可以把它理解为保留多条并行残差流,再通过额外的残差映射线性变换在层间混合这些流。由于注意力或 MoE 层本身仍在常规隐层维度上运算,超连接还会加入前置映射,把多条并行残差流合并为单个常规隐向量输入给层;再加后置映射,把层的输出重新分发回各条并行残差流。整体结构如下图所示。

figure18

图 18:常规 Transformer 块(上)与带超连接的 Transformer 块(下),图标注来自 mHC 论文:https://arxiv.org/abs/2512.24880

下图聚焦于 Transformer 块的注意力部分,但同样的概念也适用于 MoE 层周围的第二条残差分支。

超连接的作用是:在不拓宽注意力或 MoE 层本身的前提下,提升残差通路的表达能力。它带来的浮点运算增量很小,因为额外的映射只在残差流维度上运算 —— 比如 DeepSeek V4 中 n=4 条残差流,而非巨大的隐层维度。

在原始超连接论文中,7B OLMo MoE 实验里,每 token 浮点运算量从 133.6 亿仅增加到 133.8 亿,几乎没有变化。而效果方面,模型获得了稳定且小幅的提升,如下图所示。

(不过只看浮点运算量有些片面。拓宽后的残差状态依然需要存储、在内存中搬运、做混合等。因此实际开销更多来自内存带宽与实现复杂度,而非算术运算本身,这一点没有被明确测量。但考虑到 DeepSeek V4 全程主打效率,说明这项设计的收益值得投入。)

figure19

图 19:超连接相比基线的性能表现,图标注来自超连接论文:https://arxiv.org/abs/2409.19606

另外如图所示,模型仅用约一半的训练 token 数,就追平了基线模型的指标。

从常规超连接(HC)到流形约束超连接(mHC),核心变化是:映射不再是无约束的。在常规 HC 中,残差映射是一个可学习矩阵,负责混合并行残差流;但堆叠大量这样的矩阵,可能导致信号被不可控地放大或缩小。

而在 mHC 中,残差映射被投影到双随机矩阵构成的流形上 —— 即所有元素非负,且每行、每列的和均为 1。这让残差混合更像是在各流之间稳定地重新分配信息。前置映射与后置映射也被约束为非负有界,避免从拓宽的残差状态中读写时出现信号抵消。简言之,mHC 保留了 HC 丰富的残差混合能力,同时加入约束以提升可扩展性,这对更大(更深)的模型尤为重要。

除此之外,并行残差流的核心思路保持不变,如下图所示。

figure20

图 20:带超连接(HC)与流形约束超连接(mHC)的 Transformer 块,图标注来自 mHC 论文:https://arxiv.org/abs/2512.24880

在 mHC 论文中,DeepSeek 团队基于 27B 参数模型实验,经过融合、重计算与流水线调度优化后的实现,在所有 Transformer 块中采用 4 条残差流(n=4)时,相比单流基线仅增加 6.7% 的训练时间开销。

总结一下这部分:HC/mHC 改变了层之间的信息传递方式 —— 将单条残差流替换为多条相互作用的残差流,mHC 在此基础上增加了稳定性约束,同时计算开销极低。而且它和 CSA/HCA 注意力改动可以很好地搭配,后者改造的是 Transformer 块的其他部分,我们接下来会讲。

5.2 通过 CSA 与 HCA 实现压缩注意力

DeepSeek V4 另一项重大架构改动在注意力侧。同样,背后的动机是:当上下文极长时,注意力的高昂成本不仅来自注意力分数计算,也来自 KV 缓存随序列长度增长。DeepSeek V4 通过两种压缩注意力机制的混合方案来解决这个问题:压缩稀疏注意力(Compressed Sparse Attention, CSA)与重度压缩注意力(Heavily Compressed Attention, HCA)。

如果需要复习背景,推荐看我之前的《现代大模型注意力变体可视化指南》,其中讲解了多头潜注意力(MLA)、DeepSeek 稀疏注意力(DSA)等内容。

首先要明确:DeepSeek V4 的 CSA/HCA,和 DeepSeek V2/V3 使用的 MLA 式压缩不是同一类压缩。MLA 主要压缩每个 token 的 KV 表征,而 CSA 与 HCA 是沿序列维度做压缩。也就是说,它们不再为每个历史 token 保留一条完整(或压缩)的 KV 条目,而是将成组的 token 汇总为更少的压缩 KV 条目,从而缩短缓存长度。

DeepSeek V4 也使用了紧凑的压缩条目与共享 KV 注意力,但和 MLA 最核心的区别是对序列长度的压缩,如下图所示。

figure21

图 21:MLA 式每 token 潜缓存、CSA 与 HCA 的概念对比。MLA 压缩存储的 KV 表征,但每个 token 保留一条潜条目;CSA 以 m=4 的比例做轻度序列压缩 + 稀疏 Top-K 选择;HCA 以 m’=128 的比例做重度序列压缩,并在缩短后的缓存上做稠密注意力

CSA/HCA 的效果权衡也和 MLA 不同。如图所示,MLA 压缩每个 token 存储的表征,但仍为每个 token 保留一条潜 KV 条目;CSA、尤其是 HCA 更进一步,直接减少序列条目数量,模型牺牲部分 token 级信息,换取大幅降低的长上下文成本。

归根结底都是为了降低长上下文开销,但压缩过度会损害建模质量,因此 DeepSeek V4 没有单一依赖某一种压缩方案,而是在 CSA 与 HCA 之间交替使用。CSA 压缩比例更温和,搭配 DeepSeek 稀疏注意力(DSA)式的选择器;HCA 压缩强度大得多,以更低成本实现全局覆盖;两者都保留了局部滑动窗口分支,用于处理近期未压缩的 token。CSA 中的稀疏选择机制建立在 DeepSeek 稀疏注意力(DSA)基础上,我在之前的 DeepSeek V3.2 解读中做过详细讲解。

HCA 是两者中更激进的变体:它将每 128 个 token 压缩为一条 KV 条目,但随后在这些重度压缩的条目上做稠密注意力。换言之,CSA 保留更多细节但采用稀疏选择,HCA 保留的条目少得多,因此可以承受稠密注意力计算,如下图所示。两种机制形成互补,这也是 DeepSeek V4 交替堆叠 CSA 与 HCA 层,而非只使用其中一种的原因。

figure22

图 22:CSA 选择稀疏的压缩历史块集合,HCA 则在重度压缩后的块上做稠密注意力。两条路径都通过 128 token 滑动窗口分支,保留近期未压缩的 KV 条目

DeepSeek V4 论文报告:在 100 万 token 上下文长度下,相比采用 MLA 与 DeepSeek 稀疏注意力(DSA)的 DeepSeek V3.2,DeepSeek V4-Pro 的单 token 推理浮点运算量仅为前者的 27%,KV 缓存体积仅为 10%;DeepSeek V4-Flash 则更极致,运算量与 KV 缓存分别仅为 V3.2 的 10% 与 7%。

figure23

图 23:DeepSeek V4 论文报告的 100 万上下文效率数据,以 DeepSeek V3.2 为基准

顺便一提,我不会笼统地说 CSA/HCA “优于” MLA。CSA/HCA 是更激进的长上下文优化设计,而且实现复杂度肯定更高。遗憾的是论文中没有做消融实验。不过整体来看,论文报告了出色的建模效果:DeepSeek V4-Flash-Base 在多数基础模型基准上超越 DeepSeek V3.2-Base,100 万 token 检索表现也很强;但这些结果是 DeepSeek V4 完整方案的综合效果,其中还包括更优的数据、Muon 优化器、mHC、精度 / 存储优化以及训练 / 推理系统的改进。

就目前而言,我认为 CSA/HCA 是一种以效率为核心的长上下文设计,在他们的大型旗舰模型中能很好地保留建模质量,但未必在所有场景下都普遍优于 MLA。


6. 结论

总的来说,今年一个值得关注的趋势是:多数新开源模型都在努力降低长上下文推理成本,而不是单纯缩减模型总参数量。例如:

  • Gemma 4 通过跨层 KV 共享降低 KV 缓存显存占用,并通过逐层嵌入提升模型容量;

  • Laguna XS.2 精细化调配每层的注意力容量;

  • ZAYA1-8B 将注意力运算迁移到压缩潜空间;

  • DeepSeek V4 加入了约束化的残差流混合,以及压缩长上下文注意力。

所有这些微调都让架构变得更复杂 —— 这似乎也是当前大模型架构的发展方向。

我的核心感受是:Transformer 块仍在演进,但都是相当有针对性的优化。基本框架依然建立在原始 GPT 纯解码 Transformer 架构之上,但很多部件都得到了升级或替换,越来越向长上下文、高效推理的方向专门化;而模型的定性表现,似乎主要由数据质量(与数量)以及训练策略决定。

过去很多人问我,Transformer 会不会、或者什么时候会被其他架构取代。当然,扩散模型等其他设计确实存在,但在当前最先进的架构发布中,Transformer 依然是主流。

不过,随着每一轮发布都带来越来越多的微调设计,实现的复杂度也在攀升。过去用 50-100 行 PyTorch 代码就能写出一个基础 Transformer 块,而如今这些优化(尤其是注意力变体)大概让代码复杂度翻了 10 倍。这本身未必是坏事 —— 因为这些优化降低了(而非提升了)运行时成本。但想要清晰理解每个组件及其相互作用,正变得越来越困难。

figure24

图 24:从 GPT-2(2019)到 DeepSeek V4-Pro(2026)的演进

例如,我敢肯定,初次接触大模型架构的人看到 DeepSeek V4 的源码时,一定会感到完全无从下手。但如果从原始解码式大模型(GPT/GPT-2)起步,再逐步逐个学习这些新增组件,学习难度就会可控很多。我想,道理就是:保持学习,逐个吃透每一种架构。

Leave a Reply

Your email address will not be published. Required fields are marked *

*