2026-09-05
KAIST 提出 Declarative Attention,让现成模型在思维链里声明注意区域。Gemma-4-31B 零样本解码少读 52.0% 注意力 token,准确率从 87.01% 掉到 85.74%;掩码本身贡献了几乎全部节省。
长上下文解码时,每一步都要把整份 KV cache 从显存里读出来。注意力实际只打在一小撮 token 上,但分数要算完才知道打在哪,所以无法提前跳过。静态启发式(只留最近的、只留历史分数高的)跟不上未来 query;用轻量扫描给 KV 打分的方法把常数降下来了,每步仍是 O(N)。
Declarative Attention(DA)换了问法:模型自己会不会已经知道该看哪一段?让它在思维链里把注意范围写出来,推理引擎当工具调用来解析,没被点名的 KV 块直接不读。
DA 是协议,不是新权重。上下文先切成约 2048 token 的可寻址片段,边界按段落、换行、句号往下找,保证不切到单词中间。每个片段包装成一次模拟的 getmagicchunk 工具返回,名字叫 Magic Chunk N,边界落在模型训练时见过的 tool 消息分隔符上。真正的工具一次都没执行,生成开始前整份上下文已经就位。
生成被切成三种模式,模型用标签在思维链里切换,引擎看到开标签的 > 就改掩码:
系统指令、问题和 DA 用法说明在任何模式下都可见,充当注意力汇(attention sink)。掩码按 vLLM 的 KV 块对齐,向外侧取整,被声明的 token 不会被丢掉;FlashAttention 等现成核不用改。DA 只动全局注意力层。Gemma 的滑动窗口层、Qwen 的 Gated DeltaNet 每步成本本来就不跟上下文长度走,掩码帮不上忙,原样保留。
对照有两路:Vanilla 是普通全文因果注意力;DA-no-mask 用同一套分块 prompt,但注意力仍是满的,用来把「提示格式」和「掩码」拆开。思考模式被关掉,因为预实验里模型在 thinking 标签里跟不住这套协议。
15 个长上下文任务,来自 RULER、LongBench v1/v2、LooGLE、ZeroSCROLLS,上下文从约 6K 到代码仓库的百万 token。每源最多抽 128 条,超长样本截在 244K。
| 模型 | 准确率 Vanilla → DA | 每条平均注意力 token | 相对少读 |
| Gemma-4-31B | 87.01% → 85.74%(-1.27pp) | 13.43M → 6.45M | 52.0% |
| Qwen-3.6-27B | 85.31% → 82.56%(-2.75pp) | 22.54M → 15.52M | 31.1% |
Gemma 上 15 题里 7 题持平或更好,Qwen 上 5 题。多跨度推理掉得比单跨度检索多(Gemma 2.28pp vs 0.78pp)。绝对省得最多的是最长任务:coderepo 上 Gemma 少读 41.8M token,Qwen 少读 52.0M。
DA-no-mask 的准确率和 Vanilla 几乎一样(Gemma 同为 87.01%,Qwen 差 0.69pp),但注意力 token 反而比 Vanilla 高 66.2% / 28.8%,因为这套协议会多写约 15–35% 的解码步。加上掩码之后,相对 DA-no-mask 再砍掉 71.1%(Gemma)和 46.5%(Qwen)的注意力 token。格式几乎不花钱,节省和大部分精度损失都来自掩码。
按模型尺度:相对准确率随参数上升,Gemma-4-E4B 只保住 Vanilla 的 29%(focus 解析成功率 58%),到 31B 是 99%;Qwen 从 4B 的 64% 到 27B 的 97%。最大模型的 focus 成功率是 99%。按上下文长度:Gemma 在 32K 以内相对准确率大约掉 1 个点,最长桶掉到约 96%;绝对少读从短上下文的约 1M 拉到最长桶的约 21M。
屋顶线估算(单卡 B200、bf16、MFU 40%、MBU 70%)把解码墙钟打到 Vanilla 的 0.71×(Gemma)和 0.77×(Qwen)。省下来的全是全局注意力的 KV 读;矩阵乘和局部层反而因为步数变多略升。这是理论天花板,不是实测延迟,也不含 prefill。
Gemma-4-31B 上约 73% 的生成 token 走 focus/local,这两档每步只读 Vanilla 的约 12% 和 6%。global 占比随上下文变长升到最长桶约 45%,Qwen 升到约 55%,所以总节省被导航步托住。
这是一条跟「激活里猜稀疏掩码」正交的轴:选择过程写在文本里,人能读,引擎能执行,零样本就能在现成模型上跑。对长上下文服务,全局 KV 读已经占解码屋顶线的大头(这篇设定里 Gemma 73%、Qwen 86%)。对 agent 场景更贴:检索决定什么进上下文,DA 决定已经进来的东西每一步还看不看;工具返回会在上下文里一直待着,恰恰是 DA 最该省的那种冗余。
现在能跟的是协议本身加 vLLM 钩子,不改核。数字是提示下界。论文自己把后训练、把 DA 暴露成标准工具、以及给 global 步做段索引,都标成还没做的事。
作者列得很具体。零样本策略并不优:解码步比 Vanilla 多三分之一左右,模式切分也不总贴任务形状。基准把文档切成人工块,真实对话和工具轨迹里本来就有可寻址边界,这篇没在那种分布上测。思考模式跟不住协议,所有数字都是非 thinking。global 步仍付全价,占 DA 已读 token 的八成以上。屋顶线墙钟依赖 MFU/MBU 假设,没有端到端测出来的延迟。
Qwen 在长上下文上更爱停在 global,总节省和准确率都不如 Gemma 稳。Gemma-4-12B 约 6% 的 DA 回复写满 8K 还不结束,把注意力 token 总和顶过 Vanilla,排除这些样本后才回到略低于 Vanilla。评分用的是带标准答案的 LLM judge(Qwen-3.5-4B,与 Gemini-3.1-Pro 的 Pearson r=0.99),四道题的问句还是 Gemini-3-Flash 合成的。小模型基本跟不住这套协议,4B 级不要指望零样本能用。