背景
TLLM-P0-004 的实现计划里,PR-1 要把 decode 的 tile loop 抽成共享模板,让连续 KV 与分页 KV
共用同一份 online softmax。设计包 §10 为它预设了门禁:
必须附 attention_decode 的前后 kernel_bench 对比证明无性能回归 ;出现可测回归则
退回复制实现。
执行时该门禁被触发:抽取实测给生产 kernel attention_decode 带来 +1.4~2.3% 的可复现
回归 。当时按门禁回退为复制实现,PR-1 未提交,PR-2(#7 )改为自持一份寻址实现。
完整证据与测量方法的三次修正见设计包 §10.1。
现在的决定:翻转这个取舍
接受该回归,改回共享 loop。 理由:
复制方案唯一的风险是"两份实现漂移",而它已经被自动门禁覆盖 。feat(cuda): direct paged decode attention kernel (TLLM-P0-004 PR-2) #7 的
test_paged_direct.cpp 要求 direct 与 legacy 在同一 pool / 块表 / 输入下输出
逐位相同 (12 组几何 × 3 seed)。任何一份 online softmax 被改动而另一份没跟上,
这个测试会立刻失败。也就是说:复制方案声称的"更独立"优势,其代价(双份维护)
并不能换来额外的安全保障——安全来自门禁,不来自副本数量 。
量级不划算 :+1.42.3% 落在 attention_decode 单个 kernel 上。该 kernel 在 decode
步中只占一小部分(W8A16 GEMM 才是大头),换算到端到端约 0.10.3%。为这个量级维护
两份 60 行级的 online softmax(含 __expf、online rescale、final normalize 的
逐字对应关系)不划算。
反向收益 :共享 loop 让 direct 与 legacy 的差分退化回纯寻址测试 ——这是设计包
§4.4/§8 原本的意图,能更精确地定位"寻址错了"还是"归约错了"。
本次决定接受的代价(明确记录,不隐藏)
attention_decode(生产 decode 默认路径)在生产架构 sm_120 上会有 +1.4~2.3% 、
最坏 +4.9% (D=128/S=512)的 kernel 时间变化。该数字来自 §10.1 的同进程交替 A/B。
这是已知且已测量 的代价,不是"重测一遍希望它消失"。§10.1 已记录:两种规避写法
(策略按值/按引用、无效行返回零行以消分支)均测到同样回归,扰动来自抽取本身。
不接受的代价
不因此放松任何正确性门禁:共享 loop 之后,direct vs legacy 仍要求逐位相同 ;
独立 oracle 对照(TLLM-P0-002)保留;sanitizer 仍为 0 error 门禁。
不把这次翻转用于任何性能声明。kernel 级收益仍只能由后续 benchmark PR 给出。
相关
背景
TLLM-P0-004 的实现计划里,PR-1 要把 decode 的 tile loop 抽成共享模板,让连续 KV 与分页 KV
共用同一份 online softmax。设计包 §10 为它预设了门禁:
执行时该门禁被触发:抽取实测给生产 kernel
attention_decode带来 +1.4~2.3% 的可复现回归。当时按门禁回退为复制实现,PR-1 未提交,PR-2(#7)改为自持一份寻址实现。
完整证据与测量方法的三次修正见设计包 §10.1。
现在的决定:翻转这个取舍
接受该回归,改回共享 loop。 理由:
test_paged_direct.cpp要求 direct 与 legacy 在同一 pool / 块表 / 输入下输出逐位相同(12 组几何 × 3 seed)。任何一份 online softmax 被改动而另一份没跟上,
这个测试会立刻失败。也就是说:复制方案声称的"更独立"优势,其代价(双份维护)
并不能换来额外的安全保障——安全来自门禁,不来自副本数量。
2.3% 落在0.3%。为这个量级维护attention_decode单个 kernel 上。该 kernel 在 decode步中只占一小部分(W8A16 GEMM 才是大头),换算到端到端约 0.1
两份 60 行级的 online softmax(含
__expf、online rescale、final normalize 的逐字对应关系)不划算。
§4.4/§8 原本的意图,能更精确地定位"寻址错了"还是"归约错了"。
本次决定接受的代价(明确记录,不隐藏)
attention_decode(生产 decode 默认路径)在生产架构 sm_120 上会有 +1.4~2.3%、最坏 +4.9%(D=128/S=512)的 kernel 时间变化。该数字来自 §10.1 的同进程交替 A/B。
(策略按值/按引用、无效行返回零行以消分支)均测到同样回归,扰动来自抽取本身。
不接受的代价
独立 oracle 对照(TLLM-P0-002)保留;sanitizer 仍为 0 error 门禁。
相关
docs/architecture/direct-paged-decode-attention-design.md