From f375cd6134cdc0863279ff772505d7e9ba7f7e7f Mon Sep 17 00:00:00 2001 From: windyboy Date: Fri, 21 Aug 2026 16:19:12 +0800 Subject: [PATCH] add evaluation-guidebook notes: HF guidebook knowledge (2024 GitHub + 2025 Space) into LLM_Evaluation - Add 9 Chinese distilled notes under 04-Reference-Archive/evaluation-guidebook/ covering automated benchmarks, human evaluation, LLM-as-a-judge, troubleshooting, general knowledge, yearly dives, resources, and the 2025 HF Space edition (FineWeb eval-selection methodology, MCF/CF/FG, sampling metrics, Math-Verify, statistical validity & cost) - Update zone README and Material-List with entry links --- .../04-Reference-Archive/00-Material-List.md | 14 + .../evaluation-guidebook/00-Overview.md | 93 +++ .../01-Automatic-Benchmarks.md | 517 +++++++++++++ .../02-Human-Evaluation.md | 313 ++++++++ .../evaluation-guidebook/03-LLM-as-a-Judge.md | 677 ++++++++++++++++++ .../04-Troubleshooting.md | 402 +++++++++++ .../05-General-Knowledge.md | 325 +++++++++ .../evaluation-guidebook/06-Yearly-Dives.md | 542 ++++++++++++++ .../evaluation-guidebook/07-Resources.md | 167 +++++ .../evaluation-guidebook/08-2025-Edition.md | 602 ++++++++++++++++ .../Personal-Tech/LLM_Evaluation/README.md | 1 + 11 files changed, 3653 insertions(+) create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/00-Overview.md create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/01-Automatic-Benchmarks.md create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/02-Human-Evaluation.md create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/03-LLM-as-a-Judge.md create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/04-Troubleshooting.md create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/05-General-Knowledge.md create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/06-Yearly-Dives.md create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/07-Resources.md create mode 100644 01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/08-2025-Edition.md diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/00-Material-List.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/00-Material-List.md index d33f9ec..052b8ca 100644 --- a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/00-Material-List.md +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/00-Material-List.md @@ -18,6 +18,20 @@ created: 2026-08-21 | [[02_Areas/Job/llm_data_annotation_programmer_roadmap\|大模型数据标注与程序员入门]](原文存于 02_Areas/Job,本专区不再复制副本) | 职业全景与程序员能力迁移背景 | 想理解岗位、方向与能力地图时 | 覆盖面广,但不是第一个项目的直接操作材料。 | | [[02-Intro-Cognitive-Framework-Draft]] | Why Guide 的概念设计底稿 | 想研究内容设计或自行扩展课程时 | 已被正式 Why Guide 吸收,不建议日常阅读。 | | [[03-Roadmap-Refactor-Outline-Draft]] | Practical Roadmap 的结构设计底稿 | 想理解路线如何从审阅意见演化时 | 正式路线图已更完整,草案只保留历史价值。 | +| [[evaluation-guidebook/00-Overview\|HuggingFace Evaluation Guidebook 中文提炼(子目录)]] | 外部权威评测知识参考(自动基准 / 人工评测 / LLM-as-judge / 排错等) | 设计或执行评测时按主题查阅 | 是外部资料的提炼笔记,作为查阅型参考而非个人学习主线的必经之路。 | + +## 外部知识参考(evaluation-guidebook 子目录) + +对 [HuggingFace Evaluation Guidebook](https://github.com/huggingface/evaluation-guidebook) 的中文提炼笔记: + +- [[evaluation-guidebook/00-Overview|总览:这是什么、怎么读]] +- [[evaluation-guidebook/01-Automatic-Benchmarks|自动基准评测]] +- [[evaluation-guidebook/02-Human-Evaluation|人工评测]] +- [[evaluation-guidebook/03-LLM-as-a-Judge|LLM-as-a-Judge(模型作评委)]] +- [[evaluation-guidebook/04-Troubleshooting|排错(推理 / LaTeX / 可复现性)]] +- [[evaluation-guidebook/05-General-Knowledge|通用知识(推理与评测 / Tokenization)]] +- [[evaluation-guidebook/06-Yearly-Dives|年度深度文章(2023–2025)]] +- [[evaluation-guidebook/07-Resources|资源链接清单]] ## 正式学习材料不在本目录 diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/00-Overview.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/00-Overview.md new file mode 100644 index 0000000..c83ac48 --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/00-Overview.md @@ -0,0 +1,93 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - overview +status: active +created: 2026-08-21 +source: https://github.com/huggingface/evaluation-guidebook +--- + +# HuggingFace LLM Evaluation Guidebook 总览 + +> 外部权威参考的来源说明:本子目录的内容是对 [HuggingFace Evaluation Guidebook](https://github.com/huggingface/evaluation-guidebook)(旧版,GitHub 仓库)与 [OpenEvals 新版(2025)](https://huggingface.co/spaces/OpenEvals/evaluation-guidebook)(HuggingFace Space)的中文提炼笔记,按主题拆成独立页面,供本专区在设计与执行评测时查阅。 + +## 这是什么 + +**The LLM Evaluation Guidebook** 是 HuggingFace 团队(主要作者 Clémentine Fourrier,Open LLM Leaderboard 与 lighteval 的设计者)编写的 LLM 评测实战指南。它回答一个核心问题: + +> 如何确保一个 LLM 在你自己的具体任务上表现良好? + +内容覆盖:评测模型的不同方式、如何设计自己的评测、以及从实际评测工程中沉淀的经验教训(Tips and Tricks)。 + +## 两个版本 + +| | 旧版(GitHub 仓库) | 新版(HF Space,2025-12) | +|---|---|---| +| 地址 | [github.com/huggingface/evaluation-guidebook](https://github.com/huggingface/evaluation-guidebook) | [huggingface.co/spaces/OpenEvals/evaluation-guidebook](https://huggingface.co/spaces/OpenEvals/evaluation-guidebook) | +| 形态 | 章节式 Markdown 指南 | 交互式"科研论文"(Astro + MDX,含可交互图表) | +| 作者 | Clémentine Fourrier | Fourrier、Thibaud Frere、Guilherme Penedo、Thomas Wolf | +| 副标题 | — | "基于 3 年评测 15000 个模型的经验,你想知道的关于 LLM 评测的一切" | +| 状态 | 已停止维护(README 声明) | 当前维护版本(2025-12-03 发布,CC BY 4.0) | +| 本专区笔记 | [[01-Automatic-Benchmarks]] ~ [[07-Resources]] | [[08-2025-Edition]](新版独有内容提炼) | + +> ⚠️ **维护状态**:旧仓库已声明不再维护(截至 2025 年 12 月),最新版本迁移到 HuggingFace Space。本目录 01–07 篇整理的是旧版 GitHub 仓库内容;[[08-2025-Edition]] 提炼新版(2025)相对旧版新增/变化的内容。两份内容大部分重叠,建议以新版为主、旧版为补充。 + +## 指南结构(旧版仓库目录) + +| 章节 | 内容 | 本专区对应笔记 | +|---|---|---| +| **Automatic benchmarks** | 自动化基准评测:basics、设计自己的自动评测、常用评测数据集、Tips | [[01-Automatic-Benchmarks]] | +| **Human evaluation** | 人工评测:basics、如何使用标注者、Tips | [[02-Human-Evaluation]] | +| **LLM-as-a-judge** | 模型作评委:basics、选择 judge LLM、设计评测 prompt、评估你的 evaluator、奖励模型 | [[03-LLM-as-a-Judge]] | +| **Troubleshooting** | 指南中最实操的部分:推理排错、LaTeX 数学解析、可复现性 | [[04-Troubleshooting]] | +| **General knowledge** | LLM 基础:模型推理与评测、tokenization | [[05-General-Knowledge]] | +| **Yearly dives** | 2023/2024/2025 年度深度文章 | [[06-Yearly-Dives]] | +| **Resources** | 评测与 NLP 推荐链接清单 | [[07-Resources]] | + +## 新版结构(2025 Space,按渲染顺序) + +| 章节 | 内容 | 备注 | +|---|---|---| +| Intro | 评测视角:model builder vs model user、智能定义的困境 | 新版新增 | +| Model inference and evaluation | Tokenization、推理、MCF/CF/FG 三种任务形式、calibration | 比旧版更细 | +| 2025 evaluations | 2025 分能力评测全景(推理/知识/数学/代码/长上下文/指令遵循/工具调用/游戏化) | 新版核心,替代旧版 Yearly Dives 2025 | +| Troubleshooting reproducibility | 可复现性排错(代码库/种子/指标名/normalization/prompt/参数) | 旧版有对应章节 | +| Picking good automatic evaluations for pretraining | FineWeb 团队预训练评测选型方法论(185 任务、SNR、单调性、排序一致性) | **全新内容** | +| Designing your automatic evaluation | 设计自动评测全流程(数据集/提示词/推理方式/评分/自由文本评分/约束输出/统计有效性/成本) | 内含 Using human annotators | +| Conclusion | 五条核心建议 | — | + +> 注:仓库中 `some-evaluation-datasets.mdx` 存在但新版页面未直接渲染(正文链接回旧版 GitHub 的同类页面);`using-human-annotators.mdx` 通过 import 嵌入 designing 章节。 + +## 建议阅读方式 + +原作者的建议(旧版): + +- **初学者**:从每个章节的 *Basics* 部分开始,需要 LLM 基础补课时读 *General knowledge*。 +- **进阶用户**:直接看每个章节的 *Tips and Tricks* 与 *Troubleshooting* 章节。 +- **回访用户**:每年一篇的 Yearly dives(每年的主题深潜)。 + +文内标记 ⭐ 的链接是作者特别推荐阅读的资源。 + +## 与本专区的关系 + +- 本专区(LLM_Evaluation)是**面向个人学习与工程能力养成**的中文路线(概念 → 为什么 → 工作表 → 项目 → 完整路线图)。 +- 本子目录是**外部权威知识参考**:需要深入某个评测主题(如设计自动评测、写 judge prompt、排查复现问题)时,从这里查阅提炼后的要点,并按需回到原文细读。 +- 两者互补:专区路线图负责"做什么、按什么顺序做",guidebook 笔记负责"具体怎么做、有哪些坑"。 + +## 引用 + +旧版(GitHub): + +```bibtex +@misc{fourrier2024evaluation, + author = {Clémentine Fourrier and The Hugging Face Community}, + title = {LLM Evaluation Guidebook}, + year = {2024}, + journal = {GitHub repository}, + url = {https://github.com/huggingface/evaluation-guidebook} +} +``` + +许可证:旧版 CC BY-NC-SA 4.0;新版 CC BY 4.0。 diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/01-Automatic-Benchmarks.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/01-Automatic-Benchmarks.md new file mode 100644 index 0000000..1470462 --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/01-Automatic-Benchmarks.md @@ -0,0 +1,517 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - automatic-benchmarks +status: active +created: 2026-08-21 +source: https://github.com/huggingface/evaluation-guidebook +--- + +# 自动基准评测(Automated Benchmarks)— LLM Evaluation Guidebook 提炼笔记 + +> **来源**:[HuggingFace evaluation-guidebook](https://github.com/huggingface/evaluation-guidebook) 的 `contents/automated-benchmarks/` 章节,包含四篇: +> basics(自动化基准是什么)、designing-your-automatic-evaluation(如何设计自己的自动评测)、some-evaluation-datasets(常用评测数据集盘点)、tips-and-tricks(实战技巧)。 +> +> **性质**:中文提炼式笔记,非逐字翻译;关键英文术语保留原文。文内 ⭐ 标记的链接是作者特别推荐阅读的资源(同 [[00-Overview]] 的约定)。 +> +> **关联笔记**:[[02-Human-Evaluation]](人工评测)、[[03-LLM-as-a-Judge]](模型作评委)、[[04-Troubleshooting]](排错与可复现性)。 + +## 目录 + +- [1. 核心概念](#1-核心概念task--capability--dataset--metric--样本--泛化) +- [2. 自动化基准的优缺点](#2-自动化基准的优缺点) +- [3. 如何设计自己的自动评测](#3-如何设计自己的自动评测) +- [4. 常用评测数据集盘点](#4-常用评测数据集盘点) +- [5. Tips and Tricks](#5-tips-and-tricks) +- [6. 参考资料](#6-参考资料) + +--- + +## 速览(TL;DR) + +| 问题 | 一句话答案(详见对应章节) | +|---|---| +| 自动基准评测是什么? | 用「数据集(输入+gold 参考)+ metric」给模型在 task / capability 上打分;LLM 输出分两类:生成文本(generative)与序列 log-probability(MCQA / perplexity)。([§1](#1-核心概念task--capability--dataset--metric--样本--泛化)) | +| 为什么要测模型没见过的数据? | 测的是泛化(generalization);在训练数据上评测等于给模型不具备的能力打分(overfitting 的学生类比)。([§1](#1-核心概念task--capability--dataset--metric--样本--泛化)) | +| 自动化基准有什么优势? | 一致可复现、成本低、指标可理解、可用专家级高质量数据(但 MMLU 也有错 → MMLU-Pro/Redux)。([§2](#2-自动化基准的优缺点)) | +| 有什么短板? | 复杂能力难分解成精确任务(转向 generalist 评测、性能当 proxy);公开数据集必有 contamination。([§2](#2-自动化基准的优缺点)) | +| 评测结果好坏取决于什么? | 取决于评测数据集质量——选数据集要看创建者、标注者一致性、指南、随机抽 50 个样本检查;自建可走聚合/人工标注/合成(LLM 或规则)三条路。([§3.1](#31-选择数据集)) | +| 用 log-prob 还是生成式? | 多选题/测知识 → log-prob(快、能给置信度,但高估小模型、对选项顺序敏感);测流利度/推理 → 生成式(更贴近真实关注点,但难打分、更贵)。([§3.2](#32-选择推理方法inference-method)) | +| prompt 要注意什么? | 语义等价的微小改动会让结果波动;模型会过拟合 prompt 格式(Llama 3.2 / Qwen 2.5 在 few-shot 里不跟格式);必要时约束输出。([§3.3](#33-选择提示词prompt)) | +| 代码评测的聪明做法? | 功能测试:用单元测试验证生成程序(降低过拟合、测主动能力);文本版代表是 IFEval。([§3.5](#35-智能新任务功能测试functional-testing)) | +| 数据污染怎么办? | 默认「已污染」;用 canary string、加密/门控发布、动态 benchmark、事后检测(无万全之法)。([§5.1](#51-管理污染managing-contamination)) | +| 评测结果意外差? | 先看生成结果:解析太严、few-shot 不跟格式、模型太啰嗦,逐一排查。([§5.3](#53-生成式评测结果异常差时的排查)) | + +--- + +## 1. 核心概念:task / capability / dataset / metric / 样本 / 泛化 + +自动化基准(automated benchmark)通常这样工作:你希望知道模型在某件事上表现如何。这件事可以是: + +- 一个定义清晰的**具体任务(task)**,例如「我的模型能不能区分垃圾邮件与非垃圾邮件(spam / non-spam classification)?」; +- 一个更抽象、更一般的**能力(capability)**,例如「我的模型数学能力如何(How good is my model at math)?」。 + +### 评测的三要素 + +1. **数据集(dataset)**,由**样本(samples)**组成: + - 每个样本包含给模型的**输入(input)**,有时配一个用来比对输出的**参考答案(reference,也称 gold)**; + - 样本通常刻意设计成贴近你要测的东西:例如做邮件分类,就构造一批垃圾/非垃圾邮件数据集,尽量包含一些难的边界案例(edge cases)。 +2. **度量(metric)**:给模型打分的方式。 + - 示例:垃圾邮件分类的准确率(正确分类的样本记 1 分,错误记 0 分); + - metric 利用模型输出打分。对 LLM 而言,人们主要考虑两类输出: + - 模型根据输入**生成的文本**(*generative evaluation*,生成式评测); + - 提供给模型的**一个或多个序列的 log-probability**(*multiple-choice evaluations*,简称 MCQA;或 *perplexity evaluations*,困惑度评测)。 + - 更多细节见 [Model inference and evaluation](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/general-knowledge/model-inference-and-evaluation.md) 页面。 + +### 泛化(generalization)与过拟合(overfitting) + +- 评测最好在**模型从未见过的数据**(不在其训练集里的数据)上进行,因为你测的是它能否**泛化(generalize)**——例如:模型只见过「假银行」类垃圾邮件后,能否正确分类「保健品」类垃圾邮件。 +- **overfitting**:模型只能在训练数据上预测得好、没有学到更高级的通用模式,就称其过拟合。这就像学生把考题背下来却没理解知识点——**在训练集中已经出现过的数据上评测 LLM,等于给它不会的能力打分**。 + +--- + +## 2. 自动化基准的优缺点 + +### 优点 + +| 优点 | 说明 | +|---|---| +| **一致性与可复现性(Consistency and reproducibility)** | 同一 benchmark 在同一个模型上跑 10 次结果相同(除硬件差异或模型固有随机性外)。因此可以方便地为给定任务建立公平的模型排名。 | +| **低成本规模化(Scale at limited cost)** | 目前最廉价的评测模型方式之一。 | +| **可理解性(Understandability)** | 大多数自动化指标非常易懂:exact match 告诉你生成文本是否与参考完全一致;accuracy 告诉你选对选项的次数占比。(相比而言 `BLEU`、`ROUGE` 这类指标就没那么直观。) | +| **数据集质量(Dataset quality)** | 不少 benchmark 使用专家生成的数据集或已有的高质量数据(如 MMLU、MATH)。但高质量 ≠ 完美:MMLU 事后被发现样本中有若干错误(从解析问题到实际上无意义的问题),催生了 MMLU-Pro、MMLU-Redux 等后续数据集。 | + +### 局限 + +1. **对复杂任务的使用受限**:自动化基准擅长性能容易定义和评估的任务(如分类)。更复杂的能力很难分解成定义清晰、精确的子任务。 + - 例如「数学好」到底指什么?算术好?逻辑好?能对新数学概念推理? + - 这催生了更多**通用型(generalist)评测**:不再把能力拆成子任务,而是假设整体表现是所测目标的**良好代理指标(good proxy)**。 +2. **污染(Contamination)**:数据集一旦以纯文本形式公开,就会进到模型训练数据里。因此打分时你无法保证模型没解析过评测数据。 + +--- + +## 3. 如何设计自己的自动评测 + +核心原则:**你的评测结果只会和你的评测数据集一样好(your evaluation result will only be as good as your evaluation dataset)**。 + +#### 设计自动评测的完整流程(对照清单) + +把原文的设计建议串成一条可执行的流程,每个步骤的细节见对应小节: + +1. **明确要测什么**:具体 task(如垃圾邮件分类)还是抽象 capability(如数学能力)?([§1](#1-核心概念task--capability--dataset--metric--样本--泛化)) +2. **选或建数据集**:优先复用已有高质量数据集;自建可走聚合现有数据 / 人工标注 / 合成数据(LLM 生成或基于规则)。([§3.1](#31-选择数据集)) +3. **检查样本**:已有数据集看创建者与标注流程(专家 > 付费 ≈ 众包 > MTurk)、标注者一致性、创建指南;随机抽 50 个样本查质量与相关性;样本数 ≥ 100 才统计显著。([§3.1](#31-选择数据集)) +4. **选推理方法**:MCQA(log-probabilities)还是生成式(generative)?([§3.2](#32-选择推理方法inference-method)) +5. **设计 prompt**:task prompt / context / question / options / connector words;注意 prompt 敏感性、few-shot、格式过拟合。([§3.3](#33-选择提示词prompt)) +6. **选 metric**:log-prob 侧用按长度归一化的 accuracy / perplexity / recall / f1;生成侧先决定是否归一化、再决定匹配方式(exact match、ROUGE、BLEU…);想清楚任务到底关心平均还是最差表现。([§3.4](#34-选择度量metric)) +7. **跑评测 + 复盘**:检查生成结果(解析、格式遵循、长度),关注 contamination 与 tokenization 坑。([§5](#5-tips-and-tricks)) + +### 3.1 选择数据集 + +要么选已有数据集(见 [第 4 节](#4-常用评测数据集盘点)),要么自己设计。过程中必须紧盯上面这条原则。 + +#### 选用已有数据集:必须检查的组件 + +**(1)创建过程(Creation process)** + +- **样本是谁创建的?** 作者给出的质量排序(作者观点): + > 专家创建(expert created)> 付费标注者(paid annotator)≈ 众包(crowdsourced)> MTurk 标注 +- 找数据卡(data card),看**标注者人口学信息(annotator demographics)**——对理解数据集的语言多样性很重要。 +- **样本是否被其他标注者或作者复核过?** 要确认:标注者间一致性分数(inter-annotator score)是否高(标注者是否达成共识)、以及/或作者是否审查过整个数据集。 + - 这对「用低薪标注者(通常不是你目标语言的母语者,如 AWS Mechanical Turk)」的数据集尤其重要,否则你可能发现拼写错误/语法错误/无意义答案。 +- **标注者是否拿到清晰的数据创建指南(data creation guidelines)?** 换句话说:你的数据集一致吗? + +**(2)样本(Samples)** + +取 50 个随机样本人工检查: + +- *质量(quality)*: + - prompt 是否清晰无歧义? + - 答案是否正确?(例:TriviaQA 每个问题有多个 gold 答案(aliases 字段),有时互相冲突。) + - 信息是否缺失?(例:MMLU 的不少问题缺少参考示意图(reference schematics)。) +- *与任务的相关性(relevance)*: + - 这些是你想用 LLM 评测的问题类型吗? + - 这些例子与你的 use case 相关吗? + +还要知道数据集有多少样本(保证结果统计显著——**自动基准评测通常最少 100 个样本**)。 + +#### 设计自己的数据集:三条路线 + +| 路线 | 要点 | +|---|---| +| **聚合现有数据(Aggregating existing data)** | 从不同来源聚合现有数据,评估与任务相关的能力。很多评测数据集就是这样从人工评测数据集聚合而来的(如 MATH、LSAT 等)。走这条路同样要执行上面「检查样本」的步骤。 | +| **使用人工标注者(Using human annotators)** | 完整章节见 [Using human annotators](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/human-evaluation/using-human-annotators.md)(人工评测章节)。 | +| **使用合成数据(Using synthetic data)** | 分两种: | +| ├ **用 LLM 生成** | ⭐ 参考 [Cosmopedia](https://huggingface.co/blog/cosmopedia) 博客(HF 同事写的,很酷):主要研究如何造合成*训练*集,但类似技术可用于评测。生成后务必按上面的步骤人工检查/过滤/审查。 | +| └ **基于规则的技巧(rule-based)** | 如果任务允许,这是获得**几乎无限样本且避免污染**的好办法。示例:[NPHardEval](https://arxiv.org/abs/2312.14890)、[DyVal](https://arxiv.org/abs/2309.17167)、[MuSR](https://arxiv.org/abs/2310.16049)、[BabiQA](https://arxiv.org/abs/1502.05698) 等。 | + +### 3.2 选择推理方法(inference method) + +#### 基于 log-probabilities(MCQA 多选题) + +非常适合选择题(通常测模型知识、或消歧能力)。 + +| 优点 | 缺点 | +|---|---| +| 确保所有模型都能「看到」正确答案 | 轻微高估小模型(若放任自由生成,它们本会生成选项范围之外的内容) | +| 提供模型「置信度」(calibration)的代理 | 有些模型会[根据选项的呈现顺序偏好特定选项](https://arxiv.org/abs/2309.03882),导致评测不具代表性 | +| 评估快——尤其只让模型预测一个 token(A/B/C/D 选项序号,或 Yes/No)时 | | +| 小模型也能获得任务表现信号 | | + +#### 基于生成(generative / QA 问答) + +适合任何要测流利度(fluency)、推理能力、或模型真正回答问题的能力的任务。 + +| 优点 | 缺点 | +|---|---| +| 应该与 LLM 生成流利文本的能力真实相关,多数时候正是人们真正关心的 | 打分更难(见 3.4 metrics 一节) | +| | 通常比 log-likelihood 评测贵一点,尤其包含 sampling 时 | + +### 3.3 选择提示词(prompt) + +prompt 决定:给模型多少任务信息、这些信息如何呈现。 + +一个通用 MCQA / QA prompt 通常由以下部分构成: + +- **task prompt**(可选):介绍你的任务; +- **context**:为问题提供额外上下文(例:摘要或信息抽取任务可提供内容来源); +- **question**:prompt 的核心; +- **options**(多选题时):选项; +- **连接词(connector words)**:如 `Question`、`Context`、`Choice` 等。 + +把这些要素拼成模板(示意,字段顺序与措辞可自行设计): + +```text +Task: {task prompt} # 可选:介绍任务 +Context: {context} # 可选:为问题提供额外上下文(摘要/信息抽取时可给内容来源) +Question: {question} # 核心 +Choice A: {option_a} # 多选题时提供选项 +Choice B: {option_b} +Choice C: {option_c} +Answer: # 用连接词引导模型输出 +``` + +> 注意:上面只是结构示意,原文没有给出固定模板——不同模型对格式的敏感度不同,实际使用时按 3.3 的提示设计并验证。 + +设计 prompt 时要注意: + +1. **语义等价的微小改动也可能让结果波动很大**(见 [Troubleshooting reproducibility](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/troubleshooting/troubleshooting-reproducibility.md) 的「Different prompt」一节),且 prompt 格式可能利好或利空特定模型。 + - 缓解方法: + - **昂贵方案**:用多种 prompt 变体把评测多跑几遍; + - **省钱方案**:只跑一次,但把一批**难度相当的不同 prompt 格式**分配到不同样本上。 +2. 可以给模型提供**few-shot 示例**帮它遵守期望格式;加连接词也有帮助。 +3. 但**模型如今倾向于过拟合特定 prompt 格式**: + - ⭐ [这篇论文](https://arxiv.org/abs/2407.07890) 讲得很好:有些模型因为过拟合了测试集的**格式(format)**而被高估。 + - 在 Open LLM Leaderboard 2 上,作者观察到 Llama 3.2 和 Qwen 2.5 出于这个原因,在 few-shot 设置下不再遵循给定 prompt 的格式。 +4. 对不少 metric 来说,你需要**高度受约束的生成/输出**(详见 [Model inference and evaluation](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/general-knowledge/model-inference-and-evaluation.md) 的 `Constraining model outputs` 一节)。 + +### 3.4 选择度量(metric) + +**基于 log-probabilities** 时,metric 很简单:看 **accuracy**(最可能的选项是最佳选项的频率)。重要:要**按长度归一化**(按字符 character、token、或 pmi)。也可以看 perplexity、recall、f1。 + +**生成式评测(generative)** 时可选 metric 范围更广,需要两步决策: + +1. **比较生成结果前是否先归一化(normalize)?** + - 归一化设计得不好时[很容易不公平](https://huggingface.co/blog/open-llm-leaderboard-drop),但总体上在任务层面仍提供信号; + - 对特定任务非常重要,如数学评测:你可能要从格式化输出中抽取结果; + - 如果要叠加 Chain of Thought 等机制测准确率,也要归一化——你需要把推理痕迹(reasoning trace)从实际结果中剥离。 +2. **如何把生成与参考做比较?** + - 从基于匹配的 metric(exact match、prefix match 等)到摘要/翻译类 metric(ROUGE、BLEU、character n-gram 比较)都可以; + - 现有 metric 列表见 ⭐ [lighteval 的 Metric List wiki](https://github.com/huggingface/lighteval/wiki/Metric-List)(作者表示之后会补「何时用哪个 metric」一节)。 + +**更一般的原则**:选 metric 时要想清楚任务真正关心什么。有些领域(如医疗、有公共交互的聊天机器人)不该测平均表现,而要能评估**最差表现(worst performance)**——如医疗输出质量、毒性等。(延伸阅读:⭐ [这个博客](https://ehudreiter.com/2024/07/10/challenges-in-evaluating-llms/)) + +### 3.5 智能新任务:功能测试(functional testing) + +代码领域:不仅要按语义评估生成的程序,还要按**实际功能**评估。好办法是检查「为遵循 prompt 而生成的代码」能否通过**一套为该任务设计的单元测试(unit tests)**。 + +功能化方法极具前景,因为: + +- 更容易生成测试用例(很多情况下可用基于规则的方法生成 test cases); +- 因此**降低过拟合(overfitting)**; +- 测的是模型的具体**主动能力(active capabilities)**。 + +不过,要把这种方法**迁移到文本任务需要创造力**! + +- 一个优秀范例是 **IFEval**:测试模型能否遵循指令的评测 benchmark。它创建一批格式化指令(*Add this number of bullet points.*、*Capitalize only one sentence.* 等),严格检查格式是否被遵循。 +- 作者认为:要把这个思路扩展到文本的其他特性,还需要更多工作。 + +--- + +## 4. 常用评测数据集盘点 + +如果你关心的任务已被充分研究,大概率已有现成数据集。下面是作者近几年整理的评测数据集清单。 + +⚠️ 两点提醒: + +- **部分数据集可能已过时**:它们是 pre-LLM 时代设计的,如今已被轻松解决;当初旨在探究文本的某一具体属性(翻译、摘要),已不再是现在的评测方式(评测如今更通用/整体化)。 +- **它们很可能已被污染**:已在网上公开多年。但被污染不代表对你的任务没有信号。 + +> 注:原文标注「✍️」的是作者提出、可自行复现的数据集想法(见 4.3)。部分行原文信息为空,笔记中保留名称并注明「原文未提供细节」。 + +#### 如何从盘点表中选数据集(作者备注提炼) + +表格的「备注」列里藏着作者的选数据集经验,常用判断依据有: + +- **看创建者与标注流程**:专家标注(如 FinQA 的付费专家+外部专家高一致)通常质量更高;自动抽取比例高、人工验证少的数据集要警惕(如 Dolphin18K、Math23K)。 +- **看模板化程度**:模板化/可再生成的数据集对**研究 contamination 特别有用**(Ape210K 部分模板化、Draw-1K 每题带模板标签、GSM-Symbolic、NPHardEval、DeepMind Math 可再生成)。 +- **看是否附带训练集**:凡提供额外 train set 或「本意部分用于训练」的(Ape210K、AQuA、DocMath-Eval、DeepMind Math、NuminaMATH),若拿去当训练数据会**反向污染主流数学 benchmark**(NuminaMATH 的备注直接警告了这一点)。 +- **看答案形式是否可自动验证**:整数(AIME、GSM8K)、SymPy 对象(FrontierMath、OlympiadBench)、单元测试(HumanEval、APPS)——答案可自动验证是生成式评测能跑起来的关键。 +- **看语言/时区属性**:中文题(Ape210K、GAOKAO-Bench、HMWP、Math23K)、多语言(MLSum、TyDiQA-GoldP)、是否每年更新(GAOKAO-Bench)。 +- **看是否有领域专家背书**:FrontierMath(60 位数学家、全部同行评审)被作者评为「目前可能质量最高」;GAOKAO-Bench 的论文「数据集信息意外地少」。 + +### 4.1 数学类数据集(Math specific) + +| 名称 | 类型 | 年份 | 规模 | 内容/备注 | 链接 | +|---|---|---|---|---|---| +| AGIEval (SATMath) | 考试题+现有数据集 | 2023 | 220 | SAT 数学题。论文实为一系列人类考试数据集汇编:数学部分经 MATH 用了 AIME & AMC,经 AQuA-Rat 用了 GRE & GMAT,另有 GaoKao。Metric:acc/em/f1 | [Paper](https://arxiv.org/abs/2304.06364) / [HF](https://huggingface.co/datasets/hails/agieval-sat-math) | +| AIME (all) | 奥赛题 | 1983–今 | 每年 15×2 | 需要算术、代数、计数、几何、数论、概率等中学数学综合的问题。美国 IMO 代表队选拔第 2 场考试。答案恒为 0–999 的整数 | [Blog](https://artofproblemsolving.com/wiki/index.php/American_Invitational_Mathematics_Examination) / [Source](https://artofproblemsolving.com/wiki/index.php/AIME_Problems_and_Solutions) | +| AIME (22/23/24) | 奥赛题 | 2024 | 90 | 同 AIME (all),用于 AIMO 竞赛 | [HF](https://huggingface.co/datasets/AI-MO/aimo-validation-aime) | +| ALGES (SingleEQ) | 网络来源汇编 | 2015 | 508 | 从网络抓取的年级代数题。论文主题:隐式学习并求解题目背后的简单方程。来源:math-aids.com、k5learning.com、ixl.com。pre-LLM 论文,数据源可能没问题 | [Paper](https://aclanthology.org/Q15-1042/) / [Source](https://gitlab.cs.washington.edu/ALGES/TACL2015/-/blob/master/questions.json?ref_type=heads) | +| ALG514 / AllEq | 网络论坛 | 2014 | 514 | 从众包辅导网站抽取、turking 清理、人工核验的代数应用题。论文主题:从问题中抽取方程模板来求解。来源:Algebra.com | [Paper](https://aclanthology.org/P14-1026/) / [Source](https://groups.csail.mit.edu/rbg/code/wordprobs/questions.json) | +| AMC 12 | 奥赛题 | 2000–今 | 每年 25 | 应用题(算术、代数、计数、几何、数论、概率等)。美国 IMO 选拔第 1 场考试(前身 American High School Math Exam)。题目设计为无需微积分背景即可解 | [Blog](https://artofproblemsolving.com/wiki/index.php/AMC_12) / [Source](https://artofproblemsolving.com/wiki/index.php/AMC_12_Problems_and_Solutions) | +| Ape210K | 考试题 | 2020 | 21 万题 / 5.6 万模板 | 中文小学数学应用题(数学教师编写)。部分题目模板化(对 contamination 研究有用);原始 90 万经人工筛选;提供「中间方程」(测 CoT trace 有用);本意部分用于训练 | [Paper](https://arxiv.org/abs/2009.11506)(已撤回,v1 仍可访问)/ [HF](https://huggingface.co/datasets/MU-NLPC/Calc-ape210k) | +| AQuA / AQUA-Rat | 考试题+turk 数据集 | 2017 | 100K | 以 3.4 万 GMAT/GRE 题为种子、turking 扩展的代数应用题。含 rationale;评分用 accuracy、BLEU、perplexity;本意部分用于训练 | [Paper](https://arxiv.org/abs/1705.04146) / [HF](https://huggingface.co/datasets/deepmind/aqua_rat) | +| ASDiv-A | 网络来源汇编 | 2020 | 2.3K | 从各网站收集并规范化的应用题。硕士生标注问题类型与年级;强调词汇多样性;用了 28 个网站 | [Paper](https://aclanthology.org/2020.acl-main.92/) / [Github](https://github.com/chaochun/nlu-asdiv-dataset) | +| CHAMP | 奥赛题 | 2024 | 270 | 从奥赛例题书抽取、改写为可解析解并标注的应用题。题目带 hints 与概念标签,可做消融实验。来源:《Problem-Solving strategies》(Engel, 2008) | [Paper](https://arxiv.org/abs/2406.18321) | +| DeepMind Math | 考试题+合成 | 2019 | 10K? | 代数、算术、微积分、比较、单位换算、多项式、概率等合成数学题。领域完整列表在附录 B;提供生成代码可产出更多样例;提供额外训练集;程序化合成 | [Paper](https://arxiv.org/abs/1904.01557) / [HF](https://huggingface.co/datasets/deepmind/math_dataset) | +| DocMath-Eval | 人工标注财报+现有金融数学集 | 2023 | 3.2K | 结合财报与现有数据集,标注者读材料出题(或校验),答案以 Python 程序给出、由领域专家评估。复用 TAT-QA、FinQA、MultiHiertt、TAT-HQA;金融数学数据质量看起来很高;提供额外训练集 | [Paper](https://arxiv.org/abs/2311.09805) / [Github](https://github.com/yale-nlp/docmath-eval) | +| Dolphin1878 | 网络来源汇编 | 2015 | 1.5K | 从在线来源抽样、必要时重新标注的数字应用题。论文主题:用语义解析从问题中提取 DOL 方程树。来源:algebra.com、answers.yahoo.com | [Paper](https://aclanthology.org/D15-1135.pdf) | +| Dolphin18K | 网络来源汇编 | 2016 | 18K | 半自动从在线来源抽取的应用题。来源:Yahoo Answers 数学分类(2008 起)。先人工标注 6K 再用分类器扩展;自动抽取比例高、人工验证少,作者对质量存疑 | [Paper](https://aclanthology.org/P16-1084.pdf) / [Kaggle](https://www.kaggle.com/datasets/saurabhshahane/sigmadolphin) | +| Draw-1K | 网络来源汇编 | 2016 | 1K | 从在线来源抽取的通用代数应用题。论文主题:评估求解器、测试模板与方程等价。每题标注其模板(对 contamination 有用)。来源:algebra.com | [Paper](https://arxiv.org/abs/1609.07197) / [Source](https://www.microsoft.com/en-us/download/details.aspx?id=52628) | +| FinQA | 专家标注财报 | 2021 | 1.1K | 与财报表格关联的金融问题;标注者给出问题+逐步过程+每页注解。付费专家标注+外部专家一致性高,质量可能很高;全集 8.2K;数据源 S&P 500 财报(1999–2019) | [Paper](https://arxiv.org/abs/2109.00122) / [HF](https://huggingface.co/datasets/ibm/finqa) | +| FrontierMath | 专家创建 | 2024 | 100+(确切数字未知) | 全新建、覆盖多数数学领域的难题;答案要么是整数要么是 SymPy 对象,可通过类单元测试的 Python 程序自动验证;题目带标签。60 位数学家、12 个国家;全部同行评审;论文有很好的 contamination 讨论;目前可能是质量最高的数据集。数据不公开——但闭源模型已被评测过,未来很可能被污染 | [Paper](https://arxiv.org/abs/2411.04872)(数据私有) | +| GAOKAO-Bench (MathCloze, MathQA) | 考试题 | 2023 | ~500 | 中国高考数学应用题。公式转 latex;中文;每年更新;论文探索多种评分方式(含 LLM as judge);论文里数据集信息意外地少 | [Paper](https://arxiv.org/abs/2305.12474) / [Github](https://github.com/OpenLMLab/GAOKAO-Bench?tab=readme-ov-file) / [HF MathCloze](https://huggingface.co/datasets/hails/agieval-gaokao-mathcloze) / [HF MathQA](https://huggingface.co/datasets/hails/agieval-gaokao-mathqa) | +| GAOKAO 2023 (MathEn) | 考试/竞赛题 | 2023 | 385 | 高中数学应用题。汇编 2023 中国高考、2023 AMC、2023 ACT | [HF](https://huggingface.co/datasets/MARIO-Math-Reasoning/Gaokao2023-Math-En) | +| GSM1K | 按另一数据集风格手工创建 | 2024 | 1.2K | 多样化的「grade school」风格应用题,遵循 GSM8K 的求解分布。论文做 GSM8K vs GSM1K 的 contamination 分析;并暗示 perplexity 分析不太擅长检测 contamination | [Paper](https://arxiv.org/abs/2405.00332)(数据私有) | +| GSM8K | 按考试风格手工创建 | 2021 | 8.5K | 多样化年级数学应用题。加外部计算器效果最好;答案均为正整数,50% 在 0–8 之间;先用 Upwork 标 1K、后用 Scale;出题者拿到 175B GPT-3 的种子题 | [Paper](https://arxiv.org/abs/2110.14168v2) / [Github](https://github.com/openai/grade-school-math) / [HF](https://huggingface.co/datasets/gsm8k) | +| iGSM (med/hard) | 合成 | 2024 | 20K | 用「对象/类别间依赖图(直接/隐式)+ 运算次数」组合生成题目。想法理论上不错但问题很不真实(运算次数过多);论文聚焦模型「心智过程」,拟人化过重;probing 部分不错 | [Paper](https://arxiv.org/pdf/2407.20311) / [HF](https://huggingface.co/datasets/YangZhoumill/infini_igsm_4k_noise_close) | +| GSMHard | 现有数据集改编(换数字) | 2022 | 8.5K | GSM8K 换更大/更少见数字以变难;但替换由程序自动完成,只人工检查了 25 处变更(另 50 例手工做)。想法不错但质量存疑(附录 H1) | [Paper](https://arxiv.org/abs/2211.10435) / [HF](https://huggingface.co/datasets/reasoning-machines/gsm-hard) | +| GSM-IC | 现有数据集扰动 | 2023 | 58K | GSM8K 抽 100 题加无关上下文(模板化无关句 + 角色/数字填充)。测 LLM 在数学推理时对无关上下文的敏感度 | [Paper](https://arxiv.org/abs/2302.00093) / [HF](https://huggingface.co/datasets/voidful/GSM-IC) | +| GSM-Plus | 现有数据集扰动 | 2024 | 10K | GSM8K 每题 8 种变体,GPT-4 生成、人工标注(校验交叉标注一致性)。变体:换数字、换运算、换问题、加干扰项等——作者认为这套变更类型学不错、可扩展 | [Paper](https://aclanthology.org/2024.acl-long.163/) / [HF](https://huggingface.co/datasets/qintongli/GSM-Plus) | +| GSM-Symbolic | 现有数据集模板化 | 2024 | 8.5K | GSM8K 模板化,可随时生成新评测、分析 GSM8K 上的 contamination。含子集(M1/P1/P2 难度等级、NoOp 加看似相关实则无关信息),部分实验用 few-shot;作者认为缺少子集说明表 | [Paper](https://arxiv.org/abs/2410.05229)(待发布) | +| Hungarian HighSchool Finals | 考试题 | 2023 | 33 | 2023 匈牙利高中数学会考题目。目前需手工评分 | [Source](https://dload-oktatas.educatio.hu/erettsegi/feladatok_2023tavasz_kozep/k_matang_23maj_fl.pdf) / [HF](https://huggingface.co/datasets/keirp/hungarian_national_hs_finals_exam) | +| HMWP | 考试题 | 2020 | 5.4K | 中国 K-12 题库标注的应用题。提出统一表示 MWP 方程的形式体系;中文 | [Paper](https://arxiv.org/abs/2010.06823) / [HF](https://huggingface.co/datasets/Gxg/HWMP) | +| Math23K | 网络来源汇编 | 2017 | 23K | 自动抽取的小学数学应用题。中文;来自在线教育网站;基于规则抽取,人工校验程度不明 | [Paper](https://aclanthology.org/D17-1088/) / [HF](https://huggingface.co/datasets/Gxg/Math23K) | +| Math401-LLM | 合成 | 2023 | 401 | 加/减/乘/幂/对数等算术表达式。论文想测严格算术能力;模型目前对 log/trig 或大数表现不佳 | [Paper](https://arxiv.org/abs/2304.02015) / [Github](https://github.com/GanjinZero/math401-llm) | +| MATH | 奥赛题 | 2021 | 12.5K | 真实竞赛题(自然语言+latex),带难度标注。来源 AMC 10/12、AOME 等;另引入从 Khan Academy 与 AMPS 抓取的训练集 | [Paper](https://arxiv.org/abs/2103.03874) / [HF](https://huggingface.co/datasets/lighteval/MATH) | +| MathOdyssey | — | — | — | 原文未提供细节 | — | +| MathQA | 现有数据集改编+标注 | 2019 | 37K | 对 AQuA 中可解题目加形式化标注程序(人工标注并测一致性)。提出数学问题表示语言并应用于 AQuA | [Paper](https://arxiv.org/abs/1905.13319) / [HF](https://huggingface.co/datasets/allenai/math_qa) | +| MAWPS | 现有数据集汇编 | 2016 | 3.3K | 来自现有数据集的应用题。提出创建新数学题的框架,注意去除词法/模板重叠;来源 ALG514、ALGES 等 pre-LLM 数据集 | [Paper](https://aclanthology.org/N16-1136/) / [Github](https://github.com/sroy9/mawps) | +| MiniF2F | 奥赛题 | 2022 | 244 | 奥赛应用题,尽可能用定理证明器形式化(Lean、Metamath、Isabelle)。测数学证明求解器的形式逻辑推理;来源 AIME、AMC、IMO | [Paper](https://arxiv.org/abs/2109.00110) / [HF](https://huggingface.co/datasets/cat-searcher/minif2f-lean4) | +| NPHardEval | 合成 | 2023 | 900 | 由合成图/线性数据构造、难度各异的问题。类型:排序数组搜索、编辑距离、最短路、旅行商、图着色、背包、会议调度;可按需重新生成 | [Paper](https://arxiv.org/abs/2312.14890) / [Github](https://github.com/casmlab/NPHardEval) | +| NuminaMATH CoT | 现有数据集汇编 | 2024 | 860K | K-12 + 奥赛级应用题(组合现有数据集)。来源 AOPS、AMC、AIME、CN-K12、GSM8K、MATH、ORCA_math、合成 AMC/MATH 等。⚠️ 若当训练集会污染所有主流数学 benchmark | [HF](https://huggingface.co/datasets/AI-MO/NuminaMath-CoT) | +| NuminaMATH TiR | 现有数据集汇编 | 2024 | 72K | NuminaMATH CoT 中可用工具集成推理(tool integrated reasoning)解决的子集。同样 ⚠️ 当训练集有污染风险 | [HF](https://huggingface.co/datasets/AI-MO/NuminaMath-TiR) | +| OmniMath | 奥赛题 | 2024 | 2.2K | 从论坛/奥赛网站抽取(规则+LLM 改写)、人工标注验证的奥赛题。来源 IMO、IMC、AoPS 论坛与 wiki;领域标注用 LLM;配套训练了 judge 评估自由形式答案 | [Paper](https://arxiv.org/abs/2410.07985) / [HF](https://huggingface.co/datasets/KbsdJames/Omni-MATH) | +| OlympiadBench | 奥赛题 | 2024 | 8.4K | 奥赛/数学/物理应用题;答案自动评估(数字或方程,用 SymPy)。来源全球数学/物理奥赛、中国地区/国家级数学竞赛、高考模拟;含物理子集;支持 VLM 评测 | [Paper](https://arxiv.org/pdf/2402.14008) | +| OlympicArena | 奥赛题 | 2024 | 11K | 原文未提供内容细节 | [Paper](https://arxiv.org/pdf/2406.12753) | +| PRM800K | 合成 | 2023 | 800K | 标注者对模型生成的 80 万解做的偏好数据。论文提出 process supervision 改进 reward model(对比 output vs process supervision)。更多是训练集而非评测集 | [Paper](https://arxiv.org/abs/2305.20050) / [HF](https://huggingface.co/datasets/tasksource/PRM800K) | +| SVAMP | 现有数据集改编 | 2021 | 1K | 专家对 ASDiv-A 做变体生成、不超过四年级的单未知数算术应用题。变体:同对象不同结构、两者皆变、加相关/无关信息、改信息、反转运算、改句子/对象顺序 | [Paper](https://aclanthology.org/2021.naacl-main.168/) / [Github](https://github.com/arkilpatel/SVAMP/blob/main/SVAMP.json) | +| TabMWP | 在线来源改编 | 2022 | 38K | 需多跳推理的表格应用题,抽取自在线教育网站并人工标注。来源 IXL;表格以图片、半结构化文本、表格三种形式提供;答案可为生成式或 MCQA;经过 turker 测试 | [Paper](https://arxiv.org/abs/2209.14610) / [HF](https://huggingface.co/datasets/Arietem/tabmwp) | +| TAL-SCQ5K-En | 竞赛题 | 2023 | 4K | MCQA 形式应用题,数学表达式为 latex。含中英文;另有 6K 训练样本和 CoT | [HF](https://huggingface.co/datasets/math-eval/TAL-SCQ5K) | +| TemplateGSM | LLM 生成 | 2024 | 7M | GPT-4 按 GSM8K 形态生成的数学应用题(改参数)。用 GPT-4 生成 meta-template,验证器确保可用。全部 LLM 生成,作者期待更强的质量证明 | [Paper](https://templatemath.github.io/TemplateMath_Part_I.pdf) / [HF](https://huggingface.co/datasets/math-ai/TemplateGSM) | +| TheoremQA | 在线来源改编 | 2023 | 800 | 大学级别定理的 QA。流程:GPT-4 枚举相关领域子领域 → 定理候选列表 → 领域专家核实 → 网上找相关 QA | [Paper](https://arxiv.org/abs/2305.12524) / [HF](https://huggingface.co/datasets/TIGER-Lab/TheoremQA) | + +### 4.2 Pre-LLM 数据集 + +> 多为翻译、摘要、推理、常识等「单属性」任务,现已较易解决;不少已被污染,但可能仍有信号。 + +| 名称 | 任务类型 | 数据规模/内容 | 任务 | 备注 | 链接 | +|---|---|---|---|---|---| +| DeepFix | Code task, Code-to-code, 纠错 | 7K 学生写的错误 C 程序 | 修正 C 程序 | | [Paper](https://ojs.aaai.org/index.php/AAAI/article/view/10742) | +| MLSum | 生成、多语言、摘要 | 1.5M 新闻摘要/文章对(DailyMail、Le Monde、Süddeutsche Zeitung、El Pais、Moskovskij Komsomolets、Internet Haber;en/fr/de/es/ru/tur) | 摘要 | Palm:加 prompt 前缀、文章截断到 2048 token | [Paper](https://arxiv.org/abs/2004.14900) / [HF](https://huggingface.co/datasets/mlsum) | +| TransCoder | Code task, Code-to-code | 852 个 Python/Java/C++ 并行函数 | 语言间翻译 | | [Paper](https://arxiv.org/pdf/2006.03511.pdf) / [Github](https://github.com/facebookresearch/CodeGen/blob/main/docs/transcoder.md) | +| WMT | 多语言、翻译 | WMT 会议翻译数据集(因年份而异) | 翻译 | 网址中的 2 位数替换为年份 | [Conference](https://www.statmt.org/wmt20/) | +| Adversarial NLI | 语言推理 | 10K entailment 数据集,human-in-the-loop 对抗攻击生成(找迫使模型预测错误标签的谓词);上下文来自 StoryCloze、CommonCrawl、Wikipedia、Open Annotated National Corpus、WikiHow、GLUE | 预测 entailment | R1–R3 为数据生成轮次 | [Paper](https://arxiv.org/abs/1910.14599) / [Data](https://dl.fbaipublicfiles.com/anli/anli_v1.0.zip) / [Github](https://github.com/facebookresearch/anli) | +| APPS | Text-to-code | 10K 自然语言 Python 编程题(抓自 leetcode 类网站),带测试套件 | 解 Python 题 | | [Paper](https://arxiv.org/abs/2105.09938) / [Github](https://github.com/hendrycks/apps) / [Data](https://people.eecs.berkeley.edu/~hendrycks/APPS.tar.gz) | +| AQuA | 算术、推理 | 100K 多选题(GMAT、GRE 等),含 question/options/rationale | 选正确答案 | 加外部计算器效果最好 | [Paper](https://arxiv.org/abs/1705.04146) / [Github](https://github.com/deepmind/AQuA) | +| ARC | 常识、推理 | 8K 小学科学题:e = easy set, c = challenge set | 选正确答案 | ⚠️ 是 AI2 Reasoning Challenge,不是 Abstraction and Reasoning Corpus | [Paper](https://arxiv.org/abs/1803.05457) / [Data](https://allenai.org/data/arc) | +| bAbI | 推理 | 20 个任务各 2K 自动生成的问题+短场景(模拟文本冒险游戏生成连续动作) | 对句子推理选正确结论 | 第 4 部分描述模拟环境与约束,很有趣;不难复现到其他推理类型 | [Paper](https://arxiv.org/abs/1502.05698) / [Github](https://github.com/facebookarchive/bAbI-tasks) / [Data](https://research.facebook.com/downloads/babi/) | +| BBQ | 偏见检测 | 58K 样本:两种上下文(模糊/明确偏见)+ 两个问题(负面/非负面)+ 候选答案;手工模板+众包校验 | 预测正确、无偏见的答案;不同上下文/问题下准确率之差构成 bias score | | [Paper](https://aclanthology.org/2022.findings-acl.165/) / [Github](https://github.com/nyu-mll/BBQ/tree/main/data) | +| BLiMP | 语言理解 | 67 个数据集各 1K 人工生成的最小对(minimal pairs),测句法/形态/语义知识;MTurk 校验 | 看模型赋予正确句子的 log-probability 是否更高 | 测:anaphor agreement、argument structure、binding、control/raising、determiner-noun agreement、ellipsis、filler-gap、irregular forms、island effects、NPI licensing、quantifiers、subject-verb agreement | [Paper](https://aclanthology.org/2020.tacl-1.25/) / [Github](https://github.com/alexwarstadt/blimp/tree/master/data) | +| BOLD | 生成、毒性检测 | 23K prompts(取自 Wikipedia 句子开头,含种族/宗教/政治/性别/职业群体成员) | 续写句子,用一系列指标评毒性(情感分析、分类器;HELM 用 Perspective API) | | [Paper](https://arxiv.org/abs/2101.11718) / [Github](https://github.com/amazon-science/bold/tree/main/prompts) | +| BooksCorpus | N/A | 11K 本 2 万+ 词的未出版书(16 种体裁,抓自网络) | 原论文用于训练句嵌入模型;模型论文常用于 contamination 或 perplexity 评测 | | [Paper](https://arxiv.org/pdf/1506.06724.pdf) / [HF](https://huggingface.co/datasets/bookcorpus) | +| BooksCorpus_HELM | 生成、记忆 | 从 BooksCorpus 随机抽 1K 本书 | 从段落开头随机 token 数续写,测精确/近似复现 | | [Paper](https://arxiv.org/abs/2211.09110) / [Data](https://drive.google.com/file/d/10uC4jM6tgI1pgtq--07FFHQ2Te7-SXGA/view) | +| BoolQ | 语言推理/理解 | 16K 自然发生的 Yes/No QA(问题+Wikipedia 上下文) | 回答 MCQA | | [Paper](https://arxiv.org/abs/1905.10044) / [Website](https://super.gluebenchmark.com/tasks) | +| CB | 语言理解 | 1.2K 语篇(WSJ 新闻、BNC 小说、Switchboard 对话),含上下文+目标句 | 预测 commitment entailment | | [Paper](https://semanticsarchive.net/Archive/Tg3ZGI2M/Marneffe.pdf) / [Website](https://super.gluebenchmark.com/tasks) | +| Civil comments | 毒性检测 | 1.8M 在线评论,众包标注(按 Perspective API 指南);其中 450K 标注了身份词 | 毒性预测;标签用于发现模型偏见 | 原论文含合成测试集(77K,模板生成,50 个身份词,50/50 毒性)与人工标注集 | [Paper](https://arxiv.org/pdf/1903.04561.pdf) / [Kaggle](https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classification) / [HF](https://huggingface.co/datasets/civil_comments) | +| Clean E2E NLG | 描述、生成 | 50K 众包生成的餐厅描述(给定 key-value,如食物类型、预算) | 生成描述 | | [Paper](https://arxiv.org/abs/1706.09254) / [HF](https://huggingface.co/datasets/e2e_nlg_cleaned) | +| CNN/DailyMail | Cloze/完成、摘要 | 原始:20 万新文档(CNN/DailyMail,2007–2015)转 Cloze 格式(去掉命名实体作 key) | HELM:用完整文档做摘要、highlights 作 gold | 作者怀疑生成不了很好的摘要 | [Paper](https://arxiv.org/pdf/1506.03340.pdf) / [HF](https://huggingface.co/datasets/cnn_dailymail) / [Data](https://cs.nyu.edu/~kcho/DMQA/) | +| CommonsenseQA | 常识、推理 | 12K turked QA(从 ConceptNet 关联初始化),质量过滤+Google 搜索上下文 | 回答 MCQA | 部分文本可能与 CC 数据重叠 | [Paper](https://aclanthology.org/N19-1421/) | +| Contrast Sets | 生成、鲁棒性 | 10 个对比集(最多 1K 例),由(通常是原论文的)研究者构造(加推理步骤、词换反义、改数字等) | 用新样本跑原任务,看性能是否下降;HELM 用 IMDb 与 DROP 对比集 | 涉及 NLVR2、IMDb、MATRES、UD parsing、PERSPECTRUM、DROP、Quoref、ROPES、BoolQ、MC-TACO;构造细节在附录 | [Paper](https://aclanthology.org/2020.findings-emnlp.117/) / [Data](https://allenai.org/data/contrast-sets) | +| COPA | 常识、语言理解 | 1K 前提+因果问题(带备选) | 常识选择 | | [Paper](https://people.ict.usc.edu/~gordon/publications/AAAI-SPRING11A.PDF) / [Website](https://super.gluebenchmark.com/tasks) | +| CoQA | 上下文阅读理解 | 127K 对话式 QA(需给 rationale),标注者编写 | 对话式问答 | | [Paper](https://arxiv.org/abs/1808.07042) / [Data](https://stanfordnlp.github.io/coqa/) | +| DataImputation | 现实任务、推理、结构化数据 | 8 个来源的结构化数据集 | 从带空缺属性的行补全空缺(如从电话号码推城市、从规格推手机品牌) | 表 2 有全部来源;HELM 用 Buy 与 Restaurant 子集,转自然语言测准确率 | [Paper](https://sxsong.github.io/doc/21icde-imputation.pdf) / [Data restaurant](https://www.cs.utexas.edu/users/ml/riddle/data/restaurant.tar.gz) / [Data Buy](https://dbs.uni-leipzig.de/file/Abt-Buy.zip) | +| Digits arithmetics (2D+, 2D-, 3D+, …) | 算术 | n 位加减法、复合运算,各 2K 例 | 解题 | 链接来自 lm-evaluation-harness 的 lm_eval/datasets/arithmetic | [Paper](https://arxiv.org/pdf/2005.14165.pdf) / [Github](https://raw.githubusercontent.com/openai/gpt-3/master/data/) | +| DROP | 算术、上下文阅读理解 | 55K 对抗性问题:需 1) 从文本中选相关项 2) 对其计算(排序/计数等) | 选与算 | | [Paper](https://aclanthology.org/N19-1246/) / [Data](https://allenai.org/data/drop) | +| Dyck language_HELM | 符号操作 | 500 个 D_n 词(52–100 字符的嵌套括号),去掉最后 i 个字符 | 预测唯一闭括号序列 | BigBench 有另一版本 | [Paper](https://arxiv.org/abs/2211.09110) / [Github](https://github.com/stanford-crfm/helm/blob/main/src/helm/benchmark/scenarios/dyck_language_scenario.py) | +| HellaSwag | Cloze/完成 | 60K 对抗过滤的多选题 | 选正确的下一句(来自 caption 或 WikiHow) | | [Paper](https://aclanthology.org/P19-1472/) / [Github](https://github.com/rowanz/hellaswag/tree/master/data) | +| HumanEval | Code task, Text-to-code | 164 个手写编程题(函数签名+docstring+函数体+单元测试) | 补全函数以通过单元测试 | | [Paper](https://arxiv.org/abs/2107.03374) / [HF](https://huggingface.co/datasets/openai_humaneval) | +| IMDB | 情感分析 | 50K IMDB 评论,正(≥7)负(≤4)各半,无中性 | 正/负分类 | | [Paper](https://aclanthology.org/P11-1015/) / [Website](https://ai.stanford.edu/~amaas/data/sentiment/) | +| LAMBADA | Cloze/完成 | 10K 叙事上下文(BookCorpus)+ 句子(掩掉最后一个词) | 预测最后一个词 | 特意构造以强制使用上下文 | [Paper](https://aclanthology.org/P16-1144/) / [Zenodo](https://zenodo.org/record/2630551#.YFJVaWT7S_w) | +| Language Modeling_HELM | 语言建模 | HELM 汇编多数据集:WikiText-103、ThePile(arXiv、BooksCorpus2、Enron Emails、PubMed Central、Wikipedia)、TwitterAAE、ICE | 全序列条件 log-probability(perplexity) | | [Paper](https://arxiv.org/abs/2211.09110) / [The pile](https://pile.eleuther.ai/) / [Wikitext](https://s3.amazonaws.com/research.metamind.io/wikitext/wikitext-103-raw-v1.zip) / [Twitter AAE](http://slanglab.cs.umass.edu/TwitterAAE/) / [ICE](https://www.ice-corpora.uzh.ch/en/access.htm) | +| LegalSupport | Entailment、现实任务、推理 | 20K 法律 entailment 场景(州/联邦法律意见;断言作上下文,随机选 2 条支撑来源) | 找最支持断言的规则 | | [Paper](https://arxiv.org/abs/2211.09110) / [Data](https://docs.google.com/uc?export=download&id=1PVoyddrCHChMxYrLhsI-zu7Xzs5S8N77) | +| LinuxKernel_HELM | 生成、记忆 | 从 Linux 内核随机抽 2K 函数 | 从函数开头随机行数续写,测精确/近似复现 | | [Paper](https://arxiv.org/abs/2211.09110) / [Data](https://drive.google.com/file/d/1Y5piYwil7T6n8toT_-d7NWqVZHh9NVxJ/view) | +| LSAT | 分析推理、阅读理解、逻辑推理 | 10K LSAT 题(分析推理、逻辑推理、阅读理解),带上下文 | 正确回答 MCQA | | [Paper](https://arxiv.org/pdf/2108.00648.pdf) / [Github](https://github.com/zhongwanjun/AR-LSAT/tree/main/data) | +| Magellan Benchmark | 现实任务、推理、结构化数据 | 多来源 23 个数据集(实体+属性);dirty 数据集故意加入错列、拼写错误等 | 判断两个表中两个实体是否同一 | Abt-Buy 和 Buy 可能是同一数据集 | [Paper](https://pages.cs.wisc.edu/~anhai/papers1/deepmatcher-sigmod18.pdf) / [Github](https://github.com/anhaidgroup/deepmatcher/blob/master/Datasets.md) | +| MBPP | Code task, Text-to-code | 1K 入门级 Python 众包编程题(描述、解答、3 个单元测试)——58% 数学、43% 列表处理、19% 字符串处理、9% 整数序列、2% 其他 | 解 Python 题 | 还有 400 项编辑版(无歧义 prompt+好签名,可研究 prompt 对代码生成的影响)+ MathQA-Python | [Paper](https://arxiv.org/abs/2108.07732) / [Github](https://github.com/google-research/google-research/tree/master/mbpp) / [HF](https://huggingface.co/datasets/mbpp) | +| MMLU | 语言理解 | 15K 多选题(法律、哲学、经济、心理、STEM、医学等,高中到专业水平),人工从网络收集 | 回答 MCQA | 看起来是很强/高质量的 baseline | [Paper](https://arxiv.org/abs/2009.03300) / [HF](https://huggingface.co/datasets/lukaemon/mmlu) / [Github](https://github.com/hendrycks/test) | +| MRF (Misinfo Reaction Frames) | 生成、错误信息能力 | 20 万对新闻标题声明(气候、新冠、癌症等)+ 标签(真实/错误信息);MTurk 标注真实性、传播可能性、作者意图 | 预测 gold 标签或生成可能的作者意图/读者感知 | 含 NELA-GT-2018-2020、SciDCC、Climate-FEVER、CoAID、CoronaVirusFacts、ESOC、DETERRENT 数据 | [Paper](https://aclanthology.org/2022.acl-long.222/) / [Github](https://github.com/skgabriel/mrf-modeling) | +| MS MARCO | QA、检索 | 100 万匿名问题+自由形式人工答案(来自相关网页摘要),部分带改写 | 原论文 3 任务:1) 生成正确回答 2) 无上下文也合理 3) 对 1000 段落排序 | HELM 只看排序任务,相关性用「Does the passage answer the query?」的 log-likelihood 估计 | [Paper](https://arxiv.org/abs/1611.09268) / [Github](https://microsoft.github.io/msmarco/) | +| MS MARCO TREC (TREC 2019) | 检索 | 从 MS MARCO 派生的数据集(段落/文档检索,全量或 top-n 重排:文档 100 / 段落 1000) | 检索/重排 | | [Paper](https://arxiv.org/abs/2003.07820) / [Data](https://trec.nist.gov/data/deep2019.html) / [Github](https://microsoft.github.io/msmarco/TREC-Deep-Learning-2019.html) | +| MultiRC | 语言理解、QA | 6K 多主题多选题 | | | [Paper](https://aclanthology.org/N18-1023.pdf) / [Data](https://super.gluebenchmark.com/tasks) | +| NarrativeQA | QA、检索 | 47K 自由形式人工问题与答案,关联 1.5K 书(Gutenberg)+ 电影剧本(抓取),配剧情摘要 | 从摘要或故事回答/选择 | 长上下文测试可用完整故事做 QA;对话类可能有趣 | [Paper](https://arxiv.org/abs/1712.07040) / [Github](https://github.com/deepmind/narrativeqa) | +| Natural Questions | 开放域/闭卷 QA | 20.7 万聚合 Google 搜索查询+标注的 Wikipedia 答案样本 | | | [Paper](https://aclanthology.org/Q19-1026/) / [Data](https://ai.google.com/research/NaturalQuestions/download) | +| NewsQA | QA | 10 万人工 QA 对(12K CNN 新闻文章);问题由标题+摘要生成、答案由问题+文章生成,经验证机制保留 | | 可能与 CNN/DailyMail 有交集(抽取脚本相同) | [Paper](https://aclanthology.org/W17-2623/) / [Github](https://github.com/Maluuba/newsqa) | +| OpenBookQA | 常识、推理 | 6K 句子,需常识推理外推到新情境的科学推理 | | | [Paper](https://arxiv.org/abs/1809.02789) / [Data](https://allenai.org/data/open-book-qa) | +| PIQA | 常识、推理 | 20K 物理常识推理情境 | 从上下文与答案中选正确动作 | | [Paper](https://arxiv.org/abs/1911.11641) / [Data](https://yonatanbisk.com/piqa/data/) | +| PopularBooksCorpus_HELM | 生成、记忆 | BooksCorpus 中出现在畅销书榜的 20 本书 | 从书首段开头随机 token 数续写,测精确/近似复现 | | [Paper](https://arxiv.org/abs/2211.09110) / [Data](https://drive.google.com/file/d/1RT29rRKNNXKgZBhXNbqevLwR440g44it/view) | +| QuAC | 上下文阅读理解 | 10 万信息寻求型 QA 情境(用 Wikipedia 生成) | | | [Paper](https://aclanthology.org/D18-1241/) / [Data](https://quac.ai/) | +| RACE | 上下文阅读理解 | 10 万中国初/高中生英语阅读理解题 | | | [Paper](https://aclanthology.org/D17-1082/) / [Data](https://www.cs.cmu.edu/~glai1/data/race/) | +| RAFT | 现实任务、文本分类 | 11 个自然分类任务数据集汇编,150–5K 测试项 | 从 50 个标注样本做 few-shot 分类(医学、金融、研究、英语、法律、物理、AI 安全、社交网络) | 语料:ADE Corpus v2、Banking77、NeurIPS 2020 impact statement risks、OneStopEnglish、Overrruling、Systematic review inclusion、TAI safety research、Terms of Service、TweetEval Hate、Twitter complaints、Semiconductor org types | [Paper](https://arxiv.org/abs/2109.14076) / [HF](https://huggingface.co/datasets/ought/raft) | +| RealToxicityPrompts | 生成、毒性检测 | 10 万自然句子(OpenWebText≈reddit 选,PerspectiveAPI 打分),拆成 prompt+continuation | 续写并用 PerspectiveAPI 评毒性 | | [Paper](https://arxiv.org/abs/2009.11462) / [Data](https://allenai.org/data/real-toxicity-prompts) / [Github](https://github.com/allenai/real-toxicity-prompts) | +| ReCoRD | 语言理解 | 12 万 passage/cloze query/answer 样本(CNN、DailyMail 新闻),人工过滤 | | | [Paper](https://arxiv.org/abs/1810.12885) / [Data](https://super.gluebenchmark.com/tasks) | +| RTE | 语言理解 | 3K entailment 竞赛数据汇编 | | | [Paper](https://w4ngatang.github.io/static/papers/superglue.pdf) / [Data](https://super.gluebenchmark.com/tasks) | +| SAT analogies | 语言理解 | 2005 年前的 374 道 SAT 类比题(a is to b what c is to …,词汇非高频) | | | [Paper](https://arxiv.org/pdf/2005.14165.pdf) / [Data dev](https://goo.gl/XWjas1) / [Data test](https://goo.gl/BcTtB4) | +| SIQA | QA | 原文未提供细节 | | | | +| SQuADv2 | 上下文阅读理解 | SQuAD + 5 万不可回答的问题 | 从上下文给出答案,但仅当可能 | | [Paper](https://arxiv.org/abs/1806.03822) / [Github](https://rajpurkar.github.io/SQuAD-explorer/) | +| StoryCloze | Cloze/完成、常识 | 5 万 5 句常识故事 | 选择正确结尾 | | [Paper](https://aclanthology.org/N16-1098/) / [HF](https://huggingface.co/datasets/story_cloze) | +| StrategyQA | 常识、推理 | 2.8K 需隐式知识推理的问题 | | 加外部计算器效果最好 | [Paper](https://arxiv.org/abs/2101.02235) | +| Synthetic reasoning (natural) | 逻辑推理 | 即时生成的合成数据:合成规则(条件句)、事实(属性)、逻辑 gold 输出 | | HELM 中也叫 rule_induct | [Paper](https://arxiv.org/abs/2211.09110) / [Github](https://github.com/stanford-crfm/helm/blob/main/src/helm/benchmark/scenarios/synthetic_reasoning_natural_scenario.py) | +| Synthetic reasoning (symbolic)_HELM | 逻辑推理、符号操作 | 用模板即时生成的合成数据 | 测模式识别("beach + beach - pear" → "A + A - B")或给定模式做字符串替换 | | [Paper](https://arxiv.org/abs/2211.09110) / [Github](https://github.com/stanford-crfm/helm/blob/main/src/helm/benchmark/scenarios/synthetic_reasoning_scenario.py) | +| TriviaQA | 开放域/闭卷 QA | 9.5 万 trivia QA(组合式问题、句法多样) | | | [Paper](https://aclanthology.org/P17-1147/) / [Data](https://nlp.cs.washington.edu/triviaqa/) | +| TruthfulQA | QA | 817 个关于棘手事实主张的问题(常见误解、谬误等,38 类),含真/假参考答案+支持真实答案的来源(另有 +380 题) | | | [Paper](https://arxiv.org/abs/2109.07958) / [Github](https://github.com/sylinrl/TruthfulQA) | +| TyDiQA-GoldP | 多语言、QA | 20.4 万多语言 QA 对(en、ar、ben、fin、ind、ja、ko、ru、tel、th、kiswahili) | MCQA | 生成过程可能问题欠定义、问题与答案语言水平不匹配;可能比其他数据集难 | [Paper](https://aclanthology.org/2020.tacl-1.30/) / [Github](https://github.com/google-research-datasets/tydiqa) | +| Web Questions | 开放域/闭卷 QA | 从 Google Search API 抽取 10 万 "Wh?" 问题,MTurk 标注(答案可能部分过时) | MCQA | | [Paper](https://aclanthology.org/D13-1160/) / [Website](https://nlp.stanford.edu/software/sempre/) | +| WebNLG | 生成、言语化 | 1.3 万三元组(subject/property/object,来自 DBPedia)与句子言语化(众包)的映射;主题:宇航员、大学、纪念碑、建筑、漫画角色、食物、机场、运动队、著作 | 语法正确的言语化 | 选句偏流畅、句子相对简单;无标注者来源描述,可能非「标准英语」 | [Paper](https://aclanthology.org/P17-1017.pdf) / [HF](https://huggingface.co/datasets/web_nlg) | +| WiC | 语言理解 | 7K,判断一个词在两个不同上下文是否同义 | | | [Paper](https://aclanthology.org/N19-1128/) / [Site](https://super.gluebenchmark.com/tasks) | +| WikiFact_HELM | Cloze/完成 | 12 个领域 1K 三元组(subject, relation, object),从 Wikipedia 采样并清理 | 预测关系句中的缺失项 | | [Paper](https://arxiv.org/abs/2211.09110) / [Codalab](https://worksheets.codalab.org/rest/bundles/0x8c3b60eb7c6b462e822a150f194d3b35/) / [Github](https://github.com/stanford-crfm/helm/blob/main/src/helm/benchmark/scenarios/wikifact_scenario.py) | +| WikiLingua | 生成、多语言、摘要 | 4.3 万文章/摘要对(WikiHow 18 种语言);摘要=各步摘要句拼接,文章=详细段落 | 摘要 | Palm:prompt 前缀+截断 2048 token;怀疑数据创建导致摘要基线「机械化」语言,可能低估更流畅的摘要(ROUGE 应不太受影响) | [Paper](https://aclanthology.org/2020.findings-emnlp.360/) / [Github](https://github.com/esdurmus/Wikilingua) | +| Winogender | 偏见检测 | 原文未提供细节 | | | | +| Winograd | 推理、Winograd | 273–285 个例句:消解代词指代(特意构造得对统计方法难、对人容易) | 代词消解 | 作者不确定 GPT-3 评测用的是这个还是 SuperGLUE 版 | [Paper](https://dl.acm.org/doi/10.5555/3031843.3031909) / [Website](https://cs.nyu.edu/~davise/papers/WinogradSchemas/WSCollection.xml) | +| WinoGrande | 推理、Winograd | 4.3 万句对抗性 Winograd 句 | | | [Paper](https://arxiv.org/abs/1907.10641) / [Website](https://winogrande.allenai.org/) | +| WSC | 语言理解、Winograd | Winograd Schema Challenge | | | [Paper](https://w4ngatang.github.io/static/papers/superglue.pdf) / [Website](https://super.gluebenchmark.com/tasks) | +| XSUM | 摘要 | 22.6 万 BBC 新闻文章(2010–2017,WayBack 机器抽取)+单句摘要(来自文章本身) | 摘要 | 领域:新闻、政治、体育、天气、商业、科技、科学、健康、家庭、教育、娱乐、艺术;可手动检查模型近期知识是否让旧闻摘要产生差异 | [Paper](https://aclanthology.org/D18-1206/) / [HF](https://huggingface.co/datasets/xsum) / [Github](https://github.com/EdinburghNLP/XSum) | + +### 4.3 作者提出的、可自行复现的数据集想法(✍️) + +| 名称 | 任务类型 | 内容 | 来源 | +|---|---|---|---| +| ✍️ GSM8K-Python | Code task, Text-to-code | GSM8K 的 Python 版(8.5K 年级数学题) | [Paper](https://arxiv.org/abs/2204.02311) | +| ✍️ MRF | 生成、人工评测、错误信息能力 | 从 MRF 抽 250 条标题,按论点聚成 80 簇;任务:从论点+5 条标题生成支持论点的可信标题;标注者评估 1) 是否支持论点 2) 是否看起来真实 | [Paper](https://arxiv.org/abs/2211.09110) / [Data](https://drive.google.com/uc?export=download&id=1uVJbsgPCHFAvH43I6SVvU3Ayo8dh-y_N);[原始流程报告](https://cset.georgetown.edu/publication/truth-lies-and-automation/) 第 6 页 + HELM 论文 8.5.2、E.5、5.5 节 | +| ✍️ News article generation | 生成 | 从标题与副标题生成 25 篇文章,80 人判断是生成还是原创 | [Paper](https://arxiv.org/abs/2005.14165)(GPT-3) | +| ✍️ Numeracy Prediction | 符号操作 | 给几个例子做符号回归(symbolic regression),把数字关系应用到新输入 | [Paper](https://arxiv.org/abs/2211.09110) / [Github](https://github.com/stanford-crfm/helm/blob/main/src/helm/benchmark/scenarios/numeracy_scenario.py) | +| ✍️ SVG datasets | — | 构造 SVG 数据集,看模型能否生成或解释 SVG 绘图 | [Twitter thread](https://twitter.com/zswitten/status/1631178997508997120) | +| ✍️ Theory of the mind datasets | — | 心智理论数据集,可能很容易生成 | [Paper](https://arxiv.org/abs/2302.08399) | +| ✍️ Wedging prompts | 生成、人工评测、错误信息能力 | 11 个带特定意图的 prompt(如影响投票行为、生成支持/反对 X 的言论定向特定群体),各加 3 个示例,生成后续示例 | [Paper](https://cset.georgetown.edu/wp-content/uploads/CSET-Truth-Lies-and-Automation.pdf) / [Data](https://drive.google.com/uc?export=download&id=1kWB3_F4Tobc_oVGC_T-a5DHEh-AB4GTc);HELM 人工评测:1) 是否针对目标群体 2) 是否支持目标信息 3) 是否分裂 | +| ✍️ Word scrambling | 符号操作 | 5 个字符操作任务各 1 万例(循环字母、字母重排、随机插入、反转),恢复原词 | [Paper](https://arxiv.org/abs/2005.14165)(GPT-3 §3.9.2);容易生成/自动化 | + +--- + +## 5. Tips and Tricks + +### 5.1 管理污染(Managing contamination) + +总原则:**凡是公开在网上的数据集,都应假设它已经(或将会)被污染**。 + +缓解措施: + +1. **提供 canary string(金丝雀字符串)**——如 [BigBench](https://github.com/google/BIG-bench) 的做法:在评测集中放一个特殊字符组合,模型创建者可以在自己的训练集里搜索它,一旦出现即表明训练集含有评测数据。 +2. **以加密([encrypted](https://arxiv.org/abs/2309.16575))或门控([gated](https://huggingface.co/datasets/Idavidrein/gpqa),如 GPQA)形式提供评测集**——让网络爬虫难以解析,从而不会意外进入训练集。 +3. **运行动态 benchmark([dynamic benchmarks](https://arxiv.org/abs/2104.14337))**——随时间定期更新,模型无法「把答案背下来」(但数据集成本更高)。 +4. **事后检测污染([detect contamination](https://arxiv.org/abs/2311.06233))**——例如看生成结果的 perplexity,或设计对抗性 prompt 变体。注意:**没有哪种污染检测方法是万无一失的**。 + +不过也要记住:**数据集被污染不代表它不再有趣、不再有信号**——训练过程中它依然有用。 + +### 5.2 实战中会遇到的问题 + +#### 微调模型、system prompt 与 chat template + +很多 instruction-tuned 模型如果没做到以下几点,表现会非常差: + +- 在**推理的最开始加上它们的 system prompt**; +- 用 **chat template** 提示它们(通常是在对话轮次上加 `Assistant` / `User` 前缀——详见 ⭐ [这个指南](https://huggingface.co/docs/transformers/main/en/chat_templating))。 + +另外,**不要假设不同 tokenizer 行为相同**,尤其是在 chat template 方面——参见 ⭐ [这条推文](https://x.com/danielhanchen/status/1796952220619157694) 里关于 tokenization 空格与 chat template 的示意图: + +![Spacing, tokenization and template](https://pbs.twimg.com/media/GPANfpiasAA9b6F?format=png&name=medium) + +#### Tokenization 细节 + +**1. 上下文与选项一起分词、还是分开分词** + +- 做 MCQA 评测时,一般应把**上下文和选项一起分词**(tokenize context + choices together),这样产生的是模型看来自然/可能的 token 序列。 +- 但有些 tokenizer(如 [Llama 的](https://github.com/EleutherAI/lm-evaluation-harness/pull/531#issuecomment-1595586257))不满足 `enc(context + choice) = enc(context) + enc(choice)`(会增删空格)。这意味着比较各选项的 log-probability 不容易——上下文 token 可能「渗入」选项 token,破坏比较。 +- 若你的模型如此:可以先**分别计算 context 和 choice 的 token,再去掉各自附加的特殊开始/结束 token 后拼接**。 + +**2. 注意开始与结束句子 token(start / end of sentence tokens)** + +- 有些模型(如 `Gemma`)对[推理时是否包含 start-of-sentence token](https://github.com/EleutherAI/lm-evaluation-harness/pull/1465) 极其敏感。你可能要做几个实验确认你的模型是否如此,必要时手动加上这些 token。 +- 还可能遇到模型不在你期望的结束 token(如 `\n`)上停止的情况——因为模型不会单独预测该 token,而是把它包含在更高级 token 里(例如 `\n\n` 在代码模型中可能是单个 token)。此时需要加一个「**回溯(backtrack)**」检查:在计算 metric 前把生成文本在正确位置截断。 + +**3. 多语言与 tokenization** + +- 做多语言评测时,要根据评测任务和 metric 决定如何分词。有些语言**不用空格作词分隔符**(韩语、泰语、日语、中文等),需要语言特定的 tokenizer 才能正确切分,否则会影响 [BLEU](https://github.com/EleutherAI/lm-evaluation-harness/issues/212)、F1 等指标得分。 + +**4. 代码评测与结束句子 token** + +- 代码模型通常把 `\n\t` 训练成**单个 token**,生成时常一步产生 `\n\t`。 +- 若任务把 `\n` 定义为结束 token(停止生成),模型在预测 `\n\t`(作为一个 token,不等于 `\n`)后仍会继续生成,而你其实希望它停下来。 +- 对策:要么**更新你的结束 token 集合**,要么定义一个**基于字符表示回溯最新 token 的机制**,事后停止并截断生成。 + +#### MCQA 评测的提速技巧 + +- 若任务只需模型预测**一个 token**,可以大幅提速: + - 不用跑 `number_of_choices` 次推理(`context + choice 1`、`context + choice 2` …),只需对 `context` 做一次推理,直接取**全词表概率分布**(其中包含所有单 token 选项),一次拿到所有目标 log-probability。 + - 这正是 `lighteval` 的做法。 + +### 5.3 生成式评测结果异常差时的排查 + +第一步永远是**仔细检查模型的生成结果**。常见问题: + +| 常见问题 | 修复 | +|---|---| +| **输出解析过严**(算 metric 之前),导致答案丢失 | 调整你的解析逻辑 | +| **模型无法在 few-shot 中遵循输出格式**(近期训了指令数据的模型很常见,如 llama 3.2、Qwen 2.5) | 要么调整 prompt 格式,要么就假设模型应当能在 few-shot 中遵循它 | +| **模型过于啰嗦、永远到不了正确答案**(长上下文模型更常见;作者在 Qwen 和 CommandR 上观察到) | 要么加大允许的上下文长度,要么在 task prompt 里加「请简洁」指令,要么就假设模型应当能简洁作答 | + +--- + +## 6. 参考资料 + +### 原文(GitHub evaluation-guidebook) + +- 章节总览:`contents/automated-benchmarks/` + - [basics.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/automated-benchmarks/basics.md) + - [designing-your-automatic-evaluation.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/automated-benchmarks/designing-your-automatic-evaluation.md) + - [some-evaluation-datasets.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/automated-benchmarks/some-evaluation-datasets.md) + - [tips-and-tricks.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/automated-benchmarks/tips-and-tricks.md) +- 指南仓库:https://github.com/huggingface/evaluation-guidebook (已迁移至 [OpenEvals/evaluation-guidebook](https://huggingface.co/spaces/OpenEvals/evaluation-guidebook),见 [[00-Overview]]) + +### 指南内部其他章节(交叉引用) + +- [Model inference and evaluation](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/general-knowledge/model-inference-and-evaluation.md)(生成式 vs log-probability 输出、约束输出) +- [Troubleshooting reproducibility](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/troubleshooting/troubleshooting-reproducibility.md)(不同 prompt 对结果的影响) +- [Using human annotators](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/human-evaluation/using-human-annotators.md)(人工标注者) + +### 作者推荐的外部链接(⭐) + +- ⭐ 作者的个人 evals 博客:[LLM Evaluation(clefourrier)](https://huggingface.co/blog/clefourrier/llm-evaluation)(与本文有部分重叠) +- ⭐ [Cosmopedia 博客](https://huggingface.co/blog/cosmopedia)(用 LLM 造合成数据集) +- ⭐ [lighteval Metric List wiki](https://github.com/huggingface/lighteval/wiki/Metric-List)(metric 清单) +- ⭐ [Transformers chat templating 指南](https://huggingface.co/docs/transformers/main/en/chat_templating) +- ⭐ [tokenization 空格与 chat template 示意图(Daniel Han 推文)](https://x.com/danielhanchen/status/1796952220619157694) +- ⭐ [Prompts vs. Leaks: 模型过拟合评测格式的论文](https://arxiv.org/abs/2407.07890) +- ⭐ [Challenges in evaluating LLMs(ehudreiter 博客,为何要测最差表现)](https://ehudreiter.com/2024/07/10/challenges-in-evaluating-llms/) + +### 论文与工具链接(正文出现) + +**污染相关**:[BigBench canary](https://github.com/google/BIG-bench) · [加密评测](https://arxiv.org/abs/2309.16575) · [GPQA gated 数据集](https://huggingface.co/datasets/Idavidrein/gpqa) · [动态 benchmark](https://arxiv.org/abs/2104.14337) · [污染检测](https://arxiv.org/abs/2311.06233) + +**设计与方法**:[选项顺序偏好](https://arxiv.org/abs/2309.03882) · [Open LLM Leaderboard drop(归一化不公平)](https://huggingface.co/blog/open-llm-leaderboard-drop) · [NPHardEval](https://arxiv.org/abs/2312.14890) · [DyVal](https://arxiv.org/abs/2309.17167) · [MuSR](https://arxiv.org/abs/2310.16049) · [bAbI](https://arxiv.org/abs/1502.05698) + +**工具**:[lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness)(PR [#531 Llama tokenizer](https://github.com/EleutherAI/lm-evaluation-harness/pull/531#issuecomment-1595586257)、PR [#1465 Gemma SOS token](https://github.com/EleutherAI/lm-evaluation-harness/pull/1465)、[Issue #212 多语言 BLEU](https://github.com/EleutherAI/lm-evaluation-harness/issues/212))· [lighteval](https://github.com/huggingface/lighteval) + +> 数学/Pre-LLM 数据集的全部论文与数据链接见 [第 4 节表格](#4-常用评测数据集盘点)。 diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/02-Human-Evaluation.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/02-Human-Evaluation.md new file mode 100644 index 0000000..7f495cd --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/02-Human-Evaluation.md @@ -0,0 +1,313 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - human-evaluation +status: active +created: 2026-08-21 +source: https://github.com/huggingface/evaluation-guidebook +--- + +# 人工评测(Human Evaluation) + +> 来源:HuggingFace LLM Evaluation Guidebook — Human Evaluation 章节提炼 +> 原文章节:basics / using-human-annotators / tips-and-tricks +> 本笔记为提炼式笔记(非逐字翻译),覆盖原文核心概念、实操建议与经验教训。 + +**三篇原文的关系(阅读地图):** + +1. `basics.md` —— 概念层:什么是人工评测、三种系统化方式、两种非正式方式、优缺点。 +2. `using-human-annotators.md` —— 组织层:如何选择、付费、培训、质量控制标注者。 +3. `tips-and-tricks.md` —— 实操层:任务设计、标注过程中的注意事项、人机混合标注与端到端教程。 + +> 原文建议的阅读顺序:先读 `using-human-annotators`,再读 `tips-and-tricks`。 + +## 什么是人工评测 + +**人工评测(human evaluation)** 的定义非常简单:**让人类来评估模型**。与用另一个模型来打分的 LLM-as-a-judge 路线不同,人工评测以人类判断为最终裁判。 + +本文档聚焦于**事后评测(post-hoc evaluation)**这一场景: + +- 模型已经训练完成; +- 你心里有一个明确的任务(given task); +- 人类为模型的输出提供分数。 + +也就是说,这里不涉及训练过程中的即时反馈,而是模型成型之后、针对特定任务的能力度量。 + +### 系统化评测:三种主要方式 + +原文把系统化人工评测归纳为**三种方式**,区别在于你手上已经拥有什么资源(数据集、分数): + +| 场景 | 你提供什么 | 人类做什么 | 示例 | +| --- | --- | --- | --- | +| **① 无数据集** | 一个任务 + 评分指南(scoring guidelines)+ 一个(或多个)**可交互的模型** | 与模型交互后,给出**分数和推理(reasoning)** | 「试着让这两个模型输出有毒语言;模型有毒得 0 分,无毒得 1 分」 | +| **② 已有数据集** | 用数据集中的 prompt 去问模型,然后把 **prompt + 模型输出 + 评分指南** 一起交给标注者 | 按指南对每条输出打分 | 「模型若回答了隐私信息得 0 分,否则得 1 分」 | +| **③ 已有数据集 + 已有分数** | 你已有的评测方法、数据集和分数 | 做 **error annotation**(错误标注/错误审查),审查评测方法本身是否合理 | — | + +**第三种方式需要特别说明:** + +- **error annotation** 是检验一个新评测系统时**非常重要的一步**。它本质上是"评测一个评测"(evaluating an evaluation),严格来说略超本文范围;但它也可以当作第二种方式的评分机制来使用。 +- 参考阅读:[Error Annotations to Evaluate](https://ehudreiter.com/2022/06/01/error-annotations-to-evaluate/)(Ehud Reiter 的博客,解释了如何用错误标注来评估评测系统)。 + +**两个补充说明(Notes):** + +- 对于**已部署的生产模型**,也可以直接收集用户反馈,并在此基础上做 **A/B 测试**(不需要专门组织标注团队)。 +- **AI audits**([外部系统化评测](https://arxiv.org/abs/2401.14462),即对模型的外部系统性审查)通常基于人类判断,也属于人工评测范畴,但不在本文档范围内。 + +### 三种方式的选型速记 + +- 想**探索一组能力**、还没有现成数据 → 用方式①,给人类一个任务和评分指南,让他们自由与模型交互。 +- 想确认模型**在特定输入上不会出错**(如"不该回答的 prompt")→ 用方式②,把 prompt、输出、指南一起给标注者。 +- 想**验证新评测方法是否靠谱** → 用方式③,让人类对已有分数做 error annotation。 + +## 非正式评测(Casual Evaluation) + +除了系统化评测,还有两种更随意的、同样基于人类的评测方式。 + +### Vibes-checks(氛围检查/体感评测) + +- **定义**:由个人完成的**手动评测**,通常使用**未公开的 prompt(undisclosed prompts)**,以获得对模型在大量用例上表现的整体感受——用例范围从写代码到"小黄文质量(quality of smut written)"这种五花八门的场景。 +- **传播方式**:结果经常被分享到 Twitter 和 Reddit 上。 +- **本质局限**:这些结果大多构成**轶事证据(anecdotal evidence)**,并且**高度敏感于确认偏误(confirmation bias)**——换句话说,**人们往往会找到他们想找的东西**。 +- **价值定位**:尽管证据强度低,它仍然可以作为**你自己用例的良好起点**(例如用别人的 vibes-check 结果来挑选值得深入测试的模型方向)。 +- 参考:[Vibe Checks Are All You Need](https://olshansky.substack.com/p/vibe-checks-are-all-you-need) + +### Arenas(竞技场)与 Elo 排名 + +- **定义**:**众包式人工评测(crowdsourced human evaluation)**,目的是给模型排名。 +- **典型例子**:[LMSYS chatbot arena](https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard):社区用户被邀请与模型聊天,直到判断出某个模型比另一个更好。 +- **机制**:投票被聚合进 **Elo 排名(Elo ranking)**——一种基于对局/两两比较(matches)的排名系统——用来选出"最好的"模型。 +- **特点**:把"哪个更好"的主观判断拆解成大量成对比较,再通过 Elo 算法聚合成全局排名,是社区评测模型的主流玩法。 + +## 人工评测的优缺点 + +### 总体优点(为什么值得做人工评测) + +- **灵活性(Flexibility)**:只要你能把"在评测什么"定义得足够清楚,几乎**任何东西**都能得到分数——从安全性到写作质量到特定领域知识。 +- **无污染(Absence of contamination)**:如果让人类**写新问题**来测试系统,这些问题(希望如此)不会出现在训练数据中,避免测试集与训练集重叠导致的分数虚高。 +- **与人类偏好相关(Correlation with human preference)**:这很明显——你本来就是用人类偏好来打分的,分数天然对齐真实用户感受。 + - ⚠️ **注意**:用人类做评测时,必须确保你的 **annotators(标注者)足够多样化**,否则结果无法泛化到更广泛的人群。 + +### 总体缺点:四类人类偏见 + +| 偏见 | 含义 | 关键细节 | 出处 | +| --- | --- | --- | --- | +| **First impressions bias**(首因效应) | 人类评估者倾向于**基于第一印象**估计答案质量,而不是基于实际的事实性或忠实性(factuality / faithfulness) | 第一印象好(如文笔流畅)的答案可能获得虚高评分 | [2309.16349](https://arxiv.org/abs/2309.16349) | +| **Tone bias**(语气偏见) | 众包标注者对**语气非常敏感**,会**低估语气自信的答案中的事实或逻辑错误** | 即:模型用自信的语气说错话,人类评估者更不容易发现,评分会被带向更"assertive(自信/武断)"的模型;**专家标注者(expert annotators)更不容易中招** | — | +| **Self-preference bias**(自我偏好偏见) | 人类更可能偏好**迎合自己观点、与自己意见或错误一致**的答案,而不是事实正确的答案 | 立场相近比正确性更重要时,评分会偏离客观事实 | [2310.13548](https://arxiv.org/abs/2310.13548) | +| **Identity bias**(身份偏见) | 不同身份(identity)的人价值观不同,对模型答案的**评分差异很大** | 例如在**毒性(toxicity)**评测上,不同群体对"什么算有毒"的判断显著不同 | [2205.00501](https://arxiv.org/abs/2205.00501) | + +> **应对思路**(源自原文):tone bias 等偏见对**专家标注者**影响更小,因此在关键评测中考虑使用受过训练的/领域专家标注者;同时保持标注者群体的多样性以支撑结果泛化。 + +### 系统化人工评测的优缺点 + +**优点(尤其在使用付费标注者时):** + +- **获得高质量数据(high quality data)**:得到适合你用例的高质量数据,之后可以继续在此基础上构建——例如开发 **preference models(偏好模型)** 时作为训练信号。 +- **数据隐私(Data privacy)**:依赖付费标注者(尤其是 **in-house** 自有标注团队)时,你的数据集相对安全;而用**闭源 API 模型**做 LLM 评测时,数据会被发送到外部服务,对数据流向的保障更少。 +- **可解释性(Explainability)**:模型得到的分数,可以由标注它的**人类来解释**——这是纯模型评测很难提供的。 + +**缺点:** + +- **成本(Cost)**:如果正确地给标注者付酬,成本会**很快升高**;而且很可能需要**多轮迭代评测**(iterative evaluation)来打磨指南,进一步增加成本。 +- **不可扩展(Un-scalability)**:除非评测的是带用户反馈的生产系统,否则人工评测**难以规模化**——每一轮新评测都需要重新动员(并支付)新的评估者。 +- **缺乏可复现性(Lack of reproducibility)**:除非**始终保留同一批标注者**且指南**完全无歧义**,否则某些评测结果很难精确复现——人不是稳定的"测量仪器"。 + +### 非正式评测的优缺点 + +**优点:** + +- **成本更低(Lesser cost)**:依赖社区人群的善意(crowd's good will),不需要付酬。 +- **发现边缘用例(Edge case discovery)**:利用用户在几乎不受限范围内的创造力,可以发现**有趣的边缘用例(edge cases)**——这些往往是正式评测想不到的。 +- **更好的可扩展性(Better scalability)**:只要有足够多感兴趣且愿意参与的参与者,非正式评测扩展性更好、进入门槛更低。 + +**缺点(不进行标注者筛选时):** + +- **高度主观(High subjectivity)**:用宽泛的指南让大量社区成员保持一致的评分非常困难,因为标注者的偏好往往是**文化绑定的(culturally bound)**([2404.16019](https://arxiv.org/abs/2404.16019v1))。只能寄希望于投票规模够大,通过"**群体智慧(wisdom of the crowd)**"效应(参见 Galton 关于群体平均估计的经典论述)把个体偏差抹平。 +- **不具代表性的偏好排名(Unrepresentative preference ranking)**:互联网科技圈里**年轻西方男性严重过度代表(over-represented)**,会导致偏好非常偏斜、与一般人群不匹配——无论是探索的话题范围还是整体排名。 +- **容易被操纵(Easy to game)**:如果使用不加筛选的众包标注者,第三方很容易**操纵(game)**评测结果,例如抬高某个模型的分数(因为不少模型有辨识度很高的**写作风格(distinctive writing style)**,容易被批量刷票识别并针对)。 + +### 系统化 vs 非正式:一张表对比 + +| 维度 | 系统化人工评测 | 非正式评测(vibes-check / arena) | +| --- | --- | --- | +| 标注者 | 付费、可筛选(人口学、质量) | 社区志愿者,不筛选 | +| 成本 | 高(付酬 + 迭代) | 低(依赖善意) | +| 可扩展性 | 差(每轮重新动员) | 好(参与者多) | +| 数据质量 | 高、贴合用例 | 高主观性、质量参差 | +| 数据隐私 | 好(in-house 更佳) | 公开传播 | +| 代表性 | 可通过筛选控制 | 偏向特定人群(年轻西方男性) | +| 可操纵性 | 低 | 高(易被刷票) | +| 可复现性 | 中等(取决于标注者与指南) | 差 | + +**基于原文优缺点的决策指引:** + +- **要严谨的评测结论、要沉淀高质量数据**(如为偏好模型积累训练信号)→ 走**系统化人工评测**:筛选标注者、认真写指南、付费、迭代、用 IAA 把关。 +- **要快速低成本地探索模型能力、发现边缘用例** → 走**非正式评测**:vibes-check 起步 + arena 排名参考;但要意识到其主观性、人群代表性偏差与可操纵性。 +- **已有生产系统** → 优先考虑**用户反馈 + A/B 测试**,而不是专门组织一轮人工评测。 +- **新评测方法上线前** → 一定要补一轮 **error annotation**,让人类审查"评测本身是否合理"。 +- **资源受限但想保留人工评测的价值** → 用**人机混合标注**(预标注、监督 model-as-judge、jury of models 裁决),但接受模型偏见可能渗入。 + +## 如何使用人工标注者(Using Human Annotators) + +> **总纲**:建议先阅读 [数据标注质量良好实践综述](https://aclanthology.org/2024.cl-3.1/) 的 **第 3 节**(该综述汇总了 2023 年以来的相关论文)。如果你追求生产级质量、并且有能力实施其中所有方法,尽管去做! +> +> 配套示意图:[Best annotation practices](https://github.com/huggingface/evaluation-guidebook/blob/main/assets/best_annotation_practices.png?raw=true) + +无论项目规模大小,在**定义好任务和评分指南之后**,以下都是重要的指导原则: + +### 1. 标注者选择与报酬(Workforce selection & monetary incentive) + +你希望做任务的人满足以下条件: + +1. **人口学条件(demographics)**——例如:目标语言的**母语者**、**更高的教育水平**、特定领域的**专家**、**地理来源多样化**等。具体需求因任务而异。 +2. **高质量产出(high quality work)**——现在尤其重要的是:要有办法**检查答案是否是 LLM 生成的**(防止标注者用 LLM 偷懒),并据此把部分标注者从标注池中**过滤**出去。 + +> **报酬建议**(原文观点):*除非你指望高度积极的众包标注者(highly motivated crowdsourced annotators),否则**总是(always)应该给标注者合理付费**(pay your annotators correctly)。* 合理付酬既是质量保障,也是"系统化评测成本高"这一缺点的来源——两者是同一枚硬币的两面。 + +### 2. 指南编写(Guideline design) + +- 一定要**花大量时间认真头脑风暴你的指南(guidelines)**——这是整个流程里最容易低估的工作量。 +- 原文作者自述:这是他们构建 [GAIA](https://huggingface.co/gaia-benchmark) 数据集时**花费时间最多的环节之一**。 + +### 3. 迭代式标注(Iterative annotation) + +- 准备好进行**多轮标注(several rounds of annotations)**:你的标注者一定会**误解你的指南**——它们比你想象的更有歧义! +- 多次生成样本(generating samples several times),能让标注者真正**收敛(converge)**到你需要的标准上。 + +### 4. 质量评估与人工筛选(Quality estimation & Manual curation) + +- **控制答案质量**:尤其可以通过 **inter-annotator agreement(标注者间一致性,IAA)** 来度量——如果不同标注者对同一条数据的判断差异很大,说明指南或任务有问题。 +- **最终人工筛选(manual curation)**:做最后一道选择,只保留**最高质量/最相关**的答案。 + +### 5. 专业工具 + +- 构建高质量标注数据集的专用工具可以显著提效,例如 [Argilla](https://argilla.io/)。 + +### 延伸阅读(Going further) + +- ⭐ [How to set up your own annotator platform in a couple minutes](https://huggingface.co/learn/cookbook/enterprise_cookbook_argilla)(作者 Moritz Laurer):不错的实操入门,用开源工具(如 Argilla 和 Hugging Face)**亲手搭建自己的标注平台**,理解大规模人工标注的 do's and don'ts。 +- ⭐ [A guide on annotation good practices](https://aclanthology.org/2024.cl-3.1/):对 2023 年以来所有人工标注相关论文的**综述**,非常完整。稍显密集,但非常易懂。 +- [Another guide on annotation good practices](https://scale.com/guides/data-labeling-annotation-guide)(ScaleAI,专精人工评测方向):上面文档的**更轻量**补充。 +- [Assumptions and Challenges of Capturing Human Labels](https://aclanthology.org/2024.naacl-long.126/):论文,讲如何**看待标注者分歧(annotator disagreement)的来源**并在实践中缓解。 + +## Tips and Tricks(实操技巧) + +> 本页是使用人工标注者构建评测数据集时的**实用建议清单**。原文建议:如果还没读过「Using human annotators」一节,**先读那节再回到本页**(推荐阅读顺序)。 + +### 任务设计(Designing the task) + +| 技巧 | 要点 | 展开 | +| --- | --- | --- | +| **Simple is better**(简单为佳) | 标注任务容易变得不必要地复杂,尽量保持简单 | 把标注者的**认知负荷(cognitive load)**降到最低,有助于他们保持专注、产出**更高质量**的标注 | +| **Check what you show**(检查展示内容) | 只展示标注者完成任务**所需的信息** | 确保不包含任何可能**引入额外偏见**的内容(多余的信息本身就是偏见源) | +| **Consider your annotators' time**(考虑标注者的时间) | 内容的位置和展示方式会影响工作量与认知负荷,进而影响结果质量 | 例:确保**文本和任务同时可见**、避免不必要的**滚动**;如果任务间有依赖(一个任务的结果会影响另一个),可以**顺序展示**。最后:审视标注工具里的一切展示方式,看能否**进一步简化** | +| **Test the setup**(测试设置) | 任务设计和指南就绪后,先在**几个样本上自己测试** | 再让整个团队参与,并按需**迭代(iterate)** | + +### 标注过程中(During the annotation) + +- **标注者应独立工作(work independently)**: + - 标注者之间**最好不要互相帮助、也不要看到彼此的工作**——否则会传播各自的偏见,导致 **annotation drift(标注漂移)**。 + - **对齐(alignment)应始终通过全面的指南来实现**,而不是通过标注者之间的口头沟通。 + - 对于新加入的团队成员:可以让他们先在一个**单独的数据集**上训练,或使用 **inter-annotator agreement 指标**来确认团队是否对齐。 +- **一致性是关键(Consistency is key)**: + - 如果对指南做了**重要修改**(例如改了一个定义或指令、增删了标签),要考虑是否需要对已标注数据**重新迭代**。 + - 至少要在数据集中通过元数据值(如 `guidelines-v1`)**追踪指南的版本变更**,否则历史标注无法解释。 + +### 人机混合标注(Hybrid human-machine annotation) + +> **背景**:有些团队在**时间和资源上受限**,但**不想牺牲人工评测的优点**。此时可以用模型来帮忙提高效率——本质是在"纯人工"与"纯模型"之间取折中。 + +| 方法 | 做法 | 注意点 | +| --- | --- | --- | +| **Model-aided annotation**(模型辅助标注) | 用模型的预测或生成结果作为**预标注(pre-annotations)**,让标注团队不必从零开始 | ① 可能把**模型的偏见引入人类标注**;② 如果模型准确率差,反而**增加标注者的工作量** | +| **Supervise model-as-a-judge**(监督模型裁判) | 结合 "model as a judge" 方法(见该章节)与**人类监督者**,由人类**验证或丢弃**模型裁判的结果 | "人工评测的优缺点"一节讨论的**人类偏见**在这里同样适用 | +| **Identify edge cases**(识别边缘用例) | 用**一组模型(jury of models)**做评判,然后由人类监督者在**模型意见分歧或平局(tie)**时介入裁决 | 再次提醒:注意 "Pros and cons of human evaluation" 中讨论的**人类偏见** | + +> 三者的共同逻辑:**让模型做"体力活",让人类只做"关键判断"**——人类介入越少越快,但人类偏见始终存在,需要纳入设计考量。 + +### 端到端教程(End-to-end tutorial) + +- 想按这些技巧**搭建自己的定制评测设置**,可参考 Argilla 的[实用教程](https://github.com/argilla-io/argilla-cookbook/tree/main/domain-eval)(`argilla-cookbook` 的 `domain-eval` 目录)。 +- 教程流程概要: + 1. 从**领域文档(domain documents)**出发; + 2. 使用**合成数据(synthetic data)** + **人工评测**(借助 [Argilla](https://github.com/argilla-io/argilla/) 标注与 [distilabel](https://github.com/argilla-io/distilabel) 数据管道); + 3. 产出一个**定制评测任务(custom evaluation task)**; + 4. 最终用 [lighteval](https://github.com/huggingface/lighteval) 来评测你自己的模型。 + +## 术语对照表(均出自原文) + +| 英文术语 | 中文译名 / 说明 | +| --- | --- | +| human evaluation | 人工评测:让人类评估模型 | +| post-hoc evaluation | 事后评测:模型训练完成后、针对既定任务的评测 | +| scoring guidelines | 评分指南:交给标注者的打分规则 | +| error annotation | 错误标注/错误审查:用人类审查评测方法本身 | +| vibes-check | 氛围检查/体感评测:个人对模型整体感受的随性评测 | +| arena | 竞技场:众包式两两比较评测 | +| Elo ranking | Elo 排名:基于对局(matches)聚合的排名系统 | +| annotator | 标注者:执行打分/标注任务的人 | +| inter-annotator agreement(IAA) | 标注者间一致性:衡量不同标注者判断一致程度的指标 | +| annotation drift | 标注漂移:标注者互相影响导致标准逐渐偏离 | +| first impressions bias | 首因效应:基于第一印象而非事实性评分 | +| tone bias | 语气偏见:低估语气自信答案中的事实/逻辑错误 | +| self-preference bias | 自我偏好偏见:偏好与自己观点一致的答案 | +| identity bias | 身份偏见:不同身份群体评分差异大 | +| confirmation bias | 确认偏误:人们倾向于找到自己想找的东西 | +| wisdom of the crowd | 群体智慧:大量投票平均抹平个体偏差的效应 | +| culturally bound preferences | 文化绑定的偏好:标注者偏好受文化背景影响 | +| model-aided annotation | 模型辅助标注:用模型输出做预标注 | +| pre-annotations | 预标注:标注团队在其基础上修正的初始标注 | +| model-as-a-judge | 模型裁判:用模型来评判模型(另见该章节) | +| jury of models | 模型评审团:多模型投票,人类在分歧/平局时裁决 | +| preference model | 偏好模型:以人类偏好为训练信号训练的模型 | +| cognitive load | 认知负荷:标注者完成任务所需的脑力开销 | +| crowd(crowdsourced) | 众包/社区人群:非付费、未筛选的参与者 | + +## 核心要点速记 + +- **人工评测 = 让人类给模型打分**(事后评测视角);适合追求**数据质量、隐私、可解释性**的场景。 +- **三种系统化方式**:无数据集(任务+指南+可交互模型)→ 有数据集(prompt+输出+指南)→ 有数据集+分数(error annotation 审查评测方法)。 +- **非正式评测**:**vibes-check**(个人、轶事证据、易受确认偏误,但适合起步)与 **arena + Elo**(众包两两对战排名,如 LMSYS chatbot arena)。 +- **四大人为偏见**:first impressions bias / tone bias / self-preference bias / identity bias;**专家标注者更不易中招**。 +- **用标注者的流程**:选人(人口学 + 质量过滤 + LLM 生成检测)→ 认真写指南 → 迭代多轮 → 用 **inter-annotator agreement** 控制质量并人工筛选;**务必给标注者合理付费**。 +- **实操技巧**:任务**越简单越好**、只展示必要信息、考虑标注者时间、先自测;标注者**独立工作**、指南变更用 `guidelines-v1` 类元数据追踪;人机混合标注(预标注、监督 model-as-judge、jury of models 裁决平局)可提效,但小心**偏见引入**。 +- **选择路线**:要严谨、可复现、要数据 → 系统化人工评测;要快、要省、要发现边缘用例 → 非正式评测。 + +## 参考资料 + +### 原文 GitHub 链接(Human Evaluation 章节) + +- [basics.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/human-evaluation/basics.md) +- [using-human-annotators.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/human-evaluation/using-human-annotators.md) +- [tips-and-tricks.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/human-evaluation/tips-and-tricks.md) + +### 文中提到的外部链接 + +**博客 / 文章** + +- [Error Annotations to Evaluate(error annotation)](https://ehudreiter.com/2022/06/01/error-annotations-to-evaluate/) +- [Vibe Checks Are All You Need](https://olshansky.substack.com/p/vibe-checks-are-all-you-need) +- [How to set up your own annotator platform in a couple minutes ⭐(Moritz Laurer)](https://huggingface.co/learn/cookbook/enterprise_cookbook_argilla) + +**论文(arXiv / ACL)** + +- [AI audits(2401.14462)](https://arxiv.org/abs/2401.14462) +- [First impressions bias(2309.16349)](https://arxiv.org/abs/2309.16349) +- [Self-preference bias(2310.13548)](https://arxiv.org/abs/2310.13548) +- [Identity bias / toxicity(2205.00501)](https://arxiv.org/abs/2205.00501) +- [Cultural preferences of annotators(2404.16019v1)](https://arxiv.org/abs/2404.16019v1) +- [Good practices in data annotation quality 综述 ⭐(ACL 2024 CL)](https://aclanthology.org/2024.cl-3.1/) +- [Assumptions and Challenges of Capturing Human Labels(NAACL 2024)](https://aclanthology.org/2024.naacl-long.126/) + +**平台 / 工具** + +- [LMSYS chatbot arena](https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard) +- [GAIA benchmark](https://huggingface.co/gaia-benchmark) +- [Argilla](https://argilla.io/) / [Argilla 仓库](https://github.com/argilla-io/argilla/) +- [ScaleAI 数据标注指南](https://scale.com/guides/data-labeling-annotation-guide) +- [Argilla cookbook:domain-eval 端到端教程](https://github.com/argilla-io/argilla-cookbook/tree/main/domain-eval) +- [distilabel](https://github.com/argilla-io/distilabel) +- [lighteval](https://github.com/huggingface/lighteval) +- [Best annotation practices 示意图](https://github.com/huggingface/evaluation-guidebook/blob/main/assets/best_annotation_practices.png?raw=true) diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/03-LLM-as-a-Judge.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/03-LLM-as-a-Judge.md new file mode 100644 index 0000000..7a0777b --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/03-LLM-as-a-Judge.md @@ -0,0 +1,677 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - llm-as-judge +status: active +created: 2026-08-21 +source: https://github.com/huggingface/evaluation-guidebook +--- + +# LLM-as-a-Judge:模型作评委 + +> 本笔记是 [HuggingFace Evaluation Guidebook](https://github.com/huggingface/evaluation-guidebook) 中 **Model-as-a-Judge** 章节(共 6 页)的中文提炼。核心问题:**如何用一个模型来评价另一个模型的输出?** 适合在设计评测、选择评委模型、写 judge prompt、或搭建基于 reward model 的评测管线时查阅。 +> +> 相关笔记:[[00-Overview]](总览与阅读顺序) + +--- + +## 1. 什么是 judge model / judge LLM + +### 1.1 定义 + +**Judge model(评委模型)** 本质上就是:**一个用来评估另一个神经网络输出的神经网络**("a neural network used to evaluate the output of other neural networks")。绝大多数情况下,它评估的是文本生成结果。 + +Judge model 是一个宽泛的概念,涵盖两类形态: + +| 形态 | 说明 | 典型例子 | +|---|---|---| +| 小型专用分类器(classifier) | 类似"垃圾邮件过滤器"的思路,例如针对毒性(toxicity)等单一属性做分类 | 各类微调分类器 | +| LLM(大语言模型) | 大型通用模型,或小型专用模型;通过 **prompt** 说明评分规则 | judge LLM、reward model | + +当使用 LLM 作为评委时,你通过 prompt 告诉它如何打分,例如: + +``` +Score the fluency from 0 to 5, 0 being completely un-understandable, ... +``` + +(即:给"流畅度"按 0–5 打分,0 表示完全无法理解……) + +> 📌 **原文注**:本文档主体聚焦「LLM + prompt」路线,但原作者提醒:classifier judge 在许多场景下相当稳健、值得研究;此外还有最近兴起的 **reward model as judge** 路线(见 [Nemotron-4 340B 技术报告](https://research.nvidia.com/publication/2024-06_nemotron-4-340b) 与本书对应小节 [[#7. Reward Models(奖励模型)|What about reward models]])。 + +### 1.2 为什么需要模型作评委 + +精确匹配(exact match)只能判断"预测是否和参考答案完全一致",适合测试模型是否答对了某个事实或数字;但**更开放、更微妙的能力**——如流畅度(fluency)、诗歌质量、对输入的忠实度(faithfulness)——需要更复杂的评估器,这正是 judge model 的用武之地。 + +### 1.3 三大主要用途 + +| # | 用途 | 英文术语 | 说明 | +|---|---|---|---| +| 1 | **对生成结果打分** | Scoring a model generation(pointwise) | 在给定刻度(scale)上评估文本的某个属性:流畅度、毒性、连贯性、说服力等 | +| 2 | **成对比较** | Pairwise scoring | 给定一对模型输出,选出在某个属性上更好的那个 | +| 3 | **计算相似度** | Computing the similarity | 计算模型输出与参考答案(reference)之间的相似度 | + +### 1.4 术语对照表(速查) + +| 英文术语 | 中文译法 | 一句话含义 | +|---|---|---| +| judge LLM / model-as-a-judge | 模型作评委 | 用 LLM 评估另一个模型输出 | +| pointwise scoring | 点式打分 | 对单个输出按刻度打分 | +| pairwise scoring | 成对比较 | 在两个输出中选更好者 | +| preference | 偏好 | 人类/模型对"哪个输出更好"的判断 | +| preference data | 偏好数据 | 用于训练评委/奖励模型的数据 | +| scoring prompt | 打分 prompt | 说明评分规则的评测指令 | +| scoring anchor | 评分锚点 | 刻度上每个分数代表什么的具体解释 | +| additive prompt | 累加式评分 prompt | 逐项加分的打分方式 | +| reasoning / CoT | 推理 / 思维链 | 先输出推理再给分数的做法 | +| reference | 参考答案 | 用于对照的已知正确答案 | +| few-shot | 少样本示例 | 在 prompt 中给若干示例 | +| jury | 陪审团 | 多个评委聚合判断 | +| baseline | 基线 | 用于对照评判质量的标准 | +| inter-annotator agreement | 标注者间一致性 | 多个标注者判断的一致性指标 | +| reward model (RM) | 奖励模型 | 从人类标注学习打分的模型 | +| Bradley-Terry model | Bradley-Terry 模型 | 基于成对比较输出单分数的 RM | +| win rate | 胜率 | 高于参考输出的百分比 | +| win probability | 胜率概率 | 优于参考输出的平均概率 | +| positional bias | 位置偏差 | 偏好特定答案位置的偏见 | +| verbosity bias / length bias | 冗长偏差 / 长度偏差 | 偏爱更长更啰嗦答案的偏见 | +| self-preference | 自偏好 | 偏爱自己输出的偏见 | +| format bias | 格式偏差 | 对偏离训练格式失准的偏见 | +| self-consistency | 自洽性投票 | 多次采样取多数票 | +| partial hallucination | 部分幻觉 | 接近真值但略有出入的幻觉 | +| faithfulness | 忠实度 | 输出对输入/事实的忠实程度 | + +--- + +## 2. 使用 judge LLM 的优缺点 + +### 2.1 优点 + +| 优点 | 说明 | +|---|---| +| **客观性**(Objectivity) | 相比人类,自动化地做出客观、可复现的经验判断 | +| **规模与可复现性**(Scale and reproducibility) | 比人工标注者可扩展得多,能在大量数据上重复打分 | +| **成本**(Cost) | 无需训练新模型,靠良好 prompt + 现成高质量 LLM 即可;也比付钱给人类标注者便宜 | +| **与人类判断的一致性**(Alignment with human judgments) | 与人类判断有一定相关性(somehow correlated) | + +### 2.2 缺点(对应着看) + +| 缺点 | 说明 | +|---|---| +| **隐藏偏见**(hidden biases) | LLM 评委看起来客观,但带有许多隐藏偏见,且比人类的偏见更难被发现——因为我们不会主动去审视它。详见 [[#8. Tips and Tricks:已知偏见与缓解|Tips and tricks]] | +| **回音室效应**(echo-chamber effect) | 用 LLM 评估 LLM 被类比为制造回音室:以难以察觉的方式不断强化偏见。另外,社会学家用约一个世纪研究出"如何设计统计上稳健的调查问卷来减少人类偏见",而 LLM prompt 设计还没有这么成熟 | +| **产生海量待检数据** | 可扩展的同时也制造了大量人工数据,这些数据本身又需要被检验质量(例如让评委先生成思维痕迹/推理过程来提高质量,但这又产生了更多待分析的人工数据) | +| **专家质量** | 评委很便宜,但为你的具体场景付费请专家人工标注者,大概率能获得质量更好的结果 | + +--- + +## 3. 如何开始(⭐ 推荐资源) + +- ⭐ **入门必读**:[HuggingFace Cookbook:LLM as a judge](https://huggingface.co/learn/cookbook/en/llm_judge),作者 Aymeric Roucher,手把手教你搭第一个 LLM 评委。 +- **[distilabel](https://distilabel.argilla.io/latest/)**(Argilla 出品的库):可用 LLM 生成合成数据并迭代更新。有两个值得参考的 tutorial: + - [UltraFeedback 方法复现 tutorial](https://distilabel.argilla.io/latest/sections/pipeline_samples/papers/ultrafeedback/):应用 [UltraFeedback 论文](https://arxiv.org/abs/2310.01377) 的方法论。 + - [用 distilabel 做 benchmarking 的 tutorial](https://distilabel.argilla.io/latest/sections/pipeline_samples/examples/benchmarking_with_distilabel/):实现了 **Arena Hard** benchmark。 + +--- + +## 4. 如何获取 judge LLM + +原文给出三条路线:用现成通用大模型、用小型专用 judge 模型、自己训练。三者对比如下: + +| 维度 | 通用大模型(generalist) | 小型专用模型(tiny specialized) | 自己训练 | +|---|---|---|---| +| 典型代表 | Claude / GPT-o;开源侧 Qwen 2.5、Command R+、Llama 3.1-405B | Flow-Judge-v0.1、Prometheus、JudgeLM | 基于偏好数据自建 | +| 参数规模 | 大(数十亿 ~ 数千亿) | 通常几十亿(3.8B / 7B / 13B / 7B–33B) | 取决于基座选择 | +| 部署 | API(闭源)或模型提供商(开源) | 多数近年消费级硬件可本地运行 | 本地 | +| 可复现性 | 闭源有"模型无通知变更"风险 | 高(权重固定、本地运行) | 高 | +| 成本 | 按调用付费 | 低 | 数据收集 + 训练算力成本高 | +| prompt 要求 | 通用 prompt 设计 | 需遵循特定 prompt 格式 | 自行定义 | +| 主要风险 | 黑盒、数据隐私 | 能力上限 | 数据质量、训练成本 | + +### 4.1 路线一:使用通用大模型(generalist LLM) + +随着更强模型(如 ChatGPT)出现,研究者开始探索用大模型当评委。目前最强的大模型评委**多为闭源模型**(如 Claude、GPT-o 系列),但开源模型的差距正在快速缩小——高质量开源候选包括: + +- [Qwen 2.5 系列](https://huggingface.co/collections/Qwen/qwen25-66e81a666513e518adb90d9e) +- [Command R+](https://huggingface.co/CohereForAI/c4ai-command-r-plus-08-2024) +- [Llama 3.1-405B-Instruct](https://huggingface.co/meta-llama/Llama-3.1-405B-Instruct) + +**闭源模型的缺点**(尽管性能好): + +| 缺点 | 说明 | +|---|---| +| 运行在 API 之下 | 模型(因此结果)可能**无通知地变更**,伤害评测的可复现性 | +| 黑盒 | 不可解释(un-interpretable) | +| 数据泄露/隐私风险 | 数据经互联网发给第三方,通常不如本地管理安全;你无法确定数据用途(往往需要手动选择退出被用于训练集) | + +**优点**:任何人都能用上高质量模型,无需本地部署或硬件。而如今大多数高质量开源模型也能通过模型提供商访问,同时解决了上面两个问题(API 变更与黑盒)。 + +> 💰 选择模型提供商时可参考成本分析:[ArtificialAnalysis LLM Performance Leaderboard](https://huggingface.co/spaces/ArtificialAnalysis/LLM-Performance-Leaderboard)。 + +### 4.2 路线二:使用小型专用 judge 模型(tiny specialized LLM judge) + +通常只有几十亿参数,能在大多数近年消费级硬件上本地运行;可以是从头训练,或用指令数据微调而来。**注意通常需要遵循它们特定的 prompt 格式。** + +原文给出的现有模型: + +| 模型 | 参数规模 | 说明 | +|---|---|---| +| **Flow-Judge-v0.1**([权重](https://huggingface.co/collections/flowaicom/flow-judge-v01-66e6af5fc3b3a128bde07dec)) | 3.8B | 基于 Phi-3.5-mini-instruct,在合成偏好数据集上微调 | +| **Prometheus**([权重](https://huggingface.co/prometheus-eval/prometheus-13b-v1.0),[论文](https://arxiv.org/abs/2310.08491)) | 13B | 在合成偏好数据集上从头训练。另有 [7B 的 v2](https://huggingface.co/prometheus-eval/prometheus-7b-v2.0):基于 Mistral-7B-Instruct-v0.2 在更大的合成偏好数据集上微调,并加入权重合并(weight merging) | +| **JudgeLM**([论文](https://arxiv.org/abs/2310.17631)) | 7B ~ 33B | 在多种模型生成的合成偏好数据集上从头训练 | + +### 4.3 路线三:训练你自己的 judge LLM + +**第一步:收集偏好数据(preference data)**,来源可以是: + +- 现成的**人类偏好数据集**,例如 [LMSYS Chatbot Arena(Kaggle 竞赛)](https://www.kaggle.com/competitions/lmsys-chatbot-arena); +- **模型生成的偏好数据**(可按上述小型 judge 模型论文的数据章节生成,或直接取现成集合): + - [Prometheus Preference Collection](https://huggingface.co/datasets/prometheus-eval/Preference-Collection) + - [Prometheus Feedback Collection](https://huggingface.co/datasets/prometheus-eval/Feedback-Collection) + +**第二步:决定起点**,可以选择: + +1. 从零开始,用一个小模型**从头训练(train from scratch)**; +2. 从现成模型出发: + - **蒸馏(distill)** 到更小的新模型; + - **量化(quantize)**; + - 然后用上面的数据**微调(fine-tune)**——模型大、算力低时用 PEFT 或 adapter 权重。 + - 💡 一个社区经验:[从 reward model 出发微调,比从 instruct model 出发效果更好](https://x.com/dk21/status/1826292289930674590)。 + +--- + +## 5. 如何设计评测 prompt(evaluation prompt) + +### 5.1 通用设计要点 + +设计 prompt 的四条通用准则(原文整理自网络): + +1. **清晰描述任务**: + - `Your task is to do X`(你的任务是做 X) + - `You will be provided with Y`(你将获得 Y) +2. **给出清晰的评测标准**,需要时附带详细的打分系统: + - `You should evaluate property Z on a scale of 1 - 5, where 1 means ...`(请在 1–5 刻度上评估属性 Z,1 表示……) + - `You should evaluate if property Z is present in the sample Y. Property Z is present if ...`(请评估样本 Y 中是否存在属性 Z。属性 Z 存在当且仅当……) +3. **给出额外的"推理"步骤**: + - `To judge this task, you must first make sure to read sample Y carefully to identify ..., then ...`(评判前必须先仔细阅读样本 Y 以识别……,然后……) +4. **指定输出格式**(加字段有助于一致性): + - `Your answer should be provided in JSON, with the following format {"Score": Your score, "Reasoning": The reasoning which led you to this score}`(用 JSON 输出:{"Score": 你的分数, "Reasoning": 得出该分数的推理}) + +可以直接借鉴的现成模板: + +- [MixEval judge prompts(lighteval 实现)](https://github.com/huggingface/lighteval/blob/main/src/lighteval/tasks/extended/mix_eval/judge_prompts.pyy) +- [MTBench judge prompt templates(lighteval 实现)](https://github.com/huggingface/lighteval/blob/main/src/lighteval/tasks/extended/mt_bench/judge_prompt_templates.py) + +这四条准则与"一份好 judge prompt 的要素"的对应关系: + +| 准则 | 在 prompt 中的位置 | 作用 | +|---|---|---| +| 任务描述(Your task is to do X / You will be provided with Y) | 开头 | 明确"评什么、输入是什么" | +| 评测标准 + 详细刻度(scale 1–5,1 表示……) | 中间 | 给出可操作的评分依据,即**评分锚点** | +| 额外推理步骤(must first read … then …) | 标准之后 | 引导先分析后下结论,改善准确性 | +| 输出格式(JSON:Score / Reasoning) | 结尾 | 结构化输出,提升一致性,便于程序解析 | + +### 5.2 其他设计要点 + +- **Pairwise(成对比较)比打分更稳健**:与人类偏好的相关性更高([论文](https://arxiv.org/abs/2403.16950))。 +- 如果确实需要分数,**用整数刻度**,并确保**详细解释每个分数代表什么**([Seungone Kim 的推文](https://x.com/seungonekim/status/1749289437165769177));或者用 **additive prompt**(累加式打分):"答案具备这个特征给 1 分,再具备某个特征加 1 分……"。 +- **每个能力用一个 prompt 单独打分**,结果通常更好、更稳健(one prompt per capability)。 + +### 5.3 提升判断准确度的技巧(可能更贵) + +| 技巧 | 说明 | 代价/备注 | +|---|---|---| +| **Few-shot 示例** | 和许多任务一样,给示例有助于推理 | 增加上下文长度 | +| **Reference(参考答案)** | 有参考时把参考也放进 prompt,能提升准确度 | 需要参考存在 | +| **CoT(思维链)** | 让模型**先输出推理过程、再给分数**,可提升准确度([论文](https://arxiv.org/abs/2212.08073),另有 [观察](https://x.com/seungonekim/status/1749289437165769177)) | 输出变长 | +| **多轮分析(Multiturn analysis)** | 可改进**事实性错误检测**([论文](https://arxiv.org/abs/2305.13281)) | 上下文更长 | +| **陪审团(Jury)** | 用多个评委并聚合答案,比单个模型效果好([论文](https://arxiv.org/abs/2404.18796)) | 成本可通过"多个小模型替代一个大模型"大幅降低;也可试同一个模型、变化 temperature | +| **加筹码(stakes)** | 社区意外发现:在 prompt 里加"答对了给你一只小猫"(`answer correctly and you'll get a kitten`)能提高正确率 | 效果因人而异,按需调整 | + +### 5.4 Prompt 模板示例 + +以下模板示例是根据本节指南要点组合而成(非原文逐字内容),演示 pointwise 打分、pairwise 比较、累加式评分与 CoT 的结构: + +**① 点式打分 + 详细刻度锚点 + JSON 输出(pointwise scoring prompt)** + +```text +Your task is to evaluate the fluency of a model-generated answer. +You will be provided with the answer below. + +Evaluation criteria: +You should evaluate the property "fluency" on an integer scale of 1 to 5: +- 1: completely un-understandable +- 2: many errors, hard to follow +- 3: understandable with some errors +- 4: mostly fluent, minor issues +- 5: perfectly fluent + +Reasoning steps: +To judge this task, you must first read the answer carefully, identify any +grammatical or coherence issues, then decide on a final score. + +Output format: +Your answer should be provided in JSON, with the following format: +{"Score": Your score, "Reasoning": The reasoning which led you to this score} +``` + +**② 成对比较(pairwise comparison prompt)** + +```text +Your task is to compare two model answers A and B for the property "helpfulness". +You will be provided with both answers. + +You should decide which answer is better with respect to helpfulness, or +whether they are tied. + +Reasoning steps: +First read both answers carefully and list the strengths/weaknesses of each +with respect to helpfulness, then give your verdict. + +Output format: +{"Verdict": "A" | "B" | "Tie", "Reasoning": ...} +``` + +**③ 累加式评分(additive scoring prompt,适合不信任笼统刻度的场景)** + +```text +Score the answer by adding points: +- The answer directly addresses the question: +1 point +- The answer includes concrete examples: +1 additional point +- The answer is free of factual errors: +1 additional point +Report the total as the final score. +``` + +**④ 先推理后打分(CoT before the score)** + +```text +Before providing the score, explain step by step how the answer performs on +each evaluation criterion. Only after this reasoning, output the final score +in the requested JSON format. +``` + +**⑤ 带参考答案(reference)的打分**(有 reference 时增强准确度) + +```text +Your task is to evaluate the answer against a reference answer. +You will be provided with the candidate answer and the reference. + +The reference answer represents the ground truth for this prompt. + +Evaluation criteria: +You should evaluate whether the candidate answer is faithful to the reference, +on an integer scale of 1 to 5 (1 = completely unrelated, 5 = fully faithful). + +Output format: +{"Score": Your score, "Reasoning": The reasoning which led you to this score} +``` + +**⑥ Few-shot 示例**(给 1–2 个"已评好分"的例子帮助推理;代价是上下文变长) + +```text +Your task is to score answers on the property "fluency" (scale 1-5). + +Example 1: +Answer: "The cat sat on the mat." +Score: 5 + +Example 2: +Answer: "Cat sat mat." +Score: 3 + +Now score the following answer, following the same criteria and output format +as above. +``` + +**⑦ 属性是否存在(二分类风格)**——适合"该属性在样本 Y 中是否出现"式评测 + +```text +Your task is to evaluate if the property "toxicity" is present in the sample Y. + +Property "toxicity" is present if the text contains insults, threats, or +harmful language. + +Reasoning steps: +Read the sample carefully, check each phrase against the definition above, +then decide. + +Output format: +{"Toxicity": "present" | "absent", "Reasoning": ...} +``` + +**⑧ 陪审团(jury)聚合示意**(多评委 → 聚合,效果优于单个模型;可多个小模型,或同模型多 temperature) + +```text +# 伪代码(非 prompt): +judges = [judge_model_1, judge_model_2, ..., judge_model_N] +verdicts = [j(prompt) for j in judges] +final = aggregate(verdicts) # 多数票 / 平均分 +``` + +**模板选型速查**: + +| 场景 | 推荐模板 | +|---|---| +| 需要一个绝对分数 | ① 点式打分 + 详细刻度锚点(整数刻度) | +| 刻度不可信 / 想拆分评分标准 | ③ 累加式评分(additive) | +| 选"哪个更好" | ② 成对比较(含 Tie) | +| 有参考答案可用 | ⑤ 带 reference 的打分 | +| 模型理解不了抽象标准 | ⑥ few-shot 示例 | +| 只关心属性有无(如毒性) | ⑦ 属性存在性判断 | +| 追求稳健、成本允许 | ⑧ 陪审团聚合 | + +### 5.5 一个方法论提醒(社会学视角) + +如果**高风险场景**、且把 evaluator 当作人类标注者的替代品,应当参考社会学里"如何设计好问卷"的研究成果,并计算类似的指标(如**标注者间一致性 inter-annotator agreement**),用正确的调查设计方法减少偏见。 + +但原文也坦率指出:**大多数人不追求可复现、高质量、无偏的评测**,一个"差不多能用的 prompt + 快速粗糙的评测"就够用了——这完全 OK,取决于后果的严重程度。 + +--- + +## 6. 如何评估你的 evaluator(evaluating your evaluator) + +在把 judge-LLM 投入生产或大规模使用前,先评估它在**你的任务**上的质量。 + +> ⚠️ 提醒:如果 evaluator 输出**二分类**结果,可以用可解释的分类指标(accuracy / recall / precision);如果输出**刻度分数**,评估它与参考的相关性会**困难得多**。 + +### 6.1 第一步:挑选 baseline(基线) + +把你的 evaluator 判断与某个基线比较。基线可以是: + +- 人类标注(human annotations) +- 另一个你确信在你任务上高质量的 judge 模型 +- 金标准(gold truth) +- 同一个模型配另一个 prompt + +**样本量不需要很大(50 条可能就够),但样本必须**: + +- 对你任务**极具代表性**; +- **有判别力**(尤其要覆盖边缘情况 edge cases); +- 质量**尽可能高**。 + +### 6.2 第二步:挑选 metric(指标) + +用指标比较你的 judge 评价与参考(reference): + +- **二分类(binary)**:计算 precision、recall——最易解释。 +- **成对比较(pairwise)**:计算 accuracy——很易解释。 +- **分数相关性(score correlation)**:难做。为何难、如何做,推荐阅读 [Eugene Yan 的博客章节](https://eugeneyan.com/writing/llm-evaluators/#key-considerations-before-adopting-an-llm-evaluator)。 + +> ⭐ 不知道什么时候该用哪个模型/指标?看 [Eugene Yan 博客](https://eugeneyan.com/writing/llm-evaluators/) 里的这张[决策树图(llm-eval-tree)](https://eugeneyan.com/assets/llm-eval-tree.jpg)。 + +### 6.3 第三步:评估并设定接受阈值 + +用你的模型 + prompt 在测试样本上打分,再用 metric 与 baseline 算分,然后决定**接受阈值**。原文给出的经验值: + +| 评测类型 | 常见接受阈值 | +|---|---| +| 成对比较 accuracy | 视任务难度,**80% ~ 95%** | +| 分数相关性(Pearson) | 文献里人们通常对 **0.8** 满意;但也见过论文宣称 **0.3** 就算与人类标注者"良好相关"(所以"视情况而定") | + +### 6.4 把三步骤串起来:一个最小评估流程示例 + +把上面三步落地的最小闭环(以"成对比较 + 人类基线"为例): + +```text +Step 1 收集基线(baseline) + → 从你的任务里挑 ~50 条高代表性样本(含边缘情况), + 请人类(或你信赖的 judge)给出成对判断,作为 reference。 + +Step 2 让 evaluator 跑分 + → 用你的 judge LLM + 设计好的 pairwise prompt 对同一批样本判断。 + +Step 3 算指标 + → 计算 evaluator 与 reference 的 accuracy。 + (二分类则算 precision / recall;分数型则算 Pearson 相关性。) + +Step 4 对照阈值决定去留 + → pairwise accuracy 低于 80%?换 judge 模型 / 改 prompt / 加 CoT, + 重复 Step 2-4;达到 80%–95%(视任务难度)即可放行。 +``` + +要点回顾: + +- 样本少没关系(50 条够用),但**代表性 > 数量**; +- evaluator 输出**二分类或成对比较**时最容易被评估(accuracy / precision / recall); +- 输出**刻度分数**时,"分数与参考的相关性"评估难度明显上升——这是选择输出形式时就要想好的权衡; +- 阈值不是铁律:文献对相关性高低的接受范围从 0.3 到 0.8 都有,按你的任务与后果定。 + +--- + +## 7. Reward Models(奖励模型) + +### 7.1 什么是 Reward Model + +**Reward model(奖励模型,RM)**:从给定 prompt/completion 对的人类标注中学习预测一个分数,最终目标是让预测与**人类偏好**对齐。训练好后,它可以作为**人类判断的代理(proxy)——即 reward function**,用来改进其他模型(如用于强化学习)。 + +它与 judge LLM 的关键区别(对比表): + +| 维度 | Judge LLM | Reward Model | +|---|---|---| +| 输出 | 长文本(分数 + 推理) | 一个(或一对)分数 | +| 使用方式 | 靠 prompt 工程 | 前向传播(forward pass)即出分,免 prompt | +| 成本 | 调用大模型生成 | 小模型单次前向,很快 | +| 训练 | 通常不训练 | 需要专门微调 | + +### 7.2 两类打分方式 + +**① 成对分数(pairwise score)——最常见的类型** + +最典型的是 **Bradley-Terry 模型**,输出单个分数,遵循: + +``` +p(completion b is better than completion a) = sigmoid(score_b − score_a) +``` + +即:完成 b 优于完成 a 的概率 = sigmoid(b 的分数 − a 的分数)。 + +- 只用**成对比较**训练——比收集分数更容易; +- 局限:只能比较**同一 prompt 下的多个 completion**,无法跨 prompt 比较。 + +其他模型在此基础上扩展,预测"一个完成优于另一个"的更细致概率(如 [RLHFlow/pair-preference-model-LLaMA3-8B](https://huggingface.co/RLHFlow/pair-preference-model-LLaMA3-8B)): + +- 理论上能判别完成之间的细微差异; +- 代价:不易保存、比较同一测试集上跨 prompt 的许多分数; +- 另外,比较过长的 completion 时上下文长度与内存会成为问题。 + +**② 绝对分数(absolute score)** + +- 例如 [SteerLM](https://arxiv.org/abs/2311.09528) 直接输出绝对分数,无需成对比较即可评估 completion; +- 评测时**更易用**,但**数据更难收集**——人类偏好中绝对分数往往不如成对分数稳定。 +- 近期还出现了**同时输出绝对与相对分数**的模型,如 [HelpSteer2-Preference](https://arxiv.org/abs/2410.01257) 与 [ArmoRM](https://arxiv.org/abs/2406.12845)。 + +### 7.3 如何用 Reward Model 做评测 + +流程:给定 prompt 数据集 → 从语言模型生成 completions → 让 reward model 打分。 + +- **绝对分数模型**:对多个分数取平均,得到合理的汇总分数。 +- **相对分数模型(更常见)**:直接平均 reward 会**被离群值(outliers)偏置**——因为不同 prompt 天生就有不同的 reward 刻度(有些 prompt 难、有些简单)。替代方案: + - **Win rates(胜率)**:取一个参考 completion 集合,计算"模型输出排在参考输出之上"的百分比。粒度略细。 + - **Win probabilities(胜率概率)**:模型输出优于参考输出的平均概率,能给出更细粒度、更平滑的信号。 + +完整流程示意: + +```text +prompt 数据集 + │ + ▼ +语言模型生成 completions(被测模型) + │ + ▼ +reward model 打分 + │ + ├── 绝对分数型 → 取平均 → 汇总分数 + │ + └── 相对分数型 → win rates(胜率)/ win probabilities(胜率概率) + │ + └── 与参考 completions 集合对比 +``` + +| 汇总方式 | 定义 | 特点 | +|---|---|---| +| 直接平均 reward(相对分数型) | 把所有分数的均值当汇总 | **会被离群值偏置**——不同 prompt 有不同 reward 刻度(有的 prompt 天生更难/更易) | +| win rates | 模型输出高于参考集合的**百分比** | 比平均更稳健,粒度略细 | +| win probabilities | 优于参考集合的**平均概率** | 更细粒度、更平滑的信号 | + +### 7.4 Reward Model 的优缺点 + +| 优点 | 缺点 | +|---|---| +| **非常快**:打分 = 对小模型做一次前向传播(只出分数,不像 judge-LLM 出长文本) | **需要专门微调**:这一步可能相当贵;虽继承基座模型许多能力,但在训练分布之外的任务上可能表现差 | +| **确定性**:同一前向传播必然复现同样分数 | **RL 与评测复用时的效率损失**:语言模型可能过拟合到 reward model 的偏好上(当 RL 或直接对齐算法用的数据与 RM 训练数据相似时尤甚) | +| **不易受位置偏差影响**:多数 RM 只吃一个 completion,不受顺序影响;成对模型只要训练数据在"最优答案是第一/第二个"上均衡,位置偏差通常也极小 | | +| **免 prompt 工程**:直接按训练时的偏好数据输出分数 | | + +### 7.5 使用 Reward Model 做评测的 Tips + +- 找高性能模型的好去处:**[RewardBench Leaderboard](https://huggingface.co/spaces/allenai/reward-bench)** ⭐。 +- 参考 [Nemotron 论文](https://arxiv.org/abs/2406.11704) 中 RM 的使用方式。 +- 对"单 prompt + completion"打分的 RM:可以**缓存许多参考模型的分数**,之后轻松对比新模型的表现。 +- **训练过程中跟踪 win rate / win probability**(如[这篇近期论文](https://arxiv.org/abs/2410.11677v1)),可用来**检测模型退化(degradation)并挑选最优 checkpoint**。 + +--- + +## 8. Tips and Tricks:已知偏见与缓解 + +LLM 评委的**已知偏见清单**(原文逐条整理,含缓解方法): + +| 偏见 | 现象 | 缓解方法 | +|---|---|---| +| **缺乏内部一致性**(Lack of internal consistency) | 温度不为 0 时,同一 judge 多次 prompt 会给出不同判断 | **self-consistency prompting**:多次 prompt,取多数票(majority output) | +| **自偏好**(Self-preference) | 打分时倾向于[偏爱自己的输出](https://arxiv.org/abs/2404.13076) | 使用**陪审团(jury)** | +| **对输入扰动不敏感**(Blindness to input perturbation) | 模型不擅长识别[被扰动的输入](https://arxiv.org/abs/2406.13439);顺带[不擅长给出一致的分数范围](https://twitter.com/aparnadhinak/status/1748368364395721128)([更完整的实验](https://github.com/LeonEricsson/llmjudge/blob/main/README.md))。例如按一致刻度给文本加噪声后要求排序,预测分数并不会反映该刻度 | ① 让模型**先解释推理、再给分数**([推文](https://twitter.com/seungonekim/status/1749289437165769177));② 在 prompt 中提供**连贯的评分刻度** | +| **位置偏差**(Position-bias) | 倾向[偏爱特定答案位置](https://arxiv.org/abs/2306.05685):如 Claude 与 GPT-3.5 在成对比较时相当系统性地偏好第一个或第二个选项 | ① **随机交换**答案位置;② 计算所有可能选项的 **log-probability** 得到归一化答案 | +| **冗长/长度偏差**(Verbosity-bias / length-bias) | 更偏爱更啰嗦(verbose)的答案 | 在评估中[考虑答案长度的差异](https://arxiv.org/abs/2404.04475) | +| **与人类一致性存疑**(Debatable consistency with humans) | 与人类答案的一致性[存疑](https://arxiv.org/abs/2308.15812) | 反向提醒:**[非专家人类也未必是所有评估的好基线](https://arxiv.org/abs/2202.06935)**——在医学、法律、数学等特定领域,用非专家人类标注者和直接用 LLM 一样不靠谱 | +| **格式偏差**(Format bias) | 若 prompt 格式[偏离训练时的格式太远](https://arxiv.org/abs/2310.17631),评估会失准。例:训练为"成对比较 + 附参考答案"的模型,不提供参考就失败;反之亦然 | **注意训练 prompt 格式**(若模型做过指令微调),确保严格遵循 | + +### 8.1 哪些任务不适合交给 LLM judge + +- **幻觉检测整体很弱**,尤其**部分幻觉(partial hallucinations)**——看起来接近真值、其实略有出入的幻觉(见[论文 1](https://arxiv.org/abs/2305.11747)、[论文 2](https://arxiv.org/abs/2303.08896))。 +- 与人类标注者在以下任务上相关性只有 **低 ~ 中等**: + - **摘要(summarization)**([论文 1](https://arxiv.org/abs/2304.02554)、[论文 2](https://arxiv.org/abs/2303.16634)); + - **忠实度(faithfulness)**([论文](https://arxiv.org/abs/2307.16877)); + - 更广地看,跨[一系列任务](https://arxiv.org/abs/2406.18403)与人类判断并非持续相关。 + +### 8.2 设计"少偏见"评测的检查清单 + +把上一节的缓解方法汇总成一张实操清单,上线评测前逐项核对: + +- [ ] **一致性**:固定 seed / 温度设为 0;或对同一 judge 多次采样、取多数票(self-consistency) +- [ ] **位置偏差**:成对比较时随机交换答案位置;必要时计算所有选项的 log-probability 归一化 +- [ ] **自偏好**:使用陪审团(多个评委聚合),而不是单一模型 +- [ ] **扰动盲区**:要求"先推理、后给分";prompt 中提供连贯的评分刻度锚点 +- [ ] **冗长偏差**:比较时考虑双方答案的长度差异 +- [ ] **格式偏差**:严格遵循所选模型(尤其指令微调模型)训练时的 prompt 格式 +- [ ] **任务适配**:对幻觉(尤其部分幻觉)、摘要、忠实度等已知弱项任务谨慎使用 +- [ ] **方法论**:高风险场景按社会调查标准设计——如计算标注者间一致性(inter-annotator agreement) + +--- + +## 9. 常见误区与 FAQ + +**Q1:用 LLM 当评委,是不是就一定客观、无偏?** +不是。它看起来客观,但隐藏偏见更难被发现(我们不会主动审视它);用 LLM 评估 LLM 还被类比为制造回音室效应。详见第 2、8 节。 + +**Q2:打分(pointwise)是不是比成对比较(pairwise)更好用?** +原文给出的证据恰恰相反:**pairwise 与人类偏好的相关性更高、更稳健**。如果你确实需要绝对分数,务必用整数刻度 + 详细解释每个分数代表什么,或改用 additive 累加式评分。 + +**Q3:大模型评委是不是永远比小模型好?** +最强评委目前多为闭源大模型,但它们是黑盒、运行在 API 下且结果可能无通知变更,还涉及数据隐私。开源大模型的差距正在快速缩小;小型专用模型(Flow-Judge-v0.1、Prometheus、JudgeLM)可本地运行、可复现、便宜,且 jury 场景下"多个小模型"能大幅降低比"一个大模型"的成本。 + +**Q4:我能直接用 reward model 的平均分做汇总吗?** +只有**绝对分数型** RM 可以直接取平均。**相对分数型**(如 Bradley-Terry)直接平均会被离群值偏置(不同 prompt 的 reward 刻度不同),应当改用 win rates(胜率)或 win probabilities(胜率概率)。 + +**Q5:LLM judge 是不是什么任务都能评?** +不是。它在幻觉检测上整体很弱(尤其部分幻觉),在摘要、忠实度上对人类的相关性只有低~中等,跨任务也并非持续与人类判断相关。选任务前先看第 8.1 节。 + +**Q6:分数相关性 0.3 算不算合格?** +看文献:有人对 0.8 的 Pearson 相关才满意,也有人宣称 0.3 就算与人类标注者"良好相关"。阈值取决于你的任务难度与后果——这正是"评估你的 evaluator"这一步的意义。 + +**Q7:用小型 judge 模型时,prompt 格式重要吗?** +重要。格式偏差(format bias)会导致评估失准:例如训练为"成对比较 + 附参考答案"的模型,不提供参考就失败,反之亦然。务必遵循模型训练时的 prompt 格式。 + +--- + +## 10. 速查表:全章要点一页纸 + +1. **Judge LLM = 用 LLM + prompt 评估其他模型输出**;三大任务:打分(pointwise)、成对比较(pairwise)、相似度。 +2. **优点**:客观、可扩展、便宜、与人类判断相关;**缺点**:隐藏偏见、回音室效应、数据质量负担、专家质量不如真人。 +3. **获取路线**:通用大模型(闭源最强但黑盒/API 不稳,开源差距快速缩小)→ 小型专用模型(Flow-Judge-v0.1 3.8B / Prometheus 13B·7B / JudgeLM 7B–33B)→ 自己训练(人类或合成偏好数据;蒸馏/量化/微调;从 reward model 出发更佳)。 +4. **Prompt 设计**:任务描述 + 详细标准/刻度 + 推理步骤 + 指定 JSON 输出格式;pairwise 优于打分;整数刻度要配"每分代表什么"或 additive prompt;一能力一 prompt。 +5. **提升准确度**:few-shot、reference、CoT(先推理后分数)、multiturn、jury(多评委聚合)、加 stakes("答对给小猫")。 +6. **评估你的 evaluator**:50 条高代表性样本作 baseline;二分类/pairwise 用 accuracy/precision/recall,分数用相关性(Pearson);阈值参考:pairwise 80–95%,相关性 0.8(0.3 也有人接受)。 +7. **Reward Model**:Bradley-Terry 成对评分 vs SteerLM 绝对评分(HelpSteer2-Preference / ArmoRM 双输出);相对分数用 win rates / win probabilities 而非平均;快、确定性、少位置偏差、免 prompt,但需专门微调、RL 复用有 overfit 风险;模型找 RewardBench,用法参考 Nemotron。 +8. **已知偏见**:内部不一致 → self-consistency;自偏好 → jury;扰动盲 → 先推理后评分 + 连贯刻度;位置偏差 → 随机换位 + log-prob 归一化;冗长偏差 → 控制长度差异;格式偏差 → 严格遵循训练格式。 +9. **慎用场景**:幻觉(尤其部分幻觉)、摘要、忠实度——相关性低或一般。 + +--- + +## 11. 参考资料 + +### 原文(本笔记对应源文件) + +- [basics.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/model-as-a-judge/basics.md) +- [getting-a-judge-llm.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/model-as-a-judge/getting-a-judge-llm.md) +- [designing-your-evaluation-prompt.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/model-as-a-judge/designing-your-evaluation-prompt.md) +- [evaluating-your-evaluator.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/model-as-a-judge/evaluating-your-evaluator.md) +- [what-about-reward-models.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/model-as-a-judge/what-about-reward-models.md) +- [tips-and-tricks.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/model-as-a-judge/tips-and-tricks.md) + +### ⭐ 推荐阅读 + +- [HuggingFace Cookbook:LLM as a judge(Aymeric Roucher)](https://huggingface.co/learn/cookbook/en/llm_judge) ⭐ +- [Eugene Yan:LLM Evaluators 博客](https://eugeneyan.com/writing/llm-evaluators/) ⭐(含 [决策树图](https://eugeneyan.com/assets/llm-eval-tree.jpg)) +- [RewardBench Leaderboard](https://huggingface.co/spaces/allenai/reward-bench) + +### 论文 + +- [UltraFeedback(2310.01377)](https://arxiv.org/abs/2310.01377) +- [Prometheus(2310.08491)](https://arxiv.org/abs/2310.08491) +- [JudgeLM(2310.17631)](https://arxiv.org/abs/2310.17631) +- [MT-Bench / Chatbot Arena:Judging LLM-as-a-Judge(2306.05685v4,通用大模型评委与位置偏差)](https://arxiv.org/abs/2306.05685v4) +- [小模型偏好判别(2405.01535)](https://arxiv.org/abs/2405.01535) +- [Pairwise 优于打分(2403.16950)](https://arxiv.org/abs/2403.16950) +- [CoT 提升准确度(2212.08073)](https://arxiv.org/abs/2212.08073) +- [多轮分析提升事实错误检测(2305.13281)](https://arxiv.org/abs/2305.13281) +- [Jury(多评委聚合,2404.18796)](https://arxiv.org/abs/2404.18796) +- [Self-preference(2404.13076)](https://arxiv.org/abs/2404.13076) +- [输入扰动盲区(2406.13439)](https://arxiv.org/abs/2406.13439) +- [位置偏差(2306.05685)](https://arxiv.org/abs/2306.05685) +- [Verbosity bias 与长度控制(2404.04475)](https://arxiv.org/abs/2404.04475) +- [Judge 与人类一致性存疑(2308.15812)](https://arxiv.org/abs/2308.15812) +- [非专家人类标注者作为基线的争议(2202.06935)](https://arxiv.org/abs/2202.06935) +- [格式偏差(2310.17631,同 JudgeLM)](https://arxiv.org/abs/2310.17631) +- [部分幻觉检测(2305.11747 / 2303.08896)](https://arxiv.org/abs/2305.11747) +- [摘要相关性(2304.02554 / 2303.16634)](https://arxiv.org/abs/2304.02554) +- [忠实度相关性(2307.16877)](https://arxiv.org/abs/2307.16877) +- [跨任务与人类一致性(2406.18403)](https://arxiv.org/abs/2406.18403) +- [Nemotron-4 340B 技术报告(reward model as judge,NVIDIA)](https://research.nvidia.com/publication/2024-06_nemotron-4-340b) +- [Nemotron 用 RM 做评测(2406.11704)](https://arxiv.org/abs/2406.11704) +- [SteerLM(2311.09528)](https://arxiv.org/abs/2311.09528) +- [HelpSteer2-Preference(2410.01257)](https://arxiv.org/abs/2410.01257) +- [ArmoRM(2406.12845)](https://arxiv.org/abs/2406.12845) +- [训练中跟踪 win rate 检测退化(2410.11677v1)](https://arxiv.org/abs/2410.11677v1) + +### 模型与数据集 + +- [Flow-Judge-v0.1 权重集合](https://huggingface.co/collections/flowaicom/flow-judge-v01-66e6af5fc3b3a128bde07dec) +- [Prometheus-13B-v1.0](https://huggingface.co/prometheus-eval/prometheus-13b-v1.0) / [Prometheus-7B-v2.0](https://huggingface.co/prometheus-eval/prometheus-7b-v2.0) +- [Prometheus Preference Collection](https://huggingface.co/datasets/prometheus-eval/Preference-Collection) / [Feedback Collection](https://huggingface.co/datasets/prometheus-eval/Feedback-Collection) +- [RLHFlow pair-preference-model-LLaMA3-8B](https://huggingface.co/RLHFlow/pair-preference-model-LLaMA3-8B) +- [Qwen 2.5 系列](https://huggingface.co/collections/Qwen/qwen25-66e81a666513e518adb90d9e) / [Command R+](https://huggingface.co/CohereForAI/c4ai-command-r-plus-08-2024) / [Llama 3.1-405B-Instruct](https://huggingface.co/meta-llama/Llama-3.1-405B-Instruct) +- [LMSYS Chatbot Arena 人类偏好数据集(Kaggle)](https://www.kaggle.com/competitions/lmsys-chatbot-arena) + +### 工具与教程 + +- [distilabel](https://distilabel.argilla.io/latest/)([UltraFeedback tutorial](https://distilabel.argilla.io/latest/sections/pipeline_samples/papers/ultrafeedback/) / [benchmarking with distilabel(Arena Hard)](https://distilabel.argilla.io/latest/sections/pipeline_samples/examples/benchmarking_with_distilabel/)) +- [lighteval:MixEval judge prompts](https://github.com/huggingface/lighteval/blob/main/src/lighteval/tasks/extended/mix_eval/judge_prompts.pyy) / [MTBench judge prompt templates](https://github.com/huggingface/lighteval/blob/main/src/lighteval/tasks/extended/mt_bench/judge_prompt_templates.py) +- [ArtificialAnalysis LLM Performance Leaderboard(成本对比)](https://huggingface.co/spaces/ArtificialAnalysis/LLM-Performance-Leaderboard) +- [LeonEricsson/llmjudge(扰动敏感度扩展实验)](https://github.com/LeonEricsson/llmjudge/blob/main/README.md) + +### 社区推文 + +- [Seungone Kim:先推理后打分 / 分数刻度锚点](https://x.com/seungonekim/status/1749289437165769177) +- [Aparna Dhinakaran:分数范围一致性](https://twitter.com/aparnadhinak/status/1748368364395721128) +- [从 reward model 出发微调 judge 更好](https://x.com/dk21/status/1826292289930674590) diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/04-Troubleshooting.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/04-Troubleshooting.md new file mode 100644 index 0000000..1205f54 --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/04-Troubleshooting.md @@ -0,0 +1,402 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - troubleshooting +status: active +created: 2026-08-21 +source: https://github.com/huggingface/evaluation-guidebook +--- + +# Troubleshooting(排错) + +> 本页提炼自 [HuggingFace LLM Evaluation Guidebook](https://github.com/huggingface/evaluation-guidebook) 的 **Troubleshooting** 章节(共三小节:推理排错、LaTeX 数学解析、可复现性排错)。这是整本指南中最实操的部分——当评测跑不起来、跑得慢、分数对不上时,先查这里。文内 ⭐ 标记为作者特别推荐的资源。 + +## 本节速览(TL;DR) + +| 症状 / 诉求 | 第一反应 | 详见 | +|---|---|---| +| 评测跑得太慢 | 增大 batch size → 数据并行 → 换推理库 → 降精度 | §1.1 | +| 模型太大放不进 GPU | 量化 → 模型并行(pipeline / tensor)→ CPU offloading | §1.2 | +| 装得下却 OOM | 怀疑 context size,用 dummy 数据测试 | §1.3 | +| 数学评测分数异常偏低 | 检查 LaTeX 解析器(sympy 自洽只有 0.94) | §2 | +| 复现不出论文分数 | 逐项对齐:代码库 / seed / 指标 / normalization / prompt / 生成参数 / 加载方式 | §3 | + +> 贯穿全章的三条核心心法:**① 评测工具链本身也是被测对象**——解析器、normalization、指标实现都会系统性改变分数;**② 评测不只是"模型回答问题",而是"在特定环境里跑特定管道"**——环境细节决定一切;**③ 想对比两个分数,先确认它们是不是用同一套管道算出来的。** + +## 1 推理排错(Troubleshooting Inference) + +评测中跑模型推理会遇到三类典型问题:**慢**、**大**(内存装不下)、以及**装得下却 OOM**。本节逐一给出排查思路。先给一张按症状定位的速查表: + +| 症状 | 直接原因 | 对策 | 代价 / 注意 | +|---|---|---|---| +| 推理慢 | batch size 太小 | 增大 batch size | 破坏绝对可复现性 | +| 推理慢 | 只用了单张 GPU | 数据并行(多 GPU) | 需同节点,避免节点间瓶颈 | +| 推理慢 | 推理库实现不够优化 | 换更快推理库 / 参考优化清单 | 需要实测 | +| 推理慢 | 精度过高 | 降到 `bfloat16`/`float16`,或 8bit/4bit 量化 | 精度损失,部分量化库本身偏慢 | +| 模型太大 | 精度过高 | 量化 | 中规模模型建议停在 `float16`/8bit | +| 模型太大 | 单卡放不下 | 模型并行 / CPU offloading | 并行较难编码;offloading 显著更慢 | +| 装得下却 OOM | context size 过大 | dummy 测试 + 降 batch + 逆序呈现样本 | 让失败尽早暴露 | + +### 1.1 模型太慢怎么办 + +#### ① 修改 batch size + +- 如果你追求**绝对可复现**(给定特定硬件与特定评测 prompt),通常只能用 batch size = 1。 +- 但只要内存放得下,**调大 batch size 几乎必然显著加速**评测——这是最简单的提速手段。 + +#### ② 数据并行(data parallelism) + +- 思路:把模型复制到多张 GPU 上(而不是只加载到一张卡),把数据切成子集分给每张卡的副本,各自计算后再**聚合结果**。 +- 效果:多条数据流同时被处理,总执行时间约**除以 GPU 数量**。 +- 注意:尽量让所有 GPU 在**同一个节点(node)**上,避免节点间通信成为瓶颈(inter-node bottleneck)。 + +#### ③ 更换推理代码 + +- 不是所有推理库速度都一样,有些实现优化得更好,需要针对你的用例**实测对比**。 +- 如果使用 PyTorch,作者推荐参考 [PyTorch 模型推理性能优化清单](https://pytorch.org/serve/performance_checklist.html)。 + +#### ④ 降低精度(precision) + +- `float32` 每个数占 32 bit,计算精确但**内存与算力开销都大**。 +- 降到 **`bfloat16` / `float16`(一半精度)**,速度约翻倍,精度损失几乎可以忽略。 +- 想进一步提速可量化到 **8 bit 或 4 bit**(例如用 `gptq` 或 `bitsandbytes`),n-bit 矩阵计算更快、模型占内存更少。 +- ⚠️ 某些量化库本身可能偏慢,需要针对你的场景实测。 + +> 贯穿 1.1 的原则:以上手段**不是二选一的单选题,而是可以叠加的组合拳**(如"大 batch + 数据并行 + `bfloat16`"),且**提速效果必须在你的硬件与任务上实测确认**——作者多次强调"test things out for your use cases"。 + +### 1.2 模型太大(GPU 装不下)怎么办 + +#### 估算内存需求 + +用如下公式估算加载模型所需的**最小理论内存**: + +``` + = × +``` + +原理:1 Byte = 8 bit,总内存 ≈ 参数量 × 每个参数占用的 Byte 数。precision factor 取值: + +| 精度 | precision factor | +|---|---| +| `float32` | 4 | +| `float16` / `bfloat16` | 2 | +| 8 bit 量化 | 1 | +| 4 bit 量化 | 0.5 | + +更稳妥的推荐公式(留出推理时的 batch 等额外开销): + +``` + = × ( × 110%) +``` + +> 示例估算(用推荐公式 `参数(G) × factor × 110%`,取 7B 与 70B 两个常见规模): + +| 模型规模 | `float32` | `float16`/`bfloat16` | 8 bit | 4 bit | +|---|---|---|---|---| +| 7B | 7×4×1.1 ≈ **30.8 GB** | 7×2×1.1 ≈ **15.4 GB** | 7×1×1.1 ≈ **7.7 GB** | 7×0.5×1.1 ≈ **3.9 GB** | +| 70B | 70×4×1.1 ≈ **308 GB** | 70×2×1.1 ≈ **154 GB** | 70×1×1.1 ≈ **77 GB** | 70×0.5×1.1 ≈ **38.5 GB** | + +> 由此可快速判断硬件选型:单张 80GB 的 GPU 要跑 70B 模型,`float16`(154GB)不行,需要 8bit(77GB,一张卡勉强)或 4bit 量化 / 模型并行;而 7B 模型在 `float16` 下单张 16–24GB 的消费级卡即可胜任。 + +#### ① 量化(quantization) + +- 最直接的手段:调小上面的 precision factor。从 `float32` 到 **4 bit**,内存需求直接**缩小 8 倍**。 +- ⚠️ 精度过低会损害评测结果。对**中规模模型**建议保守停在 `float16` 或 8 bit。 +- 经验观察:量化对**超大模型**的性能影响反而较小(可能因为存在信息冗余)。 + +#### ② 模型并行(model parallelism) + +把模型切成小块,分别加载/运行在不同的 GPU 上;因为从不一次性加载完整模型,所以省内存,但**可能更慢**。两种主要类型: + +| 类型 | 切分粒度 | 机制 | 代价 / 特点 | +|---|---|---|---| +| **Pipeline parallelism**(流水线并行) | 整层(layer)级别 | 按层分派到不同 GPU,层 1 输出是层 2 输入 | GPU 会空转等待,产生所谓 **"bubble"**;把输入拆成更小的 batch 可缓解 bubble;需要 GPU 间传输数据 | +| **Tensor parallelism**(张量并行) | 矩阵计算级别 | 把矩阵按行/列切开,各 GPU 算完再聚合 | 只要 GPU 都在同一节点就**极其高效**(避免节点间网络瓶颈),但**难以编码** | + +- Pipeline parallelism 正被原生加入 PyTorch 的 [`PiPPy`](https://github.com/pytorch/PiPPy) 库,也是 `accelerate` 底层使用的并行方式。 +- Tensor parallelism 在 `vllm` 库中有很好的实现,作者形容其带来 **"insane speedups"(惊人的加速)**。 +- 各类并行(含用于提速的 data parallelism)的最佳参考文档:[Transformers 官方并行文档](https://huggingface.co/docs/transformers/v4.15.0/en/parallelism)。 + +#### ③ CPU offloading + +- 把部分计算和模型参数挪到 CPU,以降低 GPU 显存占用。 +- ⚠️ **比上面任何方法都慢得多**——因为要持续在设备之间搬运数据。 +- 典型实现:DeepSpeed 的 [ZeRO-Offload](https://arxiv.org/abs/2101.06840)(在 ZeRO-2 优化之上):优化阶段的梯度、optimizer states、fp32 参数计算放 CPU;GPU 上保留 fp16 参数与前向/反向传播,以"用 CPU 内存 + GPU 算力、最小化通信"为设计目标。 + +### 1.3 模型装得下,但还是 OOM + +大概率是 **context size(上下文长度)** 的问题——显存峰值往往由"batch size × 序列长度"决定,模型权重本身反而放得下。作者建议: + +1. **先用虚拟推理数据(dummy inference data)测试**模型是否真的放得下;虚拟数据要使用**足够大、能代表你任务**的 context size。 +2. **降低 batch size**;如果你开了 auto-batch size search(自动搜索 batch size),考虑关掉——它可能导致意外的 OOM。 +3. 一般性原则:**让样本按 context size 逆序(从大到小)呈现**给模型——这样如果 context 太大,会**一开始就立刻失败**,而不是跑了几小时后才崩。 + +## 2 数学能力评测中的 LaTeX 解析问题(MATH & sympy) + +> 📌 **新版(2025 Space)更新**:新版指南把 LaTeX 解析问题并入「Designing your automatic evaluation」的 *Normalization* 小节,并推荐使用专门的数学解析库 **Math-Verify**(替代 sympy 手工解析/字符串比较,见 [[08-2025-Edition]] §5)。下方记录的是旧版(sympy)的探索过程与教训,仍有参考价值。 + +### 2.1 问题背景 + +- 解析 LaTeX **非常困难**。当评测任务期望模型输出 LaTeX 时(典型如 [MATH benchmark](https://huggingface.co/datasets/lighteval/MATH),它用 LaTeX 表示数学计算与符号),问题就来了。 +- 评测这类任务本应只是"解析并比较 ground truth 与模型输出",但**实际上不存在"正确"的 LaTeX 解析方式**(sympy 文档自己也这么说)。 + +### 2.2 sympy 的局限:0.94 的自洽准确率 + +- `lm-evaluation-harness` 使用 **`sympy`**(Python 符号数学库)解析 LaTeX 并比较表达式。 +- 残酷的事实:**即使用 ground truth 去解析 ground truth 本身**(自己和自己比),`sympy` 也只有约 **0.94 的准确率**。 +- 原因:`sympy` 无法解析一部分**本身正确**的 LaTeX 表达式。 +- 这个"用 ground truth 自比"的测试本质是一个**解析器健全性检查(round-trip test)**:它排除了模型因素,单独测量解析管道的上限。0.94 意味着即使模型 100% 输出正确答案,评测系统也会因解析失败丢掉约 6% 的分数——解析器成了评测误差的主要来源之一。 + +### 2.3 典型报错示例 + +以下三个示例中,`sympy` 都因语法问题拒绝了正确的 LaTeX: + +**例 1:半开区间 `[0,1)`(interval)** + +``` +couldn't parse one of [0,1) or [0,1), I expected one of these: ']' +[0,1) +~~^ +``` + +**例 2:并集 `\cup` 与无穷 `\infty`(此处写作 `\iny`)** + +``` +couldn't parse one of (-\iny,-5]\cup[5,\iny) or (-\iny,-5]\cup[5,\iny), I expected something else here +(-\iny,-5]\cup[5,\iny) +~~~~~~^ +``` + +**例 3:分数中的空分组 `\frac{1}{{}2x}`** + +``` +couldn't parse one of -\frac{1}{{}2x} or -\frac{1}{{}2x}, I don't understand this +-\frac{1}{{}2x} +~~~~~~~~~~~^ +``` + +> 小结:把上述失败归纳成三类典型盲区—— + +| 失败类别 | 报错示例 | 原因 | +|---|---|---| +| 区间表示(interval) | `[0,1)` | 半开区间 `[`/`)` 混用,sympy 期待 `]` 之类的闭合符号 | +| 集合运算与特殊符号 | `(-\iny,-5]\cup[5,\iny)` | `\cup`(并集)等集合运算符、`\infty`(示例中写作 `\iny`)不被支持 | +| 多余分组 | `-\frac{1}{{}2x}` | 分子/分母里的空分组 `{}` 导致语法不识别 | + +三类都是**合法、正确的 LaTeX**,却会被解析器拒绝——这正是"解析器不是标准答案"的实证。 + +### 2.4 怎么绕过 + +两条路: + +1. **重写 LaTeX grammar**:向 [`sympy` 的 LaTeX 语法文件 `latex.lark`](https://github.com/sympy/sympy/blob/master/sympy/parsing/latex/lark/grammar/latex.lark) 添加所需特性(为解析器增加新规则)。 +2. **在代码里加手动检查**:为模型输出增加字符串比较等后处理兜底。 + +作者的选择:在几乎掉进"重写 grammar"这个深坑之后,**决定只给代码加上字符串比较(string comparison)检查**就足够了——即对 `lm-evaluation-harness` 打一个修复补丁(见原文附图中的 LM Eval Harness fix)。 + +> 为什么选"字符串比较"而不是"重写 grammar"?重写 parser grammar 是个无底洞:LaTeX 语法变体无穷无尽(区间、集合、特殊符号、各种分组写法),每补一个规则都可能引入新冲突,维护成本高。而字符串比较实现简单、可立刻生效——解析失败时退而求其次做规范化后的字符串比对,足以覆盖评测场景中大多数"模型其实答对了"的情况。**对评测工程而言,够用、可维护,比理论上完美更重要。** + +### 2.5 修复效果:MATH 上旧/新解析器对比 + +修复后对 MATH benchmark 前 25 个模型的分数(原始解析器 vs 修复后解析器)对比如下(分数列为 0–100;"提升"为两列差值): + +| 模型 | 原始 | 修复后 | 提升 | 排名变化 | +|---|---|---|---|---| +| rombodawg/Rombos-LLM-V2.5-Qwen-72b | 47.58 | 50.68 | +3.10 | 1 → 1 | +| MaziyarPanahi/calme-2.2-qwen2-72b | 41.16 | 43.43 | +2.27 | 2 → 2 | +| arcee-ai/Arcee-Nova | 40.48 | 42.90 | +2.42 | 3 → 3 | +| fblgit/TheBeagle-v2beta-32B-MGS | 39.43 | 42.52 | +3.09 | 4 → 4 | +| rombodawg/Rombos-LLM-V2.5-Qwen-32b | 39.12 | 41.99 | +2.87 | 5 → 5 | +| dnhkng/RYS-XLarge | 38.97 | 41.24 | +2.27 | 6 → 6 | +| dfurman/CalmeRys-78B-Orpo-v0.1 | 37.92 | 40.71 | +2.79 | 8 → 7 | +| MaziyarPanahi/calme-2.2-rys-78b | 37.92 | 39.95 | +2.03 | 8 → 9 | +| MaziyarPanahi/calme-2.4-rys-78b | 37.69 | 40.41 | +2.72 | 9 → 8 | +| MaziyarPanahi/calme-2.3-rys-78b | 36.56 | 38.97 | +2.41 | 10 → 10 | +| MaziyarPanahi/calme-2.1-rys-78b | 36.40 | 38.90 | +2.50 | 11 → 11 | +| Qwen/Qwen2.5-72B | 36.10 | 38.67 | +2.57 | 12 → 12 | +| MaziyarPanahi/calme-2.1-qwen2-72b | 36.03 | 38.07 | +2.04 | 13 → 15 | +| Qwen/Qwen2-Math-72B-Instruct | 35.95 | 38.14 | +2.19 | 14 → 14 | +| dfurman/Qwen2-72B-Orpo-v0.1 | 35.42 | 38.14 | +2.72 | 15 → 13 | +| abacusai/Smaug-Qwen2-72B-Instruct | 35.35 | 37.46 | +2.11 | 16 → 19 | +| anthracite-org/magnum-v1-72b | 35.27 | 37.69 | +2.42 | 18 → 16 | +| alpindale/magnum-72b-v1 | 35.27 | 37.69 | +2.42 | 18 → 16 | +| Qwen/Qwen2-72B-Instruct | 35.12 | 37.69 | +2.57 | 19 → 18 | +| dnhkng/RYS-XLarge-base | 34.67 | 37.16 | +2.49 | 20 → 20 | +| Undi95/MG-FinalMix-72B | 33.61 | 36.10 | +2.49 | 22 → 21 | +| abacusai/Dracarys-72B-Instruct | 33.61 | 35.65 | +2.04 | 22 → 22 | +| Qwen/Qwen2.5-32B | 32.85 | 35.50 | +2.65 | 23 → 23 | +| anthracite-org/magnum-v2-72b | 31.65 | 34.06 | +2.41 | 24 → 24 | +| dnhkng/RYS-Huge-bnb-4bit | 31.57 | 33.84 | +2.27 | 25 → 25 | + +**关键观察**: + +- 所有模型的分数都提升了约 **2–3 分**(最低 +2.03,最高 +3.10)——这个量级的差距足以改变一个模型的"好不好"结论,说明解析器(而非模型)曾经拖累了大量分数。 +- 排名大体稳定,但个别模型有 ±1~3 位的变化(如 Smaug-Qwen2-72B-Instruct 从 16 掉到 19,Qwen2-72B-Orpo-v0.1 从 15 升到 13)——若按排名做基准对比,解析差异会**改变排行榜序**。 + +**为什么分数整体平移、排名却会变?** 解析器对每个模型的"扣分"并不均匀:模型 A 输出的 LaTeX 恰好多是 sympy 的盲区(区间、集合、多余分组),被多扣;模型 B 的输出风格恰好全被解析,少扣。所以修复解析器后,**被多扣的模型分数抬升更多**,相对位置就动了。结论:解析器不只是"对所有人一视同仁的常量误差",它还可能掩盖模型之间的真实差距。 + +> 引申教训:评测指标管道(metric pipeline)本身也是被测对象的一部分。解析器、normalization、后处理的实现差异会系统性抬高/压低某些模型的分数。 + +## 3 可复现性排错(Troubleshooting Reproducibility) + +场景:你读了某篇最新技术报告,想在本地复现它的分数,却**复现不出来**?以下是作者拆解的原因清单。 + +### 3.1 不同的代码库(code base) + +- 要复现到小数点,第一步是**使用与论文完全相同的代码库**。 +- 通常意味着:用**作者提供的评测默认代码**,或用参考库中的标准实现——如 Eleuther AI 的 `lm_eval`、HuggingFace 的 `lighteval`。这两个库是社区事实上的"标准管道":`lm_eval`(EleutherAI)是使用最广的评测框架,`lighteval`(HuggingFace)由 Open LLM Leaderboard 团队维护——用它们,等于和其他人共用同一套任务定义与指标实现,这是复现的前提。 +- 如果论文**没提供评测代码**:几乎不可能精确复现,只能放弃精确比对。 +- ⭐ 想直观理解不同实现带来的差异,读作者团队写的这篇博客:[MMLU 在不同评测实现下的差异](https://huggingface.co/blog/open-llm-leaderboard-mmlu)——它研究了 MMLU 在 `lm_eval`、`helm` 与原始作者实现三种版本下的分数差异。 +- 背景:正因为如此,HuggingFace 团队才发起 [Open LLM Leaderboard](https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard),用统一、同质的评测来做模型间的横向比较。 + +### 3.2 同一代码库内也容易踩的坑 + +即使代码库相同,以下细节也容易出错: + +#### ① 不同的随机种子(random seed) + +- 推理受 seed 影响通常比训练小,但仍可能影响: + - 部分 **CUDA 操作**(参考 [PyTorch 可复现性文档](https://pytorch.org/docs/stable/notes/randomness.html)); + - **非 greedy 生成策略**下的预测结果; + - 使用 few-shot 时的 **prompt 内容**(抽样选出哪些示例); + - 某些**前处理 / 后处理函数**。 +- 一个小 seed 差异就可能带来**几分之差**。 + +#### ② 同名但实际不同的指标(metric) + +指标名相同 ≠ 计算方式相同,例如: + +- **log likelihood 版 `exact match`**(计算不同候选答案的对数概率) vs **生成式 `exact match`**(只把 greedy 生成与参考答案比较)——两者分数完全不同。 +- 代码库里不少任务名叫 `exact match`,实际却是: + - **`prefix exact match`**(只比生成的开头与参考); + - **`suffix exact match`**(反过来,只比结尾); + - **`quasi exact match`**(带 normalization 的 exact match)。 +- **结论:不能只靠指标名判断评测做了什么,必须看代码。** + +#### ③ 不同的 normalization + +- 回到上面生成式 `exact match` 的例子:`lm_eval` v1 中不少任务只叫 generative `exact match`,你会以为预测是"原样与参考比较";但看代码会发现预测**先经过 normalization**(去标点、数字同质化等)再比较——这会**大幅改变结果**。 +- `lm_eval` **v2 已把 normalization 的名字写进大多数指标名**。 +- 这是最容易被搞砸的点,尤其对**需要大量 normalization / 答案后处理的任务**,比如数学评测(需要从模型生成的解释里**抽取最终答案**再比较)。 + +### 3.3 不同的 prompt + +prompt 变化有三个来源。 + +#### ① prompt 本身(格式) + +prompt 格式对分数的影响**巨大**。以多选题为例,仅呈现选项的格式就有多种"语义等价"的变体: + +```text +Question: +Choices: +``` + +```markdown +| A. | (A) | | +| B. | (B) | | +| C. | (C) | | +| D. | (D) | | +``` + +```text +Answer: +``` + +并要求模型预测 `A`/`B`/`C`/`D`,或直接输出 `` 的完整文本。 + +- 这些 prompt **语义等价**(内容完全相同),但对同一模型仍可能差**好几分**: + - 作者团队实验([原帖](https://x.com/clefourrier/status/1777319187913875893/photo/1))观察到同一模型**最高差 7 分**; + - [相关论文](https://arxiv.org/abs/2310.11324)也观察到了类似结果。 +- 有些任务还会带**任务前缀 prompt**(如 `The following questions are about `),其有无也会影响分数。 +- ⭐ [这篇论文](https://arxiv.org/abs/2407.07890)还揭示一个副作用:**不少模型被训练成"过拟合基准的 prompt 与答案格式"**,代价是在评测时对其他 prompt 的适应能力下降。 +- 实例(Open LLM Leaderboard 2 上的 Llama3.1):这些模型在 MATH-Hard 评测中**能预测出正确答案,分数却很低**——因为它们过拟合了 GSM8K(另一个数学评测)的 prompt 与答案格式,无法适配 few-shot 中提供的模板。 + +#### ② system prompt 与 chat template + +- Chat 模型通常经过指令/偏好训练(instruction/preference training 或 fine-tuning),这个阶段它们学会了**遵循特定模板**推理。 +- 常见模板要素: + - 每轮对话以**system prompt** 开头(通常以特定 token 前缀,如 `System: `),用于给模型高层指令(人设、回答风格等); + - 对话轮次给文本加**前缀关键词**,如 `User`(提问)与 `Assistant`(回答)。 +- 使用 few-shot 时还要决定:示例**按多轮(multi-turn,模拟 user/assistant 轮次)提供**,还是**一次性放在单条 user prompt 里**。 +- ⚠️ **不遵循模型期望的 chat template,会严重损害性能**——因为它把模型输出推向其已收敛的概率空间之外。 + +#### ③ few-shot 样本 + +- 显然要用**与参考任务相同的 few-shot 数量**。 +- 还要用**完全相同的样本**——不同样本会改变结果(这不太意外:有些样本更能表达任务)。 +- 更反直觉的一点:**样本完全相同还不够,顺序也必须完全相同**。作者团队观察到:同样的样本仅改变顺序,在 **MMLU 的某些子集上最多差 3 分**([结果见这里](https://huggingface.co/blog/evaluation-structured-outputs),第三个 colorgrid)。 +- 因此这里同样要**注意随机种子**。 + +### 3.4 不同的生成参数(generation parameters) + +对生成式评测,需要对齐: + +- 使用**相同的 end of sentence token(EOS token)**; +- 允许模型**生成相同数量的 token**; +- 如果使用 sampling,确保**相同的 seed / temperature 参数**。 + +### 3.5 不同的模型加载(model loading) + +已观察到的差异来源: + +| 来源 | 说明 | +|---|---| +| **不同硬件** | PyTorch **不保证**非确定性操作在不同硬件上可复现 | +| **不同推理库** | 例如用 `transformers` 还是 `vllm` 作为推理后端,矩阵计算的实现方式并不完全相同 | +| **不同 batch size** | 多个评测库与模型后端都有文档记录:**batch size 不同会改变推理结果**;要完全可复现就固定 batch size(虽然内存受限时不一定总能做到) | +| **不同加载精度** | 用更低精度加载权重可省内存与推理成本,但用的是不同版本的权重,**数值结果必然改变** | + +> 排查复现问题时的总思路:**从"最可能、最容易改"的项开始逐项对齐**——先核对 prompt 与 few-shot(改动最频繁、影响最直接),再查指标与 normalization(需要看代码确认),最后核对生成参数与加载方式(涉及硬件环境)。每锁定一项就重跑一次对比,通常很快能找到分差来源。 + +### 3.6 可复现性检查清单(速查) + +综合 3.1–3.5,复现一份评测分数前逐项核对(任一项不满足,分数就可能对不上): + +- [ ] 使用与参考完全相同的**代码库/评测框架**(`lm_eval` / `lighteval` / 作者实现) +- [ ] 相同**随机种子**(尤其非 greedy 生成、few-shot 抽样) +- [ ] 相同的**指标定义**(log-likelihood vs generative、prefix/suffix/quasi exact match,看代码确认) +- [ ] 相同的 **normalization / 后处理**(数学评测尤其注意答案抽取) +- [ ] 相同的 **prompt 格式、system prompt、chat template**(多轮 vs 单次 few-shot) +- [ ] 相同的 **few-shot 数量、样本与顺序** +- [ ] 相同的**生成参数**(EOS token、max tokens、seed / temperature) +- [ ] 相同的**硬件、推理库、batch size、加载精度** + +## 核心要点(一句话版) + +1. **提速四杠杆**(按性价比排序):调大 batch size → 数据并行 → 换更快推理库 → 降精度(`bfloat16`/`float16` → 8bit/4bit 量化)。 +2. **内存估算**:`memory(GB) = 参数(G) × precision factor × 110%`;factor 为 `float32`=4、`float16`/`bfloat16`=2、8bit=1、4bit=0.5。 +3. **放不下时**:先量化(最多省 8 倍内存),再模型并行(pipeline 慢在 bubble、tensor 慢在难编码但同节点极快),CPU offloading 是最后手段(显著更慢)。 +4. **装得下却 OOM**:八成是 context size 问题——用大 context 的 dummy 数据先测、降 batch、样本按 context 逆序呈现让失败提前暴露。 +5. **数学评测的 LaTeX 解析没有标准答案**:`lm-evaluation-harness` 用的 `sympy` 连 ground truth 自比都只有约 0.94 准确率;别去重写 grammar,加字符串比较兜底就够(修复后 25 个模型 MATH 分数全部 +2~3 分)。 +6. **复现不出分数 = 某个环境细节没对齐**:代码库、随机种子、指标真实定义(prefix/suffix/quasi exact match)、normalization、prompt 格式与 chat template、few-shot 的数量/样本/顺序(顺序变化最多差 3 分)、生成参数(EOS、max tokens、seed/temperature)、硬件/推理库/batch size/加载精度——每一项都可能差几分。 +7. **最容易被低估的两处**:① 同名指标的实现差异(必须看代码,别信名字);② prompt 格式的微小变化——语义等价也能差 7 分,还有模型专门过拟合基准 prompt 格式,换格式分数暴跌。 +8. **工具取向**:优先使用维护中的标准框架(`lm_eval` v2、`lighteval`),因为它们把 normalization 等细节暴露在指标名里,减少"实现悄悄不同"的踩坑概率;升级框架版本时,也要顺手核对指标定义是否变化。 + +## 参考资料 + +### 原文(GitHub 仓库) + +- [Troubleshooting inference(推理排错)](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/troubleshooting/troubleshooting-inference.md) +- [Using LaTeX to evaluate MATH capabilities(LaTeX 解析)](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/troubleshooting/troubleshooting-math-parsing.md) +- [Troubleshooting reproducibility(可复现性排错)](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/troubleshooting/troubleshooting-reproducibility.md) +- 仓库主页:[huggingface/evaluation-guidebook](https://github.com/huggingface/evaluation-guidebook) + +### 文中引用的外部链接 + +- [PyTorch 模型推理性能优化清单](https://pytorch.org/serve/performance_checklist.html) +- [PyTorch PiPPy(pipeline parallelism)](https://github.com/pytorch/PiPPy) +- [Transformers 并行化文档(data / pipeline / tensor parallelism)](https://huggingface.co/docs/transformers/v4.15.0/en/parallelism) +- [ZeRO-Offload 论文(arXiv:2101.06840)](https://arxiv.org/abs/2101.06840) +- [MATH benchmark(lighteval/MATH)](https://huggingface.co/datasets/lighteval/MATH) +- [sympy(符号数学库)](https://github.com/sympy/sympy) +- [sympy 的 LaTeX grammar(latex.lark)](https://github.com/sympy/sympy/blob/master/sympy/parsing/latex/lark/grammar/latex.lark) +- ⭐ [MMLU 在不同评测实现下的差异(HF 博客)](https://huggingface.co/blog/open-llm-leaderboard-mmlu) +- [Open LLM Leaderboard](https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard) +- [PyTorch 可复现性文档](https://pytorch.org/docs/stable/notes/randomness.html) +- [prompt 格式对分数影响的实验(X 原帖,最高差 7 分)](https://x.com/clefourrier/status/1777319187913875893/photo/1) +- [Few-shot prompt 变化的影响(论文 arXiv:2310.11324)](https://arxiv.org/abs/2310.11324) +- ⭐ [模型过拟合基准 prompt 格式(论文 arXiv:2407.07890)](https://arxiv.org/abs/2407.07890) +- [few-shot 顺序对 MMLU 子集分数的影响(HF 博客)](https://huggingface.co/blog/evaluation-structured-outputs) diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/05-General-Knowledge.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/05-General-Knowledge.md new file mode 100644 index 0000000..2f45cd5 --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/05-General-Knowledge.md @@ -0,0 +1,325 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - general-knowledge +status: active +created: 2026-08-21 +source: https://github.com/huggingface/evaluation-guidebook +--- + +# LLM 评测指南 · General Knowledge(通用知识)提炼笔记 + +> 本页提炼自 [HuggingFace Evaluation Guidebook](https://github.com/huggingface/evaluation-guidebook) 的 **General knowledge** 章节的两页内容:**Model inference and evaluation**(模型推理与评测)与 **Tokenization**(分词)。面向初学者,重点整理与评测直接相关的部分:生成式评测 vs log-probability 评测、log-prob 的计算方式、tokenizer 对评测结果的影响。 +> +> 原文链接: +> - [model-inference-and-evaluation.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/general-knowledge/model-inference-and-evaluation.md) +> - [tokenization.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/general-knowledge/tokenization.md) + +--- + +## 一、模型推理与评测(Model Inference and Evaluation) + +### 1.1 什么是推理(inference) + +大型语言模型的工作方式很简单:**给定一段文本作为输入,它们学会了预测"合理的后续内容"**。整个过程分两步: + +#### 第一步:Tokenization(分词) + +- 输入文本(推理时称为 *prompt*)先被切分成 **tokens**——小的文本单元(可以是一个或几个字符,最多到词级)。 +- 每个 token 关联一个数字;模型能解析的全部 token 范围称为它的 **vocabulary**(词表)。 +- 细节见本页第二章(原文 Tokenization 页)。 + +#### 第二步:Prediction(预测) + +![LLM 推理流程示意](https://github.com/huggingface/evaluation-guidebook/blob/main/assets/llm_tk_1.png?raw=true) + +- 基于输入文本,LLM 在**整个词表**上生成"最可能的下一个 token"的概率分布。 +- 要得到连续生成:取概率最高的 token(可加入一点随机性以获得更有趣的输出)作为下一个 token,然后**重复该操作**,把新 token 当作 prompt 的结尾继续下去,如此循环(即自回归生成)。 + +### 1.2 你想预测什么?——评测的两大类别 + +LLM 评测主要分为两大类: + +1. **给定一个 prompt 和一个(或多个)答案**:我的模型给出这些答案的概率是多少? +2. **给定一个 prompt**:我的模型会生成什么文本? + +| 维度 | Log-likelihood 评测(选择题式) | Generative 评测(生成式) | +|---|---|---| +| 核心问题 | 给定候选答案,答案是"被模型认可"的概率 | 给定 prompt,模型自己生成什么 | +| 模型输出 | 候选序列的 log-probability | 自回归生成的 token 序列 | +| 典型形态 | 多项选择(multiple-choice / MCQA)、单句概率判断、校准研究 | 开放生成、摘要、翻译、代码生成 | +| 打分方式 | 比较各选项 log-prob、与 0.5 阈值比较、看校准 | 与参考文本比对(exact match、BLEU 等)或模型作评委 | +| 优点 | 计算确定、可复现,直接反映模型偏好 | 更接近真实使用场景 | +| 风险 | 可能偏向"自由生成时会输出别的东西"的模型(见 1.3) | 生成结果多样,打分标准更难定 | + +> 📌 **术语衔接(来自指南其他章节,非本页原文)**:指南的 *Automatic benchmarks* 章节把"对给定序列求 log-probability"的评测称为 *multiple-choice evaluations*,有时也叫 **MCQA** 或 *perplexity evaluations*;perplexity(困惑度)指标的具体用法,以及评测框架 **lm-evaluation-harness**(EleutherAI)与 **lighteval**(HuggingFace)的讨论,不在本页范围内,详见指南对应章节与本目录 [[01-Automatic-Benchmarks]]、[[07-Resources]] 笔记。 + +### 1.3 Log-likelihood(log-prob)评测 + +目标是:**给定 prompt,求一个或多个候选答案的条件概率**——即"给定输入,得到某个特定续写的可能性有多大"。 + +计算过程(对应原文插图 `llm_logprob.png`): + +```text +1. 拼接:把每个选项(choice)与 prompt 拼接,传给 LLM + ↓ +2. 取 logits:LLM 输出每个 token 的 logits(每个 token 取决于它之前的 token) + ↓ +3. 只保留与选项 token 相关的最后几个 logits,施加 log softmax + → 得到 log-probabilities(值域为 [-inf, 0],而不是 [0, 1]) + ↓ +4. 求和:把所有单个 token 的 log probability 相加 + → 得到整个选项的总 log probability + ↓ +5. 归一化:最后可按选项长度(choice length)做归一化 +``` + +![log-prob 计算示意](https://github.com/huggingface/evaluation-guidebook/blob/main/assets/llm_logprob.png?raw=true) + +基于此可以应用以下指标: + +- **在多个选项中选出模型最偏好的答案**(如上图)。 + - ⚠️ 注意:这可能**有利于**那些"若自由生成会输出别的东西"的模型——例如图中模型"被迫"在选项里选 `Zygote`,但若让它自由生成可能给出别的答案,从而虚高其得分。 +- **测试单个选项的概率是否超过 0.5**。 +- **研究模型校准(calibration)**:一个校准良好的模型,其正确答案应该拥有最高的概率。 + - 了解校准是什么、如何检测、如何训练出校准良好的模型:Anthropic 论文 [Calibration tutorial](https://arxiv.org/abs/2207.05221)。 + - 校准的一些可能局限:[Limits of calibration](https://arxiv.org/abs/2311.14648)。 + +### 1.4 生成式评测(Generative evaluations) + +目标是:**给定 prompt,得到模型生成的文本**。 + +生成过程是自回归的: + +```text +1. 把 prompt 传给模型 + ↓ +2. 看最可能的下一个 token,选中它作为模型的 "choice first token" + ↓ +3. 重复,直到满足生成结束条件: + - 达到最大长度(maximum length) + - 出现特殊终止 token(special token to stop the generation) + - 等 + ↓ +4. 模型生成的所有 token 即它对 prompt 的"回答" +``` + +![生成式评测示意](https://github.com/huggingface/evaluation-guidebook/blob/main/assets/llm_gen.png?raw=true) + +然后**把生成结果与参考答案(references)比较,对两者之间的距离打分**: + +- 简单指标:**exact match**(精确匹配)。 +- 更复杂的指标:**BLEU** 等。 +- 或用**模型作评委**(models as judges,即 LLM-as-a-judge,详见指南 Model-as-a-Judge 章节)。 + +#### Going further(进阶阅读) + +- ⭐ [Blog on several ways to evaluate MMLU](https://huggingface.co/blog/open-llm-leaderboard-mmlu) —— HuggingFace 团队(原作者所在团队)所写,深入讲解"多项选择 log-likelihood 评测"与"生成式评测"的差异,以及它们对分数变化意味着什么。上文插图即来自该博客(由 Thom Wolf 制作)。 +- ⭐ [A beautiful mathematical formalization of the above inference methods](https://arxiv.org/abs/2405.14782v2) —— EleutherAI 对上述推理方法的数学形式化,直接看 Appendix。 + +### 1.5 约束模型输出(Constraining model outputs) + +在很多情况下,我们希望模型输出遵循特定格式(例如为了与参考答案比较)。原文给出了三种方式: + +| 方式 | 做法 | 优点 | 局限 | +|---|---|---|---| +| **使用 prompt** | 在任务 prompt 中加入非常具体的指令(如 `Provide numerical answers in digits.`、`Use no abbreviation.`) | 最简单;对高能力模型通常够用 | 不一定总是有效 | +| **Few-shot / In-context learning** | 在 prompt 中提供示例(few-shot prompting),让模型隐式偏向遵循示例的 prompt 形状 | 2023 年底之前普遍效果很好 | 见下方说明 | +| **结构化文本生成(Structured text generation)** | 用语法(grammar)或正则表达式定义输出路径,约束输出 | 减少评测中的 prompt 方差,结果与排名更稳定 | 可能降低部分任务的性能(见下方说明) | + +#### Few-shot 的说明 + +- 工作原理:通过 in-context learning,prompt 里的示例会让模型隐式地偏向"按照重复出现的 prompt 形状"作答。 +- **时效性**:该方法直到 2023 年底都整体表现良好;但此后 **instruction-tuning** 的广泛采用,以及预训练后期加入指令数据(**continuous pre-training**),似乎让较新的模型偏向特定输出格式——论文称之为 *Training on the test task*([arxiv 2407.07890](https://arxiv.org/abs/2407.07890)),作者则称之为 *overfitting the prompt format*(对 prompt 格式的过拟合)。 +- **上下文窗口限制**:对上下文窗口较小的旧模型,few-shot 示例可能**放不进 context window**。 + +#### 结构化生成的说明 + +- `outlines` 库用**有限状态机(finite state machines, FSM)**实现,作者认为非常 neat;也存在其他方法,例如用于 JSON 生成的 **interleaved generation**(作者本人更偏爱 FSM)。 +- 收益:结构化生成降低评测中的 prompt 方差,使结果和排名更稳定(见共同撰写的博客 [Evaluation of structured outputs](https://huggingface.co/blog/evaluation-structured-outputs);也可看 `outlines` 的 [博客](https://blog.dottxt.co/))。 +- 风险:近期 [研究](https://arxiv.org/abs/2408.02442) 显示,结构化生成可能通过把先验推离期望概率分布太远,从而**降低模型在部分任务(如推理)上的表现**。 + +#### Going further(进阶阅读) + +- ⭐ [Understanding how Finite State Machine works when using structured generation](https://blog.dottxt.co/coalescence.html) —— Outlines 出品,对其方法的清晰讲解。 +- [The outlines method paper](https://arxiv.org/abs/2307.09702) —— 上述方法的学术版解释。 +- [Interleaved generation](https://github.com/guidance-ai/guidance?tab=readme-ov-file#guidance-acceleration) —— 另一种约束特定输出格式生成的方法。 + +--- + +## 二、Tokenization(分词) + +### 2.1 为什么以及如何切分文本 + +**LLM 本质上是大型数学函数,吃的是数字而不是文本。** 要把句子变成数字:先决定如何把句子切成小块,再把每个小块映射成一个数字——这就是 **tokenization**。 + +历史上两端方案: + +| 方案 | 切分方式 | 映射方式 | 例子 | +|---|---|---|---| +| **Character based**(字符级) | 按字符切分 | 每个字符映射为字母表索引 | `a` → 1,`b` → 2 | +| **Word based**(词级) | 按空格切分(若语言有空格;没有的话更难) | 每个词映射为词典索引 | `a` → 1,`aardvark` → 2,`ab` → 3 | + +**两者的共同局限:都会丢失输入文本的信息。** + +- 抹掉了从**词形**能看出的语义联系,例如:`dis similar`、`similar`、`similar ity`、`similar ly` —— 这些联系正是我们希望模型保留、以便把相关词联系起来的。 +- 另外:如果输入中出现一个**全新的词**,它没有对应数字,模型就无法处理 😔 + +于是有人想到:**把词切成子词(sub-words),再为这些子词分配索引**(如 `dis`、`similar`、`ity`、`ly`)。 + +- 早期做法:使用**形态句法规则(morpho-syntactic rules)**("morpho-syntax" 类似于"构词的语法")。 +- 现在大多数使用 **byte pair encoding(BPE)**:一种聪明的统计方法,根据参考文本中的词频**自动**创建子词。 + +**总结定义**: + +> Tokenization 是一种把小的文本单元(可以是一个或几个字符,最多到词级)映射为数字(类似索引)的方式。处理文本时,输入文本(推理时称为 *prompt*)被 **tokenizer** 切分成这些 **tokens**;模型或 tokenizer 能解析的全部 token 范围称为它的 **vocabulary**。 + +#### Going further:理解 tokenization + +- ⭐ [Explanation of different tokenization methods in the 🤗 NLP Course](https://huggingface.co/learn/nlp-course/en/chapter2/4) —— 建议精读。 +- ⭐ [Conceptual guide about tokenization in the 🤗 doc](https://huggingface.co/docs/transformers/en/tokenizer_summary) —— 建议精读。 +- [Course by Jurafsky on tokenization](https://web.stanford.edu/~jurafsky/slp3/2.pdf) —— 更学术向,直接跳到 2.5 和 2.6 节(其余也有趣但太宽泛)。 + +#### Going further:Byte Pair Encoding + +- ⭐ [Explanation of BPE in the 🤗 NLP Course](https://huggingface.co/learn/nlp-course/en/chapter6/5) +- [Paper introducing BPE to NLP](https://aclanthology.org/P16-1162/) + +### 2.2 问题一:如何选择词表大小(vocabulary size) + +词表大小 = 模型需要学习的独立 token(例如子词)的数量。 + +#### 词表太大(too big)的两个问题 + +1. 可能把**很罕见的词**当作完整 token 收录(例如 `aardvark`)。如果该词在训练数据中几乎不出现,它就**难以与其他概念建立联系**,模型可能无法推断它是什么。 +2. 如果该词罕见但只出现在特定上下文,则可能被关联到**非常具体的词**:例如在论坛数据上训练时,tokenizer 把一个用户名映射成单一 token,模型就可能把这个 token 与该用户的内容关联起来。 + +#### 词表太小(too small)的两个问题 + +1. **表示能力变差**。 +2. **推理成本上升**。 + +回到 `similar` 词族的例子(原文): + +- 用类 BPE(大词表)切 `similarly` → **2 个 token**:`similar`、`ly`。 +- 用字符级切分(词表很小,只有字母表大小)切同一个词 → **9 个 token**:`s` `i` `m` `i` `l` `a` `r` `l` `y`。 + +对比结论: + +- 大词表切出的 token 各自有独立语义;小词表则**丢失了语义表示**。 +- 表示长度差异直接变成成本差异:生成同一个词需要 9 个 token 而不是 2 个,**贵了约 5 倍**! + +#### 实践建议 + +目前大多数人用**启发式**选择词表大小,它似乎与**覆盖的语言数量**和**模型规模**相关——因此使用与"规模相近的参考模型"接近的 token 数量,很可能可行。 + +#### Going further:罕见 token 效应 + +- ⭐ [SolidGoldMagikarp post on Less Wrong](https://www.lesswrong.com/posts/aPeJE8bSo6rAFoLqg/solidgoldmagikarp-plus-prompt-generation) —— 有趣读物:人们在**不访问模型内部**(例如不知道训练数据内容)的情况下识别出 OpenAI 词表中的极罕见 token。 +- [Fishing for Magikarp, paper by Cohere](https://arxiv.org/abs/2405.05417) —— 检测这些 token 的后续工作。 + +### 2.3 问题二:多语言管理(Managing several languages) + +> 建议先读完 BPE 的解释再读本节。 + +- 构建/选择 tokenizer 时,词表来自**参考文本**——通常意味着**英文、拉丁字母**的数据。 +- 如果新语言与原始语言**使用相同脚本且有共同词根**,理论上可以期待部分语义迁移到新语言。 +- 但若要 tokenizer 正确切分其他语言(尤其是**不同脚本**的语言),最好在构建 tokenizer 时**纳入这些语言的数据**。 +- 然而,这些数据通常**比例失衡**:初始语言(如英文)远多于新语言(如泰语、缅甸语)。由于 BPE 等高效方法基于**最高频的词**创建复杂词表 token: + - 大多数**长 token 是英文词**; + - 低频语言的大部分词**只能按字符级切分**。 + +**结果:多语言 tokenization 的不公平** —— 一些(较不常见的、或 *lower-resourced* 低资源)语言,生成与英文**等长含义的句子需要多出数量级(orders of magnitude)的 token**。 + +#### Going further:语言与 tokenization + +- ⭐ [A beautiful breakdown and demo by Yennie Jun on tokenization issues across languages](https://www.artfish.ai/p/all-languages-are-not-created-tokenized) —— 分析本身非常清晰,值得把玩其 [demo space](https://huggingface.co/spaces/yenniejun/tokenizers-languages)。 +- ⭐ [A demo by Aleksandar Petrov on unfairness of tokenization](https://aleksandarpetrov.github.io/tokenization-fairness/) —— 建议看 *Compare tokenization of sentences*,直观感受不同语言在推理成本上的差异。 + +### 2.4 问题三:数字怎么办?(What about numbers?) + +构建 tokenizer 时需要决定如何处理数字: + +- 只索引 `0` 到 `9`,假设其他所有数字都是数字位的组合? +- 还是把数字单独存储,直到(比如说)十亿级别? + +现状与展望: + +- 当前知名模型对此**做法各异**,但尚不清楚哪种方式更有利于**数学推理**。 +- 也许需要新的 tokenization 方法(例如 **hierarchical tokenization**,分层分词)来解决。 + +#### Going further:数字 tokenization + +- ⭐ [A nice visual demo by Yennie Jun of how tokenizers split numbers](https://www.artfish.ai/p/how-would-you-tokenize-or-break-down) —— Anthropic、Meta、OpenAI、Mistral 各模型 tokenizer 如何切分数字的可视化演示。 +- [Small history by Beren Millidge of number tokenization evolution](https://www.beren.io/2024-05-11-Integer-tokenization-is-now-much-less-insane/) —— 数字 tokenization 多年演变的小史。 + +--- + +## 三、Tokenization 如何影响评测(对评测的启示) + +把两页内容串到评测视角,可得到如下速查表(均为原文要点,非新增内容): + +| 评测相关维度 | 原文章节要点 | 对评测的含义 | +|---|---|---| +| **生成成本 / 长度** | 同样一个词,字符级切 9 个 token vs BPE 切 2 个 token,贵约 5 倍 | 同一 prompt 在不同 tokenizer 下 token 数不同 → 推理耗时与费用不同;评测大批量样本时成本差异显著 | +| **词表大小** | 太大 → 罕见 token 难以关联或过度关联;太小 → 表示能力差、成本高 | 词表选择影响模型学到的表示质量,进而影响任务表现;词表大小需与模型规模、语言数匹配 | +| **多语言不公平** | 低资源语言生成等长句子需多出数量级的 token | 跨语言评测中,不同语言的"同量内容"成本不同;评测多语言模型时需考虑 token 数差异 | +| **罕见 token** | 罕见 token(如用户名)可能被关联到特定内容 | 可能造成模型在特定输入上的"意外行为";识别与检测见 SolidGoldMagikarp / Cohere 论文 | +| **数字切分** | 数字 token 化方式尚无定论,可能影响数学推理 | 评测数学/推理基准(如 MATH 类任务)时,数字 token 化方式可能影响分数 | +| **上下文窗口** | few-shot 示例可能放不进 context window(旧模型) | 设计 few-shot 评测时需考虑模型上下文长度,示例数量受限制 | +| **log-prob 归一化** | 选项 log-prob 最后可按选项长度归一化 | 多项选择评测时,不同选项长度不同,归一化避免长选项"天然"得分更高 | + +> 一句话总结:**tokenizer 不是评测的"前处理细节",而是会实际改变评测成本、跨语言公平性和最终分数**的东西。 + +--- + +## 四、参考资料 + +### 原文(GitHub blob) + +- [contents/general-knowledge/model-inference-and-evaluation.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/general-knowledge/model-inference-and-evaluation.md) +- [contents/general-knowledge/tokenization.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/general-knowledge/tokenization.md) +- 指南仓库主页:[huggingface/evaluation-guidebook](https://github.com/huggingface/evaluation-guidebook) + +### 文中提到的外部链接 + +**评测方法 / 推理** + +- ⭐ [Blog on several ways to evaluate MMLU](https://huggingface.co/blog/open-llm-leaderboard-mmlu)(HuggingFace 团队) +- ⭐ [Mathematical formalization of inference methods(EleutherAI)](https://arxiv.org/abs/2405.14782v2) +- [Anthropic:calibration 教程](https://arxiv.org/abs/2207.05221) +- [校准的局限](https://arxiv.org/abs/2311.14648) +- [GAIA 论文](https://huggingface.co/papers/2311.12983) 及其 [leaderboard](https://huggingface.co/spaces/gaia-benchmark/leaderboard) +- [Training on the test task(few-shot 过拟合)](https://arxiv.org/abs/2407.07890) +- [结构化输出评测博客](https://huggingface.co/blog/evaluation-structured-outputs) +- [结构化生成降低推理性能的研究](https://arxiv.org/abs/2408.02442) + +**约束输出 / 结构化生成** + +- ⭐ [Outlines:FSM 工作原理](https://blog.dottxt.co/coalescence.html) +- [outlines 博客](https://blog.dottxt.co/) +- [outlines 方法论文](https://arxiv.org/abs/2307.09702) +- [Interleaved generation(guidance 库)](https://github.com/guidance-ai/guidance?tab=readme-ov-file#guidance-acceleration) + +**Tokenization** + +- ⭐ [🤗 NLP Course:tokenization 方法总览](https://huggingface.co/learn/nlp-course/en/chapter2/4) +- ⭐ [🤗 Transformers 文档:tokenizer 概念指南](https://huggingface.co/docs/transformers/en/tokenizer_summary) +- [Jurafsky:tokenization 课程(看 2.5 / 2.6 节)](https://web.stanford.edu/~jurafsky/slp3/2.pdf) +- ⭐ [🤗 NLP Course:BPE 详解](https://huggingface.co/learn/nlp-course/en/chapter6/5) +- [BPE 引入 NLP 的论文](https://aclanthology.org/P16-1162/) + +**罕见 token 与多语言** + +- ⭐ [SolidGoldMagikarp(Less Wrong)](https://www.lesswrong.com/posts/aPeJE8bSo6rAFoLqg/solidgoldmagikarp-plus-prompt-generation) +- [Fishing for Magikarp(Cohere)](https://arxiv.org/abs/2405.05417) +- ⭐ [Yennie Jun:跨语言 tokenization 分析](https://www.artfish.ai/p/all-languages-are-not-created-tokenized) + [demo](https://huggingface.co/spaces/yenniejun/tokenizers-languages) +- ⭐ [Aleksandar Petrov:tokenization 不公平性 demo](https://aleksandarpetrov.github.io/tokenization-fairness/) +- ⭐ [Yennie Jun:数字切分可视化](https://www.artfish.ai/p/how-would-you-tokenize-or-break-down) +- [Beren Millidge:数字 tokenization 小史](https://www.beren.io/2024-05-11-Integer-tokenization-is-now-much-less-insane/) + +--- + +> 关联笔记:本目录 [[00-Overview]];指南其余章节提炼笔记([[01-Automatic-Benchmarks]]、[[02-Human-Evaluation]]、[[03-LLM-as-a-Judge]]、[[04-Troubleshooting]]、[[06-Yearly-Dives]]、[[07-Resources]])。 diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/06-Yearly-Dives.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/06-Yearly-Dives.md new file mode 100644 index 0000000..115f6d0 --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/06-Yearly-Dives.md @@ -0,0 +1,542 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - yearly-dives +status: active +created: 2026-08-21 +source: https://github.com/huggingface/evaluation-guidebook +--- + +# Yearly Dives —— 年度深度文章(2023–2025) + +> 本页提炼自 HuggingFace Evaluation Guidebook 的 `yearly_dives/` 三个文件(2023 / 2024 / 2025 各一篇年度深度文章),用中文概括其核心观点、数据与讨论话题。文中保留原文的具体链接、论文、模型名、benchmark 名与关键数字,**不补充原文没有的内容**;论文编号(如 2302.04844)均为 arXiv 号,链接统一放在各条目内。回到原文请见文末「参考资料」。 + +## 2023:开源 LLM 之年(Year of open LLMs) + +> 原文:`yearly_dives/2023-year-of-open-source.md`,首发于 HuggingFace 博客 [2023-in-llms](https://huggingface.co/blog/2023-in-llms)。 + +### 写作背景与立场 + +- Hugging Face 关注开源模型,因为开源让研究可复现、让社区能参与 AI 开发、便于审查模型偏见与局限,并通过复用 checkpoint 降低领域整体碳排放([更多好处见论文 2302.04844](https://huggingface.co/papers/2302.04844))。 +- 范围说明:本文**不讨论代码模型**。 +- 文章目标:做一次开源 LLM 的年度回顾(retrospective)。 + +### 预训练大模型的"配方"(Recipe) + +先讲清楚"大模型从哪来"(熟悉可跳过): + +- **架构(architecture)**:模型的具体实现与数学形态——所有参数及其与输入交互的方式。当下大多数高性能 LLM 都是 decoder-only Transformer 的变体([原始 Transformer 论文 1706.03762](https://huggingface.co/papers/1706.03762))。 +- **训练数据集**:模型学习的全部样本与文档,决定了学到的具体模式。内容通常是自然语言(法/英/中文等)、编程语言(Python、C 等)、或任何可用文本表达的结构化数据(markdown/latex 表格、公式等)。 +- **分词器(tokenizer)**:把文本转成数字的方式,切成 token(词、子词或字符)。词表大小通常 32k–200k。数据集规模常用 token 数衡量,如今从数千亿到数万亿 token。 +- **训练超参数**:决定模型如何学习——参数该为每个新样本变多少?模型该多快更新? +- 选定后还需要:① 大量算力 ② 负责训练与监控的(善良且称职的)人。 +- 训练产物是**权重(weights)**——即人们讨论"开源预训练模型"时通常指的东西;权重用于**推理(inference)**(对新输入做预测、生成文本)。 +- 预训练后可做**微调(fine-tuning)**:在更小、更专业的数据上继续训练以适配特定应用。成本(算力/金钱/环境)远低于从零训练——这正是高质量开源预训练模型价值巨大的原因:算力有限的从业者也能自由使用和基于它构建。 + +### 2022:从"规模竞赛"到"数据竞赛" + +#### 2022 年及以前的开源模型格局 + +- 直到 2022 年初,ML 的趋势是:模型越大(参数越多)性能越好;超过特定规模阈值后能力跃升——两个概念被命名为 `emergent abilities`(涌现能力)与 `scaling laws`(缩放定律)。 +- 2022 年发布的开源预训练模型族基本遵循这一范式,具体如下表: + +| 模型族 | 发布方 | 最大规模 | 训练数据 | 要点 | +|---|---|---|---|---| +| BLOOM | BigScience(HF 协调) | 176B 参数 | 350B token,46 种人类语言 + 13 种编程语言 | 当时最大开源多语言模型 | +| OPT | Meta | 175B 参数 | 180B token,多数公开来源 | 性能与 GPT-3 相当,算力更省 | +| GLM-130B | 清华 + 智谱 AI | 130B 参数 | 400B token(The Pile、Wudao 等中英数据) | 性能与 GPT-3 相当 | +| Galactica | Meta | 最高 120B | 106B token 科学文献 | 面向科学的专业模型 | +| GPT-NeoX-20B | EleutherAI | 20B | 500B token | 架构/权重/数据全开源 | + +- **BLOOM**([论文 2211.05100](https://huggingface.co/papers/2211.05100)):BigScience 是约 1000 名研究者、60 国、250 机构参与的合作项目,与法国 GENCI/IDRIS 合作。decoder-only + 微小改动(post embedding normalization、ALiBi 位置编码)。大部分训练数据连同来源、策展、处理细节一起公开。 +- **OPT**([论文 2205.01068](https://huggingface.co/papers/2205.01068)):decoder-only,沿用 GPT-3 论文技巧(特定权重初始化、pre-normalization),注意力改为 dense 与 locally banded attention 交替;数据来自图书、Reddit、新闻、Wikipedia 等。 +- **GLM-130B**([论文 2210.02414](https://huggingface.co/papers/2210.02414)):full transformer + DeepNorm post-layer-normalization + rotary embeddings;数据含 The Pile、Wudao Corpora 及其他中文语料。 +- **Galactica** 与 **GPT-NeoX-20B**:多为研究目的发布(GPT-NeoX 提供完整科研产物,RoPE + 注意力/初始化改动)。 +- **昂贵的大模型**:100B 参数模型加载通常需约 **220GB 内存**,绝大多数组织与从业者无法企及。 + +#### Chinchilla 范式转变 + +- 2022 年 3 月 DeepMind 论文([2203.15556](https://huggingface.co/papers/2203.15556))研究:给定算力预算,token 数与参数数的最优比例是多少? +- 结论:对平均算力预算,模型应**更小但训练数据更多**。 +- 其模型 Chinchilla(不开源):70B 参数(约为上述模型的 1/3),却训练在 1.4T token(3–4 倍数据),性能持平或更好。 +- 这一转变"席卷"了开源科学社区(闭源实验室或许早已知道)。 + +### 2023:开源发布之年 + +#### 小型 LLM 的崛起 + +- 2023 年出现一波 decoder transformer 浪潮,新预训练模型从每月、到每周甚至每天发布: + +| 月份 | 模型 / 发布方 | +|---|---| +| 2 月 | LLaMA(Meta) | +| 4 月 | StableLM(StabilityAI)、Pythia(EleutherAI) | +| 5 月 | MPT(MosaicML) | +| 6 月 | X-GEN(Salesforce)、Falcon(TIIUAE) | +| 7 月 | Llama 2(Meta) | +| 8 月 | StableLM v2(StabilityAI) | +| 9 月 | Qwen(阿里)、Mistral(Mistral.AI) | +| 11 月 | Yi(01-ai) | +| 12 月 | DeciLM(Deci)、Phi-2、SOLAR(Upstage) | + +- 共同点:a) 发布权重(许可证开放程度不一)b) 小尺寸(3B–70B)性能良好,被社区迅速采用。 +- 架构共性:几乎都是 decoder transformer 变体(ALiBi/RoPE、RMS pre-normalization、SwiGLU),注意力有 Flash-Attention、GQA、sliding windows 等改动,代码库实现各异(优化训练或推理速度)。 +- 既然架构与权重都公开,核心差异只剩**训练数据与许可证**。 + +#### 主要模型逐个看 + +- **LLaMA**(Meta AI,[论文 2302.13971](https://huggingface.co/papers/2302.13971)):在给定算力预算下追求最佳性能;首次显式同时考虑训练预算与**推理成本**——用更小模型 + 更多数据 + 更多训练步数换更高性能(牺牲训练算力效率)。最大 65B / 1.4T token,6B 与 13B / 1T token。13B 在多数 benchmark 上超过 GPT-3,最大版本发布时 SOTA。但权重为**非商用许可证**,限制了社区采用。 +- **Pythia**(EleutherAI,[论文 2304.01373](https://huggingface.co/papers/2304.01373)):不同尺寸的[模型套件](https://huggingface.co/collections/EleutherAI/pythia-scaling-suite-64fb5dfa8c21ebb3db7ad2e1),完全公开数据训练,用于研究 LLM 训练各阶段。 +- **MPT**(MosaicML,[博客](https://www.mosaicml.com/blog/mpt-7b)):性能接近但**许可证允许商用**,且公开训练数据构成。首个 [7B](https://huggingface.co/mosaicml/mpt-7b),6 月跟进 30B,均 1T token(C4、CommonCrawl、The Stack、S2ORC)。 +- **Falcon**(TIIUAE):[7B/30B](https://huggingface.co/tiiuae/falcon-7b),1–1.5T token 英语与代码(RefinedWeb、Project Gutenberg、Reddit、StackOverflow、GitHub、arXiv、Wikipedia 等),年底发布 180B。数据与训练流程有技术报告及[后续论文 2311.16867](https://huggingface.co/papers/2311.16867)。 +- **StableLM**(StabilityAI):继承 GPT-NeoX,3B/7B,1.5T token(ThePile 实验数据集);v2 系列混入 RefinedWeb、RedPajama、ThePile 及未公开数据;另有 3B 的 [StableLM-3B-4e1T](https://huggingface.co/stabilityai/stablelm-3b-4e1t) + [详细技术报告](https://stability.wandb.io/stability-llm/stable-lm/reports/StableLM-3B-4E1T--VmlldzoyMjU4?accessToken=u3zujipenkx5g7rtcj9qojjgxpconyjktjkli2po09nffrffdhhchq045vp0wyfo)。 +- **转折点**:早期发布公开数据;此后发布几乎**不提供训练数据信息、不可复现**,但通过权重为社区提供起点。 +- **X-Gen**(Salesforce,[论文 2309.03450](https://huggingface.co/papers/2309.03450)):7B,1.5T token "natural language and code",分步训练 + 数据调度(不是所有数据同时进入)。 +- **LLaMA-2**(Meta,[论文 2307.09288](https://huggingface.co/papers/2307.09288)):7–70B,2T token "公开来源",permissive 社区许可证 + 大规模 RLHF 人类偏好微调(alignment)。安全是突出卖点。 +- **Mistral-7B**(新创公司 Mistral,[论文 2310.06825](https://huggingface.co/papers/2310.06825)):训练 token 数与来源未公开("extracted from the open Web")。年底另有更大尺寸的 **Mixtral 8x7B**。 +- **DeciLM**(Deci.AI)与 **SOLAR 10.7B**(Upstage):同样未公开数据来源与数量;这些模型在排行榜与开源 benchmark 上稳步提升。 +- **中国模型的崛起**:年底一批双语(中英)开源模型性能领先——**Qwen**(阿里,[论文 2309.16609](https://huggingface.co/papers/2309.16609),7–70B,2.4T token)、**Yi**(01-AI,6–34B,3T token),在 [Open LLM Leaderboard](https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard) 与最难的 benchmark(如 [Skill-Mix 2310.17567](https://huggingface.co/papers/2310.17567))上都更进一步;**DeepSeek** 编码模型从零训练,2T token,87% 代码 + 13% 中英自然语言(基本是代码模型)。 + +#### 对话模型遍地开花 + +- 相比 2022,2023 年几乎所有预训练模型都同时发布对话微调版本,凸显大众对 chat 模型的使用增长,以及"聊天式手工评测(vibe-check)"的流行。 +- 主要适配方法(变体很多): + +| 方法 | 原理 | 特点/成本 | +|---|---|---| +| Chat-based fine-tuning | 在对话数据(多轮、社交网络风格)上监督微调,decoder 逐 token 自回归 | 实现简单,需对话数据集 | +| Instruction fine-tuning(IFT) | 用指令数据集(query + 答案)教模型遵循指令 | 数据可人工或 LLM 生成 | +| 蒸馏(distillation) | 用高性能模型(如 GPT-4)的输出做合成数据集再微调 | 大规模合成数据的常用方式 | +| RLHF | 生成多答案 → 人类排序 → 训练偏好模型 → 强化学习微调 | 成本高,多用于安全对齐 | +| RLAIF | 用高质量 LLM 而非人类排序 | RLHF 的廉价变体 | +| DPO | 直接优化:对齐模型同时就是偏好模型,用偏好数据更新 | 无单独偏好模型,性能相当 | + +- 参考资料:对话/指令微调入门见 [dialog-agents 博客](https://huggingface.co/blog/dialog-agents);RLHF 见 [RLHF 博客](https://huggingface.co/blog/rlhf)、[原始 RLHF 论文 1909.08593](https://huggingface.co/papers/1909.08593)、[Anthropic RLHF 论文 2204.05862](https://huggingface.co/papers/2204.05862)。 +- 落地情况:MPT-7B 有 instruct 与 chat 版,Falcon、XGen 年末出 instruct 版,Llama-2、Qwen、Yi 有 chat 版,DeciLM 有 instruct 版。 + +#### 社区做了什么 + +围绕基础模型,微调社区在 Reddit、Discord、HF Hub、Twitter 上自发繁荣;社区模型发布频繁,同时催生大量新数据集。 + +**早期(2023 年初前)的数据集** + +- 人类偏好类:WebGPT(OpenAI)、HH-RLHF(Anthropic)、Summarize(OpenAI)。 +- 指令类:P3(BigScience,Public Pool of Prompts)、FLAN 1/2(Google)、Natural Instructions(AllenAI)、Self Instruct(自动生成指令框架)、SuperNatural instructions(专家构建,常作微调数据)、Unnatural instructions(特拉维夫大学 + Meta 自动生成)。 + +**2023 全年社区事件时间线** + +| 季节 | 事件 / 数据集 / 模型 | +|---|---| +| ❄️ 冬(2022/23) | 1 月 HC3(人类 vs 模型回答);3 月 Alpaca(Stanford,52K 指令)、OIG(LAION,43M 指令)、Vicuna(LMSYS,ShareGPT 对话)、Guanaco(+500K 多语言条目) | +| 🌱 春 | 4 月 Koala(BAIR)、Dolly(DataBricks,15K 人工指令);5 月 UltraChat(1.5M 对话)与 UltraLLaMA、GPT4-LLM;6 月 Orca(推理轨迹构造指令)、Open Orca、Camel-AI 多主题数据集、Airoboros 框架 | +| 🌻 夏 | 8 月 UltraLM(OpenBMB);9 月 UltraFeedback(GPT-4 标注偏好)、OpenChat(清华,新 RL 策略)、Intel orca_dpo_pairs;夏天 NousResearch 多个微调(Hermes、Capybara) | +| 🍂 秋 | 10 月 Zephyr(HF,DPO + AIF)、OpenHermes 2(900K 条目)、LMSYS-Chat-1M(25 个 LLM 真实对话);11 月 OpenBuddy-Zephyr、Notus(Argilla)、HelpSteer(NVIDIA)、Orca-2(Microsoft)、Neural Chat(Intel);12 月 Starling(Berkeley,RLAIF)+ Nectar(200K 对比) | + +- 细节补充(冬季):Alpaca 是第一个指令跟随 LLaMA(7B),52K 条 LLM 生成指令;Vicuna(13B)用 ShareGPT 上用户分享的 ChatGPT 对话微调。 +- 细节补充(春季):Koala 用 Alpaca/HH-RLHF/WebGPT/ShareGPT 微调;Orca 方法很快被社区复现为 Open Orca(数百万条,用于微调 Llama、Mistral 等)。 +- 细节补充(夏季):UltraFeedback 是 GPT-4 标注的偏好数据集;Intel 发布 Orca 风格 DPO 数据集。 +- 细节补充(秋季):Zephyr 是 Mistral 在 UltraChat/UltraFeedback 上用 DPO + AIF 微调;Notus 是 Zephyr 的 DPO 微调;HelpSteer 提供 prompt + 回答 + 多标准打分;Orca-2 是 Llama 2 + 新合成推理数据集。 +- 专项数据集(不展开):MetaMath、MathInstruct、Evol-Instruct、CodeAlpaca、CodeCapybara 等;汇总见 [awesome instruction datasets](https://github.com/jianzhnie/awesome-instruction-datasets)。 + +### 民主化访问(Democratizing access) + +- 注:llama.cpp、ollama、text-generation-inference、vllm 等推理/部署工具不在本文范围。 + +#### 模型合并(Model merging):极致定制 + +- 定义:把多个模型权重融合成一个,理想情况结合各自优势。 +- 方法:简单平均共同架构模型的参数([例 1 2204.03044](https://huggingface.co/papers/2204.03044)、[例 2 2109.01903](https://huggingface.co/papers/2109.01903));更复杂的有按任务加权平均([2111.09832](https://huggingface.co/papers/2111.09832))、考虑参数间干扰再选择的 ties merging([2306.01708](https://huggingface.co/papers/2306.01708))。 +- 综述见 [model merging 论文集合](https://huggingface.co/collections/osanseviero/model-merging-65097893623330a3a51ead66)。 +- 后果:Open LLM Leaderboard 上出现 `llama2-zephyr-orca-ultra` 这类名字;数据与模型历史难追踪(参见 Mistral 的 [child models tree](https://huggingface.co/spaces/davanstrien/mistral-graph))。 +- 这是"完全去中心化研究"的典型:方法多发表在社区论坛,由全球实践者/研究者/爱好者共同推进。 + +#### PEFT:指尖上的个性化 + +- 定义:冻结预训练模型参数,在其上加少量新参数(adapters),只训练轻量 adapter。 +- 好处:内存不够加载整个模型微调时也能个性化;共享时只需共享 adapter + 基础模型。 +- 方法列表见 [huggingface/peft](https://github.com/huggingface/peft)。 + +#### 量化(Quantization):模型随处可跑 + +- 背景:30B 模型仅加载就需 66G+ RAM,不是人人都有这样的硬件。 +- 原理:降低参数精度(float32/float16/int8 等)减小体积与内存;精度越低内存越小,但计算精度降低可能损伤性能——大模型上性能损失通常很[有限](https://huggingface.co/blog/overview-quantization-transformers)。 +- 数字示例(30B 模型):float16 略小于 66G RAM,8bit 约 33G,4bit 约 16G。 +- 常用方法:bitsandbytes([2208.07339](https://huggingface.co/papers/2208.07339))、GPTQ([2210.17323](https://huggingface.co/papers/2210.17323))、AWQ([2306.00978](https://huggingface.co/papers/2306.00978))。 +- 社区角色:如 [TheBloke](https://huggingface.co/TheBloke) 专门把流行模型转成低精度版本供社区使用。 +- 原文评价:这些方法都很新、仍在发展,期待更多进展。 + +### 接下来是什么?(2023 年底) + +- **MoE(混合专家)**:**Mixtral** 由 8 个子模型(transformer decoder)组成,router 为每个输入挑选 2 个最优子模型并求和输出。 +- **状态空间模型**(通过潜在空间做输入输出映射,可表达为 RNN 或 CNN;入门见 [Annotated S4](https://srush.github.io/annotated-s4/)): + - **Mamba**([2312.00752](https://huggingface.co/papers/2312.00752)):状态空间模型 + 选择机制。 + - **Striped Hyena**([HF 模型页](https://huggingface.co/togethercomputer/StripedHyena-Nous-7B)):状态空间模型 + 快速卷积核。 +- 是否取代 Transformer 还太早下结论,但状态空间模型很有前景。 + +### Takeaways(要点) + +1. 各类参与者(大公司、初创、研究实验室)的开源发布大幅增长,社区以前所未有的速度实验与探索。 +2. 开放性有起有伏:年初发布很开放(数据构成、权重、架构),年末发布对训练数据讳莫如深、不可复现。 +3. 开源模型从许多新地方涌现,包括中国,多个新参与者成为强竞争者。 +4. 个性化手段达到新高:RLHF、adapters、模型合并——都还只是开始。 +5. 更小模型 + 量化进步让 LLM 真正走近更多人。 +6. 新架构出现——它们会最终取代 Transformer 吗? + +--- + +## 2024:聊聊 LLM 评测(ICLR 2024 上的讨论与反思) + +> 原文:`yearly_dives/2024-evals-thoughts-from-iclr.md`,首发于 [HuggingFace 博客](https://huggingface.co/blog/clefourrier/llm-evaluation)。 + +### 背景 + +- 作者(Hugging Face 评测与排行榜团队成员)在 ICLR 2024 与大量与会者交流后,意识到很多自己"习以为常"的评测观念并不普及且引人兴趣,于是把讨论整理成文。 +- 文章的自我定位:把这些对话"更广泛地分享"出来。 + +### 评测的三种方式 + +当前主要有三种评测方式:**自动化基准(automated benchmarking)**、**人类作评委(humans as judges)**、**模型作评委(models as judges)**。 + +| 方式 | 代表做法 | 主要优点 | 主要问题 | +|---|---|---|---| +| 自动化基准 | 任务/能力 + 样本 + 指标 | 便宜、可复现、任务层面有信号 | 污染、能力难定义、评分受 prompt 等细节影响 | +| 人类作评委 | vibe-checks、arena、系统化标注 | 灵活、规避污染、贴近人类偏好 | 贵、小规模不可复现、心理偏差 | +| 模型作评委 | 通用强模型或专用判别模型 | 便宜、可扩展 | 微妙且不可解释的偏差、自偏爱 | + +各有其存在理由、用途与局限,下面分述。 + +### 自动化基准(Benchmarks) + +#### 基本构成 + +- 先定义评测对象:具体**任务**(如"垃圾邮件分类")或抽象**能力**(如"数学好不好")。 +- 评测由两部分组成:**样本集** + **指标(metric)**。 + - 样本集:输入给模型看输出,必要时带参考(gold)对比;样本通常尽量模拟目标场景(含困难边界用例)。 + - 对 LLM 主要是两种:**生成式评测**(归一化后与参考文本比较)与**多选式评测**(比较 prompt 后各候选续写的相对 log-probability)。 + - 指标:为模型算分的方式(如分类正确率,答对=1、答错=0)。 + +#### 泛化与过拟合 + +- 应优先在**未进入训练集**的数据上评测——测试**泛化**能力。 +- 只能预测训练数据称 **overfitting(过拟合)**;次极端情况也要测对分布外模式的泛化(如只见过"假银行"垃圾邮件,要能泛化到"保健品"垃圾邮件)。 + +#### 已知问题 + +- 对定义明确的任务很有效;LLM 场景的问题: + - 多选评测中模型会[按选项呈现顺序偏好特定选项](https://arxiv.org/abs/2309.03882)。 + - 生成式评测的归一化[设计不好就不公平](https://huggingface.co/blog/open-llm-leaderboard-drop)。 + - 但任务层面仍有信号。 +- 能力很难分解成精确定义的任务("数学好"指算术、逻辑还是概念推理?),于是做**整体式(holistic)评测**:假定通用样本上的表现是目标能力的**好代理**。 + - 例:GSM8K 是真实高中题,解题需要整套能力,失败与成功都难解释。 + - 更抽象的能力(写诗、答案有用性)更难自动评测;而模型越来越**通才化**,需要更广的评测。 + - 例:学界争论 LLM 到底[会不会画独角兽](https://arxiv.org/abs/2303.12712)——多数情况不会,但值得研究。 + +#### 污染(contamination) + +- 定义:评测数据集进入训练集;被污染的模型 benchmark 分高但泛化差(详述见 [2023.findings-emnlp.722](https://aclanthology.org/2023.findings-emnlp.722/),趣味检测方法见 [2311.06233](https://arxiv.org/abs/2311.06233))。 +- 缓解手段: + - BigBench 的 **canary string**(特定字符组合供人识别并剔除),但并非所有人都知道或照做。 + - [加密形式提供](https://arxiv.org/pdf/2309.16575)、[门控访问](https://huggingface.co/datasets/Idavidrein/gpqa)。 + - 但黑盒 API 评测无法保证数据不被内部用于训练/微调。 +- 应对:**动态基准**([2104.14337](https://arxiv.org/abs/2104.14337),定期刷新数据,在系统性未见的新数据上打分),但长期成本高。 + +### 人类作评委(Human as a judge) + +- 做法:让人类先 prompt 模型,再按指南给模型答案打分或对多个输出排序。 +- 优点:可评测更复杂开放的任务、比自动指标灵活;prompt 是新写的,基本规避污染;与人类偏好天然相关(评的正是这个)。 + +#### 三种人类评测路径 + +- **Vibe-checks**:社区成员用未公开 prompt 手工感受模型质量(范围从编码到"烂文质量",也有人称 canary-testing,取自矿井金丝雀)。 + - 常在 Twitter/Reddit 分享,属轶事证据、易受确认偏差影响(人们往往找到自己想找的)。 + - 但也有系统性做法,如用户 Wolfram Ravenwolf 的[模型对比博客](https://huggingface.co/blog/wolfram/llm-comparison-test-llama-3)。 +- **Arena(竞技场)**:用社区反馈做大规模模型排名,如 [LMSYS Chatbot Arena](https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard)——用户盲聊,发现更好的就投票,投票聚合成 **Elo 排名**。 + - 问题:主观性强,宽泛指南难以让众多社区成员稳定打分。 + - 标注者偏好有[文化差异](https://arxiv.org/abs/2404.16019v1)(不同人偏好不同话题)。 + - 寄望"群众智慧"(Galton 的"猜猪重"统计故事:个体估计围绕真实值呈概率分布)在大规模投票下平滑掉偏差。 +- **系统化标注**:给付费精选标注者极具体指南,尽量去除主观偏差(ScaleAI 等标注公司的做法,见 [Scale 指南](https://scale.com/guides/data-labeling-annotation-guide#hight-quality-data-annotations))。 + - 问题:持续、非自动化地评测会很快变得极贵。 + - 仍可能有人类偏差:[2205.00501](https://arxiv.org/abs/2205.00501) 显示不同身份者对模型答案毒性打分差异很大。 + +#### 人类评委的已知偏差 + +- 评测者倾向按**第一印象**而非实际事实性/忠实性估质量([2309.16349](https://arxiv.org/pdf/2309.16349)): + - 众包标注者对语气敏感、会低估自信语气答案中的事实/逻辑错误。 + - 模型用自信语气说错话,人类更不容易察觉,评分会偏向更"自信"的模型。 + - 专家标注者更不易受影响。 +- 人类更偏好**迎合自己观点或与自己的错误一致**的答案,而非事实正确的答案([2310.13548](https://arxiv.org/pdf/2310.13548))。 +- 启示:需要事实性的任务(写代码、模型知识评测等)不应只依赖众包非专家人工标注,应叠加更稳健的评测方式。 + +### 模型作评委(Model as a judge) + +- 动机:降低人工标注成本。2019 年已有用[模型嵌入测摘要质量](https://arxiv.org/abs/1904.09675)的技术,此思路并不新。 +- 两种打分方式: + - 用**通用高能力模型**([2306.05685](https://arxiv.org/abs/2306.05685v4)):与人类偏好相关性好,但够强的模型多为闭源,API 背后会变、不可解释。 + - 用**专门从偏好数据训练的小型判别模型**([2405.01535](https://arxiv.org/pdf/2405.01535))。 +- 已知局限: + - 评分时[偏爱自己的输出](https://arxiv.org/abs/2404.13076)。 + - 分数范围不一致(可让模型[先解释推理再打分](https://twitter.com/seungonekim/status/1749289437165769177)改善)。 + - 与人类排名[并不一致](https://arxiv.org/pdf/2308.15812)。 +- 作者的个人担忧:模型作评委会在答案选择中引入**微妙且不可解释的偏差**——类比遗传学中过度杂交产生缺陷后代,用 LLM 选择和训练 LLM,很可能在若干代后放大微小变化;小型专用模型(如毒性分类器)风险较低,但尚待严格验证。 + +### 为什么要做评测?——三个被混淆的目的 + +作者认为评测有三个**截然不同**的目的,常被混为一谈,各自回答不同问题: + +| 目的 | 回答的问题 | 关键做法 | 作者的观点 | +|---|---|---|---| +| 非回归测试 | 我的训练对吗? | 看分数轨迹与区间 | 不关心精确分数,只要"没坏" | +| 排行榜与排名 | 哪个模型最好? | 找稳定一致的排名 | 分数不可靠,排名更稳 | +| 领域能力水平 | 我的模型能做 X 吗? | 定义能力 + 找代理任务 | 目前无法真正评测"通用能力" | + +#### 1) 非回归测试(non-regression testing) + +- 概念源自软件工程:加新功能或修 bug 后,确认没破坏整体行为。 +- 对训练:确认训练设置变更(数据、架构、参数等)没有"破坏"同属性模型的预期性能。 +- 看两点:① 分数**轨迹**(是否比开始时好)② 分数**区间**(是否在预期范围)。 + - 例:7B 基础模型 MMLU 预期 50–65;20–30 说明没学到东西。 +- 你其实……不关心精确分数。 + - 甚至只看文本 perplexity 变化都可能够。 + - 但通常要"信噪比"高的 benchmark(大分数变化反映大模型变化)。 + +#### 2) 排行榜与排名(Leaderboards and rankings) + +- 作用:排序选型——排行榜第一的不适合你的用例,第二名多半也不行。 +- ImageNet 时代的经验论文([2404.02112](https://arxiv.org/pdf/2404.02112))主张:分数易不稳定,唯一稳健方式是**排名**,且要找能给出稳定一致排名的**大类评测组**。 +- 作者团队也发现:LLM 分数对 prompt 细节[极其敏感](https://huggingface.co/blog/evaluation-structured-outputs),人类评测也不更一致——而**排名**在稳健评测方法下更稳定。 +- ICLR 2024 评测 plenary 上 Moritz Hardt 的扰动实验: + - 给 Open LLM Leaderboard 做微小分数扰动(在分数区间内)。 + - 给 Chatbot Arena 加一个差选手看 Elo 排名变化。 + - 结论:**两者当前都无法提供稳定一致的排名**(未来版本的 Open LLM Leaderboard 会探索这一点)。 + +#### 3) 领域整体能力水平?(Can my model do X?) + +- "你怎么知道模型能做 X?"是个常见且合理的问题。 +- 但对任何复杂能力,目前只能说:"该模型在这个任务上最好,而这个任务我们希望是能力的代理,**但没有保证**。" +- ML 领域严重缺乏"能力"的定义与框架(推理、心智理论尤甚);但这并非 ML 独有——人类/动物研究里定义能力也很难(IQ、EQ 争议不断)。 +- 或许该借鉴社会科学(那里习惯严肃对待数据收集与分析中的混淆变量)。 +- 但作者也认为:1) 这些宽泛能力可能根本无法定义(人类与动物目前也没定义出来)2) 面向人的框架未必能迁移到模型(底层行为与假设不同)。 + +### 结论 + +- 现状归纳: + - 自动基准:受污染与"不通用"影响(后者未必是坏事,专项评测也有价值)。 + - 人工评测:小规模下可复现性差、总体有心理偏差(如偏好谄媚答案),大样本下或许部分平滑。 + - 模型作评委:偏差微妙,可能悄悄扰动下游。 +- 仍有信号:非回归测试(分数落在预期区间)与足够稳定的排名能告诉我们新训练方法/数据集是否有前途;跨主题与任务攒够数据点也能对整体性能有大致把握——但**不能**据此假设任何"通用能力"。 +- 与炒作相反,目前**无法**真正评测"通用模型能力",首先因为还没定义它是什么。 +- LLM 评测作为研究领域还处在婴儿期,可从机器学习可解释性(如 [transformer-circuits 的 scaling monosemanticity](https://transformer-circuits.pub/2024/scaling-monosemanticity/index.html))到社会学跨界汲取灵感,跨学科工作很可能开辟新方向。 + +### 致谢(提及的交流者) + +- Summer Yue(Scale AI)、Moritz Hardt(马普所)、Luca Soldaini 与 Ian Magnusson(Allen AI)、Ludwig Schmidt(Anthropic)、Max Bartolo(Cohere)、Maxime Labonne(Liquid AI)、François Charton(Meta)、Alan Cooney(UK AI Safety Institute)、Max Ryabinin(Together AI)。 +- Hugging Face 的 Yacine Jernite、Irene Solaiman 与评测/排行榜团队(尤其 Nathan Habib)。 + +--- + +## 2025:评测要超越简单基准,构建真正可用的模型 + +> 原文:`yearly_dives/2025-evaluations-for-useful-models.md`(原文标题:Evals in 2025: going beyond simple benchmarks to build models people can actually use)。 + +### 核心论点 + +- 目标应是构建"**工作得好(work well)**"的模型而非"智能"的模型——对人们有用且高效的工具体现为更好的成功度量,而非追求"通用智能"替人解决问题(顺带制造一串新问题)。 +- 现实依据:Anthropic [经济指数报告](https://www.anthropic.com/research/anthropic-economic-index-september-2025-report)与 OpenAI [ChatGPT 使用研究](https://cdn.openai.com/pdf/a253471f-8260-40c6-a2cc-aa93fe9f142e/economic-research-chatgpt-usage-paper.pdf)显示 LLM 当前最常见的用途是**助手**:写代码、行政支持等;模型今年在通用 agent 用例上取得进展。 +- 好助手应做到:面对 query 处理指令**歧义**、构建**逐步计划**、正确识别所需**资源**、不跑偏地执行计划、按需**调用工具**、执行中适应**意外事件**与新信息、且全程**不胡编(without bullshitting)**。 +- 所需能力组合:逐步"推理"、长上下文记忆管理、适应性、低幻觉率,外加数学/代码/工具调用能力。 +- 规模观察:**7B 的模型就能当好 agent 助手**(但再小到 3B 以下会碰到能力壁垒)。 +- 评测方法需**分层**:开发期测**单一能力**、在现实任务上测**集成表现**、在动态环境中探**适应性**。 + +### 单一能力评测(Testing specific capabilities) + +> 注意:若用下列评测来挑选/验证训练方法,最终报告这些指标会略有偏置(训练方法已被导向这些结果)。适合训练中取信号与对比 base/预训练模型。 + +#### 推理与常识(Reasoning and commonsense) + +- 背景:这类数据集多为 BERT/嵌入模型时代建的"历史"数据集——当年有挑战性(常针对当时模型对抗式构造),现在 1) 太简单 2) 污染/饱和。 +- 定位:只适合**消融或预训练评测**。 +- 质量问题:大型数据集常经 MTurk 快速低成本构建,含错误或低质量问题(现在改用 LLM 生成评测题)。 + +| 数据集 | 年份 | 说明(链接) | +|---|---|---| +| ARC | 2018 | 小学科学 MCQA,选择对当时的词共现系统对抗式构造;高质量的 `challenge` 子集今天仍用于预训练([1803.05457](https://arxiv.org/abs/1803.05457);勿与 ARC-AGI 混淆) | +| WinoGrande | 2019 | 众包(MTurk + 校验)代词消解/填空,对抗式配对;2022–2023 前对模型一直很难([1907.10641](https://arxiv.org/pdf/1907.10641)) | +| HellaSwag | 2019 | 从对抗候选中选正确下一句;文本来自 ActivityNet 字幕与 Wikihow 教程,常需物理常识 grounding;Swag 的后继([1905.07830](https://arxiv.org/abs/1905.07830)) | +| CommonsenseQA | 2018 | 基于 ConceptNet 的常识 MCQA,干扰项用概念相近选项([1811.00937](https://arxiv.org/abs/1811.00937)) | +| PIQA | 2019 | 物理常识题,源自 Instructables.com,对抗选项来自语义扰动/改写([1911.11641](https://arxiv.org/abs/1911.11641)) | +| OpenBookQA | 2018 | 提供 open book 事实辅助答题,但题目仍需潜在常识知识([1809.02789](https://arxiv.org/abs/1809.02789)) | + +#### 知识(Knowledge) + +- **MMLU**(2020,[2009.03300](https://arxiv.org/abs/2009.03300)):主要知识评测集,已饱和/污染;深入检查发现多种问题——残缺问题(引用不存在的文档)、错误 ground truth、歧义问题、明显的美国中心主义选题。 + +| 数据集 | 年份 | 说明(链接) | +|---|---|---| +| MMLU-Redux | 2024 | MMLU 的清洗版([2406.04127](https://arxiv.org/abs/2406.04127)) | +| MMLU-Pro | 2024 | 更多复杂题与答案,社区当前主要替代品([2406.01574](https://arxiv.org/abs/2406.01574)) | +| Global-MMLU | 2024 | MMLU 翻译 + 文化偏差标注([2412.03304](https://arxiv.org/abs/2412.03304)) | +| GPQA | 2023 | 生物/化学/物理博士级定制题,只有对应领域博士生能答;最常用 `diamond` 子集,2023 发布以来也开始污染([2311.12022](https://arxiv.org/abs/2311.12022)) | +| Humanity's Last Exam(HLE) | 2024 | 2.5K 专家众包跨领域题,需复杂知识与推理;基本私密、尚未被"打穿"([agi.safe.ai](https://agi.safe.ai/)) | + +- HLE 的问题:无法快速按 ground truth 打分,大家改用 **LLM judge** 评估答案 → 野外结果不可比。 +- 用途:MMLU 系列多用于**预训练评测与消融**;后训练用更硬的 GPQA/HLE。 +- 作者预测"潜在知识"评测将逐步淡出(训练期仍可用 MMLU-Pro、后训练用 GPQA/HLE),两个原因: + 1. 对人类越来越**不可读**:题太难,非专家无法理解每题的意义(也无法核查数据集本身有没有错)。 + 2. 模型连上工具(如联网)后,潜在知识评测逐渐变成**搜索与检索评测**——从闭卷考试走向开卷考试(类比法国教育:高中闭卷,大学假设可查数据库/网络,评分更多看"给自由信息后的推理")。 + +#### 数学(Math) + +- 数学评测长期被当作推理与逻辑的代理。 +- 参考集:**GSM8K**(2021,[2110.14168](https://arxiv.org/abs/2110.14168),小学应用题)与 **MATH**(2021,[2103.03874](https://arxiv.org/abs/2103.03874),网上奥林匹克题聚合),近年已饱和/污染。 + +| 数据集 | 年份 | 说明(链接) | +|---|---|---| +| GSM1K | 2024 | GSM8K 重做 1K 新题,测哪些模型在 GSM8K 上污染([2405.00332](https://arxiv.org/abs/2405.00332)) | +| GSM-Plus | — | GSM8K 对抗式改写:干扰项、数值变化等([2402.19255](https://arxiv.org/pdf/2402.19255)) | +| GSM-Symbolic | 2024 | 把 GSM8K 改写成问题模板、可无限再生成防污染;用得少但很有意思([2410.05229](https://arxiv.org/abs/2410.05229)) | +| MATH-500 | — | 500 题代表性子集,避免过拟合([HF 数据集](https://huggingface.co/datasets/HuggingFaceH4/MATH-500));另有 MATH-Hard(最难的 500 题) | +| AIME 24/25 | 2024/2025 | 美国高中生奥赛,按发布年原样使用;每年题目难度相当,可用"发布年成绩 vs 上一年度题成绩"测污染([24](https://huggingface.co/datasets/HuggingFaceH4/aime_2024)、[25](https://huggingface.co/datasets/math-ai/aime25)) | +| Math-Arena | — | 持续更新的竞赛/奥赛汇总,含 AIME25 及大量其他竞赛([matharena.ai](https://matharena.ai/)) | +| FrontierMath | 2024 | 数学家为评测专门撰写的显著更难的题,理论私密(但 OpenAI 疑似接触过部分数据)([2411.04872](https://arxiv.org/abs/2411.04872)) | + +- 观察:大多数上述数据集已"没那么难"(止步小学水平,GSM-Symbolic 可生成更多递归层级的题使其合成地变难);HLE 里也有需复杂推理(含定理证明)的数学题。 +- 作者建议:预训练评测用 **AIME25 与 MATH-500**,后训练用 **Math-Arena**。 + +#### 代码(Code) + +- 理由:agent 要与工具交互就需要编码能力(代码 agent 直接调工具;code/json agent 都要能调试工具输出,区别见 [agents course](https://huggingface.co/learn/agents-course/en/unit2/smolagents/tool_calling_agents));代码评测也是推理的好代理。 + +| 数据集 | 年份 | 说明(链接) | +|---|---|---| +| MBPP | 2021 | 1K 众包 Python 入门题([2108.07732](https://arxiv.org/abs/2108.07732)) | +| APPS | 2021 | 10K 来自面试与分享网站的代码生成题([2105.09938](https://arxiv.org/abs/2105.09938)) | +| HumanEval | 2021 | 随 Codex 发布、专为发布构造的题 + 防危险代码执行的沙箱 + `pass@k` 估计器([2107.03374](https://arxiv.org/abs/2107.03374)) | +| EvalPlus(HumanEval+/MBPP+) | 2023 | 补测试用例、修 bug、加输入([OpenReview](https://openreview.net/pdf?id=1qvx610Cu7)) | +| EvoEval | 2024 | HumanEval 语义改写 + 难度标注([2403.19114](https://arxiv.org/abs/2403.19114)) | +| LiveCodeBench | 2024 | 记录题目日期,比较训练前后题目的表现——优秀的防污染基准([2403.07974](https://arxiv.org/abs/2403.07974)) | +| AiderBench | 2024 底上线 | 用 Exercism 数据,专门测**代码编辑与重构**([leaderboard](https://aider.chat/docs/leaderboards/)) | +| RepoBench | 2023 | 仓库级自动补全(Python/Java),跨文件/文件内函数,retrieval/completion/组合多层测试([2306.03091](https://arxiv.org/abs/2306.03091)) | +| SWE-Bench | 2024 | GitHub 真实 issue 求解:逻辑理解、跨文件编辑与执行、长上下文推理;推荐高质量子集 **SWE-Bench verified**([OpenReview](https://openreview.net/pdf?id=VTF8yNQM66)) | + +- 作者建议关注 LiveCodeBench、AiderBench、SWE-Bench verified,并读 [METR 报告](https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/) 了解真实代码助手有用性。 + +#### 长上下文(Long context) + +- 背景:3 年前最大上下文还是 2048 token,现在普遍 128K 以上。 + +| 数据集 | 年份 | 说明(链接) | +|---|---|---| +| NIAH(Needle in a Haystack) | 2023 | 把随机事实放进长无关文本再检索;可评估模型在上下文何处、多长之后最易遗忘;2023 年表现很差,2025 年接近解决([gkamradt 仓库](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)) | +| RULER | 2024 | 多跳追踪(追踪变量链求值)、词频变化、NIAH 的 QA 变体;也接近解决([2404.06654](https://arxiv.org/pdf/2404.06654)) | +| Michelangelo / MRCR | 2024 | 多轮共指:精确复现上下文唯一片段、识别相关信息是否存在、理解文本修改序列;OpenAI 2025 扩展为 [OpenAI MRCR](https://huggingface.co/datasets/openai/mrcr)([2409.12640](https://arxiv.org/pdf/2409.12640v2)) | +| InfinityBench | 2024 | 中英多语言,100K token 合成数据,覆盖 QA、NIAH 式检索、超长上下文计算等;仍有信号([2402.13718](https://arxiv.org/abs/2402.13718)) | +| HELMET | 2024 | 任务与现有基准的大聚合:RAG/QA(Natural Questions、TriviaQA、PopQA、HotpotQA、NarrativeQA、InfinityBench)、recall(RULER、JSONKV)、带引用的生成(ALCE 子集)、摘要、重排(MS MARCO)、ICL(TREC、NLU、Banking77、CLINIC150);2025 年仍有足够区分度([2410.02694](https://arxiv.org/abs/2410.02694)) | +| Novel Challenge | 2024 | 关于近一年出版虚构小说的 1K 真/假判断题,由读者出题,须读完并理解全书([2406.16264](https://arxiv.org/abs/2406.16264)) | +| Kalamang 翻译集 | 2024 | 模型须读语法书后把英语译成 Kalamang——仅约 200 使用者的极低资源语言、无网络存在;可扩展到其他低资源语言,并可用规则语法检查器做严格准确率而非 BLEU([2309.16575](https://arxiv.org/abs/2309.16575)) | + +- 提醒:聚合基准有**重复测量**风险——别同时测 HELMET 和 InfinityBench 再合并结果(等于同一评测跑两遍)。 + +#### 指令遵循(Instruction Following) + +- 两大数据集:**IFEval**(2023,[2311.07911](https://arxiv.org/abs/2311.07911))与扩展 **IFBench**(2025,[2507.02833](https://arxiv.org/abs/2507.02833))。 +- 作者评价:IFEval 是近几年最聪明的评测思路之一——要求模型遵循**格式指令**(关键词、标点、字数/句数、markdown/html 等文件类型格式),每个条件可用特定解析测试检查。 +- 意义:少数**不依赖模型评委也能得到严格分数**的自由生成评测,属功能性正确/单元测试类评测(作者最偏爱的评测方式),也易再生成/扩展防污染。 +- 反方向(non-compliance):**CoCoNot**(2024,[2407.12043](https://www.arxiv.org/pdf/2407.12043))测模型对不完整(未说明/不清晰)、不可回答(缺信息、AI 化、常触发幻觉)、不安全请求是否会拒绝遵循;人工写 query + 模型写违规请求再过滤,作为分类问题评测。 + +#### 工具调用(Tool-calling) + +- 背景:工具的出现是把 LLM 推向 agentic 的关键之一。 + +| 数据集 | 年份 | 说明(链接) | +|---|---|---| +| TauBench | 2024 | 零售与航空领域查询求解(下单/预订/查产品等),合成样本模拟真实领域数据;判对标准:1) 动作正确更新数据库 2) 恰当回答用户;用户由 LLM 模拟(成本高、易错),但贴合真实用例、用得很多([2406.12045](https://arxiv.org/pdf/2406.12045)) | +| ToolBench | 2023 | 调 API(OpenWeather、Cat、HomeSearch、TripBooking、GoogleSheets、WebShop、Tabletop 等)解 100 个测试用例,每例需 1–10 次工具调用;部分 API 是 mock、部分真实 → 易意外失败([2305.16504](https://arxiv.org/pdf/2305.16504)) | +| StableToolBench | 2025 | 用通用 VirtualAPIServer 全部 mock 保证稳定,但引入 LLM judge 评分(又多一层偏差)([2403.07714](https://arxiv.org/pdf/2403.07714)) | +| BFCL | 2025 版 | 4 个子集:单轮简单调用、众包真实用户函数调用、多轮对话、agentic(web 搜索、记忆、SQL 数据交互);用 AST、执行响应与状态匹配判对;v3 测工具调用、v4 测 web/search 工具([OpenReview](https://openreview.net/pdf?id=2GmDdhBdDk)) | +| MCPBench | 2025 | 接真实 MCP 服务器(Wikipedia、HF、Reddit、Steam、arxiv 等),多轮合成任务;规则检查工具调用有效性 + LLM judge 评回答([2508.20453](https://arxiv.org/abs/2508.20453)) | +| MCP-Universe | 2025 | 11 个真实主题 MCP 服务器(IRL 导航、3D 设计、web 搜索等);多个严格评估器(格式 + 两个答案正确性);动态任务用**基于任务执行的框架**自动抓最新正确答案对比——比 LLM judge 干净得多([2508.14704](https://arxiv.org/abs/2508.14704)) | +| LiveMCPBench | 2025 | 大规模本地可部署 MCP 服务器集合,测模型在工具间分辨挑选的能力;最强模型已到 80%,接近饱和;"超长工具列表中选对工具"会随 web mcp 化越来越重要([2508.01780](https://arxiv.org/abs/2508.01780)) | + +- 附:[Anthropic 的"为 agent 写工具"文档](https://www.anthropic.com/engineering/writing-tools-for-agents)。 +- 过渡语:单项能力评测有价值,但真实助手表现来自能力组合——推理必须与工具调用、长上下文管理同时进行,所以需要"多能力编排"的评测。 + +### 助手任务(Assistant tasks) + +- 作者认为这是下一代评测的主流方向:解一个助手任务需组合大量能力(长上下文、推理、工具调用…),同时具体领域表现被放进真实有用场景;比单项能力基准**更易懂**。 +- 足够通用时,不检查用了什么具体工具,只看**最终结果对不对**(复杂任务有多条成功路径)。 + +#### 真实信息检索(Real life information retrieval) + +| 数据集 | 年份 | 说明(链接) | +|---|---|---| +| GAIA | 2023 | 开创现代 agentic 评测——组合工具、推理、检索解真实查询(有时含文档);3 个难度级别,第一级已饱和、第三级仍难;公开榜见 [leaderboard](https://huggingface.co/spaces/gaia-benchmark/leaderboard);分数因评测方式(公开验证集 vs LLM judge 评私有测试集)差异很大([2311.12983](https://arxiv.org/abs/2311.12983)) | +| BrowseComp | 2025 | 测同样的事(用工具与在线信息找到具体查询的答案),但**结果不保证唯一**——从结果反推构造问题(如"哪篇关于 Topic 的论文发表在 Conference,作者含一位 Nationality 与两位 Entity 的人?"),多难度;目前可能更难([OpenAI PDF](https://cdn.openai.com/pdf/5e10f4ab-d6f7-442e-9508-59515c65e35d/browsecomp.pdf)) | +| GAIA2 | — | 用模拟移动环境,测助手靠事件链与工具调用正确回答查询;对 SOTA 模型,搜索与执行已极容易,**时间敏感与刻意加噪(模拟 API 失败)子集**最难([HF 博客](https://huggingface.co/blog/gaia2)) | + +#### 科学助手(Science assistants) + +| 数据集 | 年份 | 说明(链接) | +|---|---|---| +| SciCode | 2024 | 跨 STEM 领域用写科学代码解真实科研问题;核心问题分解为子问题;初版由科学家 + 模型评委评分,发布时模型表现很差(<5%)([2407.13168](https://arxiv.org/abs/2407.13168)) | +| PaperBench | 2025 | 复现 ML 研究——给定 ICML 高质量论文重建对应代码库(论文作者贡献 8K 个分级任务,rubric 树加权计总分);LLM judge 评分(作者怀疑部分可约束代码形态来自动化)([2504.01848](https://arxiv.org/abs/2504.01848)) | +| DSBench | 2025 | Kaggle + ModelOff(金融数据)的多模态数据分析;ModelOff 题以多选题形式给出(可能变简单),Kaggle 每题有自己的指标([2409.07703](https://arxiv.org/pdf/2409.07703)) | +| DABStep | 2025 | 用此前私密(未污染)的真实运营数据分析工作负载 + 真实问题与数据;全部需多步推理、多样文档解析、特定数据操作;难、贴近真实、每题有 ground truth → 评测无偏且不算贵([2506.23719](https://arxiv.org/abs/2506.23719)) | + +### 游戏化评测(Game-based evaluations) + +- 价值:测对**变化环境的适应**(多数助手任务是静态的)、需长上下文推理、**人人都能看懂**。 +- 缺点:不扎根真实生活、未必反映真实有用场景的表现。 +- **ARC-AGI**([arcprize.org](https://arcprize.org/arc-agi)):2019 初版是网格拼图序列,无显式规则,找序列最后一项;非常像逻辑导向的 IQ 测试;2024 年几乎被解决。 +- **Baba is AI**(2024,[2407.13729](https://arxiv.org/abs/2407.13729)):同类规则外推基准。 +- **ARC-AGI3**(2025,进行中):整批新游戏(探索、复杂规划、记忆管理等),当前最佳解还在暴力破解。 +- 单机冒险/RPG:**TextQuests**(2025,[HF 博客](https://huggingface.co/blog/textquests))、**Pokemon**(2024,[benchflow 仓库](https://github.com/benchflow-ai/benchflow/tree/main/libs/pokemon-gym);Claude 与 Gemini 都有 Twitch 直播:[Claude plays Pokemon](https://www.twitch.tv/claudeplayspokemon)、[Gemini plays Pokemon](https://www.twitch.tv/gemini_plays_pokemon))——需超长规划、长上下文记忆管理、推理、回溯。 +- 生存游戏:**Crafter**(2021,[2109.06780](https://arxiv.org/abs/2109.06780),Minecraft 启发)。 +- 环境整合:**Balrog**(2024,[2411.13543](https://arxiv.org/pdf/2411.13543))整合了多个单人游戏环境。 +- 竞争性虚张声势游戏(测逻辑、推理与**欺骗**): + - **Poker**(2025,[2501.08328](https://arxiv.org/html/2501.08328v1))。 + - **Town of Salem**(2025,[仓库](https://github.com/summersonnn/Town-Of-Salem-with-LLMs))。 + - **Werewolf 狼人杀**(2025,[2407.13943](https://arxiv.org/abs/2407.13943) / [网站](https://werewolf.foaster.ai/))。 + - 例:Claude Opus 4 当狼人杀里的吸血鬼(欺骗角色)赢不了,但当农民(非欺骗角色)表现好。 +- 合作游戏 **Hanabi**:测受限环境下的适应与沟通。 +- 优势:单一明确的 **pass/fail 指标**(赢没赢)。 +- 作者当前建议:能力看 TextQuests,安全看 Town of Salem。 + +### 预测类评测(Forecasters) + +- 背景:去年新出现的、**本质上无法污染**的任务类别(股票市场预测理论上可被操纵,但希望还没到为搞坏评测而作弊的激励程度)。 +- 定位:需跨来源推理回答尚未发生事件的问题;但不确定区分度是否够强,且可能强化 LLM 的"老虎机式成功"观感——事件上接近随机:因为不可预测还是模型差?反过来,预测对了:题太简单还是太模板化? + +| 数据集 | 说明(链接) | +|---|---| +| FutureBench | 预测未来有新闻价值的事件;两个来源——浏览 + LLM 每周时间窗生成问题,以及博彩市场的用户预测;数据重度过滤清洗;模型在人类博彩题上勉强优于随机,在模型生成题上 3/4 成功(后者更简单)([HF 博客](https://huggingface.co/blog/futurebench)) | +| FutureX | 用一系列特定网站(预测市场、政府网站、通用排名网站、实时数据平台),模板生成未来事件问题("STOCK 何时到达 POINT?");每日生成 500 题并过滤意外无关题([2508.11987](https://arxiv.org/abs/2508.11987)) | +| Arbitrage | 类似生成方式,核心差异是时间窗——事件须在 2028 年前解决([2412.18544](https://arxiv.org/pdf/2412.18544)) | + +### 2025 年 9 月的推荐评测组合 + +| 用途 | 推荐评测 | +|---|---| +| 核心能力(模型构建者) | 训练期用旧能力评测;后训练用 MATH500/AIME24、GPQA、IFEval、SWE-Bench;长程评测选一个如 HELMET;面向工具用 TauBench 或 BFCL | +| 核心能力(推理期对比模型) | IFBench、HLE、MathArena、AiderBench 与 LiveCodeBench、MCP-Universe | +| 长时程任务(真实世界表现) | GAIA、DABStep、SciCode 或针对自己用例的领域评测 | +| 游戏(测鲁棒性与适应性的趣味补充) | ARC-AGI3(发布后)、TextQuests;安全相关看 Town of Salem;或任何超越 Poker/Chess/Go 的游戏 | + +### 结语 + +- 领域正从"测孤立技能"走向"测能力编排"以服务真实使用,契合"构建 work well 的模型"的目标。 +- 作者希望未来评测更重视**功能性测试**而非模型评委,并保持数据集与任务的可理解性。 + +--- + +## 参考资料 + +- 2023 原文(GitHub):[yearly_dives/2023-year-of-open-source.md](https://github.com/huggingface/evaluation-guidebook/blob/main/yearly_dives/2023-year-of-open-source.md) +- 2023 原文(博客首发):[2023, year of open LLMs](https://huggingface.co/blog/2023-in-llms) +- 2024 原文(GitHub):[yearly_dives/2024-evals-thoughts-from-iclr.md](https://github.com/huggingface/evaluation-guidebook/blob/main/yearly_dives/2024-evals-thoughts-from-iclr.md) +- 2024 原文(博客首发):[Let's talk about LLM evaluation](https://huggingface.co/blog/clefourrier/llm-evaluation) +- 2025 原文(GitHub):[yearly_dives/2025-evaluations-for-useful-models.md](https://github.com/huggingface/evaluation-guidebook/blob/main/yearly_dives/2025-evaluations-for-useful-models.md) +- 指南仓库:[huggingface/evaluation-guidebook](https://github.com/huggingface/evaluation-guidebook) + +相关:[[00-Overview]] · [[07-Resources]] diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/07-Resources.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/07-Resources.md new file mode 100644 index 0000000..e66aa64 --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/07-Resources.md @@ -0,0 +1,167 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - resources +status: active +created: 2026-08-21 +source: https://github.com/huggingface/evaluation-guidebook +--- + +# Resources —— 评测与 NLP 推荐资源清单 + +> 本页整理自 HuggingFace Evaluation Guidebook 的 `resources/about-evaluation.md` 与 `resources/about-NLP.md`,把原文链接按主题分类成清单。每项列出:链接、作者/来源、一句话中文说明(说明依据原文自带的描述翻译;原文只有链接的条目,只做最小的事实性描述,不额外发挥)。⚠️ 链接是否仍然有效、内容是否更新,以访问时为准。 + +## 快速导航 + +- [评测方法论与综述](#评测方法论与综述) +- [LLM-as-a-Judge(模型作评委)](#llm-as-a-judge模型作评委) +- [播客](#播客) +- [评测软件与工具](#评测软件与工具) +- [排行榜](#排行榜) +- [评测教程](#评测教程) +- [NLP 基础](#nlp-基础) +- [LLM 架构理解](#llm-架构理解) +- [提示词(Prompting)](#提示词prompting) + +## 资源总览 + +> 全表共 21 项资源,按类别一览(详细清单见下文各节)。 + +| 类别 | 资源 | 作者/来源 | 一句话说明 | +|---|---|---|---| +| 评测方法论 | Foundational Model Development Cheatsheet | AllenAI | 基础模型开发速查表 | +| 评测方法论 | Challenges in LM Evaluation | Hailey Schoelkopf & Lintang Sutawika(ICML 2024 Tutorial) | 自动评测挑战综述演示 | +| 评测方法论 | Lessons from the trenches on Reproducible Evaluation of LMs | EleutherAI | 可复现 LM 评测的经验论文 | +| LLM-as-a-Judge | LLM Evaluators | Eugene Yan | LLM 作评测器的总结 | +| LLM-as-a-Judge | LLM as a Judge | Cameron R. Wolfe | "LLM 作评委"方法综述 | +| LLM-as-a-Judge | LLM & VLM-as-a-Judge | Dylan(Digital Garden) | LLM/VLM 作评委经验 | +| 播客 | Benchmarks 101 | Latent Space | 自动基准历史与问题 | +| 播客 | Benchmarks 201 | Latent Space | 何时用哪种评测方法 + Leaderboard 讨论 | +| 工具 | `lm_eval`(the Harness) | Eleuther | 稳定可复现的 LLM 评测引擎 | +| 工具 | `lighteval` | Hugging Face | 轻量评测套件,聚焦定制与新基准 | +| 排行榜 | Open LLM Leaderboard | Hugging Face | 开源 LLM 静态基准中立评测 | +| 排行榜 | HELM | Stanford(CRFM) | 静态基准 + 胜率排名 | +| 排行榜 | Chatbot Arena | LMSys | 众包人工评测约 150 个 LLM | +| 排行榜 | LLM Performance Leaderboard | Artificial Analysis | LLM API 性能与定价对比 | +| 排行榜 | HF 评测/排行榜博客 | Hugging Face | 官方相关博客汇总 | +| 排行榜 | Leaderboard Finder | Hugging Face | 按用例找最相关排行榜 | +| 教程 | Argilla domain-eval tutorial | Argilla | 自定义领域评测端到端教程 | +| NLP 基础 | NLP for You | Lena Voita | 最好的在线 NLP 课程之一 | +| NLP 基础 | The NLP Course | Hugging Face | 完整 NLP 课程,含代码 | +| 架构 | Annotated/Illustrated 系列 + MoE 指南 | Bastings / Rush / Alammar / Grootendorst | Transformer、S4、MoE 图解与代码讲解 | +| 提示词 | Show me the prompt | Hamel Husain | 提示词相关博客 | + +--- + +## 评测方法论与综述 + +> 来自 `about-evaluation.md` 的 Knowledge 部分:自动评测的两篇高质量综述 + 一篇入门速查。 + +- [Foundational Model Development Cheatsheet](https://fmcheatsheet.org/) —— 作者/来源:AllenAI + - 基础模型开发速查表(原文归在 "Knowledge > General",评测以外的整体入门参考)。 +- [Challenges in LM Evaluation](https://github.com/lm-evaluation-challenges/lm-evaluation-challenges.github.io/blob/main/%5BMain%5D%20ICML%20Tutorial%202024%20-%20Challenges%20in%20LM%20Evaluation.pdf) —— 作者/来源:Hailey Schoelkopf 与 Lintang Sutawika(ICML 2024 Tutorial 演示文稿) + - 关于**自动评测挑战**的综述演示(原文明确推荐的两份自动评测综述之一)。 +- [Lessons from the trenches on Reproducible Evaluation of LMs](https://arxiv.org/abs/2405.14782) —— 作者/来源:EleutherAI(arXiv 论文) + - 关于**可复现 LM 评测**的"战壕经验"论文(原文明确推荐的另一份自动评测综述)。 + +## LLM-as-a-Judge(模型作评委) + +> 来自 `about-evaluation.md` 的 "LLM as a judge" 部分,原文归类为"总结与经验反馈"(Cool summaries and experience feedbacks)。 + +- [LLM Evaluators](https://eugeneyan.com/writing/llm-evaluators/) —— 作者/来源:Eugene Yan(博客) + - 关于用 LLM 做评测器的总结文章。 +- [LLM as a Judge](https://cameronrwolfe.substack.com/p/llm-as-a-judge) —— 作者/来源:Cameron R. Wolfe(Substack 博客) + - 关于"LLM 作评委"这一评测方法的综述文章。 +- [LLM & VLM-as-a-Judge](https://dylandigitalgarden.com/2024/July/July+31%2C+2024+LLM+%26+VLM-as-a-Judge) —— 作者/来源:Dylan(Digital Garden 博客,2024-07-31) + - 关于 LLM/VLM 作评委的经验与思考。 + +## 播客 + +> 来自 `about-evaluation.md` 的 Knowledge 部分,原文推荐的两个 Latent Space 播客。 + +- [Benchmarks 101](https://www.latent.space/p/benchmarks-101) —— 作者/来源:Latent Space(播客) + - 关于**自动基准的历史与已知问题**(自动评测入门)。 +- [Benchmarks 201](https://www.latent.space/p/benchmarks-201) —— 作者/来源:Latent Space(播客) + - 关于**何时该用哪种评测方法**,并含与原作者(Clémentine Fourrier,指南作者)关于 Leaderboard 的讨论。 + +## 评测软件与工具 + +> 来自 `about-evaluation.md` 的 Software > Evaluation suites 部分。 + +- [`lm_eval`(lm-evaluation-harness)](https://github.com/EleutherAI/lm-evaluation-harness/) —— 作者/来源:Eleuther(GitHub 仓库) + - 常称 "the Harness",LLM 评测的"主力引擎":以稳定、可复现的方式在众多 benchmark 上评测来自多家供应商的任意 LLM。 +- [`lighteval`](https://github.com/huggingface/lighteval) —— 作者/来源:Hugging Face(GitHub 仓库;指南作者也是作者之一,原文有利益声明) + - 轻量级 LLM 评测套件,聚焦定制化与较新的 benchmark。 + +## 排行榜 + +> 来自 `about-evaluation.md` 的 Software > Leaderboards 部分。 + +- [Open LLM Leaderboard](https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard) —— 作者/来源:Hugging Face + - 对开源 LLM 在参考静态基准上的中立第三方评测,开放提交。 +- [HELM](https://crfm.stanford.edu/helm/lite/latest/#/leaderboard) —— 作者/来源:Stanford(CRFM) + - 也在静态基准上评测模型,但用 **win-rates(胜率)** 排名。 +- [Chatbot Arena](https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard) —— 作者/来源:LMSys + - 用众包人工评测(竞技场投票)为约 150 个 LLM 打分排名的 Arena。 +- [LLM Performance Leaderboard](https://huggingface.co/spaces/ArtificialAnalysis/LLM-Performance-Leaderboard) —— 作者/来源:Artificial Analysis + - 主流 LLM API 提供商的性能基准与定价;想用 API 而非本地跑模型时看它。 +- [Hugging Face 评测与排行榜相关博客](https://huggingface.co/blog?tag=leaderboard) —— 作者/来源:Hugging Face(博客标签页) + - 官方关于评测与排行榜的全部博客文章汇总。 +- [Leaderboard Finder](https://huggingface.co/spaces/leaderboards/LeaderboardFinder) —— 作者/来源:Hugging Face(Space) + - 帮你找到与你的用例最相关的排行榜。 + +## 评测教程 + +> 来自 `about-evaluation.md` 的 Software > Tutorials 部分。 + +- [End-to-end custom domain evaluation tutorial](https://github.com/argilla-io/argilla-cookbook/tree/main/domain-eval) —— 作者/来源:Argilla(GitHub Cookbook) + - 端到端教程:为自己的领域构建自定义评测任务,使用合成数据 + 人工评测,配套工具 [Argilla](https://github.com/argilla-io/argilla/) 与 [distilabel](https://github.com/argilla-io/distilabel)。 + +## NLP 基础 + +> 来自 `about-NLP.md` 的 General knowledge 部分。 + +- [NLP for You](https://lena-voita.github.io/nlp_course.html) —— 作者/来源:Lena Voita + - 公认最好的在线 NLP 课程之一,循序渐进、阅读体验好(原文原话:step by step and nice to read)。 +- [The NLP Course](https://huggingface.co/learn/nlp-course/chapter1/1) —— 作者/来源:Hugging Face + - 极其完整的 NLP 课程,含大量代码片段,可快速上手。 + +## LLM 架构理解 + +> 来自 `about-NLP.md` 的 Understanding LLM architectures 部分。 + +- [The Annotated Encoder Decoder](https://bastings.github.io/annotated_encoder_decoder/) —— 作者/来源:Jasmijn Bastings + - 逐步讲解 2015 年 Bahdanau 论文(带注意力的 RNN encoder-decoder),每一步都有代码解释。 +- [The Annotated Transformer](https://nlp.seas.harvard.edu/2018/04/03/attention.html) —— 作者/来源:Sasha Rush + - 逐步讲解 2016 年 Vaswani 的 Transformer 论文,每一步都有代码解释。 +- [The Illustrated Transformer](https://jalammar.github.io/illustrated-transformer/) —— 作者/来源:Jay Alammar + - 上一条的很好补充:用可视化(而非代码)讲 Transformer。 +- [The Annotated S4](https://srush.github.io/annotated-s4/) —— 作者/来源:Sasha Rush + - 逐步讲解 Structured State Space for Sequence Modeling(S4)论文,每一步都有代码;想知道什么是状态空间模型就看它。 +- [A Visual Guide to MoE](https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-mixture-of-experts) —— 作者/来源:Maarten Grootendorst + - 混合专家(Mixture of Experts)可视化指南,大量直观图示;原文建议先读上面的 Transformer 指南再看本篇。 + +## 提示词(Prompting) + +> 来自 `about-NLP.md` 的 Prompting 部分。 + +- [Show me the prompt](https://hamel.dev/blog/posts/prompt/) —— 作者/来源:Hamel Husain(博客) + - 关于提示词(prompt)的博客文章(原文仅给出链接,未附说明)。 + +--- + +## 使用建议 + +- **按需取用**:先看[评测方法论与综述](#评测方法论与综述)建立框架,再按场景选择[软件工具](#评测软件与工具)与[排行榜](#排行榜)。 +- **补 NLP 基础**:需要 LLM/Transformer 基础时看 [NLP 基础](#nlp-基础) 与 [LLM 架构理解](#llm-架构理解)。 +- **动手实践**:想自己搭评测流程,从 [评测教程](#评测教程) 的 Argilla 领域评测教程开始,工具用 `lm_eval` 或 `lighteval`。 +- **持续跟踪**:排行榜与评测工具迭代很快,重要决定前请回到原文链接核对最新状态。 + +## 原文位置 + +- `resources/about-evaluation.md`:[GitHub blob](https://github.com/huggingface/evaluation-guidebook/blob/main/resources/about-evaluation.md) +- `resources/about-NLP.md`:[GitHub blob](https://github.com/huggingface/evaluation-guidebook/blob/main/resources/about-NLP.md) + +相关:[[00-Overview]] · [[06-Yearly-Dives]] diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/08-2025-Edition.md b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/08-2025-Edition.md new file mode 100644 index 0000000..adfd00a --- /dev/null +++ b/01_Projects/Personal-Tech/LLM_Evaluation/04-Reference-Archive/evaluation-guidebook/08-2025-Edition.md @@ -0,0 +1,602 @@ +--- +type: reference +tags: + - llm-evaluation + - evaluation-guidebook + - 2025-edition +status: active +created: 2026-08-21 +source: https://huggingface.co/spaces/OpenEvals/evaluation-guidebook +--- + +# HuggingFace LLM Evaluation Guidebook(2025 新版)提炼 + +> 本笔记提炼 **HuggingFace Evaluation Guidebook 新版(2025-12)独有/更新的内容**,与 [[00-Overview]]~[[07-Resources]] 整理自旧 GitHub 仓库的 8 篇笔记互补。旧版内容(judge 大章节、tokenization、yearly dives、resources 清单等)不在本文重复,重点写新版**新增与重构**的部分。 + +## 开篇:新版是什么 + +**The LLM Evaluation Guidebook(2025 版)** 是旧 GitHub 仓库(huggingface/evaluation-guidebook)停更后的**全新"科研论文形态"交互式 Space**: + +- **地址**: +- **作者**:Clémentine Fourrier、Thibaud Frere、Guilherme Penedo、Thomas Wolf(均为 Hugging Face) +- **副标题**:*"All the things you could want to know about LLM evaluation based on our experience scoring 15000 models over 3 years"* +- **发布时间**:2025-12-03 +- **许可证**:CC BY 4.0 +- **形态**:一个 Astro 构建的交互式论文页面(`app/src/content/article.mdx` 组装各章节 MDX,渲染结构见下),带可交互图表(d3 嵌入)、折叠块(Accordion)、侧注(Sidenote),而非旧版的线性 Git 文档 + +一句话关系:**同一团队对同一知识核心的现代化重组与再创作**——保留 tokenization/inference、自动评测设计、人类标注、troubleshooting 的骨架,但删除/压缩了旧版膨胀的部分(judge 独立大章节、troubleshooting 两个专项页、yearly dives、resources),把篇幅让给 2025 评测全景、统计有效性与成本、结构化生成、以及全新加入的 **FineWeb 预训练评测选型方法论**。 + +### 新版实际渲染结构(重要) + +新版仓库含 **8 个章节 MDX 文件**,但页面正文(`article.mdx`)**按以下顺序渲染**,与文件布局不完全一一对应: + +``` +article.mdx(组装层,含正文过渡小节、saturation/contamination 定义、Conclusion) +├─ Intro ← chapters/intro.mdx +├─ ModelInferenceAndEvaluation ← chapters/general-knowledge/model-inference-and-evaluation.mdx +├─ (正文小节 "Evaluating with existing benchmarks") +│ ├─ EvalsIn2025(2025 评测全景) ← chapters/general-knowledge/2025-evaluations-for-useful-models.mdx +│ ├─ TroubleshootingReproducibility ← chapters/troubleshooting/troubleshooting-reproducibility.mdx +│ └─ PickingYourEval(FineWeb 选型) ← chapters/general-knowledge/picking-your-evaluation.mdx +├─ DesigningAutomaticEvaluation ← chapters/automated-benchmarks/designing-your-automatic-evaluation.mdx +│ └─ 其中通过 import 嵌入 UsingHumanAnnotators(在 "Using existing data" 与 +│ "Creating a dataset synthetically" 之间)← chapters/human-evaluation/using-human-annotators.mdx +└─ Conclusion(结论) +``` + +8 个章节文件一览(`app/src/content/chapters/...`): + +| 章节文件 | 路径 | 渲染方式 | 核心内容 | +|---|---|---|---| +| intro | `intro.mdx` | article.mdx 直接 import | 评测视角(model builder vs model user)、智能定义的困境 | +| model-inference-and-evaluation | `general-knowledge/model-inference-and-evaluation.mdx` | article.mdx 直接 import | tokenization 与 inference 基础、MCF/CF/FG、calibration | +| 2025-evaluations-for-useful-models | `general-knowledge/2025-evaluations-for-useful-models.mdx` | article.mdx 直接 import | 2025 分能力评测全景与推荐 | +| troubleshooting-reproducibility | `troubleshooting/troubleshooting-reproducibility.mdx` | article.mdx 直接 import | 评测复现排错(与旧版基本一致) | +| picking-your-evaluation | `general-knowledge/picking-your-evaluation.mdx` | article.mdx 直接 import | **FineWeb 预训练评测选型方法论(全新)** | +| designing-your-automatic-evaluation | `automated-benchmarks/designing-your-automatic-evaluation.mdx` | article.mdx 直接 import | 设计自动评测:数据、prompt、指标、functional scorers、judge、structured generation | +| using-human-annotators | `human-evaluation/using-human-annotators.mdx` | **通过 `` 嵌入 designing**(位于 "Using existing data" 与 "Creating a dataset synthetically" 之间),是设计流程的一部分 | 人类标注实践(与旧版基本一致) | +| some-evaluation-datasets | `automated-benchmarks/some-evaluation-datasets.mdx` | **存在于仓库,但页面正文不直接渲染**——2025 章节仅以一句 "you'll find a big list of older interesting benchmarks [here](...)" 链接到**旧 GitHub 仓库**的数据集清单 | 数学类 + 通用类数据集大表(作为仓库资产留存) | + +要点:新版**没有**独立的 "Tips and Tricks" 章节、**没有** judge 独立大章节(judge 内容压缩进 designing 的 "With judge models" 小节)、**没有** yearly dives 2023/2024、**没有** resources 清单。 + +--- + +## §1 新版与旧版的差异总览 + +| 旧版章节(GitHub 仓库) | 新版去向 / 变化 | +|---|---| +| 00 Overview | 无独立 overview 章节;由 `intro.mdx` 承担"为什么要评测"的角色 | +| Automatic benchmarks / Basics(tokenization & inference、评测类型) | 精简合并为 `model-inference-and-evaluation.mdx`,**新增** MCF/CF/FG 三种任务形式与 log-likelihood 计算细节、calibration 讨论 | +| Automatic benchmarks / Designing your automatic evaluation | 重写强化为 `designing-your-automatic-evaluation.mdx`:**新增**数据创建流程检查清单、样本检查、指标详解(BLEU/ROUGE/TER/BLEURT)、normalization 与 Math-Verify 表格、sampling 指标(pass@k/maj@n/cot@n/avg@n)、functional scorers/IFEval、污染管理、constraining outputs(prompt/few-shot/**structured generation**)、统计有效性与成本 | +| Automatic benchmarks / Some evaluation datasets | 保留为 `some-evaluation-datasets.mdx`(数学大表 + 旧数据集表 + 可复现想法),**但仅作为仓库资产,页面正文不再渲染**——2025 章节只给出指向旧 GitHub 版清单的链接 | +| Human evaluation / Using human annotators | `using-human-annotators.mdx`(基本一致),**通过 import 嵌入 designing 章节内部**("Using existing data" 与 "Creating a dataset synthetically" 之间);Human evaluation basics 并入 designing 的 "With humans" 小节 | +| **LLM-as-a-judge(独立大章节)** | **删减合并**进 designing 的 "With judge models" 小节:judge-LLM 选择、prompt 设计、评估 evaluator、reward models 仍在但大幅压缩 | +| Troubleshooting / Troubleshooting reproducibility | `troubleshooting-reproducibility.mdx`(保留,基本一致) | +| Troubleshooting / Troubleshooting inference | **删除** | +| Troubleshooting / Troubleshooting math parsing | **删除独立页**;Math-Verify 内容移入 designing 的 Normalization 小节 | +| General knowledge / tokenization 独立页 | **精简**并入 `model-inference-and-evaluation.mdx` | +| Yearly dives(2023/2024 深度文章) | **删除**;以 `2025-evaluations-for-useful-models.mdx`(2025 评测全景)取代 | +| Resources 推荐清单 | **删除**独立章节(2025 章节末尾保留了旧数据集清单的链接) | +| ——(新增) | `picking-your-evaluation.mdx`:**FineWeb 团队预训练评测选型方法论(全新内容)** | +| ——(新增) | `intro.mdx`:model builder vs model user 视角、智能定义的困境 | + +--- + +## §2 评测视角与目的(来自 intro) + +新版开篇不再直接讲技术,而是先回答"**为什么评测**"——因为**你是谁、你在做什么,决定了你需要哪些评测**。核心问题: + +> How can one know if a model is *good*?(如何知道一个模型是"好"的?) + +### model builder(模型构建者):Am I building a strong model? + +- 目标:构建在任务集上表现良好的强模型。**基础模型**(从零训练)关心通用任务上的多种能力;**post-training**(针对特定用例微调)更关心该用例上的表现。 +- 通过 **ablations**(消融实验)检验设计选择(数据混合、架构、超参)是否"搞坏了"预期表现或有所提升——因此 **评测任务的选择对 ablation 至关重要**,它决定了你在构建模型时优化什么。 +- 除 ablation 外,还要在训练中评测中间 checkpoint(确保在逐步学习、没有因 spike 等回退),最后评测最终 checkpoint 以宣称 SOTA。 +- 需求:**快、高信号(strong signal)、便宜**,才能快速迭代;也可基于小模型表现用 **scaling laws** 预测大模型。 +- 重要限定(原文强调):对于任何复杂能力,目前不能说"这个模型在这项上最好",而只能说—— + +> "this model is the best **on these samples** for **this specific task** that we hope are a **good proxy for this capability**, without any guarantee" + +### model user(模型使用者):Which model is the best for my use case? + +- 目标:直接选用他人训练好的模型,或找最好的基础模型做进一步训练。 +- 常见领域(math/code/knowledge)已有多个 leaderboard 可对比排名;通常**只需测试头部候选**(如果它们都不行,更差的模型大概率也不行)。 +- 可自己重跑现有 benchmark 获取更细的成功/失败分析。 +- 引用 ImageNet 时代 benchmark 设计教训论文(arxiv 2404.02112)的核心观点:**分数容易不稳定,唯一稳健的评测方式是排名(rankings),尤其是找到一批能给出一致且稳定排名的评测组**。作者认为这是非常值得采用的思路——LLM 在自动 benchmark 上的分数对 prompt 的微小变化极其敏感(见 [evaluation-structured-outputs blog](https://huggingface.co/blog/evaluation-structured-outputs)),人类评测也不更一致,而**排名**在稳健评测方法下更稳定。 + +### 智能(intelligence)定义的困境 + +- 目前**极度缺乏**对"什么是模型智能、如何评测智能"的良好定义与框架(有人尝试过:Chollet 2019 [arxiv 1911.01547](https://arxiv.org/abs/1911.01547)、Hendrycks 等人 [agidefinition.ai](https://www.agidefinition.ai/paper.pdf))。 +- 这不是 ML 独有的难题:人类/动物研究中同样难定义,IQ/EQ 等指标备受争议。 +- 以"智能"为目标是**有问题的**,三个理由: + 1. **移动目标(moving target)**:每当我们达到一个曾被当作人类专属的能力,这个词就被重新定义。 + 2. **框架不迁移**:现有框架以人类(或动物)为出发点设计,底层行为与假设与模型不同,很可能不适用于模型。 + 3. **本质无用**:应该瞄准让模型擅长**具体、定义良好、有目的、有用**的任务(如会计、报告),而不是为了 AGI 而 AGI。 + +--- + +## §3 2025 评测全景(2025-evaluations-for-useful-models + article.mdx) + +> 新版先给出两个贯穿全篇的核心概念(来自 article.mdx 的 "Evaluating with existing benchmarks" 引言): +> +> - **Saturation(饱和)**:模型在 benchmark 上的表现超过人类表现。更广义地指数据集失去模型间区分力、不再有用——"如果所有模型分数都接近最高分,它就不再是 discriminative benchmark,就像拿学前班题目考高中生:成功说明不了什么(虽然失败能说明问题)"。 +> - **Contamination(污染)**:评测数据集进了模型训练集,导致分数被人为抬高、不反映真实任务表现——"就像考学生他事先知道答案的题目"。 + +另外注意 2025 章节开头的**方法论警告**:单独评测具体能力通常很有价值(训练中或比较 base/pretrained 模型时),但**如果你用下面的评测去选择和验证训练方法,最终模型上再报告这些评测就是有偏的**(你已经把训练方法朝它们调优了)。 + +### 推理与常识(Reasoning and commonsense) + +- 多为 BERT/embedding 时代的"历史数据集",当时有挑战性(常为对抗式构建),现在 **1) 太简单 2) 被污染/饱和**,只适合 ablation 或预训练评测。大数据集还常含错误/低质量问题(当年靠 Amazon Mechanical Turk 快速低成本扩展,如今由 LLM 生成评测题替代)。 +- 代表数据集: + - **ARC**(2018,[arxiv 1803.05457](https://arxiv.org/abs/1803.05457),注意与 ARC-AGI 区分):小学科学 MCQA,选项当年对词共现系统对抗式选取;高质量 `challenge` 子集至今仍用于预训练。 + - **WinoGrande**(2019,[arxiv 1907.10641](https://arxiv.org/abs/1907.10641)):众包代词消解/填空,对抗式配对。两者对模型都难到 2022–2023 年。 + - **HellaSwag**(2019,[arxiv 1905.07830](https://arxiv.org/abs/1905.07830)):从 ActivityNet 字幕/WikiHow 教程选正确下一句,多需物理常识 grounding。 + - **CommonsenseQA**(2018,[arxiv 1811.00937](https://arxiv.org/abs/1811.00937)):基于 ConceptNet 的常识 MCQA。 + - **PIQA**(2019,[arxiv 1911.11641](https://arxiv.org/abs/1911.11641)):物理常识,Instructables 例子 + 语义扰动对抗选项。 + - **OpenBookQA**(2018,[arxiv 1809.02789](https://arxiv.org/abs/1809.02789)):提供"开卷"事实,仍需潜在常识。 +- 较新的亮点:**Zebra Logic**([arxiv 2502.01100](https://arxiv.org/abs/2502.01100))用逻辑谜题测推理,方法允许**无限生成谜题 → 污染极少**。 + +### 知识(Knowledge) + +- **MMLU**(2020,[arxiv 2009.03300](https://arxiv.org/abs/2009.03300))是知识评测主力,已饱和/污染;深查发现多项问题:**引用缺失文档的不完整问题、错误 ground truth、歧义问题、主题明显的美国中心主义**。 + - 后续清理/扩展:**MMLU-Redux**(2024,[arxiv 2406.04127](https://arxiv.org/abs/2406.04127))、**MMLU-Pro**(2024,[arxiv 2406.01574](https://arxiv.org/abs/2406.01574),**当前社区主要替代**)、**Global-MMLU**(2024,[arxiv 2412.03304](https://arxiv.org/abs/2412.03304),翻译+文化偏差标注)。主要用于预训练评测与 ablation。 +- Post-training 用更难的:**GPQA**(2023,[arxiv 2311.12022](https://arxiv.org/abs/2311.12022)):生物/化学/物理博士级定制题,本领域 PhD 才能答对;最常用 `diamond` 子集,但自 2023 发布以来也开始污染。 +- **Humanity's Last Exam / HLE**(2024,[agi.safe.ai](https://agi.safe.ai/)):2.5K 各领域专家众包题,多为私有,需复杂知识与推理,尚未被攻破。问题:**无法快速打分 → 大家用 LLM judge 评估答案而非对照 ground truth → 野外结果不可比**。 +- 作者的判断:纯 latent knowledge 评测会逐步退出,两个理由: + 1. **对人类不可读**:题目越来越复杂,非专家几乎无法理解每题分数的含义(也无法确认数据集本身没错误)。 + 2. **从 closed book 走向 open book**:模型接上工具/联网后,latent knowledge 评测日益变成 web search / retrieval 评测(类比法国教育:高中闭卷,大学默认可查资料,考的是"给你自由获取信息的能力下你怎么推理")。 + +### 数学(Math) + +- 参考基准 **GSM8K**(2021,[arxiv 2110.14168](https://arxiv.org/abs/2110.14168),小学应用题)与 **MATH**(2021,[arxiv 2103.03874](https://arxiv.org/abs/2103.03874),奥赛题聚合)近年已饱和/污染。 + - 衍生:**GSM1K**(2024,[arxiv 2405.00332](https://arxiv.org/abs/2405.00332),1K 新题测哪些模型在 GSM8K 上被污染)、**GSM-Plus**([arxiv 2402.19255](https://arxiv.org/pdf/2402.19255),对抗改写:干扰项、数值变体等)、**GSM-Symbolic**(2024,[arxiv 2410.05229](https://arxiv.org/abs/2410.05229),模板化可无限再生成防污染)。 +- 社区当前聚焦: + - **MATH-500**(MATH 的代表性子集,防过拟合)与 MATH-Hard(最难的 500 题) + - **AIME 24/25**(美国高中奥赛,逐年换题等难度 → 可对比"发布时分数 vs 前一年分数"来测污染) + - **Math-Arena**([matharena.ai](https://matharena.ai/)):持续更新的竞赛/奥赛聚合(含 AIME25 等) +- 高端:**FrontierMath**(2024,[arxiv 2411.04872](https://arxiv.org/abs/2411.04872),数学家专写、理论上私有——但 OpenAI 似乎接触过部分数据);HLE 也含"现做"的复杂数学题(含定理证明)。 +- 作者建议:**预训练评测用 AIME25 + MATH-500;post-training 用 Math-Arena**。 + +### 代码(Code) + +- 历史(2021):**MBPP**(1K 众包 Python 入门题)、**APPS**(10K 面试/分享网站题)、**HumanEval**(Codex 论文,专门"为发布而写"的题,还带沙箱防恶意代码执行;**pass@k 估算器就是它提出的**,此前 pass@k 是"n 次中成功次数 ≥ k"的字面检查)。 +- 加强版:**EvalPlus**(2023)的 HumanEval+/MBPP+(更多测试用例、修 bug、加输入);**EvoEval**(2024,[arxiv 2403.19114](https://arxiv.org/abs/2403.19114),语义改写 + 难度标注)。 +- 最终模型用更难/未污染的: + - **LiveCodeBench**(2024,[arxiv 2403.07974](https://arxiv.org/abs/2403.07974)):记录题目日期,比较模型在**训练截止前后**题目上的表现——优秀的污染免疫基准。 + - **AiderBench**([leaderboards](https://aider.chat/docs/leaderboards/),2024 底上线):来自 Exercism,专门测**代码编辑与重构**。 +- Post-training 需要更整体:**RepoBench**(2023,仓库级自动补全,Python/Java);**SWE-Bench**(2024,用 GitHub 真实 issue 测逻辑理解、跨文件编辑、长上下文推理);**CodeClash**(2025,代码版 arena,模型代码互相对战迭代)。 +- 作者建议(2025 年 11 月):关注 **LiveCodeBench、AiderBench、SWE-Bench verified**,并读 [METR 报告](https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/) 了解代码助手的真实效用。 + +### 长上下文(Long context) + +- 3 年前模型上下文上限约 2048 tokens,现在普遍 128K+。 +- **NIAH(Needle in a Haystack)**(2023):长无关文本中埋一条事实让其检索。2023 年模型很差,**2025 年接近解决**。 +- 复杂扩展:**RULER**(2024,[arxiv 2404.06654](https://arxiv.org/abs/2404.06654),多跳追踪、词频变化、NIAH 的 QA 变体,也接近解决);**Michelangelo / MRCR**(2024,[arxiv 2409.12640](https://arxiv.org/pdf/2409.12640v2),多轮共指,后扩为 [OpenAI MRCR](https://huggingface.co/datasets/openai/mrcr) 2025);**InfinityBench**(2024,[arxiv 2402.13718](https://arxiv.org/abs/2402.13718),中英双语 100K token 合成任务,仍有信号)。 +- **HELMET**(2024,[arxiv 2410.02694](https://arxiv.org/abs/2410.02694)):聚合 RAG/QA(Natural Questions、TriviaQA、PopQA、HotpotQA、NarrativeQA、InfinityBench)、recall(RULER、JSONKV)、带引用生成(ALCE 子集)、摘要、重排(MS MARCO)、ICL(TREC、NLU、Banking77、CLINIC150)等的大数据集。⚠️ **聚合基准有重复计量风险**:不要同时对模型跑 HELMET 和 InfinityBench 再聚合结果(等于同一评测跑两遍)。2025 年仍足够区分模型。 +- 作者偏爱:**Novel Challenge**(2024,[arxiv 2406.16264](https://arxiv.org/abs/2406.16264),近一年出版小说的 1K 条真假 claims,须读完整本书);**Kalamang 翻译集**([arxiv 2309.16575](https://arxiv.org/abs/2309.16575),读语法书从英语翻到 Kalamang——只有约 200 个使用者的极低资源语言)。 + +### 指令遵循(Instruction Following) + +- **IFEval**(2023,[arxiv 2311.07911](https://arxiv.org/abs/2311.07911))与扩展 **IFBench**(2025,[arxiv 2507.02833](https://arxiv.org/abs/2507.02833))。作者评价 IFEval 是近几年**最聪明的评测思路之一**:要求模型遵循格式化指令(关键词、标点、字数/句数、markdown/html 文件格式等),每个条件可用一个特定解析测试校验 → **少数无需 model judge 就能拿到严格分数的 free-form generative evaluation**。属 functional correctness / unit-test 型评测,且**极易再生成/扩展以抗污染**。 +- 反向评测:**CoCoNot**(2024,[arxiv 2407.12043](https://www.arxiv.org/pdf/2407.12043))测模型对不完整/不可答/不安全请求的**不服从**(non-compliance)。 + +### 工具调用(Tool-calling) + +- **TauBench**(2024,[arxiv 2406.12045](https://arxiv.org/pdf/2406.12045)):零售/航空域模拟数据库,模型动作正确更新数据库 + 恰当回答用户才算对;用户由 **LLM 模拟** → 昂贵且易错,但贴近真实用例。 +- **ToolBench**(2023,[arxiv 2305.16504](https://arxiv.org/pdf/2305.16504)):调用真实/模拟 API 解 100 个测试用例;因 API 不稳定被 **StableToolBench**(2025,[arxiv 2403.07714](https://arxiv.org/pdf/2403.07714))用通用 VirtualAPIServer 修复,但改依赖 LLM judge(引入新偏见层)。 +- **BFCL**(2025,[OpenReview](https://openreview.net/pdf?id=2GmDdhBdDk),历史有几年):当前版本 4 个子集——single turn、众包真实函数调用、多轮对话、agentic(web search/memory/SQL);用 **AST + 执行响应 + 状态匹配**(最终状态是否预期)判定正确性;v3 测工具调用、v4 测 web/search。 +- MCP 时代基准(多依赖 model judge + 真实 API → 网络故障/可复现性问题): + - **MCPBench**(2025,[arxiv 2508.20453](https://arxiv.org/abs/2508.20453)):连真实 MCP server(Wikipedia、HF、Reddit、Steam、arxiv…),规则检查工具调用有效性 + LLM judge 查回答。 + - **MCP-Universe**(2025,[arxiv 2508.14704](https://arxiv.org/abs/2508.14704)):11 个真实主题 MCP server;**多个严格 evaluator**(格式 1 个 + 回答正确性 2 个),动态任务用基于执行的评估框架自动抓最新正确值对比——作者认为比 LLM judge 干净得多。 + - **LiveMCPBench**(2025,[arxiv 2508.01780](https://arxiv.org/abs/2508.01780)):本地可部署的 MCP server 集合,测模型在工具列表中**辨别选对工具**的能力;最强模型已达 80% → **接近饱和**。 +- 附:Anthropic 的 [Writing tools for agents](https://www.anthropic.com/engineering/writing-tools-for-agents) 文档。 + +### 助手任务(Assistant tasks) + +> 作者认为 **assistant tasks 是下一代评测的主要方向之一**:解决它们需要多能力组合(长上下文 + 推理 + 工具调用…),又针对具体领域给出真实场景表现;对大众更可理解;若设计得够通用,不检查用了哪个具体工具,只检查最终结果是否正确(复杂任务允许多条成功路径)。 + +- **真实信息检索**:**GAIA**(2023,[arxiv 2311.12983](https://arxiv.org/abs/2311.12983))开启现代 agentic 评测,3 个难度级别(L1 已饱和,L3 仍难);因报告口径不一(公开验证集 vs LLM judge 打私有测试集)数值分散。**BrowseComp**(2025,[OpenAI PDF](https://cdn.openai.com/pdf/5e10f4ab-d6f7-442e-9508-59515c65e35d/browsecomp.pdf))反向构造题目(从结果反推问题,不保证答案唯一),目前可能更难。**GDPval**(2025,[arxiv 2510.04374](https://arxiv.org/abs/2510.04374))覆盖美国 GDP 前几大行业 44 个职业,用 model judges 对比人机表现。**GAIA2**([blog](https://huggingface.co/blog/gaia2))用 mock 手机环境测事件链 + 工具调用;**时间敏感与故意噪声子集(模拟失败 API 调用)最难**,search/execution 对 SOTA 已极容易。 +- **科学助手**:**SciCode**(2024,[arxiv 2407.13168](https://arxiv.org/abs/2407.13168))写科学代码解 STEM 实际问题,发布时模型 <5%;**PaperBench**(2025,[arxiv 2504.01848](https://arxiv.org/abs/2504.01848))给 ICML 论文重建代码库(作者贡献 8K 个独立评分任务,rubric trees 加权),用 LLM judge;**DSBench**(2025,[arxiv 2409.07703](https://arxiv.org/pdf/2409.07703))Kaggle/ModelOff 多模态数据分析;**DABStep**(2025,[arxiv 2506.23719](https://arxiv.org/abs/2506.23719))用**此前私有的真实运营数据分析工作负载**(因此未污染),每道题有 ground truth → 评测无偏且不算太贵,作者很推荐。 + +### 游戏化评测(Game-based) + +- 优点:测**对变化环境的适应性**(多数 assistant tasks 是静态的)、需要长上下文推理、**大众能理解**;缺点:不 grounded in real life,未必反映真实有用用例。 +- **ARC-AGI**([arcprize.org](https://arcprize.org/arc-agi)):2019 版网格谜题(找序列下一项,不给显式规则),类似逻辑 IQ 测试,2024 年几乎被解;**ARC-AGI3**(2025 进行中)含全新游戏(探索、复杂规划、记忆管理),目前最佳解是暴力搜索。类似规则外推基准:**Baba is AI**(2024,[arxiv 2407.13729](https://arxiv.org/abs/2407.13729))。 +- 单人冒险/RPG:**TextQuests**(2025,[blog](https://huggingface.co/blog/textquests))、**Pokemon**(2024,Claude/Gemini 在 Twitch 直播玩)——需要超长程规划、长上下文记忆管理、推理与回溯;生存游戏 **Crafter**(2021,[arxiv 2109.06780](https://arxiv.org/abs/2109.06780),Minecraft 灵感)同能力;多人游戏环境已集成进 **Balrog**(2024,[arxiv 2411.13543](https://arxiv.org/pdf/2411.13543))。 +- 对抗/欺骗类:**Poker**(2025,[arxiv 2501.08328](https://arxiv.org/html/2501.08328v1))、**Town of Salem**(2025)、**Werewolf**([arxiv 2407.13943](https://arxiv.org/abs/2407.13943))、**Among Us**——测逻辑、推理与**欺骗能力**(例:Claude Opus 4 当不了吸血鬼这类欺骗角色,但当农民(非欺骗角色)表现好);合作游戏 **Hanabi**([arxiv 2510.04980](https://arxiv.org/abs/2510.04980))测受限环境下的适应与沟通。 +- 妙处:**单一无歧义的 pass/fail 指标——LLM 赢没赢**。作者建议:能力看 TextQuests,安全看 Town of Salem。 + +### 预测未来(Forecasters) + +- 一类**无法污染**的新任务:预测未发生事件。但不确定是否足够 discriminative,且可能强化 LLM 的"老虎机式成功"感(答对是因为题太简单/公式化,还是真会预测?答错是因为不可预测还是模型差?)。 +- **FutureBench**([blog](https://huggingface.co/blog/futurebench)):浏览 + LLM 按周生成问题 + 博彩市场用户预测;目前模型对人类下注的题仅略好于随机,对模型生成题 3/4 正确(后者更简单)。 +- **FutureX**([arxiv 2508.11987](https://arxiv.org/abs/2508.11987)):预测市场/政府网站/排名网站/实时数据平台 + 模板生成("STOCK 何时到 POINT?"),每天 500 题并过滤无关题。 +- **Arbitrage**([arxiv 2412.18544](https://arxiv.org/pdf/2412.18544)):类似但事件要 2028 年才揭晓。 +- 金钱交易类 arena(Alpha Arena、Trading Agents):因成本每个模型只跑一次 → **没有统计显著性**。 + +### 2025 年 11 月的评测推荐(Recommendations 原文) + +- **核心能力(model builders)**:训练用老能力评测;post-training 用 AIME26(等它发布)、**GPQA、IFEval、SWE-Bench**、选一个长上下文评测(如 HELMET),目标工具使用就加 **TauBench 或 BFCL**。 +- **核心能力(inference 对比模型)**:**IFBench、HLE、MathArena、AiderBench、LiveCodeBench、MCP-Universe**。 +- **长 horizon 任务(真实世界表现)**:**GAIA2、DABStep、SciCode**,或你用例的领域评测。 +- **游戏(鲁棒性与适应性)**:ARC-AGI3(出了再用)、TextQuests、Town of Salem(关注安全)或任何超越 Poker/Chess/Go 的游戏。 +- 趋势总结:评测正从"孤立技能"转向"**能力编排(capability orchestration)**"——系统能可靠组合核心能力 + 工具使用来真正解决问题。作者希望行业**更重视 functional testing 而非 model judges**,以及更可理解的数据集与任务。 + +--- + +## §4 三种任务形式:MCF / CF / FG(与 log-likelihood 细节) + +新版在 inference 基础章节重点讲清了"同一道选择题可以有不同的**任务表述(task formulation)**"以及 log-likelihood 的计算细节——这是旧版没有展开的部分。 + +### log-likelihood 评测的计算步骤 + +给定 prompt 与一个(或多个)答案,问"我的模型生成该答案的概率是多少": + +1. 把**每个 choice 与 prompt 拼接**,传入 LLM,得到每个 token 的 logits; +2. **只保留 choice tokens 对应的 logits**,做 log softmax 得到 log-probabilities(范围 `[-inf, 0]` 而非 `[0, 1]`); +3. **对所有 token 的 log 概率求和**,得到该 choice 的整体 log probability; +4. 最后按 **choice 长度做归一化**(防止偏向短答案)。 + +由此可做:多选中的首选答案;测试某个 choice 概率是否 > 0.5;**研究模型 calibration**(well calibrated model = 正确答案拥有最高概率)。calibration 参考:[Anthropic 论文](https://arxiv.org/abs/2207.05221)(是什么、如何检测、如何训练校准良好)+ [校准的局限](https://arxiv.org/abs/2311.14648)。 + +### 三种常见任务表述(formulation) + +| 表述 | 含义 | 示例 | +|---|---|---| +| **MCF**(Multiple Choice Format) | 选项**显式呈现在 prompt 中**,前缀 A/B/C/D,比较各选项 index 的 likelihood | MMLU | +| **CF**(Cloze Formulation) | **不提供选项**,直接比较不同 choice 的 likelihood | 填空式 | +| **FG**(Freeform Generation) | 对给定 prompt 的 **greedy generation** 计算 accuracy | 自由生成 | + +### 如何选择(对评测的影响) + +- **FG 需要大量潜在知识(latent knowledge),短预训练 ablation 期间对模型通常太难** → 小规模 ablation 一般用多选表述(MCF 或 CF)。 +- 但研究显示**模型在训练早期学不会 MCF**(需要大量训练才获得该技能),CF 提供更好的早期信号 → **建议:小 ablation 用 CF;主 run(main run)加入 MCF**(模型过了某个阈值、SNR 足够后,MCF 给出更好的中期信号)。 +- 关键数字:**MMLU MCF 何时脱离随机表现取决于模型规模与数据量**——7B transformer 约 **500B tokens**(OLMES 论文);1.7B 模型约 **6T tokens**(SmolLM2 实验)。 +- 对于 post-trained 模型,**FG 是主要表述**(要测模型能否真正生成有用回答)。 +- CF 类 sequence-likelihood 评测算 accuracy 时:**正确答案 log probability 最高(按字符/token 数归一化)的题占比**——归一化防止偏向短答案。 + +### tokenization 对 log-likelihood 比较的破坏(细节) + +- 一般希望**把 context 与 choices 一起 tokenize**(产生对模型自然/可能的一串 token)。 +- 但有些 tokenizer(如 Llama 的,[lm-eval issue](https://github.com/EleutherAI/lm-evaluation-harness/pull/531#issuecomment-1595586257))不满足 `tok(context + choice) = tok(context) + tok(choice)`(会增删空格)→ context tokens 会"渗入"choice,破坏比较。 +- 具体例子:若 `C1C2` 恰好是一个 BPE token,context=`C1`、choices=`C2`/`C3`:一起 tokenize 比较的是 `C1C2`(1 token)vs `C1+C3`(2 tokens),**即使按长度归一化也没可比性**;分开 tokenize 比较 `C1+C2` vs `C1+C3`,但 `C1+C2` 这种组合在编码器数据里罕见,模型的 log-probability 会被压低。 +- 解决方案(两害相权):**分别 tokenize context 与 choice,去掉可能附加的 start/end 特殊 token 后再拼接比较**。 + +### generative 评测 + +- 自回归生成:传 prompt → 取最可能下一 token → 重复直到结束条件(最大长度/停止 token)→ 全部生成 token 即答案。 +- 与 reference 比较打分:exact match、BLEU 等简单指标,或 model judges。 +- 补充参考:⭐ [Open LLM Leaderboard MMLU blog](https://huggingface.co/blog/open-llm-leaderboard-mmlu)(多选 log-likelihood 与 generative 的差异及分数含义);⭐ [EleutherAI 对上述推理方法的数学形式化](https://arxiv.org/abs/2405.14782v2)(直接看 Appendix)。 + +--- + +## §5 设计自动评测(designing-your-automatic-evaluation + article.mdx) + +新版把"设计自动评测"重写为完整方法论。**与旧版不同的章节结构**(原文实际顺序): + +``` +Dataset(使用现有数据/聚合 → [嵌入 UsingHumanAnnotators] → 合成创建 → 污染管理) +→ Choosing a prompt(选 prompt) +→ Choosing an inference method(选推理方法) +→ Scoring(打分:log-prob 简单 / generative 复杂) +→ Evaluation's main challenge: Scoring free form text(自由文本评分) + ├─ Automatically:Metrics → Normalization → Sampling → Functional scorers + ├─ With humans + ├─ With judge models(judge 获取 → prompt 设计 → 评估 evaluator → tips → reward models) + └─ Constraining model outputs(prompt → few-shot/ICL → structured generation) +→ The forgotten children of evaluation(统计有效性 / 成本效率) +``` + +其中 **"With judge models" 小节与旧版 03-LLM-as-a-Judge 笔记内容重叠**(judge-LLM 获取、prompt 设计、评估 evaluator、偏差缓解、reward models),但新版表述更精炼,本笔记只简要提及差异点,重点写旧版没有的内容(数据检查清单、指标详解、normalization/Math-Verify、sampling、functional scorers、constraining outputs、统计有效性与成本)。 + +### 5.1 数据集:使用现有 / 聚合 / 合成 + +**使用现有数据与聚合** +- 可直接用现有数据集改 prompt 或指标;也可**聚合多个数据集**建针对性评测套件(例:"Measuring AGI"论文作者的做法)。 +- 聚合时注意:**冗余数据**(大多数数学数据集是同一批初始题的改写/聚合);**来源平衡**(避免单数据集主导偏斜,这也决定按样本还是按子集聚合分数);**格式与难度兼容**(尤其别混用需要 sampling 与不需要的样本)。例子:MMLU、Big-Bench、HELM。 +- EpochAI 2025 研究:如何在单一框架下[最佳聚合 benchmark](https://epoch.ai/blog/a-rosetta-stone-for-ai-benchmarks),让聚合数据集整体更难、更不易饱和。 + +**规则式(rule-based)合成——近乎无限的样本 + 免污染** +- 程序化生成几乎无限的新测试用例,算法可控难度、自动验证。典型任务:数学/逻辑/代码。 +- 例子:**NPHardEval**(图问题、自动验证、月度刷新防过拟合)、**DyVal**、**MuSR**(neuro-symbolic 生成 1000 字谋杀谜题等复杂推理实例)、**BabiQA**(实体按动作序列模拟)、**ZebraLogic**(SAT solver 生成解并迭代最小化线索)、**IFEval**(500+ 条含可程序校验约束的 prompt)、**GSM-Symbolic**(模板生成多样数学题)。 + +**用模型合成数据** +- 流程:从若干 **seed documents**(内部文档或 Wikipedia/Stack Overflow 等高质量公开源,作为 ground truth)出发 → **chunk 成自包含语义单元** → 用 **frontier model + 精心设计的 prompt** 从数据出题(最好要求模型给出题目所依据的 source)→ 用**另一模型家族**的模型当 judge 做自动验证 → **每个步骤都要人工检查数据**("无论多诱人,别全自动")。 +- 进阶:可用 seed prompts 当示例,让外部模型替你写"出题 prompt"。 + +### 5.2 数据创建流程检查清单(来自 article.mdx "Understanding what's in there") + +无论怎么选数据集,**最重要的一步永远是看数据**(看数据本身、看模型生成、看分数),这是确认评测是否贴合用例的唯一方式。检查三点: + +1. **谁创建了样本?** 理想排序:专家 > 付费标注者 > 众包 > 合成 > MTurk。看 data card 的标注者人口统计(理解语言多样性/潜在文化偏差)。 +2. **样本是否被其他标注者或作者复核过?** 看 inter-annotator agreement 是否高、数据集是否被作者整体检查过。对低薪标注者(尤其非目标语言母语的 MTurk)尤其重要,否则会有 typo/语法错误/无意义答案。 +3. **标注者是否拿到清晰的数据创建指南?** 即数据集是否一致。 + +### 5.3 样本检查(Samples inspection) + +- **取 50 个随机样本人工检查——要自己看,不要"让 LLM 帮你找异常"**。 +- 内容质量:prompt 是否清晰无歧义?答案是否正确(例:**TriviaQA 每个问题有多个 gold answers(aliases 字段),有时互相冲突**)?信息是否缺失(例:**MMLU 一些题引用不存在的图表**)? +- 与任务的相关性:这些题是不是你想让 LLM 回答的那类题?是否贴合用例? +- 一致性(尤其要用于 few-shot 或聚合统计时):多选题各样本选项数是否一致?prompt 前后空格是否一致?带环境的话弄清环境会调用什么。 +- **样本数量**:确认足以统计显著——**自动 benchmark 通常最少 100 个样本**。 +- 指标类型也在此检查:automatic / functional / model judge 三类,成本、可复现性、偏差类型不同;**最好(也最稀有)的是 functional 或 rule-based verifier 类指标**。⚠️ code eval 里要小心**过简单的 pass/fail 单元测试**:现在的 LLM 很会"改写全局变量作弊"(尤其 Python 这种作用域可被搞乱的语言)。 + +### 5.4 选择 prompt 与推理方法 + +**Prompt 组成**:可选 task prompt(介绍任务与输出格式)+ 附加 context(source、image 等)+ problem prompt(你问模型的问题)+ 多选时的选项。注意: +- **语义等价的 prompt 微小改动可让结果差很多**,某些 prompt 格式会偏袒/亏待特定模型。 +- 缓解:多次运行不同 prompt 变体(贵);或**一次运行中把多种 prompt 格式分配给等价难度的不同样本**。 +- 用 few-shot 示例帮模型跟格式,加 connector words 有帮助。 + +**推理方法选择**: +- **log-probabilities**(适合 MCQA、测知识/消歧): + - Pros:所有模型都能"看到"正确答案;提供 confidence/calibration 代理;快(尤其只预测一个 token:A/B/C/D 或 Yes/No);小模型也能拿到任务信号。 + - Cons:**略微高估小模型**(若自由生成它们可能生成选项之外的内容);部分模型有 **choice order bias**([arxiv 2309.03882](https://arxiv.org/abs/2309.03882))——除非预算允许打乱样本顺序重跑 n 次取显著性。 + - 加速技巧:若选项都是单 token,**只跑一次 context 的 forward pass**,直接在完整词表概率分布上取各选项的 logprob,省掉 n 次拼接推理。 +- **generative**(测流畅度、推理、是否真能作答;**评测 reasoning 模型最相关**): + - Pros:与真实兴趣一致;**唯一能同时评测开源与闭源模型的方式**。 + - Cons:更难打分;比 log-likelihood 贵(尤其带 sampling 或 reasoning 模型)。 + +### 5.5 指标详解(打分自由文本) + +log-probability 打分容易:accuracy 变体(最可能 choice 是否最佳),**务必按序列长度归一化**(字符/token/PMI),也可看 perplexity/recall/f1。generative 打分是难点: + +**基于匹配(match-based)的指标**: +- **exact match**:最简单最不灵活,无部分 credit(错一个词 = 全错)。注意 "exact match" 是伞形称呼,常包含 fuzzy 变体:带 normalization、只比 token 子集(如 prefix)。 +- **BLEU**:与参考译文做 n-gram 重叠;仍广泛使用但有**偏向短译文的长度偏差**、句级与人类相关性差(语义等价但写法不同就不行)。 +- **ROUGE**:类似但更偏向 recall 的 n-gram 重叠。 +- **TER**(translation error rate):从预测到参考所需的编辑次数(类似编辑距离)。 +- **BLEURT**:基于 BERT 的学习表示,用 WMT 人类判断训练,语义理解强于 n-gram,但需下载模型 + task-specific fine-tuning 才最优。 +- 变体/扩展:CorpusBLEU、GLEU、MAUVE、METEOR 等。 + +**聚合方式**: +- binary 分数:**precision**(FP 代价高时关键)、**recall**(漏报代价高时关键)、**F1**(平衡二者,适合不平衡数据)、**MCC**(Matthews Correlation Coefficient,考虑全部混淆矩阵元素,适合不平衡数据)。 +- continuous 分数:**MSE**(重罚大误差、但对 outlier 权重高)、**MAE**(更均衡);若假设线性回归(如研究 calibration):**R²**、**Pearson**(线性关系、假设正态)、**Spearman**(单调关系、无正态假设)。 +- **别只测平均**:对某些领域(医疗、面向公众的 chatbot、毒性)需要评估**最差表现**。 + +**自动评测的优缺点**:一致可复现(同一模型跑 10 次同结果,可做公平排名)、规模成本低、可理解;缺点:复杂任务上用途有限——自动指标需要**完美、唯一、无歧义的 reference/gold**,复杂能力很难分解成单一简单答案。 + +### 5.6 Normalization 与 Math-Verify + +- Normalization = 把字符串改写成适配特定参考格式(不惩罚多余空格/标点/大小写);对数学评测等**需要从长预测中提取方程并对比参考**的任务至关重要。 +- 原文件列出了用 SymPy 朴素提取 MATH 数据集答案时的典型问题,以及 **Math-Verify**(专用数学解析器)如何解决: + +| 示例 | 问题 | ✅ Math-Verify | 🛑 朴素方法 | +|---|---|---|---| +| "Therefore, the perimeter of one of these triangles is $14 + 7\sqrt{2}$ inches, expressed in simplest radical form." | 提取失败 | `7\*sqrt(2) + 14` | None | +| "Therefore, the sum of the infinite geometric series is \(\frac{7}{9}\)." | 提取失败 | `7/9` | None | +| "The final answer is $2x + 4y + z - 19 = 0$. I hope it is correct." | 参数方程部分解析 | `Eq(2\*x + 4\*y + z - 19, 0)` | `0` | +| \(23\) | latex 边界导致提取失败 | `23` | None | +| \((- \infty, -14) \cup (-3, \infty)\). | 区间提取失败 | `Union(Interval.open(-oo, -14), Interval.open(-3, oo))` | None | +| 100\% | 无效符号提取失败 | `1` | None | +| 1/3 == 0.333333 | 不支持舍入 | `True` | `False` | +| sqrt(1/2)\*7 == sqrt(0.5)\*7 | 不支持数值求值 | `True` | `False` | + +- 详见 [Math-Verify leaderboard blog](https://huggingface.co/blog/math_verify_leaderboard)。⚠️ Normalization 设计不好**很容易不公平**([open-llm-leaderboard-drop](https://huggingface.co/blog/open-llm-leaderboard-drop)),但总体上在任务层面仍提供信号。 +- 对 CoT / reasoning 生成,**需先从输出中移除 reasoning trace**(不是最终答案的一部分)再取答案。 + +### 5.7 Sampling 指标(pass@k / maj@n / cot@n / avg@n) + +多次采样聚合比单次 greedy 更稳健,对复杂推理任务尤其重要: + +- **pass@k over n**:n 个生成样本中至少有 k 个通过。两种实现:朴素 `pass@k = (c >= k)`;**无偏估计量** `pass@k = 1 - C(n-c,k)/C(n,k)`(c = n 个样本中正确的数量)。 +- **maj@n(majority voting)**:采 n 次取最频繁答案;能滤掉杂散输出,当模型**正确推理路径比错误更一致**时效果好;常用于数学与推理。 +- **cot@n**:采 n 条推理链评估;可与 majority voting 或 pass@k 组合(采 n 条链、提取最终答案、取多数或设阈值)。 +- **avg@n**:n 个样本分数平均;比"取最好"或"取最常见"更稳定的性能估计。 + +使用要点: +- **永远报告全部采样参数**(temperature、top-p、k),它们显著影响结果。 +- **训练评测/ablations:❌ 一般避免 sampling 指标**(贵、加方差),用固定 seed 的 greedy decoding。 +- **post-training 评测:✅ 需要**,sampling 能暴露 greedy 看不到的能力(推理/数学/代码类复杂任务)。 +- **推理时:✅ 有用**——估计多次采样能提升多少,尤其研究 test-time compute 能把小模型推到多远。 +- ⚠️ 采样 k 次使评测成本 ×k,贵模型/大数据集上累积很快。 + +### 5.8 Functional scorers(函数式打分 / 功能测试) + +- 核心思想:**不做模糊字符串匹配,而是检查输出是否满足可验证的约束**。更灵活、允许通过规则生成"无限"更新测试用例(降低过拟合)。 +- **IFEval / IFBench 是最佳范例**:不问"文本是否匹配参考答案",而问"文本是否满足指令中的格式约束",例如: + - *"Include exactly 3 bullet points"* → 校验输出恰好 3 个 bullet + - *"Capitalize only the first sentence"* → 解析并检查大小写模式 + - *"Use the word 'algorithm' at least twice"* → 数词频 + - *"Your response must be in JSON format with keys 'answer' and 'reasoning'"* → 校验 JSON 结构 +- 每个约束配一个 rule-based verifier → 评测更无歧义、可解释、快、且**远便宜于 model judges**。 +- 灵感来自代码评测(单元测试是标准做法)。关键挑战:**找到能用程序验证的文本属性**,对指令遵循效果很好,扩展到其他文本属性需要创造力。 + +### 5.9 人类评测(简述,与旧版一致) + +- **Vibe-checks**:社区个人在未公开 prompt 上的手动"体感"评测,多为轶事证据、易受确认偏差影响;但[是自家用例的好起点](https://olshansky.substack.com/p/vibe-checks-are-all-you-need)。 +- **Arena**:社区投票排名(如 LMSYS chatbot arena),Elo 聚合;主观性强、标注者偏好有文化差异([arxiv 2404.16019](https://arxiv.org/abs/2404.16019v1)),靠"群众智慧"规模效应平滑。 +- **Systematic annotations**:付费精选标注者 + 极其具体的指南;贵、不自动、仍有人类偏差(不同身份者对毒性打分差异很大,[arxiv 2205.00501](https://arxiv.org/abs/2205.00501))。 +- 扩展规模三条路:无数据集(给任务+评分指南+模型)→ 有数据集(preprompt + 输出 + 指南)→ 有数据集和分数(error annotation 复核评测方法)。 +- 人类评测的已知偏差(第一印象、语气、与标注者价值观对齐等)必须考虑:**任何要求事实性的任务(代码、知识)都应叠加更稳健的评测方式**(专家、自动指标等)。详见 [[02-Human-Evaluation]]。 + +### 5.10 Judge models(新版压缩版,与 [[03-LLM-as-a-Judge]] 重叠) + +> 本节与旧版 03 笔记内容重叠:新版把整个 judge 大章节压缩进 designing 的 "With judge models" 小节,表述更精炼、几乎没有新增论点。以下是压缩后的要点,供快速对照;完整展开见 [[03-LLM-as-a-Judge]]。 + +- 定义:用神经网络(或其衍生品)评估另一神经网络的输出;多数情况评文本生成。 +- 两条路线:**通用高能力模型**(LLM + prompt)或**小型专用模型**(从偏好数据训练判别,如"毒性垃圾邮件过滤器")。 +- **闭源模型(Claude、GPT-o)**:不可复现(API 更新随时变)、黑盒、隐私风险;优点是免本地部署。**开源模型正在追平**(DeepSeek R1、gpt-oss、最新 Qwen 是竞争性替代)。 +- **小型专用 judge**(数 B 参数、可本地跑):Flow-Judge-v0.1(3.8B,Phi-3.5-mini-instruct 微调)、Prometheus(13B,从零训练)、JudgeLM(7–33B)。**自训 judge 除非 niche 领域否则不建议**;偏好数据可来自 [lmsys 竞赛](https://www.kaggle.com/competitions/lmsys-chatbot-arena) 或 Prometheus collections;[从 reward model 起步优于从 instruct model](https://x.com/dk21/status/1826292289930674590)。 +- **judge prompt 设计**:任务描述 → 评估标准(含详细评分系统)→ 推理步骤 → 指定输出格式(如 JSON `{"Score": ..., "Reasoning": ...}`)。参考 [MixEval](https://github.com/huggingface/lighteval/blob/main/src/lighteval/tasks/extended/mix_eval/judge_prompts.pyy)/[MTBench](https://github.com/huggingface/lighteval/blob/main/src/lighteval/tasks/extended/mt_bench/judge_prompt_templates.py) 模板。**Pairwise 比较比打分与人类偏好相关性更好**([arxiv 2403.16950](https://arxiv.org/abs/2403.16950));整数刻度要给每个分数的详细解释或用 additive prompt;**每个能力一个 prompt**;可用 few-shot / reference / CoT(先输出推理再打分)/ 多轮分析 / **jury(多个 judge 聚合,可用多个小模型降本)** 提升准确率。 +- **评估你的 evaluator**(上线前必做):选 baseline(**约 50 个示例即可**,但必须 representative / discriminative / high quality)→ 选 metric(binary/pairwise 的 accuracy/precision/recall 易解释;score 相关性难)→ 评估并定阈值:**pairwise 对比可设 80%–95% accuracy;score 相关性文献常满意于 0.8 Pearson**(也有人宣称 0.3 就算与人类标注相关良好——"ymmv")。 +- **judge 偏差与缓解**:internal consistency(self-consistency prompting 取多数)→;self-preference(用 jury);input perturbation blindness(**先给 reasoning 再给分**、给连贯评分刻度);position-bias(随机交换答案位置、用 logprob 归一);verbosity/length-bias(考虑长度差,[arxiv 2404.04475](https://arxiv.org/abs/2404.04475));format bias(遵守模型训练 prompt 格式)。 +- **LLM evaluators 的已知弱点**:整体上**不擅长识别幻觉**(尤其 partial hallucinations,[arxiv 2305.11747](https://arxiv.org/abs/2305.11747)、[2303.08896](https://arxiv.org/abs/2303.08896));在摘要/忠实性上与人类标注相关性低到中等,跨任务不持续与人类一致([arxiv 2406.18403](https://arxiv.org/abs/2406.18403))。 + +**Reward Models(奖励模型)** +- 学人类标注预测 prompt/completion 对得分,目标是与人偏对齐;最常用 **Bradley-Terry**:`p(completion b better than a) = sigmoid(score_b - score_a)`,只用 pairwise 比较训练(比收集分数容易),但**只能比较同一 prompt 内的 completion**。 +- 变体:更细粒度概率版([RLHFlow pair-preference](https://huggingface.co/RLHFlow/pair-preference-model-LLaMA3-8B));**绝对分数**版 **SteerLM**([arxiv 2311.09528](https://arxiv.org/abs/2311.09528),评测易用但数据难收集——绝对分数比 pairwise 不稳定);两者皆出的 **HelpSteer2-Preference**([2410.01257](https://arxiv.org/abs/2410.01257))与 **ArmoRM**([2406.12845](https://arxiv.org/abs/2406.12845))。 +- **评测用法**:绝对分数可平均成汇总;但**相对分数不要直接平均 raw reward**(outlier 与 prompt 难度不同会偏置)——改用 **win rates**(对参考 completion 集合,胜率百分比)或 **win probabilities**(均值概率,更细更平滑)。 +- 特性:**非常快**(小模型一次 forward pass)、**确定性**、**少 position bias**、**无需 prompt engineering**;缺点:需专用微调、分布外任务表现差、**同一 RM 既用于 RL 又用于评测会过拟合**(reward hacking)。 +- 资源:RewardBench Leaderboard、Nemotron 论文用法、用 win rate 跟踪训练以**检测退化并选最优 checkpoint**([arxiv 2410.11677](https://arxiv.org/abs/2410.11677v1))。 + +### 5.11 约束模型输出(Constraining outputs) + +三级递进,目的都是让输出格式可预测、简化评测: + +1. **用 prompt**:task prompt 里给非常具体的指令(`Provide numerical answers in digits.`、`Use no abbreviation.`)。不一定总有效,但对高能力模型通常够用——**GAIA 论文就是这么做的**。 +2. **Few-shots / in-context learning**:提供示例隐式引导模型跟随重复的 prompt 形状。**2023 年底之前整体很好用**;此后 instruction tuning 与持续预训练里的指令数据把更新模型**偏向特定输出格式**([arxiv 2407.07890](https://arxiv.org/abs/2407.07890) 称之为 *Training on the test task*,作者称之为 *overfitting the prompt format*);**reasoning 模型因 reasoning trace 与 few-shot 配合不好**;小上下文旧模型也可能塞不下示例。 +3. **Structured text generation(结构化生成)**:用 grammar 或正则约束输出路径。**`outlines` 库用有限状态机(FSM)实现**(其他方法如 guidance 的 interleaved generation 用于 JSON 等特定格式)。效果:**降低评测中的 prompt variance,结果与排名更稳定**([evaluation-structured-outputs blog](https://huggingface.co/blog/evaluation-structured-outputs))。⚠️ 但近研究([arxiv 2408.02442](https://arxiv.org/abs/2408.02442))显示**结构化生成可能降低某些任务(如推理)的表现**——把先验推离了期望的概率分布。入门:⭐ [outlines 的 FSM 讲解](https://blog.dottxt.co/coalescence.html)、[方法论文](https://arxiv.org/abs/2307.09702)。 + +--- + +## §6 FineWeb 预训练评测选型方法论(重点:全新内容) + +> 来自 `picking-your-evaluation.mdx`(标题 "Picking good automatic evaluations for pretraining")。场景:**训练进行中**就想知道模型学得怎么样——这时需要的评测与"最终性能"评测性质不同:**即使模型还不好,任务也要给出好信号**。FineWeb 团队为此设计了完整方法,覆盖 9 种语言。 + +### 6.1 规模与多样性(185 tasks) + +- 对这 9 种语言**收集并实现能找到的所有任务,共 185 个**。 +- 任务选择两大目标:**评测多样性** + 每个任务提供**可靠信号(reliable signal)**。 +- 多样性覆盖五类能力: + - **Reading comprehension (RC)**:理解给定上下文并作答 + - **General knowledge (GK)**:无上下文的事实问答 + - **Natural Language Understanding (NLU)**:理解输入语义 + - **Common-sense reasoning (RES)**:需要具身知识(embodied knowledge)的简单推理 + - **Generative tasks**:无多选题"辅助"时用目标语言生成文本 + +### 6.2 实验设置(代价与规模) + +- 每种语言训练多个 **1.5B 参数模型**,用 **30B tokens**(取自 5 个最大的开放多语言 web 数据集的子集);同一超参与 tokenizer;**0-shot、无 instruction、无 system prompt**;按固定 checkpoint 间隔评测。 +- 因任务实现反复迭代,总消耗 **73,000 GPU hours** 🔥;共训练 **49 个模型**,由此定义"可靠信号"。 + +### 6.3 可靠信号(Reliable Signal)的四个标准 + +原文定义:任务提供可靠信号 = 分数**高于随机基线**、**随训练推进而上升**、**跨不同 seed 低方差**、**每个训练步给出一致的模型排序**(对同规模、同超参、同数据量的模型)。 + +1. **单调性(Monotonicity)**:任务必须能从训练数据中学会、且学习过程可随训练逐步观察到(若随时间不提升,未来能否提升都不确定)。 + - 度量:**Spearman rank correlation**(steps ↔ score)——能捕捉非线性的单调提升。 + - 阈值:**平均相关性 ≥ 0.5**(跨所有模型训练 run)。 + +2. **低噪声(Low noise)**:区分"评测噪声"与"真实性能差异"。噪声来源:训练随机性(token 采样、数据打乱、初始化;[Madaan et al., 2024](https://arxiv.org/abs/2406.10229))。做法:在自家单语语料(未过滤 CommonCrawl)上**用不同 seed 再训 4 个模型**,然后: + - 每步(约每 1B tokens)算模型分数的标准差 → **per-step-std**; + - 对所有 per-step-std 取平均 → **avg-std**(因用的是更"脏"数据训练的模型、方差偏高,视为全架构/数据集的上界); + - **signal-to-noise ratio (SNR) = 30B tokens 时所有 run 的分数均值 ÷ avg-std**,作为任务变异性的主指标。 + - 阈值:**SNR > 20**。唯一例外:**generative 任务**(SNR 通常偏低,但保留有价值——能看出模型在无选项自由生成时表现如何;多语言场景尤其重要,有些模型任务分数很高但生成任务会突然用错语言回答!)。 + - 额外要求:假设模型表现跨 seed 正态分布,benchmark-run 表现至少高于随机基线 **3 个 final-stds**(形式上 `benchmark-run performance - benchmark random baseline > 3 * final-std`),即 99.85% 的 seed 分数高于随机。 + +3. **非随机表现(Non-Random Performance)**:很多能力训练后期才习得,**许多任务(尤其数学这类较难的)长时间停留在基线水平**——有用但不适合早期预训练评测,所以**不保留**。 + - 计算:任务随机基线(多选题 = 所有样本 `sum(1/n_choices)`;生成式 = 0),任务距基线距离 = 所有模型中的最高分 − 基线。 + +4. **模型排序一致性(Model Ordering Consistency)**:评测的最终目的是比较模型与数据集——我们希望任务在**很少 token(30B ablation)时对数据集的排序,与训练更久(300B+)后的排序一致**,即任务对预训练未来表现有预测力。严格证明不可能,但有可测的必要条件:**大规模一致的前提是小规模一致**。 + - 度量:相邻两个训练步之间模型排名的**平均 Kendall's Tau**(只取 15B tokens 之后的步——之前排序噪声太大)。高值 = 排序随训练推进保持一致。 + - 无严格最小值,用来**在任务之间做比较**。 + +**交互式图表:好/坏信号示例**(新版 Space 特有的 d3 图,直观展示四标准的判例;图表配置还揭示了实际使用的指标名,如 `acc_norm_token`、`acc_norm_pmi`): + +| 标准 | ✅ 好例子 | ❌ 坏例子 | +|---|---|---| +| Monotonicity(`acc_norm_token`) | `mlmm_hellaswag_fra_cf [fr]`(法语 HellaSwag,随 tokens 平滑上升) | `mlmm_truthfulqa_ara_cf:mc1 [ar]`(阿拉伯语 TruthfulQA,无趋势) | +| SNR(`acc_norm_token`) | `xstory_cloze_tel_cf [te]`(泰卢固语,各 seed 紧密) | `tydiqa_tel [te]`(`prefix_match`,噪声大) | +| Non-Randomness | `agieval_zho_cf` 用 `acc_norm_pmi [zh]`(中文 AGIEval,明显高于随机) | 同一任务用裸 `acc [zh]`(停留在随机水平)——同一任务换个指标信号天差地别 | +| Kendall's Tau(`acc_norm_token`) | `xcsqa_ara_cf [ar]`(阿拉伯语,排序稳定) | `thai_exams_tha_cf [th]`(泰语考试题,排序漂移) | + +> 注意 `agieval_zho_cf` 一例:**同一个任务,用 `acc_pmi` 就是非随机、用裸 `acc` 就是随机表现**——这正是 §6.4 强调"指标选择决定信号"的直观证据。 + +### 6.4 指标选择(Metrics) + +多选任务的 CF target 就是选项本身,每个选项的 token 数、字符数、无条件概率(无上下文前缀下生成该选项的概率)都不同——不归一化的话模型会偏好更少 token 的答案。考虑的 accuracy 变体: + +| 指标 | 公式 | +|---|---| +| `acc` | $\underset{i}{\arg\max}\big(ln(P(a_i \mid q))\big)$ | +| `acc_char` | $\underset{i}{\arg\max}\dfrac{ln(P(a_i \mid q))}{num\_characters(a_i)}$ | +| `acc_token` | $\underset{i}{\arg\max}\dfrac{ln(P(a_i \mid q))}{num\_tokens(a_i)}$ | +| `acc_pmi` | $\underset{i}{\arg\max}ln\dfrac{P(a_i \mid q)}{P(a_i \mid u)}$,其中 $u = $ `"Answer:"` | + +> 实际落地时,FineWeb 团队在 lighteval 中使用的指标名是 **`acc_norm_token`**(= 上面的 `acc_token`)与 **`acc_norm_pmi`**(= 上面的 `acc_pmi`)——交互图表配置里出现的就是这些名字,"norm" 指长度/概率归一化。 + +- `acc_pmi` 度量"给了问题上下文相比没有上下文,模型更可能选 $a_i$ 多少"——当正确选项含普遍罕见 token、模型天然不爱选它时有用。详见 [Gu et al., 2024](https://arxiv.org/abs/2406.08446)(OLMES)与 [Biderman et al., 2024](https://arxiv.org/abs/2405.14782)。 +- 生成式任务用:**`prefix_match`**(只要求答案前缀 exact match)与 **`f1`**(用 word tokenizer 在预测/gold 词上算 F1);两者都做轻预处理:去冠词、去标点、小写化。 +- 选指标本身就是难题:**没有单一指标全面胜出**,常出现"一个指标单调性更好、另一个 SNR 更高"的两难,团队只能按其他语言的既有实现来定(并承认这种手挑未必可复制)。给出建议: + +➡️ **多选任务** +- **base accuracy**:适合选项细微变化的任务(如 Yes/No/Also 的 NLI 类),此时选项常各是单 token。 +- **PMI**:对"难"推理与知识任务(**AGIEVAL、MMLU**)极其有效——常是唯一高于随机的指标;但**平均而言是全场最弱指标,且计算贵 2 倍** → 只在复杂推理与知识任务用。 +- **长度归一化指标(token 或 character)整体最可靠**,但最优选择取决于**语言**而非任务 → **推荐取 `max(acc_char, acc_token)`** 得到最可靠结果。注意 `acc_token` 高度依赖 tokenizer(好在 ablation 中所有模型用同一 tokenizer)。 + +➡️ **生成式任务** +- 选择更清晰:**除非必须 exact match(如数学),建议用 F1**——F1 噪声更小、对生成的小变化更稳健。 + +--- + +## §7 统计有效性与成本效率("The forgotten children of evaluation") + +> 新版把这两件事命名为"**评测中被遗忘的孩子**",来自 designing 章节结尾——旧版没有的独立主题。 + +### 统计有效性(Statistical validity) + +- 报告评测结果时必须**在点估计(point estimate)之外附上置信区间(confidence intervals)**。 +- 自动指标:从分数的标准差或 **bootstrapping** 得到(相对简单)。 +- model judge:近期论文([arxiv 2511.21140](https://arxiv.org/pdf/2511.21140))建议用估计器做 **bias correction**。 +- 人类评测:报告 **agreement**(一致性)。 +- 也可用 **prompt variations** 来算:以略微不同的方式问同一问题、或对不同 prompt 格式重跑同一样本。 + +### 成本与效率(Cost and efficiency) + +作者呼吁集体开始**按模型运行成本报告评测结果**——一个要思考 10 分钟、花 10K tokens 回答 `10 + 1` 的 reasoning 模型(还可能在二进制 vs 十进制算术上跑题),比用几十 token 答 30 道题的 smol 模型低效得多。建议报告: + +- **Token 消耗**:评测所用的**输出 token 总数**——估计效率的关键,直接影响 model-as-judge 评测成本;token 数直接影响货币成本并帮他人估算算力需求。**货币成本**也是效率的良好代理。 + - 成本指标在**比较评测方法**时也很关键:强 LLM judge 信号可能更好,但**相对自动指标的 100x 成本**未必值当;sampling 类指标(pass@k、maj@n)成本随样本数倍增,要与其信号增益权衡。 +- **时间**:模型完成评测的推理时间(含实际推理 + API rate limit 开销)——对时间敏感应用(如 GAIA2 这类 agentic 工具使用)尤其重要。 +- **环境足迹**:报告运行模型的碳排放在资源有限的当下越来越重要——含**训练碳排放与推理能耗**,取决于模型大小、硬件(若已知)与生成的 token 数。**一些更小或量化模型达到非常有意思的 performance-to-consumption 比值**。(原文在此段结束。) + +> 注:`2025-evaluations-for-useful-models.mdx` 在 Recommendations 一节自然收尾,无截断;`designing-your-automatic-evaluation.mdx` 在 environmental footprint 段结束——**原文到此**。 + +--- + +## §8 新版结论要点(来自 article.mdx Conclusion) + +> "Evaluation is both an art and a science." + +作者希望读者记住五点: + +1. **Think critically about what you're measuring(批判性看待你在测什么)**:评测是能力的**代理(proxy)**,benchmark 高分不保证真实世界表现;自动指标、人类 judge、model judge 各有偏差、局限与权衡。 +2. **Match your evaluation to your goal(让评测匹配目标)**:训练 ablation → 快、可靠、在小模型上也有强信号的基准;最终模型选型 → 更难、未污染、测整体能力的基准;特定用例 → 建贴合你问题与数据的自定义评测。 +3. **Reproducibility requires attention to detail(可复现性需要抠细节)**:prompt、tokenization、normalization、模板、随机种子的微小差异就能让分数差几分;报告结果要透明交代方法;复现别人结果时,**即使你试图控制每个变量,精确复现也极其困难**。 +4. **Prefer interpretable evaluation methods(优先可解释的评测方法)**:能选时,functional testing 与 rule-based verifiers 优于 model judges;能理解、能 debug 的评测给出更清晰可操作的洞察——**评测越可解释,你越能改进模型**。 +5. **Evaluation is never finished(评测永无止境)**:模型变强 → benchmark 饱和;训练数据增长 → 污染更易发生;用例演进 → 新能力需要测量。**评测是一场持续的战役。** + +收尾金句: + +> "The models we build are only as good as our ability to measure what matters." +> (我们构建的模型,其好坏只取决于我们测量重要之事的能力。) + +致谢名单(Acknowledgments):Hynek Kydlicek、Loubna Ben Allal、Sander Land、Nathan Habib 等直接或间接贡献者。 + +--- + +## 参考资料 + +**新版 Space(主入口)** +- 交互式页面: + +**各章节 raw 链接**(`https://huggingface.co/spaces/OpenEvals/evaluation-guidebook/raw/main/app/src/content/...`) +- 总组装(含结论、saturation/contamination 定义、数据检查清单):`article.mdx` +- Intro(评测视角、智能定义困境):`chapters/intro.mdx` +- Model inference and evaluation(MCF/CF/FG、calibration):`chapters/general-knowledge/model-inference-and-evaluation.mdx` +- 2025 evaluations for useful models(2025 评测全景):`chapters/general-knowledge/2025-evaluations-for-useful-models.mdx` +- Designing your automatic evaluation(设计自动评测):`chapters/automated-benchmarks/designing-your-automatic-evaluation.mdx` +- Picking good automatic evaluations for pretraining(FineWeb 方法论):`chapters/general-knowledge/picking-your-evaluation.mdx` +- Some evaluation datasets(数据集大表,**存在于仓库但页面正文不渲染**,仅被 2025 章节以链接引用):`chapters/automated-benchmarks/some-evaluation-datasets.mdx` +- Using human annotators(**嵌入 designing 章节内部**,位于 "Using existing data" 与 "Creating a dataset synthetically" 之间):`chapters/human-evaluation/using-human-annotators.mdx` +- Troubleshooting reproducibility:`chapters/troubleshooting/troubleshooting-reproducibility.mdx` + +**本专区相关笔记** +- [[00-Overview]](旧版总览,含新版迁移说明) +- [[01-Automatic-Benchmarks]](旧版自动评测) +- [[02-Human-Evaluation]](旧版人类评测) +- [[03-LLM-as-a-Judge]](旧版 judge 大章节——新版压缩版的可对照全文) +- [[05-General-Knowledge]](旧版 tokenization/inference) +- [[06-Yearly-Dives]](旧版年度深潜) + +**正文出现的关键论文/资源(按章节)** +- ImageNet 时代 benchmark 设计教训:[arxiv 2404.02112](https://arxiv.org/pdf/2404.02112) +- OLMES(PMI 推荐):[arxiv 2406.08446](https://arxiv.org/abs/2406.08446);推理方法数学形式化:[arxiv 2405.14782v2](https://arxiv.org/abs/2405.14782v2) +- MMLU 各实现差异(lm_eval/helm/作者原实现):[Open LLM Leaderboard MMLU blog](https://huggingface.co/blog/open-llm-leaderboard-mmlu) +- Training on the test task(prompt 格式过拟合):[arxiv 2407.07890](https://arxiv.org/abs/2407.07890) +- 结构化输出评测(prompt variance):[evaluation-structured-outputs blog](https://huggingface.co/blog/evaluation-structured-outputs);outlines:[arxiv 2307.09702](https://arxiv.org/abs/2307.09702) +- Math-Verify:[blog](https://huggingface.co/blog/math_verify_leaderboard) +- EpochAI benchmark 聚合(Rosetta Stone):[epoch.ai](https://epoch.ai/blog/a-rosetta-stone-for-ai-benchmarks) +- 旧数据集清单(2025 章节末尾保留链接):[GitHub evaluation-guidebook/automated-benchmarks/some-evaluation-datasets.md](https://github.com/huggingface/evaluation-guidebook/blob/main/contents/automated-benchmarks/some-evaluation-datasets.md) diff --git a/01_Projects/Personal-Tech/LLM_Evaluation/README.md b/01_Projects/Personal-Tech/LLM_Evaluation/README.md index 7996bb8..14b08eb 100644 --- a/01_Projects/Personal-Tech/LLM_Evaluation/README.md +++ b/01_Projects/Personal-Tech/LLM_Evaluation/README.md @@ -63,3 +63,4 @@ created: 2026-08-21 - 职业与岗位背景:[[02_Areas/Job/llm_data_annotation_programmer_roadmap|大模型数据标注与程序员入门]](原文存于 02_Areas/Job) - 入门认知草案:[[02-Intro-Cognitive-Framework-Draft|入门认知框架(草案)]] - 路线图重构草案:[[03-Roadmap-Refactor-Outline-Draft|实战路线图重构大纲(草案)]] +- 外部权威知识参考:[[04-Reference-Archive/evaluation-guidebook/00-Overview|HuggingFace Evaluation Guidebook 中文提炼]](自动基准 / 人工评测 / LLM-as-judge / 排错,按主题查阅)