HandoffLease:用智能体调用图为异构小集群预约模型交接
智能体运行时已经知道下一步可能调用哪个模型;HandoffLease 把这个先验变成有截止时间、版本和取消语义的租约,让状态层只提前准备真正会阻塞执行的模型。
1. 背景与动机
小团队常用 10–20 张异构 GPU 同时服务 planner、coder、reviewer、视觉模型和 MoE 模型。一次 agent 任务会在这些模型间切换,并携带参数、KV cache 或会话状态。问题不只是“某个模型冷不冷”,而是下一次交接发生时,目标状态能否在 SLO 内恢复。
现有多模型服务主要按历史热度管理长尾目录。Aegaeon-SOSP25 和 Weaver-ATC25 证明热度驱动的共享与换入在模型市场中有效,但它们面对的是请求频率相对稳定的目录。Agent 工作流会按阶段反转热度:planner 完成后 coder 立刻变热,测试失败后 reviewer 或 coder 又可能重新进入关键路径。此时历史热度反应太慢,盲目预取全部候选又会占满 PCIe、主存和 GPU。
另一侧,Pie-SOSP25 与 FlashAgents-MLSys26 已让运行时看到调用图、工具事件和模型依赖,LMCache-arXiv25 也提供了状态移动接口;在本 probe 覆盖的公开全文工作中,尚未看到两层之间带期限、版本和取消语义的约定。这个缺口重要,因为模型越大,恢复代价越高;即使更强模型减少了部分交接,剩余交接也更可能支配 P99。
异构小集群进一步放大了问题。同一个模型在 A100、L40 和消费级 GPU 上的加载与 prefill 时间不同,NUMA 位置和并发 PCIe 流量也会改变恢复窗口。运行时仅说“下一个可能是 coder”还不够;状态层需要知道最早何时会使用、最晚何时必须就绪、准备哪个版本,以及分支取消后谁负责释放资源。没有这些语义,预取策略只能在“太晚”和“浪费”之间猜测。
因此,本提案关注的不是模型路由质量,也不是把所有状态统一调度,而是一个更窄的控制边界:agent runtime 负责暴露未来交接,state runtime 负责根据真实恢复成本决定是否行动。这个边界一旦成立,模型选择和状态准备可以独立演进。
2. 问题与核心假设
目标是在不改变 agent 语义的前提下,减少“请求已经到达、状态仍未就绪”的准备迟到,同时限制取消分支造成的无效搬运,并保证其他请求不因后台恢复越过 SLO。
- 核心假设:在阶段漂移明显、但调用图能提前给出候选目标和截止时间时,期限感知租约会比 LRU、频率预取和全量预取更少迟到。
- 反证条件:调用图没有可行动提前窗口;历史热度达到同等迟到率;或租约收益完全来自更激进的搬运并破坏非租约请求 P99。
- 成功标准:跨至少两个推理引擎和参数、KV cache 两类状态降低准备迟到,取消、版本变化和恢复失败均能安全回退。
3. 核心方案
HandoffLease 是运行时发给状态层的可撤销提示,包含目标模型、状态版本、最早开始时间、必须就绪时间、置信度和取消令牌。
状态层先测量目标状态在当前 GPU、NUMA 和 PCIe 条件下的恢复时间,再决定接受、拒绝或只准备一部分。接受租约不等于承诺执行;分支取消、状态版本变化或资源余量消失时必须停止搬运。截止时间到达仍未完成就回退同步装载或重新 prefill,半搬运状态绝不能暴露给请求。
租约进入统一的准入队列。每个候选动作先给出完成时间分布、预计字节和对非租约请求的影响;只有 P95 完成时间早于截止时间、后台带宽仍有 SLO 余量时才执行。多个租约竞争时按“迟到损失减去取消风险”排序,而不是按模型大小或历史频率排序。取消令牌和状态版本贯穿队列、传输与页表提交,确保旧分支不能把过期状态发布为可用。
第一版只支持基础参数和 KV cache。MoE expert page 只有在这两类状态都能跨 vLLM 与 SGLang 通过同一黑盒契约后才加入,避免把三种资源一次性塞进“大一统预算器”。
4. 为什么能做成
工作负载可由 SWE-bench Verified 的真实仓库任务构造:固定 planner→coder→reviewer 三角色,显式记录模型切换、提示提前量和取消分支;再保持每个模型边际频率不变,只打乱阶段顺序,隔离“调用图信息”而非“更高热度”的收益。实验覆盖 Llama、Qwen 和 Mixtral 三个模型族,并加入单个强模型合并角色的反向压力。
工程上无需重写推理内核。vLLM、SGLang 和 LMCache 已提供参数或 KV cache 的加载、页表与连接器路径;本项目主要实现租约接口、恢复时间报价、版本检查和资源隔离。无效搬运上限直接由非租约请求的 P99 SLO 余量、链路安全带宽和主存余量推导,没有余量就拒绝租约。
实现可以分三步收敛:先离线回放调用图,判断是否真的存在可行动窗口;再用模拟器验证准入与取消策略;最后接入两个推理引擎。前两步不需要多机集群,四周内就能给出继续或终止结论,避免在核心假设未成立前投入专家分页或复杂调度器。
最大风险是三角色脚手架并非生产轨迹。若公开任务没有自然产生足够交接,项目只能作为期限感知恢复测量,不能声称代表生产 agent serving。
硬件要求也可控:测量阶段只需一台具备两类 GPU 和足够主存的服务器,异构恢复曲线可以逐卡采集后在回放中组合;端到端阶段再扩展到 4–8 张 GPU。这样可以先验证信息价值,再验证集群调度,避免把硬件规模当作核心假设成立的前提。
若单机回放已无收益,就不进入集群实现。这也是最早的停止门槛。
5. 验证计划
| 要验证什么 | 工作负载 / 基线 | 指标与继续 / 终止条件 |
|---|---|---|
| 阶段漂移是否让历史热度失效 | SWE-bench Verified;无预取、LRU、频率预取、全量预取 | 预登记不同漂移强度;历史策略若等价则删除反直觉主张 |
| 租约是否减少阻塞 | 4K/16K/64K 上下文,并发 1/2/4/8,提前量 0–10s | P99 准备迟到达到由任务 SLO 推导的最小有意义效果(MES) |
| 代价是否可控 | 取消、版本变化、链路争用、引擎重启 | 无效搬运不超资源预算;非租约 P99 与基线等效 |
| 抽象是否可移植 | vLLM/SGLang × 参数/KV cache | 四个组合通过同一失败与回退测试 |
6. 风险与转向
若主假设和跨引擎抽象都成立,形成 OSDI/SOSP 级运行时—状态接口;若只在部分工作负载成立,缩小为 MLSys 的期限感知恢复机制;若强模型消除交接、提示太晚或历史策略等价,则只发布轨迹与恢复交叉点,不实现完整系统。若后续检出等价的工业契约,新颖性降级为公开测量与跨引擎语义验证。
正确性优先于提前量:任何版本不一致、取消竞态、引擎重启或资源隔离失败都会使租约失效。系统宁可退回原始同步路径,也不能为了漂亮的平均延迟复用错误 KV cache 或让后台搬运拖垮其他租户。
品味评估
独立评审为 5/5:工作负载来自真实仓库任务,阶段反转预测可证伪,租约改变运行时与状态层的接口而非只调预取参数,三模型族与强模型对照覆盖模型演进,期限、版本、取消和安全回退构成新抽象。最大残余风险是缺少公开生产交接轨迹。