Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

6.7 评估、不确定性与可信部署

前六节讲的都是「模型能做什么」。这一节讲怎么别被骗——这是全讲最实用的一节,也是把前面的内容收成工程判断的地方。

三件事会同时出错:基准是代理(6.7.1),一旦被当作目标就会被优化(Goodhart 定律,6.7.2);评测本身有方差(6.7.3),单次分数的含义远小于直觉;模型不知道自己不知道(6.7.4),于是会自信地编造。最后是把这些收进部署决策:成本、延迟、缓存、监控、回滚(6.7.5)。

6.7.1 基准谱系:四类评测各测什么

四类评测的定位与代表
类别 代表 判定方式 测什么 结构性问题
学科知识(多项选择) MMLU(2020,arXiv:2009.03300);GPQA(2023,arXiv:2311.12022);HLE(2025,arXiv:2501.14249) 选出正确选项 广覆盖的知识回忆与简单推理;难度从本科到博士生再到「人类最后的考试」 易被记住(答案空间小);易饱和(顶尖模型分数逼近上限后失去区分度);易污染(题面+答案在网上)
综合全景评测 HELM(2022,arXiv:2211.09110);BIG-bench(2022,arXiv:2206.04615) 多场景 × 多指标矩阵,而非单一分数 同一模型在数十个场景上的能力轮廓与公平性/鲁棒性/效率维度 计算成本高、维护负担重;规模大但每个场景覆盖浅
真实任务(执行式判定) SWE-bench(2023,arXiv:2310.06770);WebArena(2023,arXiv:2307.13854);OSWorld(2024,arXiv:2404.07972) 真实执行 + 隐藏测试 / 环境状态 长程任务、工具使用、代码修改(6.6.6) 测试覆盖不足可被绕过;环境依赖导致可复现性差;评测成本高
人类偏好 / LLM 裁判 Chatbot Arena(2024,arXiv:2403.04132);MT-Bench / LLM-as-a-Judge(2023,arXiv:2306.05685) 成对比较 → Elo / Bradley–Terry 排名;或强模型打分 主观质量(有用性、语气、格式)、真实用户分布下的偏好 位置偏差、长度偏差、风格偏好;裁判与被测模型同源时的自我偏好;可被「讨喜」策略优化
为什么必须同时看四类,而不能只看一类

它们的失效方向不同,因此互为对照:

  • 只看多项选择基准 → 高估知识与推理,低估长程执行与工具使用(一个模型可能背下所有考题却修不好一个 bug);
  • 只执行式任务 → 高估工程能力,看不到开放对话的质量与安全;
  • 只看人类偏好 → 高估语气与格式,因为偏好投票天然奖励「说得漂亮、写得长」;
  • 只看全景矩阵 → 看得最全,但每个格子都很浅,且维护成本高。

操作性结论:模型选型时至少覆盖三类——一个知识 / 推理类、一个真实任务类(若你的场景涉及工具或代码)、一个偏好 / 任务对齐类(在你的真实任务分布上)。单一榜单的第一名不能作为选型依据。

例 6.7.1 · 用四类基准给三个场景选型(对照表分析)

三个候选模型 A / B / C 的评测结果(示意数字,用于练习读法):

基准(类别) A B C
MMLU(知识) 87 88 82
GPQA(知识,研究生级) 62 48 40
SWE-bench(真实任务) 34 45 21
Arena Elo(偏好) 1240 1180 1210
平均输出 token 420 610 250
单价(相对) 1.0× 1.4× 0.5×

(a) 为「法律文书长文写作助手」选型;(b) 为「代码库自动化修 bug」选型;(c) 为「高并发客服分类」选型。分别说明理由与你需要追问的信息。

解

(a) 法律文书:偏好质量与知识可靠性最重要 → A(Arena 最高 1240、MMLU 最高档、输出长度适中)。B 的 Arena 较低且输出更长(410 token 差距在长文写作里直接放大成本);C 知识分明显偏低。追问:① Arena 的偏好是否在你的领域文本上成立(通用偏好不等于法律写作质量);② 是否有格式与引用规范遵循数据;③ 长文的事实一致性如何(6.7.4)。

(b) 代码修 bug:只有执行式判定与真实能力相关 → B(SWE-bench 45 明显领先,尽管 Arena 最低)。这里出现了一个关键教学点:A 在知识与偏好上都优于 B,但在唯一与代码修复因果相关的指标上落后 11 个百分点。若按「平均分」选,会选错。追问:① 你的代码库语言 / 框架是否在 SWE-bench 的分布内;② 该分数是否来自与你的仓库结构相近的任务;③ 工具与执行环境是否可用。

(c) 高并发客服分类:任务简单(分类)、成本与延迟优先 → C(0.5× 单价、250 token 输出)。知识分偏低在这里无关紧要——分类任务不需要研究生级物理知识。追问:① 在你的分类标签集上的实际准确率(不要用 MMLU 代替);② 每千次调用的成本与 P95 延迟;③ 是否存在类别不平衡与罕见类(6.7.3)。

三条结论(可迁移):

  1. 基准要跟任务匹配,不匹配的高分没有信息量(C 的 MMLU 低分不构成否决理由)。
  2. 看平均分会选错模型((b) 就是反例)。应按任务的评价函数加权。
  3. 成本是一等公民,不是事后折扣(输出 token 长度与单价必须进入决策表)。■\blacksquare
∎

6.7.2 基准污染与刷榜:机制与对策

定义 6.7.1 · 基准污染(benchmark contamination)与刷榜

数据污染(泄漏):评测题或与题目高度近似的内容出现在训练数据中,使模型「见过答案」而非「会做题」,导致分数系统性虚高。形态包括:

  • 直接泄漏:题面 + 答案原样出现在训练语料里(网页、题库、开源数据集、甚至模型的输出被回收成新语料);
  • 近似泄漏:改写了数字 / 人名但结构相同(模板化生成的题库最严重);
  • 间接泄漏:训练数据包含讨论该基准解题技巧的长文(模型学到的是「这类题的套路」)。

刷榜:针对特定基准做定向优化(调提示、加 few-shot 示例、多采样投票、甚至用基准的验证集做选择),使基准分数上升而真实分布外的能力未必提升。这是 Goodhart 定律在评测上的直接后果:代理一旦成为目标,就不再是好度量。

污染为什么「难以确知」——三层不可判定性
  1. 训练数据不公开。多数前沿模型的预训练语料不公开,外部无法验证某道题是否在其中。于是「没有污染」是一个无法被证明的论断,而不是一个可以被核实的事实。
  2. 近似污染无法用查重发现。精确匹配可以查(子串 / n-gram 比对),但「同一模板换了数字」在字面上看不出重叠——而它的危害与直接泄漏几乎相同(模型学到的是解题模式,不是能力)。
  3. 模型输出回流入语料。当模型生成的解题过程被发布在网络上,并被下一代模型的数据管线抓取时,污染自我增殖。这条路径与 6.2.3 的合成数据塌缩是同一结构。

因此:任何「SOTA」论断的第一句应当是污染控制声明,而不是分数本身。

污染与刷榜的六条对策(按可操作性排序)
对策 做法 能防住什么 局限
① 私有题集 自建、不公开的评测集,只发布聚合分数 直接泄漏、针对公开基准的刷榜 维护成本;随时间也会被间接泄漏(若模型见过类似讨论)
② 时间切分(temporal split) 只使用训练截止日期之后发布的题目 / 代码提交 直接泄漏(模型不可能见过未来) 需要模型方诚实公布数据截止;对「截止后不久」的样本仍可能有交叉
③ 动态 / 持续更新基准 定期换题(如按新代码提交、新事件出题) 刷榜、长周期污染 分数不可跨版本比较;需要配套的版本化记录
④ 可控扰动 / 对抗改写 对题目做等价改写(换数字、换实体、换表述) 近似泄漏与模板化记忆 改写可能改变难度,需做难度标定
⑤ 执行式判定 让答案必须通过真实执行(测试、环境状态) 记忆型作弊、部分规格博弈 覆盖度不足时可被绕过;成本高(6.6.6)
⑥ 报多个同类基准 同一能力测 3 个以上独立基准,报最差与方差 单基准过拟合 仍然无法排除共同污染源
关于评测的五条高频误读
  1. 「分数高说明能力强」:分数是能力 + 污染 + 针对性优化 + 评测方差的混合。四者必须分开讨论(本节全篇的主题)。
  2. 「我们自己没把测试集放进训练数据,所以没有污染」:污染的主要来源是间接与近似泄漏——网络上的题目讨论、模板改写、上一代模型输出的回流,都不是「主动放进」的。
  3. 「用公开榜单第一名最稳」:榜单排名会因提示格式、few-shot 数量、采样策略剧烈变化(6.7.3);且被刷榜的概率最高。在自己任务上的小规模对照实验比榜单可靠。
  4. 「换个更难的基准就能测出真实能力」:难度提升同时抬高了污染成本与验证成本。HLE 一类「最难基准」的题目本身可能需要人工核验答案正确性,否则会引入标注噪声。
  5. 「LLM-as-judge 就不用管方差了」:裁判模型本身有位置偏差、长度偏好与自我偏好,也会被被测模型「讨好」。它比人工便宜好几个数量级,但必须做偏差校正与人工抽样校验。

6.7.3 评测效度与方差

定义 6.7.2 · 评测效度与方差来源

效度(validity):评测是否真的测量了它声称测量的能力。方差:同一模型在重复评测中分数的波动幅度。

方差来源 具体表现 量级直觉
采样随机性 温度 > 0 时每次生成不同;分类任务可能翻转 小任务上可产生数个百分点差异
提示敏感性 改一个词、改标点、改示例顺序 → 分数变化 常见;few-shot 顺序的影响尤其明显
位置偏差 多项选择里正确答案的位置影响选择;长上下文里中段信息利用率低 与 6.1.6 的 lost-in-the-middle 同源
评测实现 答案抽取正则、是否允许思维链、是否 few-shot、max token 跨论文比较不可比的头号原因
种子 / 数据顺序 微调类的评测尤其敏感 需报多种子的均值与标准差

核心推论:报单次分数是不完整的报告。至少应给「均值 ± 标准差」与「评测配置」(提示模板、shot 数、温度、最大长度、抽取规则)。

为什么「几个百分点的差距」往往不可解释

设某基准的评测有两处独立方差来源(采样 + 提示),各贡献约 1.5 个百分点的标准差,则合成标准差约 1.52+1.52≈2.1\sqrt{1.5^2+1.5^2}\approx2.1 个百分点。两个模型 A、B 的分数差为 3 个百分点:

  • 若按「均值 ± 2 倍标准差」的粗略区间,A 与 B 的置信区间大面积重叠;
  • 于是「A 比 B 强」在统计上尚不成立——只能说「在本次配置下 A 的分数更高」。

这就是为什么严肃的评测报告会给配对比较(同一批题目上逐题比较 + 显著性检验),而不是两个独立平均值。逐题配对能大幅降低方差(因为题目难度这一主要噪声被抵消了),这也是「同一批题上的胜率」比「平均分差」更有信息量的原因。

例 6.7.3 · 逐题配对比较 vs 独立均值比较

两个模型在 100 道题上的结果(示意):

都答对 只有 A 对 只有 B 对 都答错
题数 55 18 9 18

(a) 求 A、B 的总准确率与差值。 (b) 求「在至少一个模型答对的题上,A 的胜率」(配对口径)。 (c) 说明两个口径为什么给出不同的结论强度。

解

(a) A=55+18100=73%A=\dfrac{55+18}{100}=73\%,B=55+9100=64%B=\dfrac{55+9}{100}=64\%,差 9 个百分点。

(b) 至少一个对的题数 =55+18+9=82=55+18+9=82。A 的胜率 =55+1882=7382≈89.0%=\dfrac{55+18}{82}=\dfrac{73}{82}\approx89.0\%。

(等价地:在分歧题(18+9=2718+9=27 道)中 A 赢 18、B 赢 9,A 的分歧胜率 =18/27≈66.7%=18/27\approx66.7\%;两种口径都显著偏向 A。)

(c) 两个口径的差别在于噪声的处理方式:

  • 独立均值:73% 与 64% 各自包含了「题目难度」这一大噪声(换一套题,两个数字可能同时上下浮动 5 个点)。因此 9 个点的差距里,有多少来自模型、多少来自题目抽样,无法分离。
  • 配对口径:只看两个模型表现不同的题(27 道),题目难度被抵消。A 在其中赢 18 道,用二项检验判断「18/27 是否显著偏离 50%」:p≈0.043p\approx0.043(单尾),在 5% 水平上刚刚显著。

结论:配对比较能在同样的数据量下给出更强的结论——这是评测设计的直接操作建议:与其扩大题目数量,不如让所有候选模型跑同一批题并逐题比较。

必须补充的限制:① 配对比较只回答「在这批题上谁更好」,不回答「在真实用途上谁更好」;② 分组设计(每道题都属于某个能力类别)后,应检查优势是否集中在某一类题型上——如果 A 的全部优势来自数学题,而你的任务不涉及数学,这个结论对你无用。■\blacksquare

∎

6.7.4 不确定性:校准、选择性预测与拒答

定义 6.7.3 · 校准与选择性预测

校准(calibration):模型输出的置信度与实际正确率是否一致。完美校准指:在置信度为 pp 的样本集合中,正确率恰为 pp。常用度量:

  • ECE(expected calibration error):把样本按置信度分箱,计算 ∣准确率−平均置信度∣|\text{准确率}-\text{平均置信度}| 的加权平均;
  • 可靠性图(reliability diagram):横轴置信度、纵轴实际准确率的曲线(完美校准是对角线)。

选择性预测(selective prediction / 弃答):允许模型在低置信时拒绝作答,只对(置信度高于阈值 τ\tau 的)子集回答。用两个指标刻画:覆盖率(作答比例)与风险(作答子集上的错误率)。二者构成一条风险—覆盖曲线。

为什么语言模型的校准这么差

三个结构性原因:

  1. 训练目标里没有「不确定性」。模型被训练去预测下一个 token 的分布,而这个分布表达的是「语料里下一个词是什么」,不是「我知道答案吗」。这两件事完全不同:一个高频但错误的说法可以有很高概率。
  2. RLHF 会破坏校准。偏好对齐让模型更「自信、有帮助」,而人类偏好数据里通常缺少「我不确定」的样例——于是过度自信被奖励。有研究报告 RLHF 后的模型校准变差(这类证据需按具体模型与协议核对,不宜当作普遍结论)。
  3. 没有弃答通道。即便模型内部「感觉不确定」,输出分布里也常常没有「拒绝」这个选项被充分训练过(除非专门做过弃答训练)。

可操作的对策(按性价比排序):

  • 显式给弃答出口:在提示与训练数据里都提供「信息不足 / 需要澄清」的选项;
  • 用多采样的一致性做置信度代理:多次采样的答案若分歧很大,说明不可靠(这正是 6.3.2 自洽性的反向用法:一致性当置信度);
  • 检索接地与外部验证:把「有据可依」变成可检查的条件(6.7.5 的监控项);
  • 温度 / 阈值后处理:温度缩放(temperature scaling)是简单有效的校准后处理,但需要留出校准集。
例 6.7.4 · 手算 ECE 与选择性预测的收益

某模型在 200 道题上给出置信度,按置信度分三箱:

置信度箱 样本数 平均置信度 实际准确率
[0.5,0.7)[0.5,0.7) 40 0.60 0.45
[0.7,0.9)[0.7,0.9) 100 0.80 0.72
[0.9,1.0][0.9,1.0] 60 0.95 0.90

(a) 计算 ECE(按样本数加权)。 (b) 若阈值 τ=0.9\tau=0.9(只作答第 3 箱),求覆盖率与作答子集错误率。 (c) 若阈值 τ=0.7\tau=0.7,求覆盖率与错误率,并说明「弃答策略」怎么选。

解

(a) 逐箱偏差 ∣acc−conf∣|\text{acc}-\text{conf}|:箱 1 =∣0.45−0.60∣=0.15=|0.45-0.60|=0.15;箱 2 =∣0.72−0.80∣=0.08=|0.72-0.80|=0.08;箱 3 =∣0.90−0.95∣=0.05=|0.90-0.95|=0.05。

ECE=40200(0.15)+100200(0.08)+60200(0.05)=0.2×0.15+0.5×0.08+0.3×0.05=0.030+0.040+0.015=0.085.\mathrm{ECE}=\frac{40}{200}(0.15)+\frac{100}{200}(0.08)+\frac{60}{200}(0.05)=0.2\times0.15+0.5\times0.08+0.3\times0.05=0.030+0.040+0.015=0.085 .

即平均偏差 8.5 个百分点——模型系统性过度自信(每一箱的实际准确率都低于声称的置信度)。

(b) τ=0.9\tau=0.9:覆盖率 =60/200=30%=60/200=30\%,作答子集的错误率 =1−0.90=10%=1-0.90=10\%。

(c) τ=0.7\tau=0.7:覆盖率 =(100+60)/200=80%=(100+60)/200=80\%,子集错误率 =100×(1−0.72)+60×(1−0.90)160=28+6160=21.25%=\dfrac{100\times(1-0.72)+60\times(1-0.90)}{160}=\dfrac{28+6}{160}=21.25\%。

阈值 覆盖率 错误率
τ=0.9\tau=0.9 30% 10.0%
τ=0.7\tau=0.7 80% 21.25%
τ=0.5\tau=0.5 100% 1−0.73=27.0%1-0.73=27.0\%(全量准确率 =(40×0.45+100×0.72+60×0.90)/200=0.73=(40\times0.45+100\times0.72+60\times0.90)/200=0.73)

怎么选阈值:这是业务决策,取决于两类错误的成本比。例如:

  • 场景 1(自动回复):错误代价低于人工成本 → 选低阈值(τ=0.5\tau=0.5 或更低),把弃答留给真正不确定的少数;
  • 场景 2(医疗 / 法律建议):错误代价极高 → 选高阈值(τ=0.9\tau=0.9 或更高),宁可把 70% 的请求转人工——此时弃答率就是人力成本的预算;
  • 场景 3(人机协作):低置信样本转人工审阅 → 目标是最小化「总成本 = 自动处理成本 + 人工处理成本 + 错误代价」,由三个参数联合决定阈值。

注意:ECE 与风险—覆盖曲线都必须在留出的校准集上算,且要报告校准集的分布是否与真实流量一致——在测试集上校准、在真实分布上部署,是常见且隐蔽的失误。■\blacksquare

∎

6.7.5 部署:成本、延迟、缓存、监控、回滚

部署五件事(一张清单)
项 关键问题 常用手段 必须记录的指标
成本 每次调用的 token 消耗 × 单价;长系统提示与长思维链是主要放大器 提示精简、前缀缓存复用、小模型分流(难例才上大模型 / 长 CoT)、批处理 每千次调用成本、按功能拆分的成本占比、成本 P95
延迟 用户可感知的是首 token 时间与完整生成时间(6.1.7) 前缀缓存、流式输出、更小的模型 / 更短的输出上限、并行工具调用 首 token P50/P95、完整响应 P95、超时率
缓存 重复请求(相同系统提示、相同文档、相同问题)占比通常很高 前缀缓存(KV 复用)+ 结果缓存(精确 / 语义);注意把易变内容放在 prompt 末尾 命中率、缓存带来的成本节省、缓存失效策略
监控 线上分布会漂移(用户变了、数据源变了、上游模型版本变了) 输入分布统计、拒答率、解析失败率、工具调用失败率、抽样人工评审 每日抽样评审的准确率、拒答率趋势、解析失败率
回滚 出新版本必须有退路 版本化提示与模型配置、影子流量(shadow)、金丝雀发布、一键切换 发布前后的指标对比、回滚耗时
为什么「缓存」是部署里回报最高的一步

推理请求里有大量结构重复:同一个系统提示、同一份长文档、同一批固定指令。把这些稳定的前缀做成可复用的 KV cache,能同时改善三个指标——成本(不重复计算)、首 token 延迟(跳过 prefill)、吞吐(共享前缀的请求可批处理)。

唯一的实现纪律是顺序:稳定内容放前面,易变内容放后面。如果把用户问题放在系统提示之前,缓存命中率会掉到接近零。这一条与 6.1.6 的长上下文讨论是同一个工程事实——缓存友好性是一种必须主动设计的结构。

第二高的回报通常是模型分流:把请求按难度分层(规则 / 小模型先判 / 置信度阈值),只把难例送进大模型或长思维链。这与 6.3.3 的「按难度分配测试时算力」是同一个策略,只是把决策点放到了系统层。

上线前必须回答的六个问题
  1. 我的评价函数是什么?(不是「准确率」,而是「哪类错误代价多大」——例 6.7.4 的阈值选择依赖它。)
  2. 评测集是怎么来的、有没有污染? 是否与训练数据做了去重比对?是否用了时间切分?(6.7.2)
  3. 分数的不确定度多大? 报了方差与配置吗?换一套提示会不会翻盘?(6.7.3)
  4. 低置信时系统做什么? 有弃答通道吗?转人工的路径通不通?(6.7.4)
  5. 成本与延迟的 P95 是多少? 在峰值流量下还成立吗(6.7.5)?
  6. 出事怎么回滚? 有版本化配置与一键切换吗?监控能不能在用户投诉之前发现问题?

这六个问题的答案应当写进上线文档,而不是存在工程师的脑子里。 它们构成了一份可交接、可审计的部署基线。

部署环节的四条常见误读
  1. 「离线分高就能上线」:离线评测与线上分布常有系统性差异(用户会问你没测过的类型、上游数据会变)。必须做影子流量或金丝雀发布,用线上指标验证。
  2. 「成本估算按平均 token 数算」:应按P95 / 长尾估算。长系统提示、长文档、长思维链都会让长尾成本远高于均值,预算按均值做会超支。
  3. 「监控看准确率就够了」:更要看分布与行为指标——拒答率、解析失败率、工具调用失败率、输入长度分布。准确率下降是结果,行为指标是早期信号。
  4. 「回滚就是切回旧权重」:提示模板、工具 schema、检索库、阈值参数、模型版本共同构成系统状态,任一项变更都需要版本化。只回滚模型而保留新提示,常常无法恢复旧行为。
即时自测 · 6.7

Q1 四类评测(知识多项选择 / 全景矩阵 / 真实任务执行 / 人类偏好)分别最容易被什么方式灌水?各给一条对策。

Q2 为什么「我们的评测集没有放进训练数据」不能证明没有污染?给出两条真实的污染路径。

Q3 两个模型在某基准上的平均分差为 3 个百分点。列出至少三个你必须追问的配置项,并说明为什么「逐题配对比较」比「两个平均分相减」更可靠。

Q4 某模型的 ECE 为 0.08。这说明什么、不说明什么?如果你要把弃答线设在 0.9,需要先做哪一步?

Q5 你的服务把系统提示(2000 token)放在用户问题之后。会出什么问题?改法是什么?

Q6 上线三个月后,人工抽检发现质量下滑,但离线评测分数没有变化。列出三个可能的解释与各自的排查手段。

参考要点

Q1 ① 知识多项选择:污染与记忆——对策是私有题集 + 时间切分(6.7.2);② 全景矩阵:选择性报告(只报自己强的格子)——对策是要求报全部场景与最差项;③ 真实任务执行:绕过测试(写死期望值、跳过边界)——对策是扩展隐藏测试、检查补丁是否修根因;④ 人类偏好 / LLM 裁判:讨好策略(更长更谄媚的输出)——对策是长度归一化、做位置与长度偏差校正、人工抽样校验。

Q2 因为污染的主要来源是间接与近似泄漏,不是「主动把测试集放进数据」:① 近似泄漏——题库被模板改写(换数字、换人名)后散落在网络上,字面上查重查不出来;② 讨论类泄漏——训练语料包含讲解该基准解法技巧的长文,模型学到「套路」;③ 输出回流——上一代模型生成的解题过程被发布在网络上并被下一代数据管线抓取,污染自我增殖。任何一条都不需要有人主动泄露。

Q3 必须追问的配置项(任答三个):① 提示模板与 few-shot 数量(0-shot 与 5-shot 差距可以很大);② 是否允许思维链 / 最大生成长度;③ 答案抽取规则(正则、是否要求格式、是否人工核对);④ 采样温度与是否多次采样投票;⑤ 评测集版本与去重策略。逐题配对更可靠的原因:平均分相减包含「题目难度抽样」这一大噪声,而配对比较只在两个模型表现不同的题上比较,难度被抵消,因此在同样题量下统计功效更高(例 6.7.3);配合显著性检验才能谈「谁更好」。

Q4 说明:模型系统性过度自信——在被分成高置信的样本里,实际准确率平均比声称的置信度低约 8 个百分点;也说明置信度可以作为排序信号(高置信箱的实际准确率确实更高:0.90 > 0.72 > 0.45)。不说明:① 分数本身是否在所有分布上都成立(校准依分布而变,换域名可能失效);② 模型是否具备「知道自己不知道」的能力(过度自信恰恰说明校准未内化)。设 0.9 阈值前必须做的:在留出的、且与真实流量分布一致的校准集上重新计算该阈值对应的覆盖率与错误率(不能直接用测试集结果),并确认业务能接受对应的转人工比例与成本(例 6.7.4)。

Q5 问题:前缀缓存无法命中——用户问题(易变)在前面,系统提示(稳定)在后面,导致每次请求的 KV 前缀都不同,缓存收益几乎归零;同时长提示在每个请求上都要重新 prefill,首 token 延迟与成本都显著上升。改法:把稳定内容(系统提示、固定文档、工具 schema)放在最前,易变内容(用户问题、时间戳、会话 ID)放在最后;并检查请求里是否混入了随机排列的字段。若还需进一步的收益,可把不常变的候选样例也纳入缓存前缀。

Q6 三个可能解释与排查:① 输入分布漂移——用户开始问新类型的问题。排查:对比三个月前与现在的输入长度分布、主题分布、拒答率;对新增主题做小规模人工标注评测。② 上游组件退化——检索库过期、工具 API 变更、模型提供方静默升级了版本。排查:查检索命中率与相关性、工具调用失败率与返回格式、记录并固定模型版本号(否则无法归因)。③ 离线评测饱和或污染——评测集已被反复用于调参(对评测集过拟合),或训练数据里混入了评测相关内容。排查:换一套时间切分后的私有题集重测;检查提示模板是否长期针对该评测调过。④(附加)系统配置漂移:提示模板、阈值、缓存策略在三个月内被改过但未记录。排查:配置版本化与变更日志。

延伸阅读
  • Hendrycks et al., Measuring Massive Multitask Language Understanding(MMLU,2020,arXiv:2009.03300)——知识型多项选择基准的奠基工作。
  • Rein et al., GPQA: A Graduate-Level Google-Proof Q&A Benchmark(2023,arXiv:2311.12022)——研究生级知识与防检索设计。
  • Phan et al., Humanity's Last Exam(HLE,2025,arXiv:2501.14249)——难度上探的代表,注意其答案核验成本。
  • Liang et al., Holistic Evaluation of Language Models(HELM,2022,arXiv:2211.09110)——多场景矩阵评测的方法论来源,6.7.1 的「能力轮廓」观点出处。
  • Srivastava et al., Beyond the Imitation Game(BIG-bench,2022,arXiv:2206.04615)——大规模任务集与涌现现象的观测来源(与 6.2.4 共用)。
  • Jimenez et al., SWE-bench: Can Language Models Resolve Real-World GitHub Issues?(2023,arXiv:2310.06770)——执行式判定基准(与 6.6.6 共用)。
  • Chiang et al., Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference(2024,arXiv:2403.04132)——人类盲测与 Elo 排名的方法学讨论。
  • Zheng et al., Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena(2023,arXiv:2306.05685)——LLM 裁判的偏差分析(位置偏差、自我偏好),本节的直接依据。
  • Sainz et al., NLP Evaluation in Trouble: On the Need to Measure LLM Data Contamination for Each Benchmark(2023,arXiv:2310.18018)——污染问题的系统讨论。
  • Zhang et al., Rethinking Benchmark and Contamination for Language Models with Rephrased Samples(2023,arXiv:2311.04850)——改写样本造成的污染,6.7.2 中「近似泄漏」的引用依据。
  • Zhang et al., GSM1k: A Benchmark for Measuring the Generalization of Math Reasoning(2024,arXiv:2405.00332)——通过题目扰动揭示记忆与泛化的差别。
  • Jain et al., LiveCodeBench: Holistic and Contamination Free Evaluation of Large Language Models for Code(2024,arXiv:2403.07974)与 White et al., LiveBench: A Challenging, Contamination-Free LLM Benchmark(2024,arXiv:2406.19314)——时间切分 + 持续更新两类对策的代表实现。
  • Guo et al., On Calibration of Modern Neural Networks(2017,arXiv:1706.04599)——校准与温度缩放、ECE 的经典参考。
  • Kadavath et al., Language Models (Mostly) Know What They Know(2022,arXiv:2207.05221)——模型自评与「知道自己不知道」能力的证据与限度(注意其结论有具体实验条件)。
  • Pineau et al., Improving Reproducibility in Machine Learning Research(2018,arXiv:1810.03993)与 ML Reproducibility Checklist——报告纪律的规范来源(种子、配置、硬件、方差)。
  • 工具:lm-evaluation-harness(亲手跑一次评测,体会配置项如何改变分数)、HELM(多场景矩阵)、vLLM(前缀缓存与 PagedAttention 的工程实现,6.7.5 的对应物)。

6.7.6 把前三小节收成一张工程判断表

从「看到分数」到「做出决策」的四道闸门
闸门 问什么 不合格时的处理
① 匹配性 这个基准测的能力,与我的任务因果相关吗? 换基准或自建小测集(例 6.7.1 的 (b) 就是反例)
② 污染 题面 / 答案 / 近似题是否可能进了训练数据?是否做了时间切分? 用私有题集或时间切分后重测(6.7.2)
③ 稳定性 报的是单次分数还是均值±方差?换提示会翻盘吗? 用配对比较 + 多次重复 + 多种提示(6.7.3)
④ 可用性 成本、延迟的 P95 是否可接受?低置信时系统做什么?能否回滚? 先解决部署项,再谈能力(6.7.4–6.7.5)

使用方式:任何关于「某模型更好」的主张,逐条走这四道闸门;有任意一道无法通过,该主张就还不能作为决策依据——它只是一个待验证的观测。

为什么这四道闸门的顺序不能换

① 与 ② 决定「这个数字是否有意义」,③ 决定「这个差异是否可信」,④ 决定「这个系统是否能上」。如果先跳到 ④(先算成本),可能会在一个根本不该用的基准上做精细的成本优化——这是极常见的资源浪费:团队花两周优化「在错误指标上领先 2 个点」的模型。

同理,如果跳过 ② 而直接做 ③ 的重复实验,你会得到一个稳定但虚高的分数(污染是系统性的,不会因为重复而消失)——「多次重复」只会提高你对该错误结论的置信度。先验伪,再精炼。

本节小结:评测的四类形态各有失效方向,要看组合而不是单榜(6.7.1);污染有直接 / 近似 / 间接三条路径,且「没有污染」无法被证明,只能用私有题集、时间切分、动态更新、扰动改写、执行式判定、多基准并行来降低风险(6.7.2);评测方差足以吃掉几个百分点的差距,报均值±方差与配置、用配对比较是硬要求(6.7.3);模型系统性过度自信,因此需要弃答通道 + 阈值决策,而阈值是业务决策(6.7.4);部署的五件事里,缓存与分流回报最高,监控看行为指标,回滚要版本化整个系统状态(6.7.5);最后用四道闸门(匹配性 → 污染 → 稳定性 → 可用性)把分数翻译成决策(6.7.6)。

本讲到此结束。它比前五讲更贴近正在进行的研究,因此也就更需要这套纪律:看到的每一个数字,都要先问它是在什么条件下、用什么口径得到的。