← 文章 / AI技术
Sebastian Raschka 2小时前 · 2026-09-22 05:55:07 · 5 阅读

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

短暂的家庭休假结束后,我迫不及待回来跟进这几周开源权重 LLM 的密集发布。其中最引人注目的趋势是,新架构正高度关注长上下文场景下的效率。

随着推理模型和智能体工作流保留的 token 数量(及时间)不断增加,KV-cache 的占用、内存带宽以及注意力计算成本迅速成为主要瓶颈。因此,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 缓存或注意力计算内部的具体变更。

另请注意,本文仅涵盖那些新颖(有趣)且我尚未在其他地方讨论过的设计选择。主要话题包括:

  1. Gemma 4 的 KV 共享与逐层嵌入

  2. ZAYA1 的压缩卷积注意力

  • Laguna XS.2 中的注意力预算机制

  • DeepSeek V4 中的 mHC 与压缩注意力

  • 相关主题

    在深入探讨新内容之前,先回顾两篇我将引用并参考之前的文章。第一篇文章提供了近期 MoE 模型、路由专家、激活参数及模型规模对比的宏观架构背景。第二篇文章涵盖了下文反复出现的注意力机制基础知识,包括 MHA、MQA、GQA、MLA、滑动窗口注意力、稀疏注意力以及混合注意力设计。

    大型 LLM 架构全景对比

    Sebastian Raschka, 博士· 2025 年 7 月 19 日 大型 LLM 架构全景对比

    最后更新:2026 年 4 月 2 日(在第 23 节新增了 Gemma 4)

    阅读完整故事

    现代 LLM 注意力变体视觉指南

    Sebastian Raschka, 博士· 3 月 22 日 现代 LLM 注意力变体视觉指南

    我原本计划撰写关于 DeepSeek V4 的内容,但由于其尚未发布,我利用这段时间完成了一项计划已久的任务,即收集、整理并提炼过去几年中我涵盖过的各类 LLM 架构。

    阅读完整故事

    我还将其中若干解释转化为简短的独立教程页面,收录于 LLM 架构画廊 中。例如,读者可以在对应模型卡片和概念标签链接中找到 GQA、MLA、滑动窗口注意力、DeepSeek 稀疏注意力、MoE 路由等概念的简明解析。

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

    这篇架构演进之旅要从四月初说起——Google 发布了新一代开源权重模型套件 Gemma 4。它分为三大类:

    • Gemma 4 E2B 和 E4B,面向移动设备和小型本地(嵌入式)设备(即 IoT);

    • Gemma 4 26B mixture-of-experts(MoE)模型,针对高效本地推理做了优化;

    • Gemma 4 31B dense 模型,追求最高质量,且后训练更方便(MoE 处理起来更麻烦)。

    图 2:Gemma 4 架构图。

    E2B 和 E4B 版本的第一处小改动是采用了共享 KV cache 方案:靠后的层复用靠前层的键值状态,从而降低长上下文下的内存和计算开销。

    KV 共享并非 Gemma 4 首创,比如可参考 Brandon 等人的论文"Reducing Transformer Key-Value Cache Size with Cross-Layer Attention"(NeurIPS 2024)。但这是我在主流架构中第一次见到这个概念落地。(Cross-layer attention 不要与 cross-attention 混淆。)

    在深入解释 KV 共享之前,先简单说说动机。正如我近几个月反复提到的,当前 LLM 架构设计的一大主题就是缩减 KV cache 大小——目的是减少内存占用,从而支持更长的上下文,这在推理模型和 agent 时代尤其重要。关于 KV cache 的更多背景,可以看我那篇"Understanding and Coding the KV Cache in LLMs from Scratch":

    Understanding and Coding the KV Cache in LLMs from Scratch

    Sebastian Raschka, PhD·June 17, 2025阅读全文

    我在前文现代大语言模型中的注意力机制变体可视化指南中介绍的所有主流注意力机制变体,设计初衷都是为了减小 KV cache 的体积:

    现代大语言模型中的注意力机制变体可视化指南

    Sebastian Raschka, PhD·Mar 22阅读全文

    举一个经典的例子(Gemma 4 目前仍在沿用):分组查询注意力(Grouped Query Attention,GQA)通过让多个 query head 共享同一组 key-value(KV)head 来降低 KV cache 的占用,如下图所示。

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

    如前所述,Gemma 4 采用了 GQA。但除了 GQA 中各 query 之间的 KV 共享外,Gemma 4 还进一步在不同层之间共享 KV 投影(KV projections),而不是在每一层的注意力模块中单独计算 KV。这种跨层 KV 共享方案也被称为层间注意力(cross-layer attention),如下图所示。

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

    如图 2 的架构概览中简要提及,Gemma 4 E2B 采用常规 GQA 和滑动窗口注意力,遵循 4:1 模式。(更准确地说,Gemma 4 E2B 使用的是 MQA,即 GQA 中只有一个 KV 头的特殊情况)。

    在 GQA(或 MQA)场景下,KV 共享机制如下:后续层不再计算自己的 Key 和 Value 投影,而是复用同种注意力类型中最近的、未共享层的 KV 张量。换句话说,滑动窗口层与之前的滑动窗口层共享 KV;全注意力层则与之前的全注意力层共享 KV。各层仍会计算自己的 Query 投影,从而形成各自独立的注意力模式,但高昂且占用大量内存的 KV 缓存则在多个层间得到复用。

    例如,Gemma 4 E2B 共有 35 个 Transformer 层,但只有前 15 层计算自己的 KV 投影;最后 20 层复用同种注意力类型中最近的未共享层的 KV 张量。同理,Gemma 4 E4B 拥有 42 层,其中 24 层计算自己的 KV,最后 18 层则进行共享。

    这种设计实际节省了多少?由于我们在层间共享了大约一半的 KV,因此 KV 缓存大小也相应减少了约一半。以最小的 E2B 模型为例,在 128K 长上下文下(bfloat16 精度),可节省 2.7 GB,如下所示。(对于 E4B 变体,在 128K 下可节省约 6 GB。)

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

    KV 共享的缺点当然在于它是一种对“原版”的近似,更准确地说,它会降低模型容量。不过根据跨层注意力论文的实验结果,在所测试的小模型上,这种影响可以微乎其微。

    2. Per-Layer Embeddings 与“有效”参数量(Gemma 4 E2B/E4B)

    Gemma 4 E2B 和 E4B 变体还包含第二项面向效率的设计——per-layer embeddings(PLE,逐层嵌入)。它与前面的 KV 共享方案是相互独立的。

    KV 共享旨在减少 KV cache,而 PLE 关注的是参数效率:它让小型 Gemma 4 模型能够利用更多与 token 相关的信息,同时又不必把主 Transformer 堆叠做得像同等总参数量的稠密模型那样昂贵。

    举例来说,Gemma 4 E2B 和 E4B 中的“E”代表“effective”(有效)。具体而言,Gemma 4 E2B 标称的有效参数量为 2.3B,若把嵌入层算进去则是 5.1B 参数。(同理,Gemma 4 E4B 的有效参数量为 4.5B,算上嵌入层则为 8B。)

    简而言之,在“E”系列模型中,主 Transformer 堆叠的计算开销更接近较小的那个数字,而较大的数字则包含了额外的嵌入表层。(关于嵌入层工作原理的图解说明,可以参考我的代码笔记本“理解嵌入层与线性层的区别”。)

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

    图 6:带 PLE 残差通路的简化版 Gemma 4 模块。普通模块首先计算注意力机制和前馈网络的残差更新。产生的隐状态用于门控特定的 PLE 向量,投影后的 PLE 更新值作为额外的残差更新项叠加在模块末尾。

    PLE 向量本身在重复 Transformer 模块之外准备。简化来看,PLE 构建有两个输入。首先,token ID 经过逐层嵌入查找。其次,普通 token 嵌入通过线性投影映射到相同的 PLE 打包空间。这两部分相加、缩放并重塑为张量,每一层对应一个切片。注意每个模块会接收自己的切片。

    图 7:简化版 PLE 构建流程。Token ID 提供逐层嵌入查找,普通 token 嵌入投影至同一空间。两部分贡献被合并并重塑,使每个 Transformer 模块接收属于自己特定层的 PLE 切片。

    关键在于,PLE 并没有给每个 Transformer 模块提供普通 token 嵌入层的完整独立副本。相反,逐层嵌入查找只计算一次。如前所述,它为每一层提供一个小的、针对特定 token 的嵌入切片(通过“重塑/选择层 l”实现)。

    因此,对于每个输入 token,Gemma 4 准备了一个打包的 PLE 张量,包含每个解码器层对应的小向量。随后在前向传播过程中,层 l 仅接收其对应的切片(即图 6 中 Gemma4WithPLEBlock 里的 ple_l)。

    在 Transformer 模块内部,常规的 attention 和 feed-forward 分支照常运行。首先,该模块计算 attention 残差更新,接着计算 feed-forward 残差更新。经过第二次残差相加后,得到的隐藏状态(即图 6 伪代码中我标记为 z 的变量)用于控制该层特定的 PLE 向量。随后,经过门控的 PLE 向量会被投影回模型隐藏维度,进行归一化,并作为额外的残差更新项加入。

    因此,可以这样理解:Transformer 模块保留了原有的主 attention 和 feed-forward 路径,但 Gemma 4 在 feed-forward 分支之后添加了一个小型的层特定 token 向量。这种方式通过嵌入参数和小型投影增加了表征能力。虽然会带来一定的计算开销,但避免了将整个 Transformer 堆栈扩展到更大参数量的高昂成本。

    为什么要用 PLE?更简单的替代方案是缩小 dense 模型,例如使用更少的层、更窄的隐藏状态或更小的 feed-forward 网络。这虽然能降低内存和延迟,但同时也削弱了模型核心计算部分的容量。

    PLE 设计让昂贵的 Transformer 模块维持在较小的“有效”规模附近,同时将额外容量存储在各层的嵌入表中。这些主要是查表式的参数,可以被缓存,因此比增加 attention 或 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 架构乍看非常标准。不过有一个细节我没画进去(也没法塞进图里),可以称之为“分层注意力预算”(Layer-wise attention budgeting)。

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

    注意力预算这个思路的核心在于:Laguna XS.2 不给每个 Transformer 层都分配同样的完整注意力预算,而是让注意力开销按层变化。它总共有 40 层,其中 30 层是滑动窗口注意力层,10 层是全局(full)注意力层。和惯例一样,滑动窗口层只关注局部窗口(这里是 512 个 token),从而降低 KV cache 和注意力计算的开销;全局层成本更高,但保留了对上下文窗口中全部信息的访问能力。

    这种滑动窗口 + 全局注意力的混合模式并非 Laguna XS.2 独有,许多其他架构(包括 Gemma 4)也在使用。

    新意在每一层使用不同数量的查询头。例如,Hugging Face 模型中心里 Laguna-XS.2 的 config.json 包含了 num_attention_heads_per_layer 设置,这使得各层可以拥有不同数量的查询头,同时保持 KV 缓存形状兼容。

    图 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(或 Google TPU)配置。

    核心架构细节在于压缩卷积注意力(Compressed Convolutional Attention,CCA),它与分组查询注意力(Grouped-Query Attention)配合使用。与主要将潜在表示用作紧凑 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 模型中的多头潜在注意力(Multi-head Latent Attention,MLA)相似,因为两者都在注意力块中引入了压缩的潜在表示。然而,它们对该潜在空间的用法不同。MLA 主要利用潜在表示来减少 KV 缓存。在 MLA 中,KV 张量被紧凑地存储,然后投影到注意力头空间中进行实际的注意力计算。

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

    CCA 直接压缩 Q、K、V,并在压缩后的潜在空间中执行注意力运算。因此,CCA 不仅能减小 KV cache 的体积,还能降低 prefill 和训练阶段的注意力 FLOPs。

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

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

    需要注意的是,它的名称是压缩卷积注意力(Compressed Convolutional Attention),而不只是压缩注意力,因为在潜在 K 和 Q 表示上还额外做了一次卷积混合。图 12 没有画出这个卷积混合部分,因为画进去会太挤,但它本身其实很简单。

    如图 13 暗示的那样,卷积混合是直接作用在压缩后的 Q 和 K 张量上的。核心思路是:压缩让 Q、K、V 变得更窄,从而节省计算量和缓存,但也可能削弱注意力的表达能力。卷积是一种低开销的手段,可以在用压缩后的 Q 和 K 计算注意力分数之前,为它们补充更多局部上下文。(卷积混合只作用于 Q 和 K,不作用于 V,因为 Q 和 K 决定注意力分数,而 V 是被这些分数加权平均的内容。)

    图 14:序列混合卷积的概念性概述

    除了图 14 中展示的序列混合,模型还包含一个通道混合组件。其原理类似,因此此处省略相关插图。

    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 模型的激活参数占比。HTML 版本可在 https://sebastianraschka.com/llm-architecture-gallery/active-parameter-ratio/ 查看。

    注意:激活参数占比只是观察稀疏模型的一个维度。它无法反映 KV 缓存大小、注意力模式、上下文长度、路由开销、硬件效率或训练质量。但在比较稀疏模型时,它是一个快速且有用的参考指标。

    关于 DeepSeek V4 有很多可聊之处,但鉴于其相关新闻已铺天盖地,且为了紧扣架构调整这一主题,我将重点聚焦于相较于此前架构新增的两个最相关部分:

    1. mHC,用于扩展残差通路,

    2. 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 block 内部残差连接的设计,这一点很新颖,因为架构上的改动通常都集中在 attention 机制、归一化层的位置以及 MoE 部分上。

    mHC 建立在之前 hyper-connections 的工作之上(见 Zhu 等人 2024 年的论文 Hyper-connections),我们先简单聊聊这个。Hyper-connections 的本质是改造 transformer block 内部单一的残差流:用多条并行的残差流取而代之,并在它们之间引入可学习的映射。

    (如果你对残差连接不熟悉,我多年前做过一期讲 residual neural network 的视频,解释了其基本原理。)

    Hyper-connections 的思路是把残差流变宽。可以理解为保留多条并行的残差流,再额外用一个 Res Mapping 线性变换在各层之间对它们做混合。由于 Attention 或 MoE 层本身仍在常规的 hidden size 上运算,hyper-connections 还加入了一个 Pre Mapping,把并行残差流合并成一条常规 hidden 向量供该层使用,以及一个 Post Mapping,把该层的输出重新分配回各条并行残差流。下面的图对这一过程做了直观总结。

    图 18:常规 Transformer 块(上)与带超连接的 Transformer 块(下),图源为 mHC 论文的注释版图表,https://arxiv.org/abs/2512.24880

    下图聚焦于 Transformer 块中的注意力层部分,但同样的原理也适用于环绕 MoE 层的第二个残差分支。

    超连接旨在增强残差通路的表达能力,而无需加宽实际的 Attention 或 MoE 层。其 FLOPs 开销增加非常有限,因为额外的映射操作发生在较小的残差流轴上(例如 DeepSeek V4 中 n = 4),而非巨大的隐藏维度上。

    在原始超连接论文中,7B OLMo MoE 实验的每 token FLOPs 从 13.36G 变为 13.38G,基本保持不变。在性能提升方面,取得了适度但一致的改进,如下图所示。

    (不过,仅看 FLOPs 略显简化。加宽的残差状态仍需存储、在内存中传输、混合等。因此,实际开销更多来自内存流量和实现复杂度,而非算术运算,而这些未被明确测量。但鉴于 DeepSeek V4 极其注重效率,这一改动似乎仍值得加入。)

    图 19:超连接与基线的性能对比,图源为超连接论文的注释版图表,https://arxiv.org/abs/2409.19606

    另外,如上所示,使用大致一半的训练 token 即可达到基线的性能水平。

    从常规超连接(HC)到流形约束超连接(mHC)的主要变化在于映射不再完全不受约束。在常规 HC 中,Res Mapping 是一个学习矩阵,用于混合并行的残差流;但堆叠大量此类矩阵可能会不可预测地放大或缩小信号。

    在 mHC 中,残差映射被投影到双随机矩阵的流形上,即所有元素均非负,且每行每列之和均为 1。这使得残差混合更像是在各流之间进行稳定的信息重新分配。Pre MappingPost Mapping 也被约束为非负且有界,从而避免在读写加宽的残差状态时发生抵消。简而言之,mHC 保留了 HC 更丰富的残差混合特性,但增加了约束以确保在更大(更深)的模型中能更安全地扩展。

    除此之外,使用并行残差流的核心思想保持不变,如下方图示。

    Figure 20: Transformer block with hyper-connections (HC) and manifold-constrained hyper-connections (mHC) using annotated figures from the mHC paper, https://arxiv.org/abs/2512.24880.

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

    总结本部分:HC/mHC 通过将单个残差流替换为多个交互的残差流,改变了信息在这些层中的传递方式,mHC 还添加了额外的稳定性约束,而计算开销极小。此外,它与 CSA/HCA 注意力机制的改进搭配良好,后者修改了 Transformer 块的其他部分,这一点将在下文讨论。

    5.2 Compressed Attention via CSA and HCA

    DeepSeek V4 的另一大架构改动在注意力机制上。动机还是一样:在超长上下文下,注意力的开销不仅来自注意力分数的计算,还来自随序列长度线性增长的 KV cache。DeepSeek V4 用两种压缩注意力机制的混合方案来解决这个问题:Compressed Sparse Attention(CSA)和 Heavily Compressed Attention(HCA)。

    如果想温习背景,推荐看我之前写的《现代 LLM 注意力变体图解指南》,其中介绍了 Multi-head Latent Attention(MLA)、DeepSeek Sparse Attention(DSA)等多种机制。

    现代 LLM 注意力变体图解指南

    Sebastian Raschka, PhD·3月22日阅读全文

    首先要明确的是,DeepSeek V4 中的 CSA/HCA 与 DeepSeek V2/V3 中 MLA 式的压缩是不同类型的压缩。MLA 主要压缩每个 token 的 KV 表示,而 CSA 和 HCA 是沿序列维度压缩。也就是说,它们不再为每个历史 token 保留一条完整(或压缩后的)KV 记录,而是把一组 token 汇总成更少的压缩 KV 记录,cache 因此变短了。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 Sparse Attention (DSA) 的选择器;HCA 使用更激进的压缩以实现更低成本的全局覆盖;两者均保留局部滑动窗口分支,用于处理最近的未压缩 token。CSA 中的稀疏选择机制建立在 DeepSeek Sparse Attention (DSA) 基础上,我在之前关于 DeepSeek V3.2 的技术解析中详细讨论过。

    两者中,HCA 是更激进的变体。它将每 128 个 token 压缩为一个隐式 KV 条目,随后对这些高度压缩的条目执行稠密注意力计算。换句话说,CSA 保留更多细节但使用稀疏选择,而 HCA 保留的条目少得多,因此可以承受在其上执行稠密注意力的开销,如下图所示。这使得两种机制在一定程度上互补,所以 DeepSeek V4 交错使用 CSA 和 HCA 层,而不是只用其中一种。

    图 22:CSA 选取一组稀疏的压缩历史块,而 HCA 则对压缩程度更高的块进行稠密注意力计算。两条路径还通过一个 128 个 token 的滑动窗口分支,纳入最近的未压缩 KV 条目。

    DeepSeek V4 论文报告称,在 100 万 token 的上下文长度下,与使用 MLA 和 DeepSeek Sparse Attention(DSA)的 DeepSeek V3.2 相比,DeepSeek V4-Pro 的单 token 推理 FLOPs 仅为前者的 27%,KV 缓存大小仅为 10%。DeepSeek V4-Flash 更为精简,其 FLOPs 仅为 DeepSeek V3.2 的 10%,KV 缓存大小仅为 7%。

    图 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-cache 显存占用,并用 per-layer embeddings 增加模型容量。

    • Laguna XS.2 调整了每层注意力容量的分配方式。

    • ZAYA1-8B 把注意力搬进了压缩的隐空间。

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

    这些改动都增加了更多复杂度,而这似乎正是当前 LLM 架构演进的方向。

    我的主要感受是:transformer block 仍在变化,但方式相当有针对性。基本配方依然源自最初的 GPT decoder-only transformer 架构,只是许多部件被升级或替换,越来越专注于更长上下文和更高效的推理;而模型在质量层面的表现,似乎主要还是取决于数据质量(和数据量)以及训练配方。

    大家过去常问我的一个问题是:transformer 什么时候(或者说会不会)被其他架构取代。当然,diffusion models 等其他设计也在发展,但目前最先进的架构发布依然是 transformer 的天下。

    不过,随着每季度发布的模型越来越多,各种小改动也越积越多。以前一个基本的 transformer block 用 PyTorch 写大概 50 到 100 行代码就够了,而这些改动(尤其是注意力机制的各种变体)可能让代码复杂度翻上十倍。这本身不算坏事,因为它们降低(而非增加)了运行成本。但想清楚地理解每个组件及其相互作用,正变得越来越难。

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

    举个例子,我相当确定,首次深入 LLM 架构的人会完全被 DeepSeek V4 的源代码搞得头晕目眩。然而,如果从最初的 decoder 类 LLM(GPT/GPT-2)入手,逐渐添加并学习这些新组件,我们就能让学习过程保持在可控范围内。我认为故事的寓意就是:保持学习,一次只专注一种架构 :)


    顺便说一下,我非常兴奋,因为我已经完成了《Build A Reasoning Model (From Scratch)》的写作,所有章节现在都已开放抢先阅读。过去一个月,出版社和我在最终排版上费了不少心血,预计本周就会送去印刷。(好消息是:这次的纸质版是彩色的!)

    这大概是我迄今写的最雄心勃勃的一本书。我花了大约一年半的时间写作,期间进行了大量实验。在时间、精力和打磨程度上,这可能也是我最投入的一本书,希望你们会喜欢。

    《Build a Reasoning Model (From Scratch)》可在 ManningAmazon 上购买。

    主要涵盖的主题包括:

    • 推理模型评估

    • 推理时扩展(inference-time scaling)

    • 自我精炼(self-refinement)

    • 强化学习

    • 蒸馏

    围绕 LLM 中“reasoning”的讨论很多,我认为理解它在 LLM 语境下真正含义的最佳方式,就是从零开始自己实现一个!

    • Amazon(Kindle 电子书和纸质平装版预售)

    原始来源: Sebastian Raschka

    评论 (0)