- 区分 eval(「模型能不能做好」)与 A/B 测试(「用户在不在乎」)。
- 列举三个可测轴(prompt、模型、参数),并为每个轴选定指标。
- 解释 CUPED、序列测试与 Benjamini-Hochberg 多重比较校正。
- 依据 warehouse SQL 的站位与对企业收购的态度,选择 Statsig 或 GrowthBook。
问题
你手工调了一个 system prompt。感觉更好了。你发布了。转化率的变化只是噪声。你怪指标。或者你发布了一个新模型,转化率毫无变化——是模型退化了,还是改动太小检测不出来?你不知道,因为你没有做 A/B 就发布了。
eval 回答的是:模型能否在一个带标签的数据集上完成某项任务。它不回答用户是否更喜欢输出。只有受控的线上实验能回答后者,而且前提是实验有足够的功效、控制了非确定性、并做了多重比较校正。
概念
eval 与 A/B 测试
eval —— 离线、带标签的数据集、评判者(rubric,或 LLM-as-judge,或人工)。回答:「在这个固定分布上,输出是否正确 / 有帮助 / 安全?」
A/B 测试 —— 线上、真实用户、随机分组。回答:「新变体是否推动了真正重要的用户级指标?」
两者都需要。eval 在暴露前抓住回归;A/B 在之后确认产品影响。
该测什么
- prompt 工程 —— 措辞、system prompt 结构、示例。指标:任务成功率、用户留存、每请求成本。
- 模型选型 —— GPT-4 vs GPT-3.5-Turbo vs Llama-OSS。指标:准确率(任务)+ 每请求成本 + P99 延迟。多目标。
- 生成参数 —— temperature、top-p、max_tokens。指标:任务相关(输出多样性 vs 确定性)。
CUPED —— 方差缩减
Controlled-experiments Using Pre-Experiment Data(利用实验前数据的受控实验)。在比较后期数据之前,先回归掉前期方差。典型方差缩减:30-70%。有效样本量白捡式提升。
实现:Statsig 和 GrowthBook 都实现了。
序列测试
经典 A/B 假设固定样本量。序列测试(「边看边决策」)在反复查看数据时控制假阳性率。始终有效的序列过程(mSPRT、Howard 的置信序列)让你在胜出明显时提前停止。
多重比较校正
以 95% 置信度跑 20 个 A/B 测试,凭运气就会产生一次假阳性。Bonferroni 校正收紧每个测试的 α;Benjamini-Hochberg 控制错误发现率(FDR)。GrowthBook 两者都实现了。
SRM —— 样本比例失配
Assignment hash 把用户随机分配到各变体。如果 50/50 的拆分实际得到 47/53,说明某处坏了——SRM 检查会标记它。两个平台都实现了。
Statsig vs GrowthBook
Statsig:
- 2025 年 9 月被 OpenAI 以 11 亿美元收购。托管 SaaS。
- 序列测试、CUPED、留出人群(held-out populations)。
- 一体化:feature flag + 实验 + 可观测性。
- 最适合:想要打包产品、不在意 OpenAI 归属的团队。
GrowthBook:
- 开源(MIT);仓库原生(直接从 Snowflake/BigQuery/Redshift 读取)。
- 多种引擎:贝叶斯、频率学派、序列。
- CUPED、SRM、Bonferroni、BH 校正。
- 自托管或托管云。
- 最适合:warehouse SQL 型团队,数据团队掌控指标层,偏好开源。
非确定性让功效计算更复杂
同一个 prompt 会产生不同输出。传统功效计算假设观测独立同分布(IID)。存在 LLM 非确定性时,有效样本量低于名义值。把所需样本量乘以约 1.3-1.5 倍作为安全余量。
真实案例结果
- 聊天机器人奖励模型变体:+70% 对话长度、+30% 留存。
- Nextdoor 主题行:改进奖励函数后 +1% CTR。
- Khan Academy Khanmigo:在延迟与数学准确率之间反复权衡。
反模式:凭感觉发布
每个资深工程师都能说出一个因为「感觉更好」而没有做 A/B 就发布的功能。其中大多数在数月内拖累了产品指标,而团队毫无察觉。A/B 是强制性的约束机制。
应该记住的数字
- Statsig 被 OpenAI 收购:11 亿美元,2025 年 9 月。
- GrowthBook:MIT 开源;贝叶斯 + 频率学派 + 序列。
- CUPED 方差缩减:30-70%。
- LLM 非确定性 → 样本量增加 30-50% 缓冲。
使用它
code/main.py 模拟一次同时使用固定边界与序列边界的序列 A/B 测试。展示序列方法如何让你提前停止。
交付它
本节课产出 outputs/skill-ab-plan.md。给定功能改动、工作负载和基线,选择平台、闸门与样本量。
练习
- 运行
code/main.py。在基线转化率 3%、预期提升 5% 的情况下,达到 80% 功效需要多大样本量? - 为一家受医疗监管、要求本地部署的客户,选择 Statsig 还是 GrowthBook。
- 设计一个 A/B 测试,比较 GPT-4 与 GPT-3.5 在每解决工单成本上的表现。主指标、护栏指标、次要指标分别是什么?
- 你的金丝雀通过了,但 A/B 显示转化率 -1.2%。要发布吗?写出升级判定标准。
- 对一个前期方差为后期方差 60% 的场景应用 CUPED。计算有效样本量的提升。
关键术语
| 术语 | 人们怎么说 | 实际含义 |
|---|---|---|
| Eval | 「离线测试」 | 在带标签数据集上评估模型能力 |
| A/B test | 「实验」 | 在用户上进行的线上随机对比 |
| CUPED | 「方差缩减」 | 用前期数据回归以降低方差 |
| Sequential test | 「可以偷看的测试」 | 允许提前停止的始终有效过程 |
| Multiple comparison | 「族错误率」 | 跑很多测试会抬高假阳性 |
| Bonferroni | 「收紧校正」 | 用 α 除以测试数量 |
| Benjamini-Hochberg | 「BH FDR」 | 控制错误发现率,较不保守 |
| SRM | 「分流失衡」 | 样本比例失配;分配逻辑有 bug |
| Statsig | 「OpenAI 家的」 | 商业一体化平台,2025 年被收购 |
| GrowthBook | 「开源那个」 | MIT、仓库原生平台 |
| mSPRT | 「序列概率比检验」 | 经典序列过程 |
延伸阅读
- GrowthBook — How to A/B Test AI
- Statsig — Beyond Prompts: Data-Driven LLM Optimization
- Statsig vs GrowthBook comparison
- Deng et al. — CUPED
- Howard — Confidence Sequences