引擎 · 实测
实测结果
CodeRouterBench 上的测量结果。每一项数值在构建期从评测产物读入,与 reports/ 中的记录一致。
每一条都被十个策略各跑了一遍,2,000 次配对 bootstrap,split seed 0。
- 区间
- 95%
- correct 阈值
- 0.5
策略对比
1,425 条 held-out 上,enthalpy 的 reward 为 0.4381,池内最强单模型为 0.4167。
- oracle †0.5212$0.00112
- cheapest_correct †0.5006$8.31e-4
- enthalpy0.4381$0.00468
- knn(k=16)0.4257$0.00340
- best_single0.4167$0.00727
- cluster_balance(k=8,alpha=0.7)0.4162$0.00283
- random(seed=0)0.3488$0.00361
- round_robin0.3420$0.00357
- most_expensive †0.3363$0.00935
- cheapest †0.3317$2.36e-4
enthalpy† 上下界,不是策略其它基线条长 = reward,右侧两列是 reward 与每次调用的平均成本
带 † 的四行为上下界,不是可部署策略:oracle、cheapest_correct、cheapest、most_expensive 使用每一行已记录的结果。oracle 在 $0.00112 的平均成本下达到 0.5212,与 enthalpy 的 reward 差距为 0.0831。
完整对照表:correct 数、每次调用成本、每个正确答案成本、reward/$、oracle 差距、用到的模型数
| router | reward | correct | $/query | $/correct | reward/$ | oracle gap | models used |
|---|---|---|---|---|---|---|---|
| oracle † | 0.5212 | 747/1425 | $0.00112 | $0.00215 | 463.5 | 0.0000 | 8 |
| cheapest_correct † | 0.5006 | 747/1425 | $8.31e-04 | $0.00159 | 602.1 | 0.0206 | 8 |
| enthalpy | 0.4381 | 622/1425 | $0.00468 | $0.01072 | 93.6 | 0.0831 | 8 |
| knn(k=16) | 0.4257 | 607/1425 | $0.00340 | $0.00798 | 125.3 | 0.0956 | 8 |
| best_single | 0.4167 | 594/1425 | $0.00727 | $0.01743 | 57.3 | 0.1045 | 1 |
| cluster_balance(k=8,alpha=0.7) | 0.4162 | 587/1425 | $0.00283 | $0.00686 | 147.2 | 0.1051 | 5 |
| random(seed=0) | 0.3488 | 489/1425 | $0.00361 | $0.01053 | 96.6 | 0.1725 | 8 |
| round_robin | 0.3420 | 477/1425 | $0.00357 | $0.01065 | 95.9 | 0.1793 | 8 |
| most_expensive | 0.3363 | 460/1425 | $0.00935 | $0.02895 | 36.0 | 0.1849 | 6 |
| cheapest † | 0.3317 | 463/1425 | $2.36e-04 | $7.26e-04 | 1406.1 | 0.1896 | 4 |
Over 1425 held-out rows, enthalpy beats best_single on reward: 0.4381 vs 0.4167, Δ=+0.0214, 95% CI [+0.0093, +0.0336], sign test p=0.0019, reward per dollar 1.63x.
差值与置信区间
每一条横线为一个 95% 配对 bootstrap 置信区间,竖线为零。区间包含零,表示该差值与零不可区分。
第三条区间包含零:knn(k=16) is not distinguishable from best_single。enthalpy 相对最强单模型的胜/负/平为 78/43/1304。
相对 k-NN,每美元获得的 reward 为 0.75×,低于一:质量更高,单位成本效率更低。成本权重 γ 的取舍见下节。
完整配对检验表:bootstrap p、sign p、胜负平、胜率、reward/$ 比
| router | Δreward | 95% CI | bootstrap p | sign p | W/L/T | win rate | reward/$ ratio |
|---|---|---|---|---|---|---|---|
| oracle | +0.1045 | [+0.0901, +0.1193] | 0.0000 | 0.0000 | 308/0/1117 | 0.608 | 8.08 |
| cheapest_correct | +0.0839 | [+0.0688, +0.0997] | 0.0000 | 0.0000 | 274/129/1022 | 0.551 | 10.50 |
| enthalpy | +0.0214 | [+0.0093, +0.0336] | 0.0010 | 0.0019 | 78/43/1304 | 0.512 | 1.63 |
| knn(k=16) | +0.0089 | [-0.0040, +0.0222] | 0.1950 | 1.0000 | 86/85/1254 | 0.500 | 2.18 |
| cluster_balance(k=8,alpha=0.7) | -0.0005 | [-0.0147, +0.0136] | 0.9390 | 0.3711 | 115/130/1180 | 0.495 | 2.57 |
| random(seed=0) | -0.0680 | [-0.0860, -0.0503] | 0.0000 | 0.0000 | 107/304/1014 | 0.431 | 1.68 |
| round_robin | -0.0747 | [-0.0917, -0.0576] | 0.0000 | 0.0000 | 104/307/1014 | 0.429 | 1.67 |
| most_expensive | -0.0804 | [-0.0975, -0.0634] | 0.0000 | 0.0000 | 70/279/1076 | 0.427 | 0.63 |
| cheapest | -0.0851 | [-0.1061, -0.0661] | 0.0000 | 0.0000 | 134/365/926 | 0.419 | 24.52 |
| router | Δreward | 95% CI | bootstrap p | sign p | W/L/T | win rate | reward/$ ratio |
|---|---|---|---|---|---|---|---|
| oracle | +0.0956 | [+0.0814, +0.1098] | 0.0000 | 0.0000 | 295/0/1130 | 0.604 | 3.70 |
| cheapest_correct | +0.0750 | [+0.0606, +0.0901] | 0.0000 | 0.0000 | 256/130/1039 | 0.544 | 4.81 |
| enthalpy | +0.0125 | [+0.0018, +0.0231] | 0.0220 | 0.0022 | 68/36/1321 | 0.511 | 0.75 |
| best_single | -0.0089 | [-0.0222, +0.0040] | 0.1950 | 1.0000 | 85/86/1254 | 0.500 | 0.46 |
| cluster_balance(k=8,alpha=0.7) | -0.0095 | [-0.0202, +0.0011] | 0.0740 | 0.2698 | 73/88/1264 | 0.495 | 1.17 |
| random(seed=0) | -0.0769 | [-0.0949, -0.0596] | 0.0000 | 0.0000 | 104/302/1019 | 0.431 | 0.77 |
| round_robin | -0.0837 | [-0.1003, -0.0667] | 0.0000 | 0.0000 | 100/300/1025 | 0.430 | 0.77 |
| most_expensive | -0.0893 | [-0.1070, -0.0725] | 0.0000 | 0.0000 | 87/293/1045 | 0.428 | 0.29 |
| cheapest | -0.0940 | [-0.1114, -0.0772] | 0.0000 | 0.0000 | 104/334/987 | 0.419 | 11.22 |
模型选用分布
hero 里那四条查询在 γ=0 下选的是同一个模型 —— 四条 prompt 说明不了分布。整个 held-out 集上的分布才说明得了:
enthalpy
选择熵 2.2589 bit
best_single
选择熵 0.0000 bit
方法学(这一节的常驻页脚,不是悬浮提示):CodeRouterBench,共 4,781 行,按 30% 划出 1,425 行 held-out(训练 3,356 行,split seed 0)。2,000 次配对 bootstrap,seed 0,95% 区间;correct 阈值 0.5;候选池 8 个模型全部合格。bootstrap p 的分辨率下限就是 1/2,000,表里的 0.0000 该读成「小于这个数」。
成本权重取 0.3 时,该优势的置信区间包含零。因此出厂默认值为 0。
成本项与前沿
打分之后减掉一项 γ · log1p(est_cost / c_ref) —— 单位是对数成本,不是 0 到 1 的比例。γ 调大,路由器往便宜的一侧走,并且是在同一个 argmax 里走,不需要第二套规则。
前沿上每一点的数值:γ、reward、每次查询成本、用到的模型数
| γ | reward | $/query | 用到的模型 | 距 oracle |
|---|---|---|---|---|
| 0 | 0.4381 | $0.00468 | 8 | 0.0831 |
| 0.3 | 0.4282 | $0.00355 | 8 | 0.0930 |
| 1 | 0.4167 | $0.00231 | 6 | 0.1045 |
| 2 | 0.3950 | $0.00108 | 5 | 0.1262 |
| 4 | 0.3692 | $3.39e-4 | 4 | 0.1520 |
| 8 | 0.3609 | $3.04e-4 | 2 | 0.1603 |
成本权重取 0.3 时的结果
Over 1425 held-out rows, the strongest policy (enthalpy, reward 0.4282) is NOT distinguishable from best_single (reward 0.4167): Δ=+0.0115, 95% CI [-0.0015, +0.0247] includes zero.
同一批数据、同一套 bootstrap,只把 γ 从零挪到 0.3:reward 只掉了一点,每次查询便宜了不少,但置信区间跨过了零。跨过零的意思是,这个优势在统计上不再能和「没有优势」区分开。这正是出厂默认不加成本惩罚项的原因 —— 省钱的那个版本我们测过,它省得真,赢得不够确定,于是它不是默认值。
| router | Δreward | 95% CI | bootstrap p | sign p | W/L/T | win rate | reward/$ ratio |
|---|---|---|---|---|---|---|---|
| oracle | +0.1045 | [+0.0901, +0.1193] | 0.0000 | 0.0000 | 308/0/1117 | 0.608 | 8.08 |
| cheapest_correct | +0.0839 | [+0.0688, +0.0997] | 0.0000 | 0.0000 | 274/129/1022 | 0.551 | 10.50 |
| enthalpy | +0.0115 | [-0.0015, +0.0247] | 0.0830 | 0.1055 | 79/59/1287 | 0.507 | 2.10 |
| random(seed=0) | -0.0680 | [-0.0860, -0.0503] | 0.0000 | 0.0000 | 107/304/1014 | 0.431 | 1.68 |
| round_robin | -0.0747 | [-0.0917, -0.0576] | 0.0000 | 0.0000 | 104/307/1014 | 0.429 | 1.67 |
| most_expensive | -0.0804 | [-0.0975, -0.0634] | 0.0000 | 0.0000 | 70/279/1076 | 0.427 | 0.63 |
| cheapest | -0.0851 | [-0.1061, -0.0661] | 0.0000 | 0.0000 | 134/365/926 | 0.419 | 24.52 |
路由延迟
一次选择是一次真实的 prefill,所以它随 prompt 长度增长。下面是原始测量,条件写在表下面,你自己判断它对不对得起一次上游调用。
| prompt tokens | 字符 | p50(热) | p95(热) | min–max | 首次调用(冷) |
|---|---|---|---|---|---|
| 15 | 60 | 71 ms | 77 ms | 67 ms – 80 ms | 180 ms |
| 256 | 1,293 | 264 ms | 334 ms | 247 ms – 369 ms | 251 ms |
| 1,024 | 5,229 | 944 ms | 998 ms | 917 ms – 1029 ms | 963 ms |
短 prompt(15 tokens)上是 71 ms,到 1,024 tokens 的截断上限时是 944 ms。所以 ENTHALPY_ROUTER_MAX_TOKENS 是一个延迟旋钮,不只是显存旋钮;路由信号在任务陈述里,而任务陈述靠近 prompt 开头,截断是从左边截的。
冷热那两列必须一起看。进程里的第一次决策要 180 ms,稳态之后才是 71 ms —— 后端在建它的 kernel。把新副本挂到负载均衡后面之前,先打一个热身请求。另外,加载权重本身还要 2.7 s,那是进程启动的一次性成本。
测量条件:backbone Qwen/Qwen3-0.6B,device cpu,dtype float32,8 个候选,25 次迭代 + 5 次热身,router_max_tokens 1,024。checkpoint sft-2e9f,pool 3520b40d —— 请注意这不是上面那些准确率数字所用的 checkpoint。两次测量来自两个产物,就不共用一行出处。
评测设置
- 数据集
- CodeRouterBench,共 4,781 行;采用数据源的 probing / id_test 划分,其中 1,425 行用于留出评测。哈希比例和种子不参与这次划分。
- 正确性阈值
- 0.5,同一个阈值用于所有 router,包括 oracle。
- 置信区间
- 2,000 次配对 bootstrap,种子 0,95% 区间。配对的意思是同一行上比较,而不是比较两个独立样本的均值。
- 模型池
- 8 个模型全部合格;checkpoint
sft-f23aa90cd7c68f27e9b702a0,池指纹3520b40db3b55b1e。 - 延迟
- Qwen/Qwen3-0.6B on cpu,float32,8 个候选,25 次迭代 + 5 次预热。没有 GPU。
- 成本
- 按各家公开价目表对实际 token 计数结账,不是估的;oracle 与 cheapest 用同一张价表。
聊聊你的基础设施需求。
接入平台,或讨论模型、性能与部署方案。