1. 笔记/

LLM 量化精读笔记 · 10 质量评估方法论:perplexity、基准与自定义评测

对应:Inference Engineering Ch5 的 “Measuring Quality Impact”;SWE-bench(arXiv:2310.06770);MMLU;GPTQ/AWQ/KIVI 论文的评测协议。 学完本章你应该能:① 写出 perplexity 的定义并解释它的优缺点;② 设计一套"三层评测"($PPL \to$智能基准$\to$自定义评测)的验收协议;③ 理解"与噪声不可区分"的操作化含义(多次运行、配对比较、置信区间);④ 列出量化评测的常见陷阱。


目录(本章) #

  1. 本章目标
  2. 核心原则:找"与噪声不可区分"的差异
  3. 第一层:Perplexity(最简)
  4. 第二层:智能基准(MMLU、SWE-bench 等)
  5. 第三层:自定义评测(最准)
  6. 统计显著性:怎么判断"没变"
  7. 验收协议:关卡式流程
  8. 陷阱清单
  9. 本章小结
  10. 习题与解答
  11. 延伸阅读

1. 本章目标 #

前 8 章讲了"怎么量化",本章讲怎么证明量化没有搞砸。Inference Engineering 的一句话是本章的总纲:

“In every case, you’re looking for differences indistinguishable from noise."(所有情况下,你要找的都是与噪声不可区分的差异。)


2. 核心原则:找"与噪声不可区分"的差异 #

量化评测不是"分数变了吗”,而是"这个变化能解释为随机噪声吗"。为什么这么严格:

  1. 评测本身有噪声(采样、温度、并行浮点非确定)。
  2. 量化引入的是"系统性"误差——它可能恰好落在噪声范围内,也可能超出。
  3. 我们的目标不是"量化后分数最高",而是"量化后任务质量与原模型无实质差异"。

操作化:量化模型与 FP16 基线在同一批样本、同一随机种子下做配对比较;重复多次,看差值是否落在噪声范围内。


3. 第一层:Perplexity(最简) #

3.1 定义 #

对自回归模型,给定 token 序列$x = (x_{1}, …, x_{N})$:

$$ PPL = \exp( -(1/N) \cdot \sum log p(x_{i} | x_{直觉:PPL 是"每 token 平均惊讶度"的指数化$——PPL = 10$大约等于模型每步像在 10 个等概率选项里猜。

3.2 计算要点 #

  1. 用模型自己生成的 logits 算 log 概率(teacher forcing,不解码)
  2. 标准数据集:WikiText-2、C4(固定切分、固定长度,如 2048 token)
  3. 与 FP16 基线在完全相同的切分上对比

3.3 优点与缺点 #

优点缺点
便宜、可复现、对全局退化敏感对"任务级"退化不敏感(PPL 不变但代码/推理变差)
论文标配,方便横向对比测的是语言建模,不是你的业务
能快速筛掉灾难性量化平均指标,掩盖长尾/长上下文问题

PPL 是守门员,不是裁判。 它合格只是入场券。


4. 第二层:智能基准(MMLU、SWE-bench 等) #

基准测什么成本备注
MMLU57 个学科的知识/推理(选择题)广泛使用;few-shot 设置要固定
HumanEval / MBPP代码生成164 题,样本少,方差大
GSM8K数学应用题8.5k 题,对推理链敏感
SWE-bench真实 GitHub issue 端到端修复2,294 个真实任务,最接近工程场景
MT-Bench / AlpacaEval指令跟随 / 偏好用 LLM-as-judge,注意裁判偏差
RULER / 大海捞针长上下文检索量化 KV 后必测(08 章)

选择原则:

  1. 覆盖你的任务类型(代码模型测 SWE-bench/HumanEval,聊天模型测 MT-Bench…)
  2. 样本量要够:HumanEval 只有 164 题,$\pm 2$题就是 1.2% 的波动
  3. 固定设置:few-shot 数、温度、最大生成长度必须与基线一致

5. 第三层:自定义评测(最准) #

5.1 为什么必须有 #

MMLU 再全也覆盖不了你的 prompt 模板、你的工具调用格式、你的业务长尾。自定义评测 = 用真实分布验收。

5.2 三种做法 #

做法适用注意
金标准比对(exact match / 单元测试 / 规则)有明确答案的任务覆盖要广
LLM-as-judge开放式回答有位置/长度/风格偏差,要 A/B 盲评、换位
人工抽评高价值任务样本少但最可信,作为最终确认

5.3 设计要点 #

  1. 样本:几百到几千条,覆盖正常/长尾/边界
  2. 分布:与线上流量一致(来源、长度、语言、主题)
  3. 场景:单轮、多轮、长上下文、流式
  4. 指标:不只平均——看失败分布(长上下文是否集中翻车?)

6. 统计显著性:怎么判断"没变" #

6.1 噪声从哪来 #

采样噪声(temperature > 0 的解码) 并行非确定性(TF32/FP8 归约顺序、多卡) 评测集切分/顺序

6.2 最小可靠协议 #

  1. 同一份样本,同一个种子,量化 vs FP16 各跑≥ $3$次
  2. 报告均值与置信区间(bootstrap 或多次运行的标准差)
  3. 配对比较:对每个样本算差值,再对差值做检验(符号检验/t 检验)
  4. 判定:
    • 量化-基线的差值 95% CI 包含$0 \to$“不可区分”
    • CI 不包含 0 但幅度极小(如$MMLU \pm 1$分)$\to$结合任务重要性判断

6.3 一个错误示范 #

❌ 量化模型跑 1 次$MMLU = 68.2$,$FP16 = 68.5 \to$“差 0.3,可接受” ✅ 各跑 5 次,配对 t 检验$p=0.6$,$CI [-1.2, +0.6] \to$“无法区分”


7. 验收协议:关卡式流程 #

Gate 0:格式与部署检查(模型能跑、kernel 生效、速度/显存达标) Gate 1:PPL(WikiText-2/C4,与基线同切分) 通过标准:$\Delta PPL$小于基线波动(经验上$< 0.2\sim 0.3$) Gate 2:任务基准(MMLU + 业务相关基准) 通过标准:差值在噪声范围内(多次运行 CI 覆盖 0) Gate 3:自定义评测(真实 prompt 集 + 长上下文 + 边界) 通过标准:配对比较不可区分;长尾无集中退化 Gate 4:生产 A/B(小流量灰度,观测线上指标) 通过标准:业务指标(延迟/成本/质量)达标,可回滚

任何一关失败$\to$回退上一档(更细粒度、更高位宽、换方法),而不是硬上线。


8. 陷阱清单 #

  1. 校准集 == 评测集(作弊,04 章)
  2. 只跑 PPL 就上线(PPL 不敏感于任务退化)
  3. 样本太少还下结论(HumanEval 164 题$\pm 1.2\%$)
  4. 只看平均、不看长尾(长上下文/多轮集中退化)
  5. 评测设置不一致(few-shot、温度、长度与基线不同)
  6. 只测一次(把噪声当结论)
  7. 用 GPU 并行差异当"量化效果"(TF32 vs FP32)
  8. 忘了量化的是哪一层(只量化权重却怪 KV 方案,或反之)

9. 本章小结 #

  1. 总纲:找与噪声不可区分的差异。
  2. 三层评测:PPL(守门)$\to$智能基准(任务级)$\to$自定义评测(真实分布,最终裁判)。
  3. 统计纪律:配对、多次、置信区间;不拿单次跑分下结论。
  4. 关卡流程:四道 Gate,任一失败就降档。
  5. 陷阱:校准=评测、只看 PPL、小样本、平均掩盖长尾。

一句话记忆:“PPL 证明它没失智,基准证明它没退步,自定义评测证明它没在你的业务上翻车——三个都过了,才算量化完成。”


10. 习题与解答 #

题 1(计算):PPL 手算 #

模型对 4 个 token 的 log 概率为$[-0.5, -1.0, -2.0, -0.5]$。PPL 是多少?

题 1 解答

平均负对数似然= $(0.5+1.0+2.0+0.5)/4 = 1.0 \to PPL = \exp(1.0) \approx 2.72$。含义:平均每步像在约 2.7 个等概率选项中猜测。

题 2(设计):KV 量化的验收 #

为 2-bit KV 方案设计 Gate 1–4(沿用第 7 节框架),特别注意哪些关卡是 KV 量化特有的?

题 2 解答要点

Gate 1:长序列 PPL(WikiText-2 用 2048/8192 长度);Gate 2:长上下文基准(RULER/大海捞针);Gate 3:业务长对话评测;Gate 4:生产 A/B 看长会话留存/质量。KV 特有:必须覆盖"误差累积"场景(长上下文、多轮),短文本测不出问题(08 章)。

题 3(统计):判定"不可区分" #

量化 vs FP16 各跑 5 次 MMLU:68.1, 68.4, 67.9, 68.3, 68.2 vs 68.5, 68.1, 68.7, 68.3, 68.4。判断是否可接受(先算均值差,再定性说明需要什么才能下结论)。

题 3 解答

均值差≈ $68.2 - 68.4 = -0.2$。但单看均值不够:需要配对(同种子同样本)后的差值分布和 CI。若 5 次独立采样,标准差$\sim 0.2$,差 0.2 基本落在噪声内;正式判定要配对 t 检验/bootstrap CI 覆盖 0。

题 4(思考):PPL 为什么骗人 #

举一个"PPL 不变但任务变差"的量化场景,并解释机制。

题 4 解答要点

例:量化让模型对"常见高频 token"的预测几乎不变(PPL 被高频部分主导),但对长尾/推理链 token 的分布被打乱$\to$代码/数学任务退化。机制:PPL 是平均,量化误差集中在少数敏感位置(softmax 前的 QK、深层特征)时,平均指标不敏感。

题 5(协议):灰度上线 #

设计 Gate 4 的生产 A/B:流量怎么分、观测多久、指标怎么定、回滚条件是什么?

题 5 解答要点

5–10% 流量灰度 1–3 天;指标:延迟(TTFT/TPS)、成本、业务质量(留存/采纳率/人工评分);对照:同流量 FP16;回滚条件:任一质量指标显著退化(CI 不覆盖 0)或长尾异常率上升。


11. 延伸阅读 #

  1. Inference Engineering Ch5:Measuring Quality Impact 一节
  2. SWE-bench(arXiv:2310.06770):真实 GitHub issue 端到端评测
  3. MMLU(GitHub):57 学科知识基准
  4. RULER:长上下文基准(KV 量化必测)
  5. 上一篇: 09 QAT 与训练内量化;下一篇:[11 系统协同与部署]——把量化装进真正的推理引擎。