微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 路由本该自己赚回学费:一个关于"少标注也能选对模型"的故事

路由本该自己赚回学费:一个关于"少标注也能选对模型"的故事

2026-10-23 18:57
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-23 18:57 • 科技行者

你有没有想过一件事:现在市面上的大语言模型越来越多,便宜的、贵的、聪明的、笨的,各有各的用处。于是聪明人想出一个主意,叫做"路由",简单说就是来一个问题,先判断一下该交给哪个模型处理,简单问题给便宜模型,难题才动用贵的那个。这样能省不少钱。

听起来很美好对不对?但这篇论文的作者们发现了一个大家都没太注意的坑:**要教会这个"路由器"该怎么分配任务,你得先花钱让好多个模型都跑一遍历史问题,看看谁答得好**。

这个"先花钱看效果"的步骤,本身就是一笔不小的开销。

问题出在哪儿

假设你手头有一万条历史问题,想测试十二个候选模型,那你得让这十二个模型都跑一遍这一万条问题,一共十二万次调用,才能知道每个模型在每道题上表现如何。这笔账不是小数目。

论文里给出了一个特别扎心的例子。作者统计了几种主流路由方法的"回本时长",也就是要处理多少条新请求,省下来的钱才能补上前期收集数据花的钱。结果显示,像RMSoftmax这类方法居然需要两万多条请求才能回本,而论文提出的新方法只需要两千多条,差了将近十倍。

更有意思的是另一个发现:很多路由器的判断准确率,其实老早就已经饱和了。论文里画了一张图,显示EmbedLLM这个路由方法只用了30%的训练数据,就已经达到了满血版本99%的效果;kNN方法用60%的数据也能做到。

**换句话说,剩下那百分之四十到七十的数据钱,基本上是白花的。**

这就好比你想知道一家新开的餐厅好不好吃,理论上你可以把菜单上所有菜都点一遍,但其实你尝三五道招牌菜,再问问隔壁桌吃过的人,基本就能判断这家店值不值得再来。把整张菜单点一遍固然信息最全,但边际收益早就摊薄了,多花的钱换不回多少新信息。

论文把这种现象叫做**"密集监督的过度供给"**。

供给过度*:指获取的训练信息量已经明显超过了完成任务实际所需要的量,多余部分只是浪费资源却不产生对应价值。

这篇论文要解决的核心问题,就是能不能只用一小部分标注数据,训练出效果不打折的路由器,并且让这个"少花钱多办事"的路由系统尽快把前期投入赚回来。

路由到底是什么问题

先说清楚一件事:路由本质上是个决策问题,不是一个"把所有信息都填满"的填空题。

对于每一个问题,理论上存在一个最优答案,就是哪个模型在质量和成本的平衡上表现最好。但你并不需要精确知道每个模型的每一分表现,你只需要知道"谁排第一"就够了。

这里有个特别值得琢磨的洞察,论文管它叫**"决策充分性"**,跟"信息完整性"是两码事。

决策充分性*:只要你的估计误差比两个候选选项之间的真实差距小,你的判断结果就不会错,不需要把每个选项的真实值都摸得一清二楚。

打个比方,你要在两家奶茶店里选一家更好喝的,店A实际得分是8.5分,店B是6分,差距足足2.5分。这时候哪怕你对两家店的评分都有±1分的误差,你也大概率不会选错,因为差距足够大,误差不会颠倒排名。但如果两家店实际得分只差0.3分,你的误差稍微大一点,判断就可能翻车。

这解释了为什么密集监督常常是浪费的:很多模型之间的能力差距本来就很大,压根不需要靠海量数据去精确刻画,粗略估计就足够做出正确的路由决策了。

**只有当模型之间的能力差距很小、很难分辨的时候,更多的观测数据才真正有价值。**

那具体怎么做

论文提出的方法叫SAVEROUTER,中文可以理解成"省钱路由器"。整个思路分成三步走:分组、聪明地挑样本去测试、再用统计学的技巧把有限的数据用到极致。

第一步是给问题分组。相似的问题往往适合相似的模型,比如都是数学题的,可能都适合某个擅长逻辑推理的模型。

查询分组*:把相似类型的问题归到同一类,这样一类问题里少数几条的测试结果,可以帮助推断这一类里其他问题的情况,而不用每条都单独测。

这一步的道理跟医生看病类似。假设你是个内科医生,来了一百个感冒病人,你不需要把每个人都做全套检查,你知道这批人大概率是同一种病,抽样检查几个,再结合每个人的具体症状微调,就能覆盖大部分情况。如果每个感冒病人都做核磁共振,那不仅贵,而且大部分检查结果都差不多,纯属浪费医疗资源。

第二步是"该测哪个模型"的选择策略。论文没有随机抽,而是设计了一个同时考虑"这个模型在这类问题上目前表现好不好"和"我们对这个模型还有多不确定"的打分公式,这其实借用了强化学习里常见的探索与利用平衡思路。

UCB策略*:全称是"置信区间上界"策略,核心思想是既要选目前看起来表现好的选项,也要适当去试一试那些还没被充分了解的选项,防止因为信息不足而错过真正的好模型。

这就像投资理财里那个经典难题:你手头有一笔钱,一部分投给历史业绩好的基金,一部分留出来试试还没被验证过的新基金,不能因为某个新基金暂时数据少就完全忽视它,万一它其实很厉害呢?如果你只盯着已知表现好的那几个,你可能永远发现不了真正的黑马,而且历史表现好也不代表未来一定好。

第三步是最关键的统计建模部分,论文管它叫**分层能力估计**。

分层能力估计*:先用所有能拿到的数据,估算出一个"某类问题配某个模型大概能打多少分"的基础判断,这个基础判断是靠整体规律撑起来的,即使某个具体组合观测很少也比较稳。然后再拿实际观测到的数据去修正这个基础判断,观测越多,越相信实际数据;观测越少,越依赖整体规律。最后再针对每个具体问题,补上一点它跟同类问题不一样的地方。

这个设计特别巧妙的地方在于,它承认了两种矛盾的需求:群体的稳定性和个体的独特性。

群体层面靠共享信息撑住估计的可靠性,个体层面再做微调捕捉细节差异。这就好比给一个班级学生评估能力,你先知道这个班整体数学水平怎么样,再看某个学生跟这个班平均水平比是高一点还是低一点,而不是完全忽略班级背景,单凭这个学生做的三道题就武断打分。如果没有分层这一步,只靠稀疏的观测数据直接算平均分,那些被抽到样本很少的模型和问题组合,估计出来的分数会非常不靠谱,极端情况下可能只测了一次就把这个数值当成绝对真理,误差会很大。

具体的数学表达式是这样的,先拟合一个包含"问题组"效应和"模型"效应的加法模型作为基础先验,再用观测次数作为权重跟先验做加权平均,得到修正后的组模型估计,最后用一个轻量级的回归模型去捕捉单个问题相对于所在组的偏差残差。

省了多少,又快了多少

论文在四个不同的路由测试集上做了实验,包括LLMRouterBench、Mixinstruct、MMR-Bench和RouterBench。

结果显示,SAVEROUTER只用了大约33%到41%的可用训练反馈,却在路由质量上保持了跟满血版本相当甚至更好的表现。更关键的是那个"回本时间"的对比。

在LLMRouterBench上,SAVEROUTER只需要5300条部署请求就能回本,而表现最好的传统路由器需要11500条,差了超过两倍。在RouterBench上差距更夸张,SAVEROUTER需要42600条,传统方法里表现最好的却要326400条,差了近八倍。

Mixinstruct这个数据集特别有意思,因为几乎所有方法的路由质量都已经非常接近饱和了,峰值分数都在0.75上下,差距很小。但即便质量已经趋同,SAVEROUTER依然把回本时长从1163万条硬生生压缩到123万条。

**这说明就算路由决策本身的效果差不多,省下来的标注成本也能让经济回报天差地别。**

论文还专门对比了几个同样主打"少标注"路由的方法,比如BaRP、WISERouter、SemiRouter。结果发现光是标注数据少还不够,得看怎么去收集和利用这些数据。

BaRP虽然路由质量还不错,但它靠反复的探索式交互获取反馈,每一次交互都被算作一次独立的模型调用成本,累积下来反而比SAVEROUTER花费更高。它的回本时长在四个数据集上分别是114000、4466万、640800和325万条,而SAVEROUTER对应是5300、123万、18200和42600条。

WISERouter和SemiRouter的情况更麻烦,在好几个测试集上它们压根没能达到目标质量水准,导致回本这个指标根本无从谈起,论文里用无穷大符号来标注这种情况。

这就像两个人都说自己是"省钱达人",一个人真的是精打细算把每一分钱都花在刀刃上,另一个人号称省钱,但其实是靠不停地试错和反复购买小样装来"探索"哪个商品好,试错的成本累积起来反而更贵。

拆解一下每个部件到底有没有用

论文做了细致的消融实验,把每个设计模块拿掉试试看效果会怎样。

先看统计建模那部分。如果去掉针对单个问题的残差修正,只留组一级的估计,峰值分数从0.6338掉到0.6175,成本比从0.2320涨到0.3484。如果把基于任务的分组换成纯靠向量聚类分组,效果也会打折扣。最夸张的是如果干脆把所有问题都归成一个组,不做任何区分,峰值分数直接跌到0.5985,是所有消融实验里降幅最大的。

再看数据采集策略那部分。论文对比了纯随机抽样、只看模型能力不看不确定性、只看不确定性不看能力这三种简化版本,结果都不如同时兼顾两者的完整策略。

不过这里有个特别值得玩味的细节:纯随机抽样的方法反而回本更快,3800条请求就回本了,比完整版的5300条还快,但它的峰值质量和长期成本表现都不如完整版本。

**这说明"最快回本"和"长期最省钱"不总是同一个目标,有时候得做取舍。**

这个发现挺颠覆直觉的。你可能以为一个更聪明的策略应该在所有维度上都占优,但现实是,更谨慎地花钱采集数据,虽然前期投入稍微高一点,换来的是更持久的收益,短跑冠军和长跑冠军往往不是同一个选手。

供应量到底给多少才够

论文还专门做了一个实验,看看给这个路由系统的监督预算(也就是每个问题测多少个模型)从很少慢慢涨到很多,路由质量会怎么变化。

结果非常直观:每个问题只测2个模型(相当于用了16.7%的全部标注量),SAVEROUTER的表现已经接近满血版本了,而且明显超过随机抽样的基线。继续加大预算,效果提升就非常有限了。

这种收益递减的现象几乎是意料之中的,但它带来的启示很重要:与其一味堆数据量,不如先想清楚该往哪儿花这些数据。

论文特别提醒了一点,质量曲线并不是严格单调上升的,偶尔会有小的波动,这是因为改变预算会改变具体拿到手的观测样本,进而轻微影响拟合出来的决策边界,并不意味着"更多数据反而有害"这种反常识的结论,只是提醒大家不要盯着某一个孤立的数值点看,应该看整体趋势。

新模型加入怎么办

现实中模型池经常会变,今天冒出个新模型,你总不能把历史数据全部重新跑一遍来评估它吧。

论文专门测试了这种场景:从原有的模型池里拿掉一个模型,当作"新到的模型",看看只用大约10%的训练问题去测试这个新模型,能不能顺利把它纳入路由系统。

结果相当令人满意。跨越十二种不同的"新模型到来"场景,只需要211到2200条新的观测数据,花费大约是完全评估这个新模型所需成本的9%到12%,却在八成的场景里达到了比完全监督的传统路由器更高的峰值质量,在十成场景里达到了更低的目标成本。

这就好比一家公司招了个新员工,你不需要让这个新人把公司所有的历史项目都重新做一遍才能判断他称不称职,你挑几个有代表性的项目让他试试手,结合他之前的履历和团队里其他人的判断,基本就能大致定位他在团队里适合做什么,不需要穷举所有可能性。

当然这个方法也不是万能的,在MMR-Bench这个多模态数据集上,完全监督的传统方法在质量上依然占优,尤其是遇到成本比较贵的新模型时,稀疏监督算出来的成本比偏高,达到0.9752,说明当新模型的特性跟现有模型池差异比较大、或者任务本身比较复杂多变时,少量数据可能还不够摸清它的脾气。

写在后面

读完这篇论文,有一个细节让我反复琢磨:论文里提到,决定路由质量的关键往往不是数据量本身,而是数据里包含的"决策边界信息"。

换句话说,同样是一百条数据,如果这一百条恰好都落在容易分辨的区域,那它们对路由决策的贡献很有限;但如果这一百条恰好覆盖了模型能力接近、最难判断归属的那些边界情况,它们的价值会成倍放大。

这跟统计学里常说的"信息量不等于样本量"是同一个道理,但放在大模型路由这个具体场景下重新讲一遍,格外有说服力。因为大模型调用的成本是真金白银,每一次多余的测试都是可以量化的浪费。

论文里还有一个我觉得挺有意思的类比方向,虽然作者自己没有明说,但读完让我联想到了医学诊断里的"分级问诊"逻辑:先做粗筛,再针对疑难病例做精细检查,而不是让每个病人都做全套体检。路由系统本质上也在做类似的事情,先用便宜的先验判断把大部分简单情况筛掉,只在真正模糊的边界情况上多花力气去精细区分。

还有个问题这篇论文没有完全回答:如果模型池变化得非常频繁,比如每周都有新模型上线下线,这套"分组加分层估计"的框架能不能做到实时更新,而不是每次都要重新跑一遍训练流程?这大概是留给后续研究者的一道题。

Q&A

Q1:SAVEROUTER是什么?

A:SAVEROUTER是一种大语言模型路由框架,它的核心思路是只用少量精心挑选的模型测试数据,就能训练出效果不打折的路由系统,从而大幅降低前期数据采集成本,让路由系统更快回本。

Q2:为什么密集收集训练数据反而是浪费?

A:因为路由本质上是个决策问题,只要能分清哪个模型排第一,不需要精确知道每个模型的具体得分。论文实验显示很多路由方法用30%到60%的数据就能达到满血版99%的效果,多余数据边际价值很低。

Q3:SAVEROUTER能不能快速接入新出现的大模型?

A:可以。实验显示只用大约10%的训练数据测试新模型,就能让它顺利融入现有路由系统,在多数场景下效果和花费远超完全测试的传统方法,大幅降低了新模型上线的评估成本。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-