Extender:一种日志结构化的 Transformer
我们提出 Extender,一种标准 Transformer 架构的日志结构化 变体。 在标准 Transformer 中,各层仅通过残差 h(一个叠加通道)与后续层通信。Extender 额外引入一条拼接通道 x:每一层同时输出残差更新 δℓ(累加到 h)和一个更小的扩展项 εℓ(追加到 x)。虽然 FFN 与 q 读取 h,但注意力的 kv 投影只以 x 为输入。因此,完全扩展后的 x 包含了所有层 kv 投影所需的完整输入,将常驻注意力显存占用从 2Ld{model} 降至 sum|εℓ|。 - 短上下文:在 |εℓ|=32、199M–924M 参数下,Extender 在 CORE 任务上与 Transformer 精度持平。 - 长上下文:在 924M 参数下,Extender 在 RULER 负载上超过 Transformer。 对于宽度 1664、924M 参数的模型,Extender 的常驻注意力显存占用比 MHA 小 104 倍,且内存节省随模型宽度进一步增长。
论文精读
TL;DR Extender 为 Transformer 增加级联通道,将注意力 KV 输入压缩为各层小扩展向量,使持久注意力内存缩小 104 倍且长上下文准确率反超标准 Transformer。
问题
问题背景
Transformer 已成为大语言模型的主流架构,但在长上下文推理中,每层独立的 KV 缓存带来显著内存开销,成为大规模部署的瓶颈。
现有方法局限
标准 Transformer 的注意力 KV 缓存大小随层数 L 和模型宽度 d_model 线性增长,即 2 L d_model(每层 key 和 value)。对于长序列如 1M tokens,这个缓存可轻易超过模型参数本身的内存。已有缓解方案如 Multi-Query Attention (MQA) 和 Grouped-Query Attention (GQA) 通过共享 KV 头来降低缓存,但共享会限制表达能力;量化 KV 缓存可能引入精度损失;层重用减少层数但牺牲模型容量。这些方法都在标准残差流架构内做修补,未能从根本上改变 KV 输入的信息流。
为什么这个问题难/重要
关键在于:每层都从当前 hidden state 重新计算 KV,而 hidden state 是全部层共享的叠加信号,导致 KV 输入信息冗余。要在不降低模型精度的前提下大幅压缩 KV 缓存,需要重新设计信息流,让各层可以共享一个紧凑的 KV 输入表示。工业界对降低推理成本、提高长序列吞吐有迫切需求,因此这类架构创新受到密切关注。
行业类比
类似于日志结构化存储(log-structured storage)将随机写入转为顺序追加以减少 I/O 放大,Extender 将每层的 KV 输入追加到一个扩展流中,实现紧凑且可共享的持久内存。
核心洞察
- Extender 通过将注意力 KV 投影从残差流分离,改为依赖一个低维逐层追加的拼接通道 x,重构了 Transformer 的通信拓扑,使 KV cache 大小从 O(L*d_model) 降至 O(sum|ε|),且无需压缩或近似。与现有 KV cache 优化方法(如量化、层间重用、降维)不同,那些方法是在标准 MHA 上对已计算 KV 做后处理,而 Extender 从源头改变 KV 输入,将信息瓶颈前移。每层仅产生小维度 ε 追加到 x,所有层的 KV 投影都从累积 x 计算,因此 KV cache 存储的是 x 本身而非每层独立 KV,避免精度损失,甚至因 x 结构更聚焦而在长上下文上超越 MHA。
- Extender 的 log-structured 设计模仿日志追加式存储,与残差流的叠加更新互补,提供了一种按功能分离通道的新架构范式:残差流承载 FFN 和 query 信息,拼接通道承载 KV 信息。标准 Transformer 残差流每层全宽更新,导致每个特征独特,KV cache 内存随层数和宽度线性增长。Extender 每层只追加小增量,使得 KV 输入成为累积日志,不仅内存节省随宽度增长(如 1664 宽模型节省 104 倍),还可能促进层间信息结构化传递。与 MQA/GQA 通过共享头减少内存不同,它改变每层 KV 计算输入维度,而非减少头数,为设计高效 Transformer 变体提供了新途径。
方法
方法核心:双通道状态与逐层扩展
Extender 在标准 Transformer 的单一 residual stream h 之外,引入一个 concatenation channel x。输入 token 嵌入生成初始 h_0;x 初始为空或包含少量前缀。
每层 ℓ 的处理流程为:
- Query 分支:从当前
h生成注意力 queryq。 - KV 分支:将当前
x(此前所有层的ε串联)送入kv投影,得到 key 和 value。 - 注意力与 FFN:以
q、k、v计算注意力输出,并和 FFN 输出一起形成 residual updateδ_ell加回h。 - 扩展生成:该层额外产生一个极低维的 extension
ε_ell(论文中典型维度为 32),直接 append 到x尾部。
最终预测头从 h 读取,而 x 不参与输出。推理时只需缓存所有 ε_ell 的串联,无需为每层保存完整 key/value 张量;每层注意力计算时即时从 x 投影出 kv。
关键设计:
x是“日志式”增长的只追加结构,每层只读、只追加,因此持久内存占用从2L d_model降至Σ|ε_ell|。
与逐层 KV cache 压缩或 MQA/GQA 不同,Extender 用 单一共享、逐层增长的紧凑通道 替代所有层的独立 KV 缓存,内存成本不随层数线性增长,而随模型宽度增长时收益更大。
实验
实验设计
论文在 DCLM CORE(短上下文)与 RULER(长上下文)两个基准上评估 Extender 与标准 Transformer。模型规模覆盖 199M–924M 参数,关键超参为 |ε_ℓ|=32(每层扩展向量宽度)。评测对比点包括:短上下文任务上的准确率、长上下文任务上的准确率,以及推理时的持久注意力内存占用。训练算力未在摘要中披露。
关键发现
- 短上下文 CORE:在 199M–924M 参数范围内,Extender 准确率与 Transformer 持平。
- 长上下文 RULER:在 924M 参数模型上,Extender 准确率超过 Transformer。
- 内存优化:对于宽度 1664、924M 参数的模型,Extender 的持久注意力内存占用比 MHA 低 104×,且节省幅度随模型宽度增加而扩大。
与基线对比解读
Extender 的核心设计是引入拼接通道 x 接收每层较小的扩展 ε_ℓ,使注意力 kv 投影只依赖 x 而非全宽残差 h。这改变了标准 Transformer 中残差流作为唯一层间通信通道的范式。相比 MHA,其持久注意力内存从 2L d_model 压缩到 ∑|ε_ℓ|,在保持短上下文精度与提升长上下文表现的同时实现数量级内存缩减。这一结果提示:对注意力输入施加低秩或结构化约束,可能同时缓解长序列推理的 KV-cache 压力与优化难度。
行业影响
落地场景
Extender 的 log-structured 设计将 KV cache 从 2Ld_model 压缩至 sum|ε_ℓ|,显著降低长上下文推理的显存占用,适合以下产品/业务场景:
- 长文档处理:法律合同审查、学术论文分析、报告生成,需要处理数十万 token 的上下文。
- 多轮对话系统:客服机器人、个人助理,长对话历史可保持更久,减少上下文截断。
- 代码生成与理解:大型代码仓库上下文,便于代码补全和重构建议。
商业价值
主要降本:
- 显存成本下降:以 1664 宽、924M 模型为例,attention 持久内存占用缩小 104 倍,单卡可服务更大 batch 或更长序列,直接降低 GPU 租赁或购置成本。
- 吞吐提升:KV cache 变小,推理时内存带宽压力减小,单位时间处理请求数增加,提高服务 SLA。
- 体验提升:长上下文任务精度超过 Transformer,用户可提交更长文档而无需手动分块,体验更流畅。
与现有产品/工作流的集成
Extender 作为 Transformer 架构变体,需在训练阶段替换注意力层,推理阶段使用 x-cache 替代传统 KV cache。集成步骤:
- 在训练框架(如 Megatron-LM、DeepSpeed)中实现 Extender 层,或基于开源实现微调现有模型。
- 推理引擎适配:vLLM、TensorRT-LLM 等需支持
x-cache 的内存分配和读取,但改动较 KV cache 压缩方案小(只需 cache 拼接向量)。 - 可将 Extender 作为 drop-in 替换,短上下文任务精度不降,因此可平滑迁移。
具体落地 use case:
- 电商平台:商品详情页包含大量图文描述,长上下文模型可同时理解用户历史浏览、搜索记录与当前商品全貌,提升推荐解释性和转化率。
- 企业服务:合规审计系统需分析几十页合同与附件,Extender 可降低运营成本,支持批量文档处理,提升审计效率。
与线性注意力、稀疏注意力等方案相比,Extender 保留了完整 attention 精度,无需更改用户习惯。
局限
- - **与同类减少 KV cache 方法对比不足**:论文主要将 Extender 与标准 MHA 对比,报告了 104 倍内存缩减,但没有直接与 GQA / MQA 等已广泛应用的 KV cache 优化技术进行精度-内存权衡的对照实验。GQA 通过共享 KV 头来缩减 cache,Extender 通过改变 KV 输入流来缩减,两者优劣未知,其相对提升可能有限。也缺少与长上下文优化技术(如 Ring Attention、StreamingLLM)结合的分析,难以判断其实际部署中的综合收益。
- - **实验范围较窄,泛化性待验证**:仅在 199M-924M 参数规模和 CORE、RULER 两个基准上评估,未覆盖更大模型或更复杂任务(如代码生成、数学推理、多轮对话)。由于 KV 输入完全来自扩展通道 ε_ℓ,可能丢失残差流中丰富的语义信息,在需要深度上下文理解的任务上精度可能下降。论文未进行 scaling law 分析,难以预测模型规模增大后的行为。
- - **超参数敏感性较高,缺乏自动化设计**:ε_ℓ 大小和 KV 窗口设计需要手动指定,论文没有提供自动搜索或理论指导,不同任务/模型规模可能需要重新调参,增加实际使用成本。此外,引入额外的 concatenation channel 改变了梯度传播路径,可能影响训练稳定性,尤其在大模型中收敛行为未充分分析。