ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Token 调度器要算哪笔账:预留、结算与超时归还

Token 调度器要算哪笔账:预留、结算与超时归还

把高优先级任务先放进队列,并不会让它凭空拥有 Token 配额。调度器需要先承认一个朴素事实:已承诺给在途请求的预算,也属于暂时不可用的资源。

LangChain 10 月 1 日关于模型路由的文章把任务理解、评估与成本记录放在 harness 里讨论。本文只借鉴“调度决策要有任务与结果账本”的做法,不复用其成本降幅,也不实施模型切换。文章

预留、结算、取消是三种事件

请求开始前按上界预留;完成后按可信 usage 结算;取消时需要知道远端是否已经执行。若网络断了而结果未知,不能立刻假定零消耗并把全部配额发给下一批请求。供应商的 RPM、TPM、并发和缓存计费也不是同一个桶。

幂等键同样重要。一个超时回调和一个正常完成回调先后到达,若都归还同一笔预留,账本就会创造出不存在的预算。先把状态机写对,再讨论竞价公式会更稳。

一个不会双重退款的小账本

例子只管理一个固定容量桶,没有模拟供应商的滚动时间窗口。它能验证预算守恒与重复结算,不声称可以根治所有 429。

图中的容量 10、预留 6、实际 4 都是教学单位。图里的取消归还只能对应确认没有消耗的预留;未知远端结果必须进入单独的待核状态,不能沿用这个简化退款分支。

class Budget: def __init__(self, capacity): self.capacity = capacity self.available = capacity self.jobs = {} def reserve(self, request_id, amount): if request_id in self.jobs or amount <= 0 or amount > self.available: raise ValueError("duplicate or insufficient reservation") self.available -= amount self.jobs[request_id] = {"reserved": amount, "settled": None} def settle(self, request_id, actual): job = self.jobs[request_id] if job["settled"] is not None: if job["settled"] != actual: raise ValueError("conflicting settlement") return if not 0 <= actual <= job["reserved"]: raise ValueError("usage exceeds reserved upper bound") self.available += job["reserved"] - actual job["settled"] = actual budget = Budget(10) budget.reserve("r1", 6) assert budget.available == 4 budget.settle("r1", 4) assert budget.available == 6 budget.settle("r1", 4) assert budget.available == 6 try: budget.settle("r1", 0) except ValueError: pass else: raise AssertionError("second callback refunded twice") print("reserve 6, charge 4, balance 6; duplicate settlement changed nothing")

例子跑通以后,还要验证什么

这段代码已在本地 macOS、CPython 3.9.6 下运行,实际输出为reserve 6, charge 4, balance 6; duplicate settlement changed nothing。它验证的是例子中的数据约束与分支,不包含线上服务的吞吐或延迟测量。

未调用模型 API,也未测试供应商配额、429、流式 usage 或计费。本地只验证有限状态账本;真实实现要持久化、处理并发原子性、过期预算、usage 不完整和估计超上界,并把优先级公平性与预算正确性分别评估。

延伸阅读

  • How to Build a Model Router in the Harness:2026 年 10 月 1 日的一手工程案例;其试验数据不移植为本文成绩。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进