llama.cpp 分支实现 Declarative Attention,解码耗时降到 0.71×

Ok-Shower7286 · reddit · 2026-09-20

开发者把 Google DeepMind 与 KAIST 的 Declarative Attention(arXiv:2609.02737)实现成了 llama.cpp 的分支 focus-llama。

原理:模型在自己的输出中用 <focus magicchunks="N"> 标签声明它需要哪些上下文块,推理引擎据此直接丢弃后续 token 不能再注意的 KV 范围——无需打分器、无需训练,只靠提示词加一个会响应标签的引擎。论文报告(基于 vLLM)整体解码耗时可降至 Gemma 的 0.71×、Qwen 的 0.77×;该分支尚未做性能与准确率基准。

已实现:llama-server 可在 prefill 中途或之后按请求丢弃 KV token 区间(darm);标签驱动模式下服务端解析模型首个 focus 标签并丢弃其余块;dab 模式(需 --kv-unified)保留原序列;用小模型的首 token logprob 做了冒烟验证。

为何必须改 llama.cpp:官方 llama-server 无法在生成中途触碰 KV 区间;llama.cpp 没有论文 vLLM 版本所依赖的 paged block table,仅靠 mask 不会真正减少被读取的 KV;CUDA 上单 token 解码目前也不会跳过被 mask 的块,需要 kernel 支持或 compaction。混合架构模型只限制注意力层,循环状态不动。

仓库:edwardyoon/focus-llama

原文链接 →

「Infra」频道最新

更多「Infra」频道 AI 资讯 →