如何搭建一个 Router Evaluation Pipeline
Router 实验容易陷入一个问题:每个策略都用自己的数据、脚本和指标,最后很难比较。一个可靠的 evaluation pipeline 应该先固定数据和指标,再把不同路由策略接进去。
主链路
一个可复用流程可以是:
data merge -> split -> all-model benchmark -> tier labels -> strategy simulation -> metrics -> plots
benchmark 阶段真实调用候选模型,保存每个样本在每个模型上的结果。后续训练和评测尽量复用这些结果,避免每次调整 router 都重新调用模型。
策略接口
所有策略最终都应该输出一个选择结果:某个样本应该走哪个模型或哪个 tier。
因此 classifier、cascade、binary gate、semantic-router 都可以接到同一个 simulate_strategy 接口上。
这种设计让实验关注策略本身,而不是重复写评测逻辑。
指标
基本指标包括:
- accuracy
- cost ratio
- average latency
- P99 latency
- routing distribution
其中 latency 要特别小心。很多论文报告的是端到端时间,而不是 router decision latency。离线模拟可以比较 accuracy 和 cost,但如果没有真实在线部署,就不能声称完整覆盖了端到端延迟。
为什么离线模拟有价值
离线模拟的优势是快速、稳定、可复现。只要 benchmark 结果可靠,就能大量尝试 threshold、route 形态和模型池。
缺点是它不自动覆盖真实系统开销,例如 embedding 计算、网络、batching、服务排队和 router runtime。
因此 pipeline 的定位应明确:它是策略筛选器,不是最终上线验证。
知识补全:Oracle 为什么重要
Router 评测里常见一个特殊基线:Oracle。Oracle 假设我们提前知道每个样本在哪个模型上答对,然后选择最便宜的正确模型。
Oracle 在真实系统中不可用,但它给出了当前模型池的理论上限。如果 Oracle 准确率很高且成本很低,说明模型之间存在互补性,router 有发挥空间。如果 Oracle 本身也不理想,继续调 router 的收益就有限。
另一个重要基线是 Always Strong 和 Always Weak。前者提供质量上限和成本上限,后者提供成本下限和质量下限。router 必须解释自己相对这两个基线的价值。
数据泄漏风险
离线 pipeline 最容易出现数据泄漏。比如用 test 集结果调 threshold,或让 router 训练时见到评测标签,都会让结果虚高。
一个更稳的切分是:
train: 训练 classifier / routes
dev: 调 threshold / hyperparameter
test: 最终只评一次
如果数据量不大,也要明确哪些实验是探索,哪些结果可以作为最终报告。
学习检查清单
一个 router evaluation pipeline 至少应回答:
- 每个模型的原始结果是否被保存。
- 训练、调参、测试是否分离。
- cost 是否按同一 token 价格表计算。
- latency 是否来自真实调用还是离线估计。
- Oracle、Always Strong、Always Weak 是否都存在。
- 每个策略是否复用同一个评测函数。
缺少这些约束,router 实验很容易变成不可复现的手工调参。