机器学习笔记(18): RouteLLM
可能更好的阅读体验 Jeefy's Blog: RouteLLM
在强模型和弱模型间,通过人类偏好数据对,学习一个二元路由,可以节约 2 倍以上的成本。
\[D_{pref} = \{ (q, l_{s, \omega})\}
\]
其中 \(l_{s, \omega}\) 表示偏好对的情况,也就是 \(win_s, tie, win_w\)。
- Win Prediction Model
也就是一个估计胜率的模型:
\[\max_{\theta} \sum_{(q, l) \in D} \log P_{\theta}(l | q)
\]
- Cost Threshold
也就是通过胜率控制:
\[R^\alpha(q) = strong ~ \text{if} ~ P_\theta(win_s | q) \ge \alpha ~ \text{else} ~ weak
\]
\(\alpha\) 越低,控制成本时更倾向于使用强模型。
指标:
- \(c(R^\alpha)\) 成本通过强模型调用的次数来判断
- \(r(R^\alpha)\) 表现通过计算平均回答质量:可能是是正确率,也可能是程序判分 。
- PGR:通过 router 恢复了多少大模型的能力,越高越好,完全恢复时 \(PGR = 1\)
\[PGR = \frac {r(M_{R^\alpha})- r(M_w)}{r(M_s) - r(M_w)}
\]
- 为了获取 quality-cost 权衡指标,我们枚举 \(\alpha\),得到一个 \(\alpha \to c(R^\alpha)\) 的对应关系,然后计算:
\[\int_0^1 PGR(M_{R^\alpha}) {\rm d} c(M_{R^\alpha})
\]
由于非连续,所以依据对应关系采用离散化的方式,\(APGR(M_{R^\alpha}) \approx \frac 1 {10} \sum_{i = 1}^{10} PGR(M_{R^{\alpha_i}})\)
Win Prediction Model
- SW Ranking
\[S(q, q') = \frac {\cos \langle \epsilon, \epsilon' \rangle}{\max_s \cos \langle \epsilon, \epsilon_s \rangle}
\]
利用上述归一化后的相似度计算权重:
\[\omega' = \gamma^{1 + S(q, q')}, \gamma = 10
\]
然后就可以计算:
\[\begin{aligned}
P_\theta(win_s | q) &= \frac {1} {1 + e^{\xi_s} - e^{\xi_w}} \\
\arg \min_{\xi_s, \xi_\omega} & \sum_{(q, l) \in D} \left[ \omega' \cdot {\rm cross-entropy}(l_, \frac {1} {1 + e^{\xi_s} - e^{\xi_w}}) \right]
\end{aligned}
\]
- Matrix factorization
\[\begin{aligned}
P_\theta(win_s | q) &= \sigma(\delta(M_s, q) - \delta(M_w, q)) \\
\delta(M, q) &= w_2 \cdot (v_M \odot(W_1 v_q + b)) \\
\end{aligned}
\]
其中 \(W_1 \in {\mathbb R}^{d_m \times d_q}\),\(w_2, v_M, b \in {\mathbb R}^{d_m}\)
损失函数就是:
\[loss = BCE(l, P_\theta(win_s | q))
\]
- BERT classifier
就是通过一个预训练的 BERT 模型,将 query 嵌入到一个向量中:
\[P_\theta(win_s | q) = \sigma(W \times BERT(q) + b)
\]
其中 \(W, BERT, b\) 都是可训练的参数。
- Casual LLM
就是通过在词表中新增三个 token:{win, tie, lose},然后增加开头和末尾的一点参数,然后训练即可。全量微调。
| 维度 | SW Ranking | Matrix Factorization | BERT classifier | Causal LLM classifier |
|---|---|---|---|---|
| 类型 | 非参数 / 近邻加权 | 低秩双线性打分 | 判别式分类 | 生成式分类 |
| 核心机制 | embedding 近邻 + 加权 Bradley–Terry | 学“模型×query”质量矩阵的低秩分解 | CLS 表示 + sigmoid 分类头 | 扩词表加 3 个标签 token,末位置 softmax |
| \(P(\text{win}_s\mid q)\) 参数化 | \(\sigma(\xi_s-\xi_w)\),\(\xi\) 随 query 相似度现解 | \(\sigma(\delta(M_s,q)-\delta(M_w,q))\),双线性 | \(\sigma(Wh_{\text{CLS}}+b)\) | 3 个标签 token 的 softmax |
| 是否需训练 | ❌ 无训练阶段,推理时求解 | ✅ 显式训练 | ✅ full fine-tuning | ✅ full fine-tuning |
| 结构先验 | 近邻局部性 | 低秩/双线性 | 预训练语言先验(弱) | 预训练生成先验(强) |
| 容量 | 极低(2 个标量/query) | 低 | 中(~110M) | 高(8B) |
| 低数据表现(仅 \(\mathcal{D}_{arena}\)) | 好,稳定优于 random | 好,MT Bench 最佳之一 | 差,不如 random | 一般,弱于 SW/MF |
| 数据增强后 | 稳定提升 | MT Bench 最强(APGR 0.802) | MT Bench 提升最猛(+50.2%) | GSM8K 最强(APGR 0.622) |
| 对未见模型对迁移 | 天然不依赖具体模型身份 | 较好(\(v_m\) 细节论文未展开) | 较好 | 较好 |
| 训练资源 | 无需训练 | 单卡 8GB,~10 epochs | 2×L4,~2000 steps | 8×A100,~2000 steps |
| 输入长度 | embedding 模型决定 | embedding 模型决定 | 512 | 2048 |
| 推理开销 | 最高($39.26/M 请求,2.9 req/s,CPU) | 低($3.32/M,155 req/s) | 低($3.19/M,69.6 req/s) | 中($5.23/M,42.5 req/s) |
| 优点 | 简单稳定、零训练、低数据可靠 | 轻量、结构性好、MT Bench 性能上限高 | 数据够时性价比高、提升空间大 | 上限最高,长 query/复杂 pattern 强 |
| 缺点 | 依赖 embedding 质量、\(\gamma=10\) 敏感、推理最贵 | 未见模型 embedding 构造未交代 | 低数据过拟合 | 最吃数据和算力,低数据不稳 |
| 一句话 | “像谁,就看谁的投票” | “模型和 query 各学一个向量做双线性打分” | “BERT 学一个 query 难度分类器” | “让 Llama 直接生成胜负判断” |

浙公网安备 33010602011771号