独立推进计算。
较慢的模型处理转入的 token 时,较快的模型仍应继续解码其他请求。
token 级大模型路由的高效推理服务引擎
研究动机
token 级路由让大小模型共同生成一次回答。每次模型切换,都需要推理服务系统高效衔接。
三种路由粒度
在一次回答中,按 token 或片段切换模型。
较慢的模型处理转入的 token 时,较快的模型仍应继续解码其他请求。
token 到达的时间不规则,调度器需要在合适的时机将请求组成批次。
路由策略只描述单个请求的行为,批处理、模型切换和缓存状态交给运行时管理。
系统架构
以请求为中心编程,以模型为中心执行。
入口子服务
协作子服务
接收请求,并以流式方式返回已生成的 token。
调度本地批次,执行模型计算。
发送、接收并恢复跨模型路由的请求。
等待协作模型时,请求保留服务状态和 KV 存储位置。收到返回的 token 后直接追加,无需重复匹配前缀或分配 KV 存储。
编程接口
描述请求何时切换模型、传递哪些信息,以及如何恢复解码。
route(batch, result)
每次前向计算后,为批次中的每个请求返回一个模型名。返回当前模型名表示继续本地解码;现有双模型调度器也支持布尔值决策。
R-Stitch 示例:True 表示交给唯一的协作模型,False 表示继续本地解码。
R-Stitch 代码摘自公开实现,省略配置和外围类定义。
| 策略 | 模型数 | 路由依据 |
|---|---|---|
| CITER | 2 | 置信度低时,交给协作模型生成一个 token。 |
| R2R | 2 | 通过训练得到的路由器预测模型何时会出现推理分歧。 |
| R-Stitch | 2 | 根据熵在两个模型之间双向切换。 |
| Co-LLM | 2 | 通过学习得到的转交信号,请求协作模型生成一个 token。 |
| ME | 2+ | 每生成一个 token,都按集成权重选择下一个模型。 |
公开代码还支持 GlimpRouter、请求级路由和随机基线,详见支持的调度器。
从源码安装,使用 Qwen3 0.6B / 32B 配置启动 R2R 服务。
git clone https://github.com/thu-nics/TokenRouter.git
cd TokenRouter
conda create -n tokenrouter python=3.10
conda activate tokenrouter
pip install -e .
python -m tokenrouter.launch_server \
--config_path config/r2r/Qwen3-0.6B_Qwen3-32B.yaml
服务启动后,可参考 OpenAI 客户端示例或 requests 示例。Python 引擎示例可直接运行,无需单独启动 HTTP 服务。
延迟批处理
立即启动计算,可能让稍后到达的请求等上整整一个解码步骤。适度等待,可以把转入的请求放进同一批次。
三个请求 · 每个请求五个 token
就绪
空闲
0 / 3 个请求
阈值扫描实验
增大批次可以提高效率,但等待过久也会使正在执行的工作减少。最优阈值取决于并发数和路由行为。
吞吐量 · 输出 token/秒
我们用离散时间马尔可夫链描述各子服务的排队请求、执行批次和剩余计算时间。给定并发数、路由概率和模型单步延迟,TokenRouter 在可行范围内搜索期望吞吐量最高的阈值。
条件 ∑i(Bi − 1) < N 可避免所有请求都滞留队列。分析模型假设路由概率平稳、各模型的单步延迟固定,因此不涵盖所有随时间变化的路由模式。
推理服务效率
在五种算法、三类工作负载上对比两种基线。TokenRouter 优化的是执行路由策略的服务系统。
并发数 4 · 输出 token/秒 · 越高越好
CITER、R2R、R-Stitch 和 Co-LLM 使用 Qwen3-0.6B / 32B。ME 额外加入 Qwen3-8B,三个模型的权重为 0.5 / 0.3 / 0.2。
实验在配备 8 张 A100-80GB 的服务器上进行。双模型实验通过 CUDA MPS 共用两张 GPU:小模型使用 TP1,大模型使用 TP2。ME 的每个模型各占一张 GPU。
低推理量:AIME2024,输入约 100 个 token,输出上限为 2,048 个 token。
高推理量:选取 Qwen3-32B 解答超过 8,192 个 token 的 AIME2024 题目,输入约 100 个 token,评估时输出上限为 8,192 个 token。
智能体任务:SWE-Smith 多轮交互轨迹,输入约 8,192 个 token,输出上限为 1,024 个 token。
Official Code:算法的公开实现,未提供的测量项记为 N/A。
Std. Serving:每个模型运行独立的 SGLang 服务,每次调用返回一个 token,由外部调度程序进行路由。
吞吐量为生成的输出 token 总数除以经过时间;延迟为请求从开始到完成的端到端耗时。TokenRouter 基于 SGLang 0.5.1 构建。
并发扩展
随着并发数增加,异步执行将更多并行请求转化为有效的模型计算。
R2R · 并发数 1–16
TokenRouter 在并发数 16 时,总吞吐量为 630.57 token/秒,单用户速度为 39.41 token/秒。R2R 官方实现在并发数 1 时,分别为 33.94 和 34.87 token/秒。这一比较采用了不同的并发数。
系统分析
CUDA graph 支持、异步执行与延迟批处理逐步叠加,改善服务效率。
R2R · 并发数 8
缓存更多 extend 长度的执行图,适应请求路由返回时的不同输入长度。
路由器与模型协同运行,避免每个 token 都增加一次独立的进程间通信。
保留等待返回的请求,并协调共置模型之间的 KV 存储预算。
| 小模型 / 大模型 | R2R official | TokenRouter | 加速比 |
|---|---|---|---|
| 0.6B / 8B | 105.10 | 336.98 | 3.21× |
| 0.6B / 32B | 77.08 | 197.40 | 2.56× |
| 1.7B / 8B | 103.37 | 285.41 | 2.76× |
| 4B / 8B | 106.67 | 211.81 | 1.99× |
Qwen3-0.6B 使用一张 GPU,Qwen3-32B 使用两张 GPU(TP2),彼此不共享 GPU。模型部署在一个或两个节点上,节点间通过 3.7 GB/s RoCE 连接。以下测量采用低推理量工作负载。
| 并发数 | 部署方式 | R-Stitch | R2R | CITER |
|---|---|---|---|---|
| 1 | 单节点 | 47.53 | 74.90 | 108.65 |
| 双节点 | 46.19 | 69.92 | 93.99 | |
| 4 | 单节点 | 116.14 | 228.94 | 308.36 |
| 双节点 | 104.20 | 202.43 | 277.56 |
| 算法 / 原始设置 | 实现 | 吞吐量 | TTFT | 延迟 |
|---|---|---|---|---|
| R2RDeepSeek-R1-Distill-Qwen 1.5B / 32B AIME | 仅大模型 | 145.30 | 0.13 | 411.98 |
| Official Code | 89.62 | 0.11 | 751.15 | |
| TokenRouter | 244.56 | 0.11 | 270.19 | |
| CITERQwen2 1.5B / 72B CommonsenseQA | 仅大模型 | 123.72 | 0.083 | 2.68 |
| Official Code | 17.16 | 0.036 | 7.64 | |
| TokenRouter | 149.31 | 0.036 | 0.48 | |
| Co-LLM微调后的 LLaMA2 7B / 70B GSM8K | 仅大模型 | 134.79 | 0.069 | 13.39 |
| Official Code | 3.46 | 1.14 | 247.61 | |
| TokenRouter | 76.02 | 0.067 | 11.46 | |
| R-StitchL1-1.5B-short / QwQ-32B AIME · 官方代码未公开 | 仅大模型 | 150.41 | 0.15 | 360.76 |
| TokenRouter | 140.58 | 0.067 | 151.30 |
研究团队
引用
@article{fu2026tokenrouter,
title={TokenRouter: Efficient Serving System for Token-Level LLM Routing},
author={Tianyu Fu and Tengxuan Liu and Ruoxi Wang and Yixin Dong and Yi Ge and Yichen You and Yu Wang},
journal={arXiv preprint arXiv:2610.12242},
year={2026},
}