How is the performance of an LLM typically evaluated during or after the pretraining phase
1️⃣ 考察意图
面试官想考察你对 LLM 评估体系的系统性理解,而非简单罗列指标。核心是区分内在评估(如 perplexity)与外在评估(如 benchmark 准确率),并理解两者的关联与脱节。刁钻点在于:你是否知道 perplexity 低不等于下游任务好,以及如何选择评估协议避免数据泄露。答好了能展示你对模型训练监控、基准选择及评估局限性的工程直觉,这是大厂做模型迭代时必备的硬实力。
2️⃣ 标准答
LLM 预训练阶段的评估分两个层面:训练中监控和训练后验证,各自有不同指标和协议。
训练中监控:Perplexity 与 Loss
- 核心指标:Perplexity(PPL) = exp(交叉熵损失),衡量模型对下一个 token 的预测能力。在固定上下文长度(如 2048 tokens)的验证集上计算,确保与训练数据分布一致。
- 为什么用 PPL:计算快、无偏、可跨步数对比。但 PPL 对 tokenizer 敏感——用 BPE 和 Unigram 的 PPL 不可直接比较,需统一 tokenizer。
- 实际坑:PPL 下降 0.1 可能对应下游任务提升 2%,但 PPL 饱和后(如 < 10)与任务性能相关性变弱。例如,GPT-2 的 PPL 从 35 降到 20 时,HellaSwag 准确率从 30% 跳到 60%,但再降到 10 时只提升到 70%。解法:同时监控 PPL 和下游 benchmark 的滑动平均,避免过度优化 PPL。
训练后验证:外在 Benchmark
- 零样本 / 少样本评估:在标准基准上直接测试,不微调。常用基准:
- 语言理解:MMLU(57 个学科,5-shot)、HellaSwag(常识推理,0-shot)、LAMBADA(文本预测,0-shot)。
- 代码生成:HumanEval(pass@1)、MBPP(少样本)。
- 数学推理:GSM8K(8-shot)、MATH(4-shot)。
- 评估协议:固定上下文长度(如 2048)、使用相同 tokenizer、报告 95% 置信区间(通过 bootstrap 采样)。例如,MMLU 的 5-shot 评估需从每个学科选 5 个示例,避免示例顺序偏差。
- 为什么选这些基准:它们覆盖不同能力维度,且未在预训练数据中显式出现(但需警惕数据泄露——GPT-3 的 MMLU 分数在 2020 年论文中已接近饱和,后续模型靠更大数据量突破)。
评估的工程取舍
- PPL vs. 下游任务:PPL 是内在指标,反映语言建模能力;下游任务(如 MMLU)是外在指标,反映知识推理。两者不完全对齐——一个模型 PPL 低但 MMLU 差,可能因为训练数据中知识密度低。取舍:预训练阶段优先优化 PPL,但每 10k 步跑一次 MMLU 子集(如选 10 个学科)做快速验证,避免训练方向偏航。
- 基准饱和问题:HellaSwag 在 2023 年已被 GPT-4 达到 95%+,区分度下降。解法:用 BIG-bench(204 个任务)或自定义 adversarial 测试集(如反事实推理)补充。
实际落地的坑 + 解法
- 坑:评估时 tokenizer 不一致导致 PPL 偏差。例如,LLaMA 用 SentencePiece,GPT 用 tiktoken,直接对比 PPL 无意义。解法:统一用 GPT-2 tokenizer 做跨模型对比,或报告 bits-per-byte(BPB)消除 tokenizer 影响。
- 坑:数据泄露——预训练数据可能包含基准测试集。例如,C4 数据集包含 MMLU 部分题目。解法:用去重工具(如 MinHash)过滤,或使用动态基准(如 HELM 的实时更新版)。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从三个层面回答:第一,训练中监控用 perplexity,计算快但需注意 tokenizer 一致性和饱和问题;第二,训练后验证用 MMLU、HellaSwag 等 benchmark,零样本或少样本评估,固定协议避免偏差;第三,评估有局限性——PPL 与下游任务不完全对齐,基准可能饱和或泄露。总结一句:评估要内在指标和外在指标结合,并定期用子集验证,避免过度优化单一指标。”
4️⃣ 高频追问 & 应对
追问 1:你说 PPL 与下游任务不完全对齐,能举个具体例子吗?
可以。比如一个模型在 WikiText-103 上 PPL 很低(如 8.0),但在 MMLU 上只有 40% 准确率,另一个模型 PPL 稍高(如 9.5)但 MMLU 有 60%。原因是前者训练数据以维基百科为主,语言流畅但知识广度不足;后者训练数据包含更多论文和代码,知识密度高。解法:在预训练中混合多样数据源,并监控 PPL 和 MMLU 的联合曲线,当 PPL 下降但 MMLU 停滞时,增加知识密集型数据比例。
追问 2:如何避免基准数据泄露?具体操作是什么?
三步:第一,用 MinHash 或 SimHash 对预训练数据去重,阈值设为 0.8(即 80% 相似度视为重复);第二,对每个基准构建 n-gram 黑名单(如 13-gram),在训练数据中删除匹配项;第三,使用动态基准如 HELM 的“持续评估”模式,它定期更新测试集。实际中,LLaMA 论文报告过 C4 中 MMLU 题目有 0.3% 泄露,去重后 MMLU 分数下降 2-3%,说明泄露影响有限但不可忽视。
追问 3:评估时上下文长度怎么选?为什么?
选模型最大上下文长度(如 2048),但需注意:短上下文(如 512)会低估长依赖能力,长上下文(如 8192)可能引入位置编码偏差(如 RoPE 的远程衰减)。取舍:固定长度 2048 是行业默认,因为大多数 benchmark 的输入长度 < 1024,且计算成本可控。如果模型支持长上下文(如 128k),需额外用 LongBench 或 L-Eval 评估,并报告不同长度下的性能曲线。
5️⃣ 避坑 · 常见错误答法
- ❌ 只提 perplexity,说“PPL 越低模型越好” → ✅ 补充 PPL 的局限性:与下游任务不完全对齐,需结合 benchmark 评估,并说明 tokenizer 一致性。
- ❌ 说“MMLU 是唯一标准” → ✅ 强调评估需多维度:MMLU 测知识,HellaSwag 测常识,HumanEval 测代码,BIG-bench 测推理,避免单一基准偏差。
- ❌ 忽略评估协议,直接报分数 → ✅ 必须说明上下文长度、few-shot 示例数、置信区间,否则分数不可复现。
6️⃣ 简历呼应
- 如果你有 RAG 项目:从“评估 RAG 的检索质量与生成质量”切入,类比 LLM 评估——PPL 类似检索的 recall,benchmark 类似生成准确率,强调两者需联合优化。
- 如果你只做过传统 NLP:用“文本分类的准确率 vs. 语言模型的 PPL”类比,说明内在指标(PPL)和外在指标(benchmark)的 trade-off,并迁移到 LLM 评估协议(如固定上下文长度)。
- 如果你是校招无项目:聚焦论文复现——展示你读过 GPT-3 和 LLaMA 的评估章节,能复现 MMLU 的 5-shot 评估流程,并指出数据泄露的坑,体现工程细节。
- “Language Models are Few-Shot Learners” (GPT-3, 2020) – 评估协议和 benchmark 选择
- “LLaMA: Open and Efficient Foundation Language Models” (2023) – 数据去重和 PPL 监控
- “Holistic Evaluation of Language Models” (HELM, 2022) – 多维度评估框架
- “BIG-bench: Beyond the Imitation Game” (2022) – 204 个任务的评估基准
- “Bits-per-byte: A Better Metric for Language Model Evaluation” – 消除 tokenizer 影响的 PPL 替代方案