Ahead of AI · Sebastian Raschka

LLM架构最新进展:KV共享、mHC与压缩注意力

Recent Developments in LLM Architectures: KV Sharing, mHC, and Compressed Attention

二〇二六年五月十七日 · 英文原文

近期多个开源权重LLM发布聚焦于长上下文效率优化,主要瓶颈包括KV缓存大小、内存带宽和注意力计算成本。Gemma 4引入跨层KV共享和逐层嵌入(PLE),分别减少约50%缓存内存和提升参数效率。Laguna XS.2采用逐层注意力预算分配,滑动窗口层每KV头使用8个查询头,全局层使用6个。ZAYA1-8B由Zyphra开发,在AMD GPU上训练,使用压缩卷积注意力(CCA)直接在压缩潜在空间执行注意力操作。DeepSeek V4采用流形约束超连接(mHC)加宽残差路径,以及压缩稀疏注意力(CSA)和重度压缩注意力(HCA)混合方案,在1M token上下文下仅使用DeepSeek V3.2的27%推理FLOPs和10% KV缓存。

经过短暂的休假后,我很兴奋地回归,并补上过去几周密集的开源权重 LLM 发布。让我印象最深的是,越来越多新架构专注于长上下文效率。随着推理模型和 agent 工作流保留更多 token(且时间更长),KV 缓存大小、内存带宽和注意力计算成本迅速成为主要瓶颈,LLM 开发者正在添加越来越多的架构技巧来降低这些成本。我主要想探讨的例子包括:Gemma 4 中的 KV 共享和逐层嵌入、Laguna XS.2 中的逐层注意力预算分配、ZAYA1-8B 中的压缩卷积注意力,以及 DeepSeek V4 中的 mHC 加压缩注意力。这些改动中的大多数在我的架构图中看起来只是小调整,但其中一些是相当复杂的设计变更,值得更详细地讨论。

图 1:近期主要开源权重模型(4 月至 5 月)的 LLM 架构图。 你可以在我的 LLM 架构画廊中找到这些图片及更多细节。并非所有模型尺寸都展示出来;Qwen3.6 包含 27B 和 35B-A3B 变体,ZAYA1 由 8B 模型代表(省略了 ZAYA1-base 和 ZAYA1-reasoning-base)。虚线框中的架构将在本文中更详细地介绍。请注意,本文关注的是架构设计,因此我将主要跳过数据集混合、训练计划、后训练细节、RL 配方、基准测试表和产品比较。即使范围如此狭窄,仍有很多内容需要覆盖。而且,像往常一样,这篇文章比我预期的要长,所以我会把重点放在 Transformer 块、残差流、KV 缓存或注意力计算内部的变化上。还请留意,我只涵盖那些有趣(新颖)的设计选择,并且我尚未在其他地方介绍过的内容。这个列表包括:

先前主题

在进入新内容之前,这里有两篇我之前会引用的文章。第一篇提供了关于近期 MoE 模型、路由专家、活跃参数和模型尺寸比较的更广泛架构背景。第二篇涵盖了下面会反复出现的注意力背景知识,包括 MHA、MQA、GQA、MLA、滑动窗口注意力、稀疏注意力和混合注意力设计。我还将其中一些解释转化为 LLM 架构画廊中的简短、独立的教程页面。例如,读者可以在相应的模型卡片和概念标签中找到关于 GQA、MLA、滑动窗口注意力、DeepSeek 稀疏注意力、MoE 路由等概念的紧凑解释。

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

对于这次架构进展和调整的巡礼,我们将回到四月初,当时 Google 发布了他们新的开源权重 Gemma 4 模型系列。它们分为三大类:面向移动和小型本地(嵌入式)设备(即 IoT)的 Gemma 4 E2B 和 E4B 模型;针对高效本地推理优化的 Gemma 4 26B 混合专家(MoE)模型;以及追求最高质量和更方便后训练(因为 MoE 处理起来更棘手)的 Gemma 4 31B 密集模型。

图 2:Gemma 4 架构图。

E2B 和 E4B 变体中的第一个小型架构调整是采用了共享 KV 缓存方案,其中后面的层复用前面层的键值状态,以减少长上下文的内存和计算。这种 KV 共享并非 Gemma 4 首创。例如,参见 Brandon 等人的论文《Reducing Transformer Key-Value Cache Size with Cross-Layer Attention》(NeurIPS 2024)。但这是我看到的第一个应用此概念的流行架构。(不要将跨层注意力与交叉注意力混淆。)

在进一步解释 KV 共享之前,我们先简要谈谈其动机。正如我近几个月所写和所谈到的,近期 LLM 架构设计的主要主题之一是 KV 缓存大小缩减。反过来,KV 缓存大小缩减的动机是为了减少所需内存,这使我们能够处理更长的上下文,这在推理模型和 agent 时代尤其重要。关于 KV 缓存的更多背景知识,请参阅我的文章《Understanding and Coding the KV Cache in LLMs from Scratch》:

实际上,我在之前的文章《A Visual Guide to Attention Variants in Modern LLMs》中描述的所有流行注意力变体,其设计都是为了减少 KV 缓存大小:举一个经典的例子(Gemma 4 仍在使用):分组查询注意力(GQA)已经在不同查询头之间共享键值(KV)头,以减少 KV 缓存大小,如下图所示。

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

如前所述,Gemma 4 使用了 GQA。然而,除了作为 GQA 一部分的查询间 KV 共享之外,Gemma 4 还在不同层之间共享 KV 投影,而不是在每个层的注意力模块中计算它。这种 KV 共享方案,也称为跨层注意力,如下图所示。

图 4:常规 Transformer 块在每个注意力模块中分别计算 Q、K 和 V 投影(左)。跨层注意力设计(右)在多个层之间共享相同的 K 和 V 投影。

正如在图 2 的架构概览中简要暗示的那样,Gemma 4 E2B 以 4:1 的模式使用常规 GQA 和滑动窗口注意力。(更准确地说,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 缓存大小。对于最小的 E2B 模型,在长 128K 上下文中,这节省了 2.7 GB(以 bfloat16 精度),如下所示。(对于 E4B 变体,在 128K 上下文中节省了约 6 GB。)

图 5:在类似 Gemma 4 E2B 的设置中,通过 GQA 和跨层 KV 共享节省的 KV 缓存内存。为简化起见,未显示滑动窗口注意力带来的额外节省。

KV 共享的缺点当然是它是对真实情况的“近似”。或者更准确地说,它降低了模型容量。然而,根据跨层注意力论文,其影响可能很小(对于所测试的小型模型而言)。

2. 逐层嵌入和“有效”大小(Gemma 4 E2B/E4B)

Gemma 4 E2B 和 E4B 变体包含了第二个面向效率的设计选择,称为逐层嵌入(PLE)。这与上面的 KV 共享方案是分开的。KV 共享减少了 KV 缓存。而 PLE 则关乎参数效率,它让小型 Gemma 4 模型能够使用更多 token 特定信息,而无需让主 Transformer 堆栈像具有相同总参数量的密集模型那样昂贵。

例如,Gemma 4 E2B 和 E4B 中的“E”代表“有效”。具体来说,Gemma 4 E2B 被列为 2.3B 有效参数,如果计入嵌入,则为 5.1B 参数。(类似地,Gemma 4 E4B 被列为 4.5B 有效参数,计入嵌入则为 8B 参数)。简而言之,在“E”模型中,主 Transformer 堆栈的计算量更接近较小的数字,而较大的数字则包含了额外的嵌入表层。(关于嵌入层如何工作的说明,请参阅我的代码笔记本《Understanding the Difference Between Embedding Layers and Linear Layers》。)

从概念上讲,新的 PLE 路径如下所示:

图 6:简化的 Gemma 4 块,带有 PLE 残差路径。 常规块首先计算注意力和前馈残差更新。得到的隐藏状态对特定于层的 PLE 向量进行门控,然后投影后的 PLE 更新作为额外的残差更新在块末尾添加。

PLE 向量本身是在重复的 Transformer 块外部准备的。简化来说,PLE 构造有两个输入。首先,token ID 通过逐层嵌入查找。其次,常规 token 嵌入通过线性投影进入相同的打包 PLE 空间。这两部分相加、缩放并重塑为一个张量,每个层对应一个切片。请注意,每个块随后接收自己的切片。

图 7:简化的 PLE 构造。 token ID 提供逐层嵌入查找,而常规 token 嵌入被投影到相同的空间。两个贡献被组合并重塑,以便每个 Transformer 块接收自己的特定于层的 PLE 切片。

重要的细节是,PLE 并没有给每个 Transformer 块一个完整的、独立的常规 token 嵌入层副本。相反,逐层嵌入查找只计算一次。然后,如前所述,它给每个层一个小的、特定于 token 的嵌入切片(通过“reshape / select layer l”)。因此,对于每个输入 token,Gemma 4 准备一个打包的 PLE 张量,其中包含每个解码器层的一个小向量。然后,在前向传播期间,第 l 层只接收自己的切片(图 6 中 Gemma4WithPLEBlock 中的 ple_l)。

在 Transformer 块内部,常规的注意力和前馈分支照常运行。首先,块计算注意力残差更新。然后计算前馈残差更新。在第二次残差相加之后,得到的隐藏状态(我在图 6 的伪代码中将其记为 z)被用来对特定于层的 PLE 向量进行门控。门控后的 PLE 向量被投影回模型隐藏大小,进行归一化,并作为额外的残差更新添加。

因此,有用的心智模型是,Transformer 块仍然具有相同的主注意力和前馈路径,但 Gemma 4 在前馈分支之后添加了一个小的、特定于层的 token 向量。这通过嵌入参数和小型投影增加了表示能力。这增加了计算开销,但避免了将整个 Transformer 堆栈扩展到更大参数量的成本。

但为什么要用 PLE?更简单的替代方案是让密集模型更小,使用更少的层、更窄的隐藏状态或更小的前馈网络。这会减少内存和延迟,但也会从模型执行主要计算的部分移除容量。PLE 设计将昂贵的 Transformer 块保持在较小的“有效”大小附近,同时将额外的容量存储在逐层嵌入表中。这些表的使用成本远低于添加更多注意力或 FFN 权重,因为它们主要是可以缓存的查找式参数。

此外,我们必须相信 Google 的说法,即这是一个有效且值得的设计选择。如果能有一些比较研究,看看这种 E2B 设计与常规的 Gemma 4 2.3B 模型和常规的 Gemma 4 5.1B 模型相比如何,那将会很有趣。而且,原则上,PLE 并不固有地局限于小型模型。我们也可以将逐层嵌入切片附加到更大的模型上。然而,更大的模型已经具有足够的容量,这些额外的嵌入可能帮助不大。此外,对于更大的模型,我们已经使用 MoE 设计作为一种技巧,在保持计算量较小的同时增加容量。

顺便提一下,如果你对相对简单且可读的代码实现感兴趣,我在这里从头实现了 Gemma 4 E2B 和 E4B 模型。

图 8:我的 Gemma 4 从头实现快照。

3. 逐层注意力预算分配(Laguna XS.2)

Laguna 是 Poolside 的第一个开源权重模型,Poolside 是一家专注于为编码应用训练 LLM 的欧洲公司。我的几位前同事近年来加入了 Poolside,他们拥有一支才华横溢的优秀团队。很高兴看到更多公司也以开源权重变体的形式发布他们的一些模型。

无论如何,下面描绘的 Laguna XS.2 架构乍一看非常标准。然而,我没有展示(/试图塞进去)的一个细节是一个我们可以称之为“逐层注意力预算分配”的概念。

图 9:Poolside 的 Laguna XS.2 架构。

这里注意力预算背后的部分想法是,不给每个 Transformer 层相同的完整注意力预算,Laguna XS.2 按层变化注意力成本。它总共有 40 层,其中 30 层是滑动窗口注意力层,10 层是全局/全注意力层。像往常一样,滑动窗口层只关注局部窗口(此处为 512 个 token),这使 KV 缓存和注意力计算更便宜。全局层更昂贵,但保留了访问上下文窗口中所有信息的能力。这种混合滑动窗口 + 全局/全注意力模式并非 Laguna XS.2 独有,许多其他架构(包括 Gemma 4)也使用它。

但新颖之处在于使用了逐层查询头计数。例如,Hugging Face 模型中心的 config.json 包含一个 num_attention_heads_per_layer 设置,因此各层可以有不同数量的查询头,同时保持 KV 缓存形状兼容。

图 10:Laguna 中的逐层查询头预算分配,其中全注意力层每个 KV 头使用 6 个查询头,滑动窗口注意力层每个 KV 头使用 8 个查询头。

因此,Laguna XS.2 给滑动窗口层分配更多查询头,给全局层分配更少查询头,同时将 KV 头固定为 8 个。这就是配置中实际的逐层头预算分配。Laguna XS.2 是生产级开放模型中这种逐层查询头预算分配最突出的近期例子之一。但按层变化模型容量的更广泛想法至少可以追溯到 Apple 2024 年的 OpenELM。

再次,这种设计的目的是什么?与 KV 共享类似,目的是在最需要的地方投入注意力容量,而不是给每个层相同的预算。具体来说,全注意力层很昂贵,因为它们要查看整个上下文,所以 Laguna 给它们的查询头比滑动窗口注意力模块少。(此外,另一个较小的实现细节是,Laguna 还应用了逐头注意力输出门控;这与 Qwen3-Next 等有些相似,我在这里也省略了,因为我在之前的文章中已经介绍过。)

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

与 Laguna 类似,ZAYA1-8B 是开源权重市场上的另一个新玩家。它由 Zyphra 开发,发布中一个有趣的细节是该模型是在 AMD GPU 上训练的,而不是更常见的 NVIDIA GPU(或 Google TPU)设置。不过,主要的架构细节是压缩卷积注意力(CCA),与分组查询注意力一起使用。

与主要使用潜在表示作为紧凑 KV 缓存格式的 MLA 风格设计不同,CCA 直接在压缩的潜在空间中执行注意力操作,但稍后会详细介绍。(旁注:ZAYA1-8B 的 config.json 列出了 80 个交替的层条目,而不是 40 个常规的 Transformer 块。这些条目在 CCA/GQA 注意力和 MoE 前馈层之间交替。但对于架构图,将其可视化为 40 个重复的注意力 + MoE 对更为方便,这在概念上是等价的。)

图 11:Zaya1(8B)的 Transformer 块,具有压缩卷积注意力。

如上图所示,ZAYA1-8B 将压缩卷积注意力(CCA)与 4:1 的 GQA 布局结合使用。关键点在于其注意力块是围绕 CCA 构建的,而不是标准的滑动窗口注意力块。

什么是压缩卷积注意力?我认为 CCA 在精神上与 DeepSeek 模型中的多头潜在注意力(MLA)相关,因为两者都在注意力块中引入了压缩的潜在表示。然而,它们使用潜在空间的方式不同。MLA 主要使用潜在表示来减少 KV 缓存。在 MLA 中,KV 张量被紧凑地存储,然后投影到注意力头空间以进行实际的注意力计算。

图 12:常规多头注意力(MHA)和多头潜在注意力(MLA)并排比较。

CCA 压缩 Q、K 和 V,并直接在压缩的潜在空间中执行注意力操作。这就是为什么 CCA 不仅可以减少 KV 缓存大小,还可以减少预填充和训练期间的注意力 FLOPs。

图 13:多头潜在注意力(MLA)和压缩卷积注意力(CCA)并排比较。

如上图 13 所示,在 CCA 中,压缩后的潜在表示直接进入注意力机制,然后得到的压缩注意力向量被上投影。请注意,这被称为压缩卷积注意力,而不仅仅是压缩注意力,因为在对潜在 K 和 Q 表示进行卷积混合。卷积混合部分未在图 12 中显示,因为那样会太拥挤,但它相对简单。如图 12 所暗示的,卷积混合直接发生在压缩的 Q 和 K 张量上。关键在于,压缩使 Q、K 和 V 变窄,节省了计算和缓存,但也可能使注意力的表达能力降低。卷积是一种廉价的方式,可以在压缩的 Q 和 K 向量用于计算注意力分数之前,为它们提供更多的局部上下文。(卷积混合仅应用于 Q 和 K,而不应用于 V,因为 Q 和 K 决定了注意力分数,而 V 代表通过这些分数进行平均的内容。)

图 14:序列混合卷积的概念概览。

除了图 13 中所示的序列混合,还有一个通道混合组件。它原则上类似,因此我省略了图示。

CCA 似乎是 Zyphra 引入的一种注意力机制,其出现早于 ZAYA1-8B 的技术报告。独立的 CCA 论文《Compressed Convolutional Attention: Efficient Attention in a Compressed Latent Space》最初于 2025 年 10 月发布,并明确介绍了 CCA。ZAYA1-8B 随后将此机制作为核心部分之一。但问题是,“它比 MLA 更好吗?”根据 CCA 论文自己的实验,是的,他们报告在可比的压缩设置下,CCA 优于 MLA。

图 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,按活跃参数份额衡量,如下表总结所示。

图 16:MoE 模型的活跃参数百分比图。 你也可以在 https://sebastianraschka.com/llm-architecture-gallery/active-parameter-ratio/ 找到 HTML 版本。注意:活跃参数份额只是一个视角。它不捕获 KV 缓存大小、注意力模式、上下文长度、路由开销、硬件效率或训练质量。但在比较稀疏模型时,它是一个有用的快速检查。

关于 DeepSeek V4 有很多可说的,但由于它已经遍布新闻,并且为了保持主题集中在架构调整上,我将专注于与先前架构相比最相关的两个新部分:用于更宽残差路径的 mHC,以及用于长上下文注意力压缩和稀疏性的 CSA/HCA。

查看下面的 DeepSeek V4 架构图,似乎有很多内容。有用的阅读方式是,将残差路径的变化(mHC)与注意力路径的变化(CSA/HCA 和压缩注意力缓存)分开。

图 17:DeepSeek V4-Pro 架构概览。

5.1 流形约束超连接(mHC)

让我们从 DeepSeek V4 的 mHC 组件开始。这可以追溯到 DeepSeek 团队去年分享的一篇研究论文(2025 年 12 月 31 日,mHC: Manifold-Constrained Hyper-Connections)。然而,在这篇论文中,该技术仅在一个实验性的 27B 规模模型上进行了测试。现在,我们在他们的旗舰版本中看到了它,这是一个好迹象,表明这个想法在生产中确实效果很好。

这里 mHC 的主要想法是现代化 Transformer 块内部残差连接的设计,这令人耳目一新,因为架构调整通常集中在注意力机制、归一化层位置和 MoE 部分。现在,mHC 基于先前关于超连接的工作(参见 Zhu 等人 2024 年的《Hyper-connections》),我们应该先简要讨论一下。

超连接本质上通过用几个并行的残差流以及它们之间的学习映射来替换 Transformer 块内部的单个残差流,从而修改它。(对于不熟悉残差连接的读者,我多年前制作了一个关于残差神经网络的视频,其中解释了通用机制。)超连接背后的想法是加宽残差流。我们可以将其视为保持几个并行的残差流,并带有一个额外的 Res Mapping 线性变换,该变换在层之间混合它们。由于注意力或 MoE 层本身仍然在正常的隐藏大小上操作,超连接还添加了一个 Pre Mapping,将并行的残差流组合成一个用于该层的正常隐藏向量,以及一个 Post Mapping,将层输出分布回并行的残差流。这在下面的图中进行了视觉总结。

图 18:常规 Transformer 块(上)与带有超连接的 Transformer 块(下),使用了来自 mHC 论文的注释图,https://arxiv.org/abs/2512.24880。 下图聚焦于 Transformer 块的注意力层部分,但相同的概念适用于 MoE 层周围的第二个残差分支。

超连接的目的是使残差路径更具表现力,而无需使实际的注意力或 MoE 层更宽。这在 FLOPs 上仅略微昂贵,因为额外的映射在小的残差流轴(例如,DeepSeek V4 中 n = 4)上操作,而不是在巨大的隐藏维度上。在最初的超连接论文中,7B OLMo MoE 实验的 FLOPs 从每个 token 13.36G 变为 13.38G,基本上没有变化。就报告的性能提升而言,有适度(但一致)的改进,如下图所示。(然而,仅看 FLOPs 有点过于简单。加宽的残差状态仍然需要存储、在内存中移动、混合等。因此,实际开销可能更多地来自内存流量和实现复杂性,而不是算术运算,这并未明确测量。然而,鉴于 DeepSeek V4 完全关乎效率,这似乎是一个值得的补充。)

图 19:超连接与基线的性能对比,使用了来自超连接论文的注释图,https://arxiv.org/abs/2409.19606。 此外,如上图所示,使用大约一半的训练 token 就达到了基线的性能。

从常规超连接(HC)到流形约束超连接(mHC)的主要变化是,映射不再是无约束的。在常规 HC 中,Res Mapping 是一个学习到的矩阵,用于混合并行的残差流,但堆叠许多这样的矩阵可能会不可预测地放大或缩小信号。在 mHC 中,这个残差映射被投影到双随机矩阵的流形上,意味着所有条目都是非负的,并且每行和每列之和为 1。这使得残差混合更像是一种跨流的稳定信息再分配。Pre Mapping 和 Post Mapping 也被约束为非负且有界,这避免了在从加宽的残差状态读取和写回时发生抵消。

简而言之,mHC 保留了 HC 更丰富的残差混合,但增加了约束,使其能够更安全地扩展,这对于更大(更深)的模型更为重要。否则,使用并行残差流的主要思想仍然存在,如下图所示。

图 20:带有超连接(HC)和流形约束超连接(mHC)的 Transformer 块,使用了来自 mHC 论文的注释图,https://arxiv.org/abs/2512.24880。

在 mHC 论文中,使用 27B 参数模型进行实验,DeepSeek 团队优化的实现(带有融合、重计算和流水线调度)与单流基线相比,在所有 Transformer 块中为 4 个残差流(n = 4)仅增加了 6.7% 的额外训练时间开销。

总结本节,HC/mHC 通过用几个相互作用的残差流替换单个残差流,并在 mHC 中添加额外的稳定性约束,同时增加最小的计算开销,从而改变了信息在这些层之间的传递方式。此外,它与 CSA/HCA 注意力变化配合良好,后者修改了 Transformer 块的其他部分,我将在下面讨论。

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

DeepSeek V4 的另一个主要架构变化是在注意力方面。同样,动机是在非常长的上下文长度下,注意力变得昂贵,不仅因为注意力分数计算,还因为 KV 缓存随序列长度增长。DeepSeek V4 通过两种压缩注意力机制的混合来解决这个问题:压缩稀疏注意力(CSA)和重度压缩注意力(HCA)。作为复习,我建议查看我之前关于现代 LLM 中注意力变体的视觉指南文章,其中涵盖了多头潜在注意力(MLA)和 DeepSeek 稀疏注意力(DSA)等。

首先要注意的是,DeepSeek V4 中的 CSA/HCA 是一种不同于 DeepSeek V2/V3 中使用的 MLA 风格压缩的压缩类型。MLA 主要压缩每个 token 的 KV 表示,而 CSA 和 HCA 则沿着序列维度进行压缩。因此,它们不是为每个先前的 token 保留一个完整(或压缩)的 KV 条目,而是将 token 组总结为更少的压缩 KV 条目。因此,缓存变得更短。DeepSeek V4 也使用紧凑的压缩条目和共享 KV 注意力,但与 MLA 的主要区别在于序列长度压缩。如下图所示。

图 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 层,而不是只使用其中一种。

图 22:CSA 选择一组稀疏的压缩历史块,而 HCA 对更重度压缩的块进行密集注意力。 两条路径都通过一个 128 token 的滑动窗口分支包含最近的未压缩 KV 条目。

DeepSeek V4 论文报告称,在 1M token 上下文长度下,与使用 MLA 和 DeepSeek 稀疏注意力(DSA)的 DeepSeek V3.2 相比,DeepSeek V4-Pro 仅使用 27% 的单 token 推理 FLOPs 和 10% 的 KV 缓存大小。DeepSeek V4-Flash 甚至更小,相对于 DeepSeek V3.2,FLOPs 为 10%,KV 缓存大小为 7%。

图 23:DeepSeek V4 论文中报告的相对于 DeepSeek V3.2 的 1M 上下文效率数据。

顺便提一下,我不会在一般意义上将 CSA/HCA 描述为“优于”MLA。CSA/HCA 是一种更激进的长上下文设计。而且它肯定也更复杂。不幸的是,论文中没有消融研究。但总的来说,论文报告了强大的整体建模结果,包括 DeepSeek V4-Flash-Base 在大多数基础模型基准测试中优于 DeepSeek V3.2-Base,以及强大的 1M token 检索结果,但这些结果是针对完整的 DeepSeek V4 配方,其中还包括更好的数据、基于 Muon 的优化、mHC、精度/存储优化以及训练/推理系统更改。就我个人而言,目前我会将 CSA/HCA 视为一个面向效率的长上下文设计,它似乎在其大型旗舰模型中很好地保持了建模质量,但未必普遍优于 MLA。

6. 结论

总的来说,今年有趣的模式是,大多数新的开源权重模型试图在不通过减少总参数来缩小模型的情况下,使长上下文推理更便宜。例如,Gemma 4 通过跨层 KV 共享减少 KV 缓存内存,并通过逐层嵌入增加容量。Laguna XS.2 调整每个层获得的注意力容量。ZAYA1-8B 将注意力移入压缩的潜在空间。DeepSeek V4 增加了受约束的残差流混合和压缩的长上下文注意力。所有这些调整都增加了更多的复杂性,这似乎是当前 LLM 架构的发展方向。

我的主要收获是,Transformer 块仍在变化,但方式相当有针对性。基本配方仍然基于原始的 GPT 解码器专用 Transformer 架构,但许多部分已被升级或替换,并且它们变得更加专门化,以应对更长的上下文和更高效的推理,而定性建模性能似乎主要由数据质量(和数量)以及训练配方驱动。

过去你们很多人问我的问题都集中在 Transformer 何时(或是否)会被其他东西取代。当然,还有其他设计,如扩散模型,但 Transformer 仍然是 SOTA 架构发布的主流。然而,随着每年发布季度的增加,我们得到的调整也越来越多。虽然用大约 50-100 行 PyTorch 代码实现一个基本的 Transformer 块是可能的,但这些调整(尤其是围绕注意力变体的)可能使代码复杂度增加了 10 倍。这本身并不是坏事,因为这些调整减少了(而不是增加了)运行时成本。然而,要清晰理解各个组件及其相互作用变得越来越困难。

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

例如,我相当确定,一个初次接触 LLM 架构的人在看到 DeepSeek V4 的源代码时会完全不知所措。然而,通过从原始的解码器风格 LLM(GPT/GPT-2)开始,然后逐步一次添加/学习这些新组件,我们可以使学习过程易于管理。我想这个故事的道理是,保持学习,一次一个架构 :)。

顺便提一下,我非常兴奋地分享,我已经完成了《Build A Reasoning Model (From Scratch)》的写作,所有章节现在都可以提前访问了。我和出版商在过去一个月里为最终的版式付出了很多努力,它将在本周送去印刷。(好消息:这次印刷版将是彩色的!)这很可能是我迄今为止最有雄心的书。我花了大约 1.5 年时间写作,并投入了大量实验。这也可能是我在时间、精力和打磨上最努力的一本书,希望你们会喜欢。

在 Manning 和 Amazon 上购买《Build a Reasoning Model (From Scratch)》。主要主题包括:

关于 LLM 中的“推理”有很多讨论,我认为理解它在 LLM 上下文中真正含义的最佳方式是从头实现一个!

译自 Ahead of AI · Sebastian Raschka · 录于 二〇二六年五月十七日