论文链接:Language Models Can Control Their Own Attention 发表时间:2026年9月 机构:KAIST AI(Namgyu Ho、Huzama Ahmad、Woosung Koh、Se-Young Yun)+ Google DeepMind(Tal Schuster、Cicero Nogueira dos Santos)——高校与产业实验室合作,通讯作者来自 Google DeepMind 领域标签:cs.CL / 长上下文推理效率 / 稀疏注意力

一、论文背景

Transformer 的长上下文之痛。解码时,模型的每个注意力头都要对"当前 token 与全部历史 token"计算注意力——即使真正相关的只有几十个 token,Key-Value(KV)cache 也必须整个从显存读一遍。这在高吞吐部署中成为带宽灾难:以 Qwen-3.5-397B-A17B 为例,1M token 上下文意味着每个解码步要加载约 15GB 的 KV cache,量级相当于重新加载模型全部 17B 激活参数。模型 99% 的"阅读时间"花在了重读它根本不需要的内容上。

现有稀疏化方案的两个流派:

  • 静态启发式:按位置(滑动窗口)或历史注意力热度保留 token。问题:注意力是查询相关的——用户下一个问题会指向哪里,固定规则无法预知,长上下文任务性能明显受损。
  • 动态代理打分:每步用轻量打分器扫一遍 KV cache,挑出"重要"token。代表如 DeepSeek 等的检索式注意力。问题:每步仍是 O(N)——打分虽然便宜,但 N 百万 token 上打分依然要全量内存访问,只降常数不降复杂度。

一个朴素的追问:模型自己不知道哪些上下文相关吗?它写了那么多思维链,难道不能顺口说一句"我现在要看第 3 段"?如果模型能把注意力意图说出来,推理引擎就不需要任何打分器——直接按声明构造掩码即可。这就是本文的起点。

二、论文定位和关联工作

谱系一:静态稀疏注意力

  • StreamingLLM / H2O 等:位置或热度启发式。区别:不感知查询,长依赖任务退化。

谱系二:查询感知的动态稀疏

  • Quest / DeepSeek 检索式注意力:每步轻量打分。区别:仍需 O(N) 扫描;DA 把"定位"成本转为模型生成文本的一部分,引擎侧 O(1) 解析。

谱系三:结构化生成/工具化解码

  • 工具调用、格式化输出:让模型输出机器可解析的结构。DA 的创新在于把这个思想用到注意力控制上——声明像 tool call 一样被引擎消费,但它改变的是计算图而非外部世界。

谱系四:训练时注入位置先验

  • 与在预训练中植入位置偏置的方法不同,DA 零训练——现成模型直接可用,这也是它作为协议(protocol)而非模型(model)的定位。
维度静态启发式代理打分Declarative Attention
查询感知否是是(模型自声明)
每步额外内存访问O(保留集)O(N)O(声明集)
需要外部打分器否是否
需要训练/改动模型部分是否(即插即用)
精度风险高(硬丢弃)中低(模型自己保留全局模式逃生门)

定位结论:DA 开辟了稀疏注意力的第三条路——内生声明,与静态规则、外生打分正交,且与训练式方法可组合(论文明确把训练式 DA 留作未来工作)。

三、问题定义

具体问题:长上下文问答中,模型每步重读全部 KV cache,但它实际需要的只是上下文的一小块。

抽象问题:注意力的目标集合本质上是查询的函数,且模型在生成过程中自己就拥有关于这个函数的最好信息。问题转化为:如何让模型以引擎可解析的方式输出注意力意图,并让意图直接决定掩码?

形式化:把上下文预切成 K 个"magic chunk"(段)。生成分解为若干推理步,每步属于三种模式之一:

  • <global>:需要全上下文(掩码 = 全部段);
  • <focus>:需要某个具名 chunk(掩码 = 该段);
  • <local>:只需已生成的近期输出(掩码 = 空,仅保留 scaffold)。

推理引擎解析每个生成步的模式标签 → 按模式构造段级掩码 → 该步注意力只在掩码内计算与读取。约束:协议不限制模型何时、用哪种模式、用多少次——自由度完全在模型。

这个抽象的精妙之处:它把"预测注意力分布"这个连续、昂贵的问题,离散化为"从 3 个模式 + K 个段中选择"这个极小的决策空间——而这个空间恰好是 LLM 最擅长的语言任务(“我要看哪一段"一句话就能说清)。用语言接口消解了打分器的存在必要。

四、问题解法

4.1 三模式协议

系统提示告诉模型:上下文已切成编号的 magic chunk,你可以用三种标签控制自己的注意力:

  • <global>:自由浏览全文——用于初次定位、跨段整合;
  • <focus>:指名一个 chunk 深读——用于锁定证据所在段;
  • <local>:只在已生成内容上推理——用于总结、改写、格式化等不需要新证据的步骤。

scaffold(系统提示+问题+指令)在所有模式下永远保留。模型可以自由交替:典型轨迹是 <global> 定位 → <focus> 取证 → <local> 作答 → <focus> 换段 → ……这正是人类读长文档的方式。

4.2 引擎侧:从声明到掩码

自定义 vLLM 集成在每步生成时解析标签(字符串操作,O(1)),构造段级注意力掩码,跳过掩码外 KV 的读取。关键工程事实:掩码粒度是"段"而非 token,段是预切的,因此掩码构造不需要任何对 KV 内容的计算。

4.3 两个消融臂(实验设计的公平性保障)

  • Vanilla:原始长上下文 + 完整注意力;
  • DA-no-mask(DA^nm):完全相同的 DA 提示与分 chunk 格式,但不执行掩码;
  • DA:完整协议。

DA^nm 与 Vanilla 的差 = 提示格式效应;DA 与 DA^nm 的差 = 掩码执行效应。这把"格式变化影响生成质量"与"掩码丢弃信息"两个混杂因素干净分离。

4.4 评估口径

15 个长上下文源(RULER 大海捞针系、LongBench v1/v2、LooGLE、ZeroSCROLLS),从 9K 到百万 token 的代码仓库 QA,覆盖单段检索与多段推理两类;LLM judge 打分(与 Gemini-3.1-Pro 一致性 r=0.99);报告准确率与 attended tokens(每步实际读取的 KV 位置总数)双指标,外加 roofline 估时。

五、评估指标与实验证据

主结果表(15 源平均)

模型配置准确率Attended tokens (M/样本)token 降幅
Gemma-4-31BVanilla87.0113.43—
Gemma-4-31BDA^nm87.0122.31(更贵)
Gemma-4-31BDA85.746.45-52.0%
Qwen-3.6-27BVanilla85.3122.54—
Qwen-3.6-27BDA82.5615.52-31.1%

精度代价仅 1.27pp / 2.75pp,且随模型规模增大而收窄(6 模型规模分析);百万 token 代码仓库 QA(LBv2/code_repo)上 Gemma 的读取量从 64.86M 降到 23.08M。

关键证据链

  • DA^nm 的 token 反而更多(13.43→22.31):声明式输出本身会增加生成量——如果只看"提示会不会伤精度”(DA^nm vs Vanilla 精度持平),掩码带来的节省就不会被生成开销吃掉,但只有真正执行掩码(DA)才能拿到 52% 的净节省。
  • 单段检索任务近乎无损(niah 系 100%→99.2–100%):证据集中在单段时,<focus> 机制是天然匹配。
  • 多段推理损失略大(multi-span 类平均 -1.3~-3.6pp):需要跨段整合的任务中 <global> 步数增多,协议在"漏读"与"读全"之间的保守倾向显现。

实验为什么能证明论点:三臂设计把增益来源锁定在掩码执行;attended tokens 是从注意力计算里直接记录的物理量而非估算;两种模型家族(Gemma/Qwen)一致性排除了单模型过拟合;精度-规模趋势支持"这是能力问题而非协议缺陷"的判断。

六、效果优势的根源解释

代理打分路线的根本约束:它把"找重要 token"建模为推理时的检索问题——无论打分器多轻,都要对 N 个 token 的 key 做一遍比较,内存访问是 O(N) 下界。这是范式内的优化极限:常数可以变小,复杂度不会消失。

DA 的第一性原理转变:注意力目标集合的信息已经存在于模型的生成分布中——模型在写下答案之前,“知道"自己要引用哪段(事实上思维链里经常自然出现"根据第 3 段……")。代理打分路线的问题等价于"用外部系统猜模型在想什么”,DA 把这个环节变成"让模型直接说"。信息传递方式从"旁路推断"变为"内生声明",引擎侧成本从 O(N) 比较 → O(1) 字符串解析。

为什么模型有能力声明准:两个机制支撑——(a) 注意力集中于少数 token 是已被反复实证的模型内禀性质(Child et al. 等),DA 只是给这个既成事实一个表达出口;(b) chunk 化把"选择"从 token 级(百万选几十)降为段级(几百选一),与模型的语义理解能力对齐——模型读段首即可判断相关性,这恰是语言理解而非数值打分。

为什么精度损失小且随规模收窄:协议保留了 <global> 逃生门——模型不确定时可以全文阅读,所以 DA 的下界是"退化为 Vanilla",而非硬丢弃带来的悬崖;更强模型遵循协议与自我定位的能力更好,错误声明更少,损失相应收窄。DA^nm 与 Vanilla 精度完全一致(87.01 vs 87.01)则证明协议本身不引入行为退化——所有精度损失都可归因于掩码漏读,且漏读是模型声明质量的问题而非机制缺陷。

七、必要知识反推

领域知识层:

  • Transformer 注意力的计算与显存经济学:解码瓶颈在 KV 读取带宽而非 FLOPs——不懂 roofline 分析就无法论证"跳过读取"比"少算乘法"更值钱。
  • 注意力稀疏性的实证文献(注意力熵集中、检索头、induction head 等)——“模型其实只用一小块上下文"的信念必须来自这些证据。

方法论知识层:

  • 查询感知稀疏注意力的技术谱系与各自的 O(N) 下界——知道现有路线卡在哪,才能识别"让模型自己说"是范式逃逸而非又一版打分器。
  • 提示工程与格式化输出的能力边界:现代指令模型能否稳定遵循自定义标签协议?这决定了协议的可行性。
  • 严格的三臂消融设计(分离格式效应与掩码效应)——对照实验的因果纪律。

工程知识层:

  • vLLM 推理引擎的注意力内核定制:段级掩码注入 paged attention、B200 部署、8K 生成长度管理。
  • chunk 切分策略与 prompt 模板设计(magic chunk 的粒度影响声明粒度与掩码收益的平衡)。
  • LLM-as-judge 评测基建:rubric 生成、judge 与强模型的一致性校准(r=0.99)。

知识融合的关键节点:核心融合点是把工具调用的"结构化输出→引擎执行"模式平移到注意力控制——这需要同时理解推理引擎的内核层(掩码如何变成省带宽)与模型的接口层(如何让模型可靠地说),两个社区(系统与对齐)的词汇表都熟练才能设计出这个协议。第二个融合点是 DA^nm 消融臂的设计:意识到"提示格式本身会改变生成量与生成质量"这个混杂因素,来自对 LLM 行为敏感性的经验,纯系统视角会漏掉它。

八、论文中可以提取的通用性灵感

  1. 让系统内部专家直接声明意图,好过旁路推断

    • 核心思想:当一个子系统(模型)已拥有决策所需的最优信息时,给它一个结构化表达接口,胜过在外部建猜测系统(打分器)。
    • 论文证据:DA 以 O(1) 解析替代 O(N) 打分,token 降 31%–52%。
    • 推广场景:数据库查询优化器让应用声明访问意图;操作系统让进程声明内存使用模式;RAG 系统让用户 agent 声明检索意图再路由。
  2. 把连续决策离散化为"选择+逃生门”

    • 核心思想:把难以直接优化的连续量(注意力分布)转化为小选择空间(3 模式 × K 段),并保留保守选项(global)作为安全下界。
    • 论文证据:DA 下界是退化为 Vanilla,精度损失小且随规模收窄。
    • 推广场景:智能体工具路由(枚举意图类别+兜底全文模式);文档审阅分级(精读/略读/存疑全读)。
  3. 外部化的能力未必需要训练

    • 核心思想:协议(prompt 接口+引擎配合)能兑现模型既有的潜在能力,不必修改权重——先做协议版验证上限,再考虑训练版。
    • 论文证据:零训练在现成 Gemma/Qwen 上拿到主要收益;训练式 DA 留作未来工作。
    • 推广场景:结构化输出的函数调用能力、让模型自评置信度、让 agent 自声明预算上限。
  4. 消融要分离"接口效应"与"机制效应"

    • 核心思想:任何带格式/协议变化的方法,都必须设一个"同格式但不执行"的对照臂,否则增益归因不清。
    • 论文证据:DA^nm 揭示声明本身会让生成量增加 66%,只有掩码执行才带来净节省——没有这个臂,52% 的结论会被生成开销悄悄打折。
    • 推广场景:评测任何 CoT/工具/格式类改进时设计"假执行"对照;A/B 实验中分离 UI 改版与逻辑改版。
  5. 注意力经济的降本位在"少读"不在"少算"

    • 核心思想:长上下文系统的瓶颈是内存搬运带宽;优化应瞄准"减少数据移动"(掩码、分页、缓存)而非"减少浮点计算"。
    • 论文证据:15GB KV/步 vs 17B 激活参数的量级对比;attended tokens 直降 52%。
    • 推广场景:检索系统的读放大治理;特征仓库的按需加载;分布式训练的通信压缩优先于通信次数优化。