Skip to content

Add tool-call-aware KV retention and bounded continuation admission - #1639

Draft
sufubao wants to merge 84 commits into
ModelTC:mainfrom
sufubao:tool-call-cache
Draft

sufubao wants to merge 84 commits into
ModelTC:mainfrom
sufubao:tool-call-cache

Conversation

@sufubao

@sufubao sufubao commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

工具调用结束后的稳定输入历史现在可获得有界 KV 保留;正常模式准入计入空闲受保护 KV,匹配续接可借用原有完整容量。功能默认关闭。

仍为草稿,独立集、GPU 交换和 TP2 混合注意力验证尚未完成。 服务快照固定为 e6d00d6cf8df7ea013a6ea6706c53d4140eb22ec;当前回放快照为 b491a8807239a3cfdc091613b79d23cd403b44cd。后续附件提交未改变这些运行快照。

实现

  • 保护可复用的稳定输入历史,避开模板重写的生成头及生成的工具 JSON;真实 KV 复用仍逐 token 匹配。
  • 实际引用消费等待租约;共享祖先只计一次。预算按页裁剪,混合注意力仅保留有效恢复检查点;到期、完成和压力回收均可撤销偏好,不增加 KV 引用或集合通信。
  • 空闲受保护 KV 计入正常准入;首个可行请求、显式紧急请求及匹配续接可借用预留,始终不突破原有完整容量。
  • 最多 64 条、至少 256 token 的前缀指纹作调度提示。可行 FIFO 队首先运行;受阻队首最多被成功补位八次,失败探测回滚批次估算,其余请求保持 FIFO。显式紧急请求不被越过。PD 和多机 TP 不使用本地提示重排。

当前证据与代价

完整数值、全部探索结果、原因计数与排除记录 分别标明服务源码、工具版本和对照配置,不跨版本混算。

当前快照在 Qwen3-4B BF16、TP1、H200、KV 32,768 token 下完成六组预先指定的验证,均为 seed42 单对数据,尚非独立或生产收益。相对同源码关闭,速度比值大于一表示候选更快:

场景 整轮比值 未缓存输入减少 普通一次性请求 p95 TTFT 比值
agent50-fast 1.191x 24.68% 0.822x
source-shaped output 1.148x 29.89% 0.770x
pressure-c24 1.229x 49.28% 不适用
abandoned-agent25 0.979x -0.04% 0.967x
expired-agent25 0.998x -0.02% 0.907x
real-wait trace 1.049x 28.20% 不适用

agent50-fast 的 agent 平均请求/会话比值为 1.881x / 1.745x,普通请求平均为 1.087x,但普通 p95 TTFT 仍退化。相对旧无条件续接优先级 5bae2ef5... 的三个直接验证,整轮分别为 agent50-fast 0.915x、pressure 1.014x、source-shaped 1.015x;agent50-fast 普通 p95 TTFT 为 0.940x。FIFO 是明确的有界顺序约束,当前数据不能证明它普遍改善尾延迟或胜过旧调度。 单种子、尚未交换 GPU 的直接比较也不能作为稳定排序结论。

公开 TraceLab 元数据提供另一类证据:在观察到后续输入就绪时间的样本中,工具轮次中位间隔 0.224 秒、无工具轮次 130.593 秒;三秒内比例为 76.84% / 4.62%。这是有删失的条件分布,全部原始结束原因缺失;工具记录不是原始 finish_reason,输入就绪也不是精确 HTTP 到达。这支持保留信号的方向,不能推出性能收益。

检查、回放与剩余工作

服务相关回归 563 项通过;回放/报告相关 23 项通过,pre-commit CI 通过。真实 tokenizer 的稳定边界和提示词哈希已核对;新输出预算又分别检查两模型各 513 种目标长度。四个比较服务均完成相同的 32 条长普通响应预检,再完成全部配对预热,最后才计时。

首次独立尝试因普通响应标点差异导致生成 token 数不同,整个未完成阶段已排除。首次 JSON-string 验证又发现估算预算截断长响应,同样完整保留并排除,独立请求为零。当前工具按实际 tokenizer 和字面量/EOS 留足预算,继续严格检查提示词、输出签名及生成 token 数;不把差异归一化成成功。缓存源码与 3 秒 / 0.5 预算策略均维持首次独立推理前的冻结选择。

完整独立计划正在重跑:TraceLab 九场景、三个种子及 GPU/顺序交换共 54 对;默认关闭对上游 12 对;随后 TP2 Qwen3.5-27B 混合注意力另行做检查及 24 对留出评估。所有中性、退化和失效租约场景均保留,禁止用独立性能调参。全部比较使用相同物理 KV 容量、批次上限、精度及已有固定镜像,记录实际服务/硬件/依赖配置;没有构建新镜像。

回放使用公开脱敏元数据和合成内容,长度、等待及输出有明确缩放和上限;实际生成的工具结果会进入下一轮。原始请求、响应与日志保持私有,公开附件仅含白名单数值、固定配置与校验和。它不是线上原文或精确到达时间回放。

此前 dcd3551c... 的 238 对实验仅作历史参考,不能替代当前源码:历史普通注意力、历史混合注意力。

@sufubao
sufubao marked this pull request as ready for review October 17, 2026 20:48
@sufubao
sufubao marked this pull request as draft October 18, 2026 00:20
@sufubao sufubao changed the title Add bounded tool-call-aware KV cache retention Add tool-call-aware KV retention and bounded continuation admission Oct 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant