清华 TokenRouter 把五种 token 路由的解码吞吐做到现有系统的 2 至 64 倍

TokenRouter: Efficient Serving System for Token-Level LLM Routing

Tianyu Fu, Tengxuan Liu, Ruoxi Wang, Yixin Dong, Yi Ge, Yichen You, Yu Wang

NeurIPS 2026

cs.CL

2026-10-09

清华的 TokenRouter 用异步子服务器和延迟组批来跑五种 token 级路由算法,在 15 组设置下解码吞吐达到现有系统的 2.01 至 64.15 倍。

这篇在解决什么

生产系统的模型路由大多停在会话或单条 query。ChatGPT 和 Cursor 按难度或话题把整轮回答交给一个后端,RouteLLM 用偏好数据做 query 级选择。模型一旦派定,这一轮就由它写完。

token 级路由按 token 重选模型,成本点因此更细。R2R 报告过一组对照:大约 5% 的 token 走 32B、其余走 1.5B,质量对齐 32B;query 级要接近该质量,大约 40% 的请求得整段进入 32B。互补模型还能在同一条回答里交接,生成质量超过单独任何一个模型。

SGLang 与 vLLM 按单模型、逐步同步来设计。token 级路由每步可能换模型,于是出现步调互相等待、目标模型忙时的准入空洞,以及没有按步接口、只能硬改 continuous batching(边跑边组批)与 prefix caching(前缀复用)。

方法

编程看单条请求,执行按模型。每个候选模型一个 subserver,请求异步进入。

三个函数对应固定链路。route 在每步前向之后,依据 logits、隐藏状态或采样 token 指定目的地,0 留下,非 0 给对端。send 打包 PeerReq:请求号、未见后缀、是否结束,再附位置锚 req.loc,供接收方决定回传多短的一段。后缀里带不带刚采样的 token,由算法决定,对端有时负责重写。receive 默认全部接受。

五种算法只改判定条件。CITER、R2R、Co-LLM 都是双模型,不确定 token 上切到另一侧,另一侧写一个 token 就交还,信号分别是低置信、预测分歧和高移交分。R-Stitch 用熵做对称切换。ME 则在两个及以上模型中,按集成权重逐 token 选择。

每个 subserver 自有 scheduler 和 KV cache(键值缓存),通过 peer request 通信。外部只有一个入口,协议与 vLLM、SGLang 相同,基于 SGLang 实现。

为避免快模型空等,原有客户端循环和解码循环之外再加一条模型间循环,专门收发 peer request。送出的请求标为 pending(挂起),调度器跳过,缓存与前缀匹配保留;返回后追加 token,状态回到 running 或 finished。

延迟组批用来压准入等待。缓冲攒到 B 个同一模型的请求才发射。图 4 的示意里,大模型 B 为 2、小模型为 1,平均延迟 8.67,低于急切异步的 10.83、单模型轮流的 13.00 和逐步同步的 13.33,时间单位是小模型一个 batch。B 用离散时间马尔可夫链搜索:输入并发、路由概率和单步延迟,选吞吐最大的阈值。间隔 token 数假设服从几何分布。B 过小则空洞仍在,B 过大则小模型断粮。

结果

硬件是 8 张 A100-80GB。双模型算法配对 Qwen3-0.6B 与 Qwen3-32B:小模型张量并行度 1,大模型为 2,二者用 CUDA MPS 共置在两张 GPU 上。ME 在 0.6B、8B、32B 三模型间选择,各占一卡。CITER 训练 router 后取 τ 为 0.98,R-Stitch 取 τ 为 0.03,Co-LLM 先微调 0.6B 再取 η 为 0.15,ME 的权重是 0.5、0.3、0.2。R2R 沿用官方 router 与阈值。

三档负载:AIME2024 低努力推理,输入约 100 token、输出上限 2048;高努力推理只留 Qwen3-32B 解答长于 8192 token 的题,输出上限 8192;SWE-Smith 的 agent 轨迹,输入约 8192、输出上限 1024。吞吐等于输出 token 数除以墙钟时间。

Official Code 指算法公开实现。CITER 与 R2R 没有 continuous batching,Co-LLM 是每模型一个 vLLM,R-Stitch 没有公开代码。Std. Serving 用 SGLang,每模型一个进程,每次吐一个 token 再由外部转发,返回内容会按新请求处理。

15 组算法乘负载里,对着两条基线中更强的一条,吞吐是 2.01 到 64.15 倍;端到端延迟相对 Std. Serving 降到原来的 1/2.03 至 1/63.64。输出上限从 2048 提到 8192,TokenRouter 的吞吐基本保持,Std. Serving 丢掉 58.1% 到 85.2%。

并发 4、原始算法设定:

算法实现吞吐 (token/s)首 token 延迟 (s)端到端延迟 (s)
R2R大模型 / 官方 / TokenRouter145.30 / 89.62 / 244.560.13 / 0.11 / 0.11411.98 / 751.15 / 270.19
CITER大模型 / 官方 / TokenRouter123.72 / 17.16 / 149.310.083 / 0.036 / 0.0362.68 / 7.64 / 0.48
Co-LLM大模型 / 官方 / TokenRouter134.79 / 3.46 / 76.020.069 / 1.14 / 0.06713.39 / 247.61 / 11.46
R-Stitch大模型 / TokenRouter150.41 / 140.580.15 / 0.067360.76 / 151.30

对照官方实现,吞吐为 2.73 到 21.97 倍,延迟缩短到官方的 1/2.78 至 1/21.61。R2R 的 244.56 token/s 高于只跑大模型的 145.30;Co-LLM 的 76.02 低于只跑大模型的 134.79。CITER 原始任务的延迟是 0.48 秒,R2R 是 270 秒,两组倍数来自不同输出长度。

并发 8 上,官方 R2R 为 134.9 token/s。TokenRouter 起点 132.78,扩展 CUDA Graph 后 230.79,即官方的 1.71 倍;加上异步执行为 296.86,再加上延迟组批为 372.48,合计 2.76 倍。三段增量是 98.0、66.1 和 75.6 token/s。四组模型对上,相对 R2R 官方代码为 1.99 到 3.21 倍:0.6B 配 8B 是 105.1 对 336.98,0.6B 配 32B 是 77.08 对 197.40,1.7B 配 8B 是 103.37 对 285.41,4B 配 8B 是 106.67 对 211.81。

并发从 1 加到 16,TokenRouter 吞吐增至 8.61 倍,单用户速度留下 51.7%;官方 R2R 增至 5.14 倍,单用户速度留下 31.3%。并发 16 的 TokenRouter 对比并发 1 的官方 R2R,吞吐为 18.58 倍,人均速度为 1.13 倍。

AMC23 上对照 RouteLLM 的 query 级路由,正文未给出准确率数字,只说帕累托前沿被推向新位置。

为什么重要

算法侧已经表明,token 级路由可以用更少的大模型 token 换到接近大模型的质量,服务侧此前没有对应的运行时。三个函数把切换条件、传递后缀、恢复解码从调度器里分开,五种策略走同一套执行。

64 倍不是调度创新的全部幅度。并发 8 的 R2R 上,CUDA Graph 把 132.78 提升到 230.79,异步执行加延迟组批再到 372.48,后一段约为 1.6 倍。输出加长后,Std. Serving 丢吞吐,TokenRouter 保持,长推理和 agent 轨迹会把这份差距拉开。

局限与存疑

论文假设相邻两次 send 的 token 数服从几何分布,其他到达模式留到以后。

64.15 倍的上沿主要来自没有 continuous batching 的官方代码,Co-LLM 官方只有 3.46 token/s。15 组只给了相对更强基线的总区间,对 Std. Serving 的逐组倍数没有列表。

Figure 7 在 AMC23 上不报告准确率,也不报告大模型 token 占比。Co-LLM 吞吐 76.02、R-Stitch 吞吐 140.58,都没有高于只跑大模型的 134.79 和 150.41。省下的成本对不对得起精度,服务实验没有同时给出。并发主表停在 4,速度曲线停在 16。CUDA MPS 共置对尾延迟的影响,以及 B 失配时的吞吐损失,都没有测量。

术语

原文与代码

相关论文

全部论文解读