2. 评估的 5W1H:何时、何地、给谁、为什么评估

如果只读一节:评估前先回答 6 个问题,80% 的无效评估死于没问清"为什么评估"和"评估什么"。每个 W 都有真实翻车故事——本节把它们挨个讲完。

2.1 本章目标与读者

读完后你能:

前置知识:读完第 1 章。本章会讲到模型训练的几个阶段,每个术语首次出现时都配前端类比,不需要 ML 背景。

2.2 评估在 LLM 全生命周期中的位置

第 1 章的基准史讲的是"评估什么";这一节讲"评估发生在哪"。LLM 从一堆文本到一个可用的产品,要经过一条流水线,评估在这条流水线上至少挂载 8 次。先补齐 4 个训练术语(首次出现,前端类比先行):

flowchart TB
    PT["① 预训练<br/>评 val loss / 困惑度<br/>每个 checkpoint 一次"] --> MT["② 中期训练<br/>小规模能力探针<br/>每 1-2% 训练进度抽测"]
    MT --> SFT["③ SFT 微调<br/>通用能力回归测试<br/>每个 checkpoint 一次"]
    SFT --> RLHF["④ RLHF 训练<br/>监控 RM 分数分布<br/>训练中持续"]
    RLHF --> RM["⑤ RM 评估<br/>偏好判断准确率<br/>RM 训完后专项评"]
    RM --> SEC["⑥ 发布前安全评估<br/>红队攻防 + 拒绝率<br/>每个候选版本全量"]
    SEC --> SEL["⑦ 模型选型<br/>自建小评估集横向对比<br/>选型期一次性"]
    SEL --> APP["⑧ 应用层 CI 评估<br/>业务 eval 集 + LLM-as-Judge<br/>每次改 prompt / 模型 / RAG"]
    APP --> PROD["⑨ 生产监控<br/>用户反馈 + A/B + 人工抽检<br/>持续"]

图里的 checkpoint 指训练过程的存档点——训练每隔一段时间把模型参数存一份,评估就跟着存档点跑。每个调用点的频率、规模与决策影响:

调用点评估什么频率规模量级支撑的决策
① 预训练val loss / 困惑度每个 checkpoint数十亿到万亿 token 的留出流片学习率、数据配比、是否提前终止
② 中期训练数百到数千题能力探针每 1-2% 训练进度小题集快测数据混合权重
③ SFT通用能力回归每个 checkpointMMLU 级 1.4 万题或其子集是否回滚某个数据批次
④ RLHF 内部RM 分数分布每个 batch近乎免费(一次前向传播)训练稳定性参数、reward hacking 报警
⑤ RM 评估偏好判断准确率RM 训完后约 3000 组偏好对(RewardBench)选哪个 RM 进入训练循环
⑥ 发布前安全红队攻防、拒绝率每个候选版本数千条对抗 prompt是否允许发布(不可逆决策)
⑦ 模型选型业务小评估集选型期100-1000 条业务样本选哪个供应商
⑧ 应用层 CIprompt / RAG / 工具链回归每次变更100-1000 条业务样本上线、回滚
⑨ 生产用户反馈、A/B、抽检持续真实流量灰度、迭代方向

(量级口径综合自:RewardBenchAnthropic 工程博客、本仓调研笔记 research/methodology-deep.md。)

前端类比把整张图串起来:这是一条 CI/CD 流水线——①②③ 是 lint + 单元测试(每个 commit 都跑),⑥ 是发布门禁(release gate),⑧ 是 PR 的 CI 门禁,⑨ 是灰度后的真实流量监控。同一个"测试"概念在不同阶段挂载不同的检查器。

2.2.1 ④⑤ 的递归:评估器变成训练信号

④⑤ 两步值得单独讲,因为它们暴露了评估的一个深层身份变化:

工程含义:裁判的偏差会被训练放大。RM 评估不准 → 原模型学会讨好 RM(而不是学会回答得好)→ 这叫 reward hacking。前端类比:如果单元测试的 mock 和真实 API 不一致,通过测试不等于功能正确——而且你会持续按错误的 mock 迭代产品。所以 ⑤ 不是锦上添花,它是整个 RLHF 链路的元评估(评估"评估器本身")。

对你(应用层工程师)的推论只有一条:任何"用另一个模型打分"的方案(LLM-as-Judge),都必须先校准裁判——第 3 章会给出校准的具体数字。

2.3 模型层评估 vs 应用层评估

图里的 ①-⑥ 评的是模型本身:这个基座模型有什么能力。⑦-⑨ 评的是你的系统:模型 + 提示词 + 检索(RAG)+ 工具 + 编排在你的任务上表现如何。这是两个不同的测量对象:

维度模型层评估应用层评估
测量对象基座模型你的完整系统
回答的问题"这个模型有什么能力""我的产品好不好用"
典型方法公开基准(MMLU、GSM8K)自建业务评估集 + LLM-as-Judge
分布通用分布你的真实流量分布
前端类比浏览器跑分(basemark)自家站点的 RUM 真实监控
失败模式饱和、污染分布漂移、环境噪声

为什么同一个模型,两层分数可能相反? 四个原因:

  1. 分布不同:公开基准覆盖通用分布,你的任务可能集中在长尾。Arena 的大众问题偏简单,测不出专业知识(来源:Judging LLM-as-a-Judge, arXiv:2306.05685);
  2. 调用方式不同:提示协议、few-shot 示例、系统消息都是实验变量,换一个 prompt 分数可以差很多(GPT-3 之后这就是常态,见第 1 章);
  3. 系统组件不同:检索质量、工具 schema、错误重试逻辑都是你的代码,模型层分数对它们一无所知;
  4. 判分口径不同:榜单用学术判分,你的业务判分可能更严(或更松)。

这不是理论推演。社区有实践者公开分享过倒挂案例:同一个 agent 在 SWE-bench 与自建内部评估上排名完全反转(一组数字是 73% vs 81%,另一组 89% vs 38%)(来源:Reddit r/ClaudeAI 实践复盘;个人复盘帖属二手口径,当作"现象存在"的证据而非精确数字)。Anthropic 对应用层评估的官方要求也印证了这一点:评估要与生产中 agent 行为一致、环境本身不引入噪声、每次 trial 环境隔离(来源:Anthropic 工程博客)。

一句话总结:模型层评估决定你选哪个引擎,应用层评估决定你的产品是否合格。本书第 2 部分讲模型层基准,第 4、5 部分转入应用层工程——两层你都需要,但最终为业务负责的是后者。

2.4 5W1H 框架:六个问题,六个翻车故事

维度问题错误答案正确答案样例
Why为什么评估"老板让做""在 3 个候选模型里选一个做客服"
What评估什么"模型好不好""回答退款问题的准确率 + 拒答率"
Who谁来评估"我自己""我 + 5 个客服专家 + LLM 裁判校准"
When何时评估"上线前一次""选型期 + 每次变更 CI + 上线后持续"
Where在哪评估"本地笔记本""与生产同配置 + 环境隔离"
How怎么评估"跑个分""200 道客服题 + 准确率 + 延迟 + 成本"

每个维度配一个真实翻车故事——它们全部来自公开记录。

2.4.1 Why:为了"有个分数"而评估

翻车故事:2023 年 ChatGPT 之后的开源复制潮(Vicuna、Alpaca 时代),各家都在发模型,却没有一家能拿出"谁的对话更好"的可信证据。Vicuna 团队自己用 GPT-4 当裁判评 win rate,Stanford 的 AlpacaEval 用 805 条指令集让 GPT-4 两两对比——都是真空期的应急产物(来源:AlpacaEvalarXiv:2305.14314)。评估动机不清的后果是这些分数互相不可比,谁也没回答"该用哪个"。

正确姿势:Why 必须落到一个具体决策(选 A 还是 B、上不上线、回不回滚)。评估报告里没有待决事项 = 白跑。

2.4.2 What:评估对象选错层

翻车故事:见 2.3 节的倒挂案例——团队把"SWE-bench 高分"当成"能干活"的证据, What 定在了模型层,结果内部任务表现完全另一回事(来源:Reddit r/ClaudeAI 复盘)。另一个方向也成立:把"客服机器人"的 What 定成"MMLU 分数",测的是闭卷学术知识,与客服场景零交集。

正确姿势:What 写成可测量的能力描述——"回答退款问题的准确率 ≥ 90%,且敏感投诉的拒答率 ≥ 95%"。

2.4.3 Who:评估者被被评估对象欺骗

翻车故事 1(1966,人类版):ELIZA 只有模板匹配,用户却在问卷里把它当知心人(来源:ELIZA, CACM 1966)。人类评估者会被表演性输出欺骗,这叫 ELIZA 效应。

翻车故事 2(2023,模型裁判版):Zheng 等人的实验测出 LLM 裁判的自我增强偏差——GPT-4 当裁判时给自家回答的胜率高出约 10%,Claude-v1 给自家的高出约 25%(来源:arXiv:2306.05685)。前端类比:自己写的库在自家 benchmark 上总是第一——利益相关方的评价性结论必须降级处理。

正确姿势:Who = 被评对象的利益无关方。人评要抽样与自动判分交叉校验;用 LLM 裁判时要避开"运动员兼裁判"(评 GPT 系模型时不用 GPT 当裁判)。

2.4.4 When:评估有时效,过期分数会骗人

翻车故事:GLUE 榜 2019 年就饱和(T5 达 90.3 后失去区分度),但此后仍有团队拿 GLUE 分数做 2021 年之后的选型依据——好模型和 SOTA 的分差不再提供任何信息(来源:基准饱和分析SuperGLUE)。更近的例子:SWE-bench Verified 的最高分一年内从约 40% 涨到 80% 以上、接近饱和(来源:Anthropic 工程博客)——你去年存的对比表今天已经失效。

正确姿势:When 是一个集合——选型期一次 + 每次变更 CI 一次 + 定期复测(确认旧分数还有区分度)。90% 的团队只做"上线前一次",这正是上线后翻车的主因。

2.4.5 Where:评估环境与生产不一致

翻车故事 1:Anthropic 记录,内部评估中模型通过读取之前 trial 留下的 git 历史获得不公平优势——评估环境没有做隔离,前一轮的痕迹变成了后一轮的答案(来源:Anthropic 工程博客)。

翻车故事 2:CORE-Bench 上 Opus 4.5 最初只得 42%,排查发现判分脚本把 96.12 与 96.124991… 判成不等(浮点精度)、任务描述歧义、随机性不可复现——评估环境本身的噪声比模型差异还大,换脚手架后跳到 95%(来源:Anthropic 工程博客)。

正确姿势:Where 要求两件事——与生产同配置(同模型版本、同 prompt 模板、同参数),以及环境隔离(每个 trial 干净启动)。前端类比:在本地 mock 数据上测出全绿,不能证明生产环境没问题。

2.4.6 How:评估协议不写清楚,数字不可比

翻车故事 1(协议改变分数):Chain-of-Thought 实验(2022)显示,同一个 PaLM 540B、同一批 GSM8K 题目,只要在提示里加 8 个"先写推理过程"的示例,准确率从 17.9% 跳到 56.9%——约 3 倍(来源:Wei et al., arXiv:2201.11903Google Research 博客)。报告不写协议,数字就没有意义。

翻车故事 2(指标被钻空子):AlpacaEval 1.0 的 GPT-4 裁判偏爱长回答,模型学会"写长"来赢,2024 年 4 月的 2.0 版专门加了长度控制修正(来源:arXiv:2404.04475)。

正确姿势:How 必须固化并写进报告——prompt 模板、示例数、解码参数(temperature 等采样设置)、评分规则、判分模型版本。前端类比:测试结果依赖 Node 版本和 NODE_ENV,你必须把它们锁死并写进 CI,否则"我本地是绿的"没有意义。

2.5 评估的三种分类法

分类 1:离线 vs 在线

离线(Offline)在线(Online)
跑固定数据集真实用户请求
分数可复现持续波动
便宜、可控真实但贵
适合回归、选型适合监控、A/B

分类 2:有参考答案 vs 无参考答案

有参考答案(Reference-based)无参考答案(Reference-free)
准确率、BLEU、pass@kLLM-as-Judge、人类偏好、Arena 胜率
题目答案固定答案开放
适用:MMLU、GSM8K、HumanEval适用:写作、对话、agent 任务

分类 3:绝对 vs 相对

绝对评估相对评估
模型 X 在 MMLU 上 85%模型 X vs 模型 Y 哪个更好
数字直接可比用胜率或排名表达
注意置信区间Chatbot Arena 这类对战榜

三种分类互相正交:一次评估可以同时是"离线 + 无参考 + 相对"。5W1H 里回答清楚 How,往往就顺带回答了这三个分类。

2.6 评估对象不只是模型

2.3 节的分野落到工程上,就是这 5 层——任何一层变化都要重新评估:

[1] 基础模型 (Base Model)
    GPT-4o, Claude, Qwen, DeepSeek ...
    ↓
[2] 提示词 (Prompt / System Message)
    "你是一个耐心的客服……"
    ↓
[3] 上下文 (Context / RAG)
    检索回来的 5 段文档
    ↓
[4] 工具 (Tools)
    函数调用的 schema
    ↓
[5] 编排 (Orchestration)
    多次调用的链路、错误处理

改一个 prompt 词,可能比换模型影响更大。 因为 prompt 离模型输出最近,而它通常没有版本控制和测试就上线了——这正是 ⑧(应用层 CI 评估)存在的理由。

2.7 评估的"最小必要"决策树

不知道从哪个调用点起步时,按这个顺序问:

问:你有真实用户吗?
├─ 是 → 在线评估为主(⑨),离线回归为辅(⑧)
└─ 否
   │
   问:你的任务有标准答案吗?
   ├─ 是 → 有参考答案的固定题集(⑧ 起步,100 题以内)
   └─ 否
      │
      问:你能请到领域专家吗?
      ├─ 是 → 人类评估为主,LLM-as-Judge 辅助(先校准裁判)
      └─ 否 → LLM-as-Judge + 多模型投票

2.8 实战与陷阱

陷阱 1:评估"了"但没"用"。 跑 10 个基准 → 写报告 → 归档 → 模型还是凭感觉选。对策:每份评估报告必须含 1 个明确决策("基于 X 集 Y 分,选模型 A")。

陷阱 2:评估数据集太小。 100 道题的"准确率 90%"误差可能 ±5%;最少样本量经验法则:准确率类 ≥ 500 题,偏好类 ≥ 5000 票,开放式 ≥ 200 条 + 多个评分员。

陷阱 3:评估集和实际分布不一致。 评估集是英文维基风格、真实场景是中文客服对话,准确率差距可能超过 20%。对策:真实用户样本至少留 20% 作 hold-out(留出集,不参与任何调优)。

陷阱 4:裁判没校准就上岗。 "用 GPT-4 给输出打分"是 2023 年以来最流行的捷径,但 2.4.3 与 2.2.1 已经说明:裁判有偏差谱系,且偏差会被下游消费放大。对策:先抽 100-300 条人工标注算一致性(第 3 章给具体指标),通过再让裁判上岗。

2.9 验收自测

  1. 选择:RLHF 中"评估的递归"指的是什么?
  • A. 评估要跑多轮
  • B. 评估器(reward model)的分数本身成为训练信号
  • C. 评估数据来自评估结果
  • D. 模型自己评估自己
  1. 选择:下面哪条是"应用层评估"的问题?
  • A. 这个基座模型的数学推理能力如何
  • B. MMLU 上谁的分最高
  • C. 我的系统(prompt + RAG + 工具)在退款咨询上准确率多少
  • D. GSM8K 的通过率排名
  1. 选择:CORE-Bench 上"42% → 95%"的案例主要说明哪个 W 出了问题?
  • A. Why
  • B. Who
  • C. Where(评估环境本身引入噪声)
  • D. When
  1. 简答:为什么"改 prompt 可能比换模型影响更大"?用 5 层评估对象说明。
  1. 简答:同一个模型在模型层基准和应用层评估上分数相反,列出至少两个原因。
  1. 实操:用 5W1H 写一份评估方案,主题:"评估一个 AI 代码补全工具在 React 项目中的表现"。要求每个 W 一句话 + 一个反面案例对照。

2.10 本章 Cheat Sheet

概念一句话详见
生命周期 8 个调用点预训练→中期→SFT→RLHF→RM→安全→选型→CI→生产§2.2
loss / 困惑度过程健康信号,不等于产品可用§2.2
评估的递归RM 的分数成为训练信号,裁判偏差被放大§2.2.1
模型层 vs 应用层测引擎 vs 测产品§2.3
5W1H六问不清 = 白跑§2.4
评估对象 5 层模型/prompt/RAG/工具/编排§2.6
hold-out留出不参与调优的真实样本§2.8

2.11 五个常见错误

  1. Why 没问清就跑——没有待决事项的评估是表演,100% 浪费时间。
  2. 只评模型不评系统——业务受 prompt/RAG/工具/编排影响,只评模型是片面的。
  3. 只在上线前评一次——评估有时效,饱和与污染会让旧分数失效。
  4. 数据集 < 500 题——100 题的"90%"误差可能 ±5%,小样本不可靠。
  5. 裁判不校准就上岗——LLM 裁判有位置/冗长/亲缘偏差,先算与人类的一致性。

2.12 延伸阅读

⭐⭐⭐

⭐⭐