在一场百万 token 的对话里,用户只问了一句「第三章那家公司哪年成立」——全局注意力层却要为回复的每一个 token 把整份 KV cache 从头读到尾。长上下文推理的瓶颈不在参数量,而在这种每步一次的全量访存。KAIST AI 与 Google DeepMind 9 月 2 日提交的论文(arXiv:2609.02737)提出 Declarative Attention(DA),思路反直觉:与其用外部评分器预测哪些 token 重要,不如让模型在思维链里直接声明「我现在只需要看哪一段」。
协议:三种注意力模式,像工具调用一样解析
DA 把生成分成三个模式:<global> 读全上下文用来导航,<focus> 只读点名的片段,<local> 完全不看上下文、只基于已生成的回复做自包含推理。长输入切成约 2048 token 的「magic chunks」,推理引擎的状态机像解析工具调用一样解析声明,直接改写 vLLM 的 KV cache block 表,让注意力内核少读。实现不动 kernel 和调度器,只在 attention metadata builder 挂钩子;掩码按 block(16-32 token)对齐,只作用于全局注意力层——滑动窗口与线性注意力层不随上下文增长,无需省。
方向还可逆:DA 只掩码、不驱逐,cache 全量驻留,<focus> 之后随时切回 <global> 重新全量读——这是它保住精度的结构原因。
数字:零训练砍 52% 读取,精度掉 1 个点
在 15 项长上下文任务(RULER、LongBench v1/v2、LooGLE、ZeroScrolls)上对六个现成模型(Gemma-4-31B/12B/E4B、Qwen-3.6-27B、Qwen-3.5-9B/4B)零样本评测:Gemma-4-31B 解码期间总 attended token 减少 52.0%,平均精度只掉 1.27 个百分点(87.01% 降到 85.74%);Qwen-3.6-27B 减少 31.1%,精度掉 2.75 个百分点。差距随规模从 4B 到 31B 收窄,单次回复最多省下 2100 万个 attended token。消融显示动态掩码贡献大头:相对无掩码版最多再砍 71.1%。
作者用 roofline 模型(B200、bf16、70% 带宽利用率)推算:优化服务栈上解码墙钟时间降到 0.71 倍(Gemma)与 0.77 倍(Qwen)。代价是解码步数变多(+35%/+31%),但全局读取已占 vanilla 解码时间 73%(Gemma)与 86%(Qwen),少读比少步划算。
与现有路线的差别
主流稀疏注意力靠索引器或代理评分预选 token,每步仍付 O(N) 扫描;解析一个 <focus> 标签是 O(1)。驱逐式压缩直接扔 KV 条目,DA 保留全量 cache、掩码每步可逆。作者称之为稀疏注意力的「新轴」——控制权从系统侧挪进模型自己的输出流。
冷水也得泼
论文自认两条硬限制:其一,所有测试模型在 thinking 模式下都无法遵循 DA 协议,实验全部禁用思考模式——与当前推理模型主流路线正面摩擦;其二,零样本结果只是下界,协议尚未经后训练进权重。roofline 的 0.71 倍是建模推算而非实测,1M 语境下「全局读取占解码 98.53%」这类占比也随上下文长度快速变化。
所以呢:DA 最值钱的不是那 52%,而是验证了模型「知道自己在看什么」可以外化成可解析的文本协议。后训练若把这套声明训进权重,而 vLLM 只改 block 表就能接入,长上下文推理成本账本可能真要重算。
参考:arxiv.org/abs/2609.02737