模型对比检测实验

模型与算力

教你从零设计一次模型对比检测实验:指标怎么定、样本怎么切、结果怎么读,避免比了个热闹却得不出结论。

很多人做模型对比,就是把同一个问题分别丢给两个模型,看谁答得顺眼就下结论,结果换个问题结论又反了。问题不在模型,在实验设计:指标没定、样本太少、评测方式带着偏向。这篇给一套能直接照做的流程——先定可比口径,再选指标和样本,最后按固定顺序读结果,让对比从「我觉得」变成「有依据」。

做模型对比最容易掉进一个坑:拿一个自认为典型的问题,分别问两个模型,谁的回答读起来顺眼就拍板。换几个问题再试,结论可能就反过来了。问题往往不出在模型上,而出在实验设计——指标没提前定、样本量不够、评判时自己已经知道哪个答案来自哪个模型。这篇给一套能直接照做的流程,让对比从「我觉得」变成「有依据」。

整套流程分四步:先把不可比的因素掐掉,再按任务类型选指标,接着设计有代表性的样本,最后按固定顺序读结果。四步里最容易省掉的是第一步和第四步,也恰恰是决定结论能不能站住的两步。

第一步:先把不可比的因素掐掉

对比实验里最常见的假结论,来自变量没控住。温度、最大输出长度、系统提示词、上下文拼接方式,只要有一项不同,差异就可能来自参数而不是模型本身。建议所有候选模型跑同一份请求模板,把参数显式写进记录表,别靠脑子记。

要固定的一项怎么固定不固定会怎样
输入提示词同一份模板复制给所有候选差异来自措辞而非模型
生成参数温度、输出上限写进记录表随机性被误读成能力差异
调用时段交叉着跑,不要先跑完A再跑B负载波动混进结论
评判口径同一套标准,最好打乱顺序盲评知道来源就会有偏向
  • 输出侧也要统一:别一个模型看内容、另一个模型看格式,否则格式分变成了印象分
  • 记录调用时间:同一模型在不同时段表现会受负载影响,做A/B尽量交叉跑
  • 把每次请求的原始返回存下来,后面复核不用重跑
  • 报告里写明用的是默认口径还是调参口径,别和别的实验混着比

第二步:指标按任务类型选,别一套指标打天下

指标选错,后面做得再规范也白搭。抽取、分类、改错、结构化输出这类客观任务,可以用可自动判定的指标:命中率、字段完整率、格式合规率。关键是提前写好判定脚本,别事后人工数,人工数的时候你会不自觉地放水。

写作、问答、代码、咨询这类开放任务,自动指标基本失效,改用分维度打分:正确性、完整性、可执行性、是否编造。每个维度给三档描述,两个以上的人独立打,把分歧项单独拎出来复盘。

客观任务
能写成脚本判定的,优先用脚本,避免人工介入
开放任务
分维度打档,多人独立评,分歧项复盘
成本与延迟
同样的活儿花了多少token、等了多少秒,这条永远要记
单价核对
到 /official-api 看当时的数字,别用记忆里的价

第三步:样本怎么切才有代表性

从真实业务里抽题,不要用自己临时想的例子。一个可行做法是翻最近一段时间的工单、日志或聊天记录,脱敏后挑出高频场景,每类场景保证有若干条。样本量按差异预期来定:如果两个候选实力接近,题量太少根本分不出来,这时候要么加题量,要么承认这次分不出差异,比强行下结论靠谱。

  1. 抽题从真实工单/日志脱敏后挑高频场景,每类留几条,标注预期答案
  2. 切分把题目和答案拆开保存,评测人只看题目;留一份带干扰项的版本
  3. 设对照放几条明显超纲的题和几条极简单的题,看硬编和低级翻车
  4. 记录每条题记下调用耗时、token消耗,和分数放同一张表里
  • 对照题里超纲的那几条,重点看模型会不会硬编答案
  • 极简单的那几条,看有没有低级翻车,这两类比平均分更能说明问题
  • 带干扰项的版本用来看模型会不会被无关信息带偏,知识库场景尤其关键
  • 样本量不够时,宁可写「本次未能区分」,也别硬凑结论

第四步:结果怎么读、怎么写成能用的结论

先看失败案例再看总分。把两边都答错的题挑出来,这类题往往说明任务本身定义不清,不是模型的锅;把一边答对一边答错的题单独列出来,这些才是区分度所在。同一题换个说法再跑一遍,如果结论翻转,说明这个差异不稳定,不要写进结论。

现象可能原因下一步动作
两边都答错任务定义不清或超纲改任务描述,别急着换模型
一边对一边错真正的能力差异换同义题复跑,确认是否稳定
分数接近但延迟差很多成本或负载问题到 /price-watch 核对当时的数字再定
同一题结论翻转差异不稳定不写进结论,标注为不确定项
  • 结论写成条件式:在什么任务、什么输入长度、什么成本约束下,A比B合适
  • 反过来也要写:在什么条件下B更合适,别只写单向结论
  • 给一个回退方案:换模型后表现不及预期时,退回原来那套的判断依据是什么
  • 把回退方案一起写进报告,省掉下次扯皮
下一步设计好实验后,可以去站内对照各家中转站的实测延迟和可用性,避免把中转波动误当成模型差异。

常见问题

只用一个提示词比多个模型,能算对比实验吗?

可以算初步摸底,但得不出可靠结论。单个样本的差异可能来自措辞巧合、生成随机性或者当时的负载。想让结论站得住,至少要有覆盖几类真实场景的一批题,并且同一题在不同模型上跑的口径完全一致。如果时间有限,与其多测几个模型,不如把题量加够。

人工打分主观性太强,有没有省事的替代?

分两条路:能自动判定的任务就用脚本判,提前写规则;不能自动判定的,就退一步只打粗粒度档位(可用/勉强/不可用),减少打分人的自由发挥空间。再让两个人独立打,只对分歧项讨论。比追求精细分数更重要的是把判定标准写清楚,别人拿着你的标准能复现。

测出来两个模型差不多,怎么定?

先确认是不是题量不够导致分不出来,可以补一批高难度题再跑。如果确实接近,就把决策权交给其他维度:成本、延迟、稳定性、许可证和部署方式。这几个维度往往有明确差距,不会都打平。可以到 /models 和 /benchmarks 查当时的可比数据,再结合自己的用量算一遍账。

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