接着前面几篇说。01 讲了非确定性、03 讲了过程分,这第 5 篇专门聊一件事:多模态模型到底该怎么跑多次才算数,多轮会话怎么跑也一起说了。为什么单聊这个?因为多模态模型它自己就「不稳」,同一个 prompt 出三张不一样的图,同一张图问两遍能给你两个答案。后面还有两篇会落到安全和闭环(06、07)。
跑一次能过,连跑三次未必
多模态模型大多带随机性。文生图同一个 prompt 出三张不同的图;VLM 同一张图问两次可能给两个答案,尤其边界样本。
单次 pass/fail 会骗人:跑一次成功,可能是稳定成功,也可能只是这次运气好。运气好和次次都过,在单次结果上长得一模一样。
所以多模态评测不能只跑一次,得按多次运行的口径来。具体怎么分,下面一节一节说,多轮会话我单独放第三节。
动手前,先看清楚有哪几类口径
在动手评之前,先想清楚你要看的是哪类口径。我把它拆成六档,谁也替不了谁,各有盲区、得叠着报。
- 单次:能发现偶发错,发现不了稳定性。它是起点,但别当验收。
- k 次取最好:能发现能力上限,发现不了一致性。选型时用它看潜力。
- k 次全过:能发现一致性,发现不了业务效果。门禁用它看可靠。
- 方差/区间:能发现波动,发现不了原因。分析波动来源时用。
- 温度扫描:能发现过拟合温度,发现不了泛化。调参时用,别当主口径。
- 多轮会话:能发现误差累积,发现不了单轮归因。有会话形态的产品用它看真实体验。
按你现在处在哪个阶段来对号入座,从那一档往下逐档加,后面会告诉你前面哪些指标得留着。
多模态稳定性口径,一句话:pass@k 看能力上限,pass^k 看一致性;用户只经历一次,所以验收门禁首选 pass^k。成本扛不住 k 次全过时,可以用 pass@k 加单轮门槛的混合口径,但要把取舍写清楚,别默认全上。有多轮会话的产品再往上换成会话级。多次跑不是发明,差别在口径本身,以及判据自己会不会也在抖(01 篇第四节讲过)。
一、生成随机性来自温度
文生图和 VLM 采样都吃采样参数的影响,温度只是其中一个,top-p、top-k 也左右随机性;框架本身的非确定性算子还会掺进来抖一抖。温度高,图多样但可能跑偏;温度低,稳但可能保守。同一个 prompt,0.7 和 1.0 出的图能差很远。
所以报分一定写清楚温度,不写谁都看不懂你这分怎么来的。调参时做温度扫描,看模型在哪个温度区间最稳,别只报一个温度下的分。
坑是过拟合温度:在某一个温度下调到最好,换个温度就崩。温度扫描能暴露这种脆弱。
平时报分就用业务实际跑的温度;扫描时取 0.2 / 0.7 / 1.0 三档够用。前提是图得先过关(CLIPScore 或人工判合格),在这个前提下挑 pass^k 最高、方差最小的那档当线上温度,记到评测报告里。但别为了刷高 pass^k 把温度压到 0,图是稳了,质量和多样性都牺牲了。
二、pass@k 与 pass^k 的区别
pass@k 是 k 次里至少成功一次,测能力上限,允许试错。pass^k 是 k 次全部成功,测一致性,等价于生产里用户连着用 k 次都顺利。
两个不是一回事。一个生成模型 pass@3 可能 90%(三次里有一张好看),但 pass^3 可能只有 15%(三张全好看很难);从 pass@3=90% 反推单次成功率约 53.6%,独立假设下 pass^3 本应约 15.4%,两个口径的落差就是能力上限与一致性的差距。生产要的是后者。
有件事得先讲明白:在每次运行独立采样的假设下,pass^k 严格等于单次成功率的 k 次方(p^k),这是概率恒等式,本身不表示模型「稳定」。pass^k 之所以能当一致性指标,是因为多模态采样近似独立、且任务间难度异质(易题次次过、难题次次挂),此时 pass^k 由难样本决定、比 p^k 衰减慢,才携带稳定性信息。若固定随机种子重复运行,pass^k 会退化为 pass@1,反而测不到方差。
给你个大致水位参考(对照 MMMU、SEED-Bench 这些公开基准的常见水平,不是精确实测):VLM 类任务单次成功率一般在 60% 左右。如果每次都独立,连跑 8 次全过的理论值就是 0.6 的 8 次方约 1.7%,但实测常看到 20% 到 30%。差在哪?pass^k 不等于单次成功率的 k 次方:容易的题次次过、难的题次次挂,各题不独立,所以 pass^k 由难样本决定,比 p^k 衰减慢得多。具体数以你家任务为准,这里只是量级提示。
三、多轮会话:按会话跑 k 次,别按轮次跑
前面讲的都是单轮任务。产品里真正常见的是多轮:上一轮出的图进下一轮,用户边看边改。多轮下随机性会累积,口径也得跟着换。
案例:电商商品图三轮改图
脱敏过的真实场景,用户要一张商品主图,三轮对话:
三轮单看都不算差,最低也有 61%。把整条会话当一次任务,跑 5 条完整会话要求三轮全部达标,实测只有 34%(注:本案例仅 n=5,置信区间宽到约 ±40 点,34% 属示意量级;要坐实误差传播需 ≥30 条会话并附 bootstrap 区间)。
按独立假设三轮相乘是 88% × 76% × 61% ≈ 41%,实测还低了约 7 个点。低的那一段就是误差传播:T1 出的鞋稍微歪一点,T2 在歪的基础上改色,T3 又接着换背景,越往后越难回到正轨。这一段单轮口径永远看不到。
所以只报最后一轮的 61%,等于把真实体验的 34% 高估了 27 个点;只报"跑一次成功",高估得更多。
为什么不按轮次跑
多轮的直觉做法是每轮各跑 k 次,取该轮的最好或全过。这条路走不通,两个原因。
一是组合爆炸:三轮每轮 5 次,路径是 5 × 5 × 5 = 125 条、375 次生成调用;会话级只要 5 条会话、15 次调用,成本差 25 倍。而且那 125 条里绝大多数路径在真实对话里不会出现,用户是顺序往下走的,不会先枚举五种鞋再改色。
二是重跑会破坏上下文:同一条会话跑 5 次,第二次的 T1 结果和第一次不同,T2 的输入就跟着变了,后续轮全部受影响。所以第 3 轮的方差天然大于第 1 轮,这是结构性的,不是 bug。
多轮要报两个分:逐轮分与终局分
多轮有两种判法,建议都报:逐轮分看每轮有没有达成该轮的显式要求,终局分只看最后那张图是否满足前面累计的全部要求。
逐轮低而终局高,别直接记满分,用户为那几次绕路付了时间。逐轮高而终局低是多轮特有的病,单轮评测一条都测不出来。
VLM 多轮同理,重灾区在指代:上一轮问"左边那个人穿什么颜色",下一轮问"他旁边是什么"。某次脱敏复盘中三轮单轮 pass^5 分别 85%、80%、78%,会话级实测 52%(独立相乘约 53%,二者几乎相等,说明本例误差传播可忽略);但末轮单轮有 78% 的人会误以为整条会话也这么稳,实际会话级只有 52%,被高估了 26 个点,问题就出在跨轮指代消解。注意本例 n 很小,52% 与 53% 都只是示意量级。
会话级 pass^k 是用户真实体验的那一个数:单轮全过不等于整条会话走得通,重跑会话会放大后续轮的方差,所以多轮产品要把主口径换成会话级,逐轮分与终局分并排报。
四、一致性当过滤器
多次跑还有个顺手的事:拿一致率当置信度过滤器。同一题跑三次答案一致,大概率是稳的;三次各异,大概率是边界样本,标出来人工复核。
注意一致性不等于正确性(03 篇讲过):一致地错也是一致。所以一致率低要复核,一致率高也不自动采信,只是优先级低。
可用做法是把三轮一致率进报告,和 pass^k 并排,让稳定性自己现形。
五、图像生成没有唯一答案
文生图没有标准答案,没法像 VQA 那样直接判对错。判法得三路一起上:分布比对(FID 看接近真实分布)、语义对齐(CLIPScore)、再人工抽检。
所以图像生成的 pass^k 要重新定义:三张都达到可用门槛才算过,而非要求三张都正确。门槛建议写清,例如人工三方打分制取 2 分以上,或裁判模型判合格且 CLIPScore ≥ 0.75(这是工程建议值,非业界标准),不然没法比。
多样性也要管:同温度下三次采样高度雷同,是一致性高、多样性低(趋同),不等于分布级的 mode collapse;需跨种子看整体分布才能下 mode collapse 结论。要同时报一致性和多样性,一致高多样低与一致低多样高都要管,只看一个会误判。
六、口径怎么落地
每个任务跑 k 次(k 取 3 到 8,按耗时定),同时报 pass@k 和 pass^k,不只用单次分。方差报每个任务 k 次得分的标准差,集子层面报中位标准差;样本少时改用极差或 bootstrap 置信区间,别只报一个平均数。
多轮产品把「一条完整会话」当成最小任务单位。会话级 pass^k 至少要 30 条会话才有统计意义(n=5 时置信区间宽到 ±40 点,得出的 34%、52% 只是示意量级,不能当误差传播证据);每条会话跑 k 次(k 取 3 到 8),报会话级 pass^k 并附 bootstrap 置信区间。逐轮分与终局分都留着,别拿最后一轮的单轮分当验收。
pass^k 单次下滑超 10 个百分点,先出来源归因再动模型。波动来源分三侧,按顺序归,别一上来就骂模型:
| | | |
|---|
| | 固定随机种子、统一镜像只是隔离环境噪声的诊断步骤;确认后得放开种子做多次独立采样,不然测不到模型方差 | |
| | | |
| | | |
三侧里只有模型侧真要动算法:先固定环境、再验判据,最后才翻轨迹看模型(判据抖动会被算成模型抖动)。
跟已有的四件套(评测集、评分卡、裁判、难负)接上:流水线里加 k 次重复和方差采集,评分卡加一致性那一列,门禁用 pass^k 设门槛。
一句话收尾
多模态模型天生会抖:同一 prompt 出三张不同的图,同一张图问两次给两个答案。你的评测里,现在报的是跑一次的分,还是连跑 k 次都稳的分?多轮产品还要再问一句:整条会话连跑 5 次,走得通几回?
英文术语释义
- 非确定性(non-determinism):同一输入不同运行产生不同输出。
- 温度(temperature):采样随机性参数,高则多样低则稳定。
- pass@k:k 次运行至少一次成功的概率,测能力上限。
- pass^k:k 次运行全部成功的概率,测一致性。
- FID(Fréchet Inception Distance):分布间距离,越低越接近真实分布。
- CLIPScore:图文语义对齐分,越高语义越贴合。
- 会话级通过率(session-level pass^k):整条多轮会话所有轮次都达标才算一次通过。
- 误差传播(error propagation):上一轮的偏差被下一轮继承并逐级放大。
- 方差归因(variance attribution):判断波动来自环境、判据还是模型。