模型对比检测算法

模型与算力

讲清模型对比与差异检测常用算法的适用场景、选型标准和排查顺序,帮你在做评测实验时不选错方法。

做模型对比实验时,最常见的卡点不是跑不出结果,而是不知道该用哪类检测方法:拿了两个模型同一批样本,输出全是自由文本,分数怎么算都说不上客观。这篇按任务类型把常见对比算法捋一遍,给出选型对照和落地步骤,并说明每种方法什么时候不适用。想核对具体能力数据,去站内模型库和测评榜单看当时的数字。

做模型对比实验时,最常见的卡点不是跑不出结果,而是不知道该用哪类检测方法。拿了两个模型跑同一批样本,输出全是自由文本,分数怎么算都说不上客观,最后只能凭感觉说一句「B 好像更顺」。这篇按任务类型把常见对比算法捋一遍,给出选型对照和落地步骤,每个方法都说明什么时候不适用。

先记住一个前提:算法本身没有优劣,只有配不配你的实验目标。想核对各模型的能力数据,去站内模型库和测评榜单看当时的数字;想要现成的稳定性与延迟基线,可以到 /tools/speed-test 量一遍再开跑。

先分清你要检测的是「谁更强」还是「哪里不一样」

这一步没想清楚,后面全是白干。同一批输出,如果目标是「谁更强」,你要的是统计打分与配对比较;如果目标是「哪里不一样」,你要的是文本距离和结构比对。两个目标用同一套算法,结论会互相打架。

你的问题属于哪类典型算法族输出形态
A 和 B 哪个更好能力排序成对比较、基准题分叉一条排序或分差
A 能不能替掉 B差异定位字面距离、字段比对、语义相似度差异清单与位置
两个版本改动影响了什么差异定位结构比对 + 回归抽样受影响字段/题型
新模型比旧模型稳不稳排序 + 稳定性配对比较 + 多次采样分差与波动区间
  • 先写实验假设:一句话说清你要回答什么问题,写不出来就先别跑;
  • 判断属于排序还是定位,再往下选算法,别两件事混在一次实验里;
  • 如果只是想确认两个模型能不能互换,那属于差异定位,不是排序;
  • 样本量很小(比如几十条)时,排序类算法的置信区间会宽到没有参考价值,这时候只做定位、不做排序。

打分与排序类:把主观判断变成可比较的数字

排序类最稳的做法是成对比较:每次只问「这两条输出哪条更好」,再聚合成全局排序。比让人直接打绝对分靠谱得多,因为人对绝对值的尺度会漂,今天 8 分明天可能是 6 分,但「A 比 B 好」这种相对判断重复性高得多。

另一条路是基准题分叉:先跑一套固定题集,看两个模型分别在哪些题目上给出不同结果。分叉点比总分更有信息量——总分差一点可能只是噪声,但某个题型上系统性分叉,通常就是真实的差异。

  1. 固定题集题集写进版本管理,改题要留记录,否则前后两次实验没法比。
  2. 固定解码参数温度、采样、最大输出长度全部锁死,参数漂了结果就不算数。
  3. 同一时间窗跑完两个模型尽量在同一时段跑,避开上游负载波动带来的差异。
  4. 留原始输出再聚合先存原始文本,再做聚合打分,后面想换判定口径还能重算。

具体榜单的口径、样本量和分数,去 /rankings 和 /benchmarks 看当时的数字,别拿别人文章里的旧数当依据。

差异定位类:文本距离、结构与语义三条路

定位差异比排序更容易出错,因为「看着不一样」和「实际不一样」是两回事。常见三条路,各有各的盲区。

方法适合的任务能定位到什么程度主要盲区
字面距离(编辑距离、n-gram 重合)结构化抽取、代码补全、格式严格的输出能指到具体字符或片段同义改写会被判成大差异
结构比对(按 schema 逐字段)JSON/表格类输出能归到具体字段字段语义相近但键名不同时容易漏
语义相似度(向量/模型判定)自由问答、摘要、开放生成只能给整体相似程度措辞相同但事实相反也会被判为一致

排查顺序建议固定下来:先看字面差异,再看字段级差异,最后才上语义相似度。前两步能解释的差异不要直接跳到第三步,语义相似度只用来兜底那些字面和结构都对不上、但人眼看确实不同的情况。

  • 格式严格的任务优先用字面距离,改动位置能直接落到字符上;
  • 有 schema 的输出优先做字段级比对,差异能归因到某个键;
  • 自由问答用语义相似度时,务必补一次人工抽样,专挑「措辞像但事实不同」的样本;
  • 三类方法可以叠加用,但结论以最严格的那条为准;
  • 同一批样本换算法后结论反转,说明差异本来就在边界上,别急着下判断。

让结论站得住的操作细节

算法选对了,实验做脏了照样得不出结论。对比实验的变量越多,越要写清楚控制清单,不然事后没法解释差异来自哪里。

控制变量
同题目、同提示词、同温度与采样参数、同最大输出长度、同时间窗,缺一项结论就弱一分。
裁判复核
如果用模型当裁判,先做一次裁判一致性抽样,看它自己回答同一对样本时稳不稳定。
留痕
题目版本、参数、原始输出全部存档,否则过段时间没人能重跑这次实验。
基线
上游接口本身波动大时,先量延迟与稳定性基线,再谈模型间的差异。

上面这些不是流程洁癖。一家 5 人小团队做模型替换评估时,最容易翻车的就是没留原始输出,隔两周想复查某条不一致的样本,发现只剩一个总分,什么都查不了。

动手清单:从一次小实验跑到一份结论

  1. 定目标用一句话写清是排序还是定位差异,写不出来就别开跑。
  2. 定样本从真实业务流量里抽样,别把网上现成的通用题集当成唯一依据。
  3. 定算法按上面的对照表选一条主路,再加一条交叉验证路,两条结论不一致就回头查样本。
  4. 定判定多大差异才算「有差异」,提前写死阈值,别看到结果再回头改标准。
  5. 归档输出、参数、脚本一起存,附一页结论,并写清这次结论在什么条件下不适用。

如果你更关心的是选哪个模型、哪个中转站价格更划算、可信度怎么样,这些属于另外的问题,去站内对应的资料页核对当时的数字,别用这篇里的方法去替代价格和可信度的判断。

先把对照表和榜单拉齐算法选型的判断标准看完,下一步是拿着真实数字做决策:模型能力和榜单口径到 /rankings 与 /benchmarks 核对,接口稳定性和延迟基线到 /tools/speed-test 量,中转站的可信度与价格追踪分别看 /sites 和 /price-watch,这些页面里的数字才是当次可用的依据。

常见问题

模型对比一定要用模型当裁判吗?

不一定。格式固定、字段明确的任务,用规则比对更便宜也更可解释;只有自由文本、没有唯一答案的任务才需要裁判,而且裁判本身要做一致性复核,否则你测的是裁判的偏好而不是两个模型的差距。

两个模型分数差一点,能说谁更强吗?

要看差距和波动的关系。先在同样条件下重复跑几次,看分数本身抖多少,差距明显小于抖动就别下结论。稳妥做法是把分叉的具体题目挑出来人工看,定位差异比纠结总分更有用。

对比结果和自己体感不一致怎么办?

先查三个地方:题目是不是偏向某一方、解码参数是不是一致、裁判口径是不是只看表面措辞。三项都对过还是不一致,就把体感场景补进题集重跑一次,通常能发现题集没覆盖到你真正在意的能力。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。