The LLM Evaluation Guidebook

文章标题和作者/机构
- 英文标题: The LLM Evaluation Guidebook
- 作者/机构: Clémentine Fourrier, Thibaud Frere, Guilherme Penedo, Thomas Wolf (2025)

A1 主要贡献

本文是一本详尽的LLM(大型语言模型)评估指南,旨在帮助研究人员、工程师和模型使用者理解LLM评估的复杂性。其核心目标是解答“如何判断一个模型是否优秀?”这一根本问题。

核心问题与研究目标:
面对层出不穷的模型排行榜、基准测试和SOTA(state-of-the-art)声明,用户和开发者需要一个清晰的框架来理解评估能做什么、不能做什么,以及如何信任不同的评估方法。本指南旨在阐明评估的局限性与偏见,指导如何选择合适的基准(特别是2025年的相关基准),并为需要定制评估方案的用户提供设计方法。

主要面向对象与创新点:
本指南从两个核心视角阐述了评估的需求和方法,这构成了其主要贡献:

  1. 模型构建者视角(Model Builder Perspective)

    • 需求:在模型开发(从头训练或微调)过程中,构建者需要通过评估来验证架构、数据组合和训练策略的有效性。他们需要快速、高信噪比的基准来进行大量的消融实验(ablations),以确保模型性能未受损害并有所提升。
    • 指南提供的价值:指导构建者选择能够在模型训练早期就提供有效信号的基准,用于监控训练过程、比较不同设计选择的影响,并最终评估最终模型的性能。
      消融实验示例
  2. 模型使用者视角(Model User Perspective)

    • 需求:使用者希望为特定的应用场景(如数学、编码、特定知识领域)选择性能最佳的模型。他们需要能够准确反映其用例性能的评估。
    • 指南提供的价值:帮助使用者解读现有的排行榜和基准,并指导他们在标准基准不适用时,如何设计和实施与自己特定任务高度相关的定制评估

核心观点与警示:
指南强调,任何评估结果都应审慎看待。目前我们无法断言“某个模型在某项能力上是最好的”,而应更精确地表述为“在这些我们希望能够代表某项能力的特定任务样本上,该模型表现最好,但这并无保证”。这提醒读者要始终对SOTA声明保持批判性思维。

此外,指南还探讨了评估“通用人工智能(AGI)”的挑战,指出由于缺乏清晰定义、现有框架的局限性以及“智能”目标本身不断变化,追求一个单一的AGI评估指标可能是徒劳的。相反,我们应该专注于评估模型在具体、有用任务上的表现。

A3 LLM评估基础知识

Tokenization(分词)

模型输入的预处理。输入文本(在推理时称为prompt)首先被分割成称为tokens的小文本单元,这些单元可以是一个或多个字符,甚至是一个完整的词,每个token都与一个数字相关联。模型能够解析的全部token范围被称为其词汇表(vocabulary)。

分词原理与演进。由于大型语言模型本质上是大型数学函数,它们处理的是数字而非文本。为了将句子转换为数字,首先需要决定如何将句子切分成小块,然后将每个小块映射到一个数字,这个过程就是分词。过去,人们尝试过基于字符的分词(例如,a -> 1, b -> 2)或基于单词的分词(例如,a -> 1, aardvark -> 2)。这两种方法都有一个显著的局限性:它们会从输入文本中移除信息,例如抹去了可以从词形中看出的语义联系(如 "dissimilar", "similarity", "similarly"),而我们希望模型能保留这些信息以连接相关词汇。因此,有人提出了将单词切分成子词(sub-words)并为这些子词分配索引的想法。最初这是通过形态句法规则完成的,但现在大多数人使用字节对编码(Byte Pair Encoding, BPE),这是一种智能的统计方法,可以根据子词在参考文本中的频率自动创建它们。

数字分词的挑战。构建一个分词器需要做出比预期更多的选择。例如,在对数字进行分词时,不应使用基本的BPE。是只索引0到9,并假设所有其他数字都是这些数字的组合?还是想单独存储高达十亿的数字?当前知名的模型展示了多种处理方法,但尚不清楚哪种方法更有利于数学推理。这将影响一些数学评估(这也是几乎没有纯算术评估的原因)。

微调模型、系统提示和聊天模板的重要性。在2022年之前,模型通常只是进行预训练:文本输入,文本输出。随后,在2023年出现了指令微调和聊天模型,2025年则出现了推理模型。这意味着我们从使用原始文本逐渐过渡到使用越来越多的格式化。如果不确保以下几点,许多模型的表现会非常糟糕:1) 遵守模型期望的格式;2) 如果模型需要,在推理开始时添加系统提示;3) 在处理推理模型的答案之前,从中移除思考轨迹(通常可以用正则表达式移除<think>标签之间的内容)。

聊天模板和分词的差异。不同的分词器在处理空格和特殊token时的行为有所不同。切勿假设分词器的行为是完全相同的!

句首和句尾token的注意事项。一些预训练模型,如Gemma系列,对推理时是否包含句首token极为敏感。你可能需要做一些实验来确定你的模型是否存在这种情况,并在评估时手动添加这些token。你也可能遇到模型不会像你预期的那样在句尾token处停止的问题。代码模型通常将\n\t作为一个单独的token进行训练。这意味着在生成文本时,它们通常会一步生成\n\t。如果一个任务将\n定义为句尾token(即停止生成),模型在预测出\n\t这个token后会继续生成,因为它与\n不同。但在这种情况下,你实际上还是希望模型停止。这时,你需要更新你的句尾token列表,或者定义一个机制来回溯最新token的字符表示,以便在事后停止(并截断)生成。

多语言分词的挑战。在进行多语言评估时,你会遇到两个问题。首先,由于某些语言(如韩语、泰语、日语、中文等)不总是使用空格作为词的分隔符,它们需要特定语言的分词器才能被正确切分,否则会影响它们在BLEU、F1分数等指标上的得分。其次,分词器通常可能对非英语语言不公平。在训练BPE分词器时,虽然会使用你希望覆盖的不同语言的数据,但大多数情况下,这些数据在语言之间是不平衡的(例如,英语数据可能比泰语或缅甸语多一个数量级)。由于BPE分词器基于最高频词来创建其词汇表token,大部分长token将是英语单词,而来自较少见语言的大多数单词只会被切分到字符级别。这种效应导致了多语言分词的不公平性:一些(频率较低或资源较少的)语言需要多出几个数量级的token才能生成与英语等长的一句话。在这种情况下,模型在评估中允许生成的token数量也应依赖于具体语言。

推理(Inference)

模型生成过程。从输入文本中,LLM会生成一个覆盖整个词汇表的、关于最可能下一个token的概率分布。为了实现连续生成,我们可以选择最可能的token(或者加入一些随机性以获得更有趣的输出)作为下一个token,然后重复这个操作,将新的token作为prompt的结尾,如此循环。

两种主要的评估方法。评估方法主要有两种:

  1. 对数似然评估(Log-likelihood evaluations):给定一个prompt和一个(或多个)答案,我的模型给出这些答案的概率是多少?
  2. 生成式评估(Generative evaluations):给定一个prompt,我的模型会生成什么文本?
    选择哪种方法取决于你的任务(如下所述)和你的模型:大多数通过API提供的模型不返回对数概率,因此你需要系统地使用生成式评估来评估它们。

对数似然评估的流程与指标。对于对数似然评估,我们想要的是给定一个prompt下,一个或多个选项的条件概率——换句话说,给定一个输入,得到一个特定续写的可能性有多大?具体流程如下:1. 我们将每个选项与prompt拼接,然后传递给我们的LLM,LLM会根据前面的token输出每个token的logits。2. 我们只保留与选项token相关的最后logits,并应用一个log softmax来获得对数概率(范围是[-inf, 0]而不是[0-1])。3. 然后我们将所有单个token的对数概率相加,得到整个选项的对数概率。4. 最后我们可以根据选项的长度进行归一化。这使我们能够应用以下一种度量标准:在多个选项中获取模型的首选答案;测试单个选项的概率是否高于0.5;研究模型的校准情况。一个校准良好的模型是其正确答案具有最高概率的模型。

任务表述方式及其影响。一个多项选择题的答案也可以通过自由形式的生成评估来表达!因此,你有时会看到关于任务表述的提法。有三种常见的任务表述方式:
1. 多项选择格式(MCF):我们比较选项索引的似然,其中选项在prompt中明确呈现并以A/B/C/D为前缀(如在MMLU中)。
2. 完形填空格式(CF):我们比较不同选项的似然,而不将它们提供在prompt中。
3. 自由形式生成(FG):我们评估给定prompt的贪婪生成的准确性。
FG需要大量的潜在知识,通常在短时间的预训练消融实验中对模型来说太难了。因此,在进行小规模消融实验时,我们通常关注多项选择表述(MCF或CF)。然而,对于经过后训练的模型,FG成为主要的表述方式,因为我们评估的是模型是否能实际生成有用的响应。不过,研究也表明,模型在训练早期难以处理MCF,只有在大量训练后才能学会这项技能,这使得CF更适合提供早期信号。因此,我们建议在小型消融实验中使用CF,并在主要运行中集成MCF,因为一旦模型通过一个阈值,它能为MCF提供足够高的信噪比,从而给出更好的中段训练信号。

对数似然评估中的归一化。为了给模型的答案评分,例如在CF这样的序列似然评估中,我们将准确率计算为正确答案具有最高对数概率(按字符/token数归一化)的问题所占的百分比。这种归一化可以防止对较短答案的偏好。

生成式评估的流程。对于生成式评估,我们想要的是模型在给定输入prompt下生成的文本。它是通过自回归的方式获得的:我们将prompt传递给模型,查看最可能的下一个token,选择它作为模型的“选择的第一个token”,然后重复这个过程,直到达到生成结束的条件(最大长度、特殊的停止token等)。模型生成的所有token都被视为它对prompt的回答。

生成式评估的评分。然后,我们可以将这个生成结果与参考答案进行比较,并计算两者之间的距离(使用简单的度量标准如精确匹配,更复杂的度量标准如BLEU,或使用模型作为裁判)。

A2 方法细节

使用现有基准进行评估

重要概念。在本节中,你会经常看到两个概念:污染(contamination)和饱和(saturation)。
* 饱和(Saturation) 是指模型在某个基准测试上的性能超过了人类的性能。更广泛地说,这个术语用于那些不再被认为有用的数据集,因为它们失去了区分不同模型的能力。
* 污染(Contamination) 是指评估数据集最终出现在了模型的训练数据集中,这种情况下,模型的性能被人为地夸大了,不能反映其在真实世界中处理该任务的性能。

2025年值得了解的基准

推理与常识(REASONING AND COMMONSENSE)
* 历史数据集:如 ARC (2018)(小学科学选择题)、WinoGrande (2019)(代词消解)、HellaSwag (2019)(选择正确的下一句)、CommonsenseQA (2018)(常识问答)、PIQA (2019)(物理常识)、OpenBookQA (2018)(开卷问答)。这些数据集在BERT时代具有挑战性,但现在大多过于简单、已被污染或饱和,主要用于消融实验或预训练评估。
* 近期数据集Zebra Logic 使用逻辑谜题测试模型推理能力,其方法可以无限生成谜题,从而减少污染。

知识(KNOWLEDGE)
* 历史数据集MMLU (2020) 曾是主要的知识评估数据集,但现已饱和/被污染,并暴露出问题(如不完整问题、错误答案、文化偏见)。其后续版本包括 MMLU-Redux (2024)(清理版)、MMLU-Pro (2024)(扩展版,当前社区主要替代品)和 GlobalMMLU (2024)(多文化版)。
* 高难度数据集GPQA (2023) 包含博士级别的生物/化学/物理问题,难度很高,但自发布以来也开始出现污染。Humanity’s Last Exam (2024) 包含由各领域专家众包的2.5K个高质量问题,兼具复杂知识和推理要求,目前尚未被攻破。
* 未来趋势:随着模型与工具(如互联网搜索)的结合,对模型潜在知识的评估正从“闭卷”转向“开卷”,评估重点将从记忆知识转向利用信息进行推理的能力。

数学(MATH)
* 历史数据集GSM8K (2021)(小学数学题)和 MATH (2021)(奥林匹克竞赛题)均已饱和/被污染。它们的扩展包括 GSM1K (2024)(1K新问题)、GSM-Plus(对抗性重写)和 GSM-Symbolic (2024)(使用模板无限生成问题)。
* 当前常用数据集
* MATH-500(MATH的代表性子集)和 MATH-Hard(最难的500题)。
* AIME (24, 25):美国高中生奥林匹克竞赛题,每年更新,可用于检测污染。
* Math-Arena:定期更新的竞赛和奥林匹克试题汇编。
* FrontierMath (2024)Humanity’s Last Exam (2025) 中的数学部分提供了由数学家专门设计的高难度问题。

  • 推荐:预训练评估使用AIME25和MATH-500,后训练评估使用Math-Arena。

代码(CODE)
* 历史数据集MBPP (2021, Python入门问题), APPS (2021, 编程面试题), HumanEval (2021, Codex发布时引入)。
* 扩展与变体EvalPlus (2023) 扩展了HumanEval和MBPP,增加了更多测试用例。EvoEval (2024) 对HumanEval进行了语义重写并增加了难度标签。
* 当前常用数据集
* LiveCodeBench (2024):从LeetCode等网站获取问题,并记录问题创建日期以检测污染。
* AiderBench (2024):专注于代码编辑和重构。
* RepoBench (2023):测试仓库级别的代码自动补全。
* SweBench (2024):测试模型解决GitHub上真实issue的能力,涉及逻辑理解、跨文件编辑等。
* CodeClash (2025):模型之间进行编码对抗的竞技场。

  • 推荐:LiveCodeBench、AiderBench、SWE-Bench的高质量子集(SWE-Bench verified)。

长上下文(LONG CONTEXT)
* 早期基准NIAH (Needle in a Haystack, 2023) 测试在长文本中检索信息的能力,目前已接近解决。
* 更复杂的基准RULER (2024) 增加了多跳追踪等任务。Michelangelo (2024)OpenAI MRCR (2025) 测试对长文本的精确复制和修改理解。InfinityBench (2024) 提供100K token的多语言(英/中)合成数据任务,仍有一定区分度。
* 聚合基准HELMET (2024) 整合了多个任务和现有基准(如QA、RAG、摘要等),目前仍有区分能力。
* 创新基准Novel Challenge (2024) 要求模型回答关于去年出版的虚构书籍的真假问题。Kalamang translation dataset (2024) 要求模型通过阅读语法书将英语翻译成一种几乎没有在线资源的语言Kalamang。

指令遵循(INSTRUCTION FOLLOWING)
* 核心基准IFEval (2023) 及其扩展 IFBench (2025)。IFEval通过要求模型遵循格式化指令(如关键词、标点、词数等),并用特定的解析测试来检查这些条件,实现了对自由形式生成结果的严格评分,而无需依赖模型裁判。
* 不遵循指令测试CoCoNot (2024) 测试模型在面对不完整、无法回答或不安全请求时的合规性。

工具调用(TOOL-CALLING)
* 领域特定TauBench (2024) 在零售和航空领域评估模型回答用户查询和正确更新数据库的能力。
* 通用API调用ToolBench (2023) 要求调用多种API解决问题,其稳定版 StableToolBench (2025) 引入了虚拟API服务器以确保评估稳定性。
* 功能调用演进BFCL (2025) 包含单轮、多轮对话、众包真实函数调用和智能体(agentic)任务等多个子集,使用抽象语法树和状态匹配进行评估。
* MCP(模型控制平台)基准
* MCPBench (2025) 连接LLM到真实的MCP服务器(如Wikipedia, Reddit)进行多轮任务评估。
* MCP-Universe (2025) 使用11个MCP服务器,并采用基于执行的评估框架,自动获取最新正确答案进行比较。
* LiveMCPBench (2025) 提供可本地部署的MCP服务器集合,测试模型在大量工具中的辨别能力。

助手任务(ASSISTANT TASKS)

  • 真实信息检索

    • GAIA (2023) 要求模型结合工具、推理和检索来解决现实生活中的查询,其第三级难度至今仍具挑战性。
    • BrowseComp (2025) 类似GAIA,但问题是从结果反向构建的。
    • GDPval (2025) 评估模型在美国主要行业的44个职业任务上的表现。
    • GAIA2 在模拟移动环境中测试助手能力,对时间敏感和噪声子集的测试最具挑战性。
  • 科学助手

    • SciCode (2024) 测试模型通过编写科学代码解决真实科学问题的能力。
    • PaperBench (2025) 要求模型根据ICML高质量论文重建匹配的代码库。
    • DSBench (2025) 是一个多模态数据分析基准。
    • DABStep (2025) 评估模型在私有操作数据分析工作负载上的多步推理和数据处理能力。

基于游戏的评估(GAME BASED EVALUATIONS)

  • 逻辑与推理ARC-AGI (2019) 包含抽象推理谜题,其最新版 ARC-AGI3 (2025, 进行中) 包含需要探索、复杂规划和记忆的新游戏。
  • 规划与记忆:单人冒险游戏/RPG如 TextQuests (2025)Pokemon (2024),以及生存游戏如 Crafter (2021),用于测试长期规划、记忆管理和回溯能力。
  • 欺骗与合作:竞争性欺骗游戏如 Poker (2025)Town of Salem (2025),以及合作游戏如 Hanabi,用于测试逻辑、推理、欺骗和沟通能力。
  • 优点:这类评估有明确的成功/失败标准(是否赢得游戏),并且能够测试模型在动态变化环境中的适应性。

预测者(FORECASTERS)
* 新兴类别:这类任务要求模型预测未来事件,因此无法被污染。
* 基准FutureBench 测试模型预测未来新闻事件的能力。FutureX 使用模板从特定网站生成关于未来事件的问题。Arbitrage 的时间跨度更长,事件将在2028年解决。
* 挑战:尚不确定这些基准是否具有足够的区分度,其结果可能接近随机。

推荐

TLDR
截至2025年11月,推荐使用:
* 核心能力(模型构建者):训练时使用旧的能力评估,后训练使用即将推出的AIME26、GPQA、IFEval、SWE-Bench、HELMET等长距离评估,以及针对工具使用的TauBench或BFCL。
* 核心能力(推理时比较模型):IFBench、HLE、MathArena、AiderBench和LiveCodeBench、MCP-Universe。
* 长远任务(真实世界性能):GAIA2、DABStep、SciCode,或针对你用例的领域特定评估。
* 游戏(衡量鲁棒性和适应性的额外乐趣):ARC-AGI3推出后、TextQuests,如果你对安全感兴趣,可以使用Town of Salem。

理解评估内容

数据创建过程。理想情况下,数据集应由专家创建,其次是付费标注员、众包、合成数据,最后是MTurk。需关注数据卡(data card),了解标注员的人口统计信息以判断语言多样性或文化偏见。同时,检查数据是否经过同行或作者审查,标注员间的一致性得分是否高,以及是否有明确的标注指南。

样本检查。亲自手动检查至少50个随机样本。首先,检查内容质量:prompt是否清晰无歧、答案是否正确、信息是否缺失。其次,检查与任务的相关性:这些问题是否与你的用例相关。还需检查样本的一致性(如多选题选项数量是否一致)。最后,确认样本数量是否足够多(通常至少100个样本)以保证结果的统计显著性。

为何无法复现报告的模型分数?

不同的代码库。要精确复现评估分数,必须使用与论文完全相同的代码库,如EleutherAI的lm_eval或HuggingFace的lighteval。如果未提供评估代码,则几乎不可能精确复现结果。

细微的实现或加载差异。即使使用相同的代码库,以下因素也容易导致结果差异:
* 不同的随机种子:会影响某些CUDA操作、非贪婪生成策略、few-shot示例的选择以及预处理/后处理函数。
* 实际不同的度量标准:同名度量标准可能有不同实现,例如“精确匹配”可能是对数似然精确匹配、生成式精确匹配、前缀精确匹配或经过归一化的准精确匹配。
* 不同的归一化:答案在比较前可能会经过不同的归一化处理(如去除标点、统一数字格式),这会显著改变结果。
* 模型加载影响可复现性:硬件(不同GPU)、推理库(transformers, vllm, sglang)、批量大小(batch size)和加载精度(量化模型 vs. 浮点模型)都会导致结果变化。

不同的Prompt
* Prompt本身:Prompt格式的微小变化(例如,使用A vs A. vs A))可能导致模型分数出现几个百分点的差异。模型可能对特定基准的prompt格式过拟合。
* 系统提示和聊天模板:对于聊天模型,不遵循其预期的聊天模板(包括系统提示、用户/助手角色标识)会严重损害性能。
* Few-shots样本:使用的few-shot示例数量、具体内容及其顺序都会影响结果。
* 参数:生成评估的参数,如句尾token、最大生成token数以及采样参数(温度、随机种子),必须保持一致。
MMLU子集上的评估,acc_norm分数(seed O),5-shot。

为模型训练自动选择好的基准

多样性与可靠信号。FineWeb团队为预训练消融实验设计了一套选择最佳评估任务的方法。目标是确保评估的多样性(覆盖阅读理解、通用知识、自然语言理解、常识推理、生成任务等)和每个任务都能提供可靠的信号。

可靠信号的定义。一个可靠的信号应满足:分数高于随机基线、随训练进程单调增加、不同随机种子下的变异性低,并且在每个训练步骤中对模型的排序保持一致。

评估信号可靠性的标准
1. 单调性(MONOTONICITY):任务分数应随训练步数增加而稳定提升。使用Spearman秩相关系数来衡量,要求平均相关性至少为0.5。
良好的单调性:mlmm_hellaswag_fra_cf [fr] Monotonicity: 0.98
差的单调性:mlmm_truthfulqa_ara_cf:mc1 [ar] Monotonicity: -0.26
2. 低噪声(LOW NOISE):评估结果的差异应源于真实性能变化而非评估噪声。通过计算信噪比(SNR),即30B token时的平均分数除以整个训练过程中的平均标准差,来衡量任务的变异性。目标是SNR > 20。
良好的信噪比:xstory_cloze_tel_cf [te] SNR: 87.87
差的信噪比:tydiqa_tel [te] SNR: 6.40
3. 非随机性(NON-RANDOMNESS):模型性能应显著高于随机猜测。要求基准运行性能至少比基准随机基线高出3个最终标准差。
非随机性能:agieval_zho_cf/acc_pmi [zh] Non-Randomness: 21.44
随机性能:agieval_zho_cf/acc [zh] Non-Randomness: -8.84
4. 排序一致性(CONSISTENT ORDERING):任务在训练早期(如30B token)对不同数据集的排序应与训练后期(如300B token)的排序保持一致。通过计算连续步骤之间模型排名的平均Kendall's Tau来衡量。
良好的排序:xcsqa_ara_cf [ar] Kendall's Tau: 0.83
差的排序:thai_exams_tha_cf [th] Kendall's Tau: 0.69

度量标准(METRICS)
* 多项选择任务的准确率变体:为解决答案长度和词频偏差,考虑以下准确率:
* 基础准确率: $acc = \arg\max_i (\ln(P(a_i | q)))$
* 按字符长度归一化的准确率: $acc_{char} = \arg\max_i \frac{\ln(P(a_i | q))}{\text{num_characters}(a_i)}$
* 按token长度归一化的准确率: $acc_{token} = \arg\max_i \frac{\ln(P(a_i | q))}{\text{num_tokens}(a_i)}$
* PMI准确率: $acc_{pmi} = \arg\max_i \ln \frac{P(a_i | q)}{P(a_i | u)}$, 其中 $u = \text{"Answer:"}$

  • 生成任务的度量标准

    • prefix_match: 精确匹配,但只要求答案的前缀匹配。
    • f1: 在预测词和标准词上计算的F1分数。
  • 度量标准选择建议

    • 多项选择:对于答案选项差异微小的任务(如NLI),基础准确率表现良好。对于困难的推理和知识任务(如AGIEVAL、MMLU),PMI最有效。在大多数情况下,长度归一化度量(字符或token)最为可靠,推荐使用max(acc_char, acc_token)
    • 生成任务:除非需要精确匹配(如数学任务),否则建议使用F1分数,因为它噪声更小,对生成的微小变化更具鲁棒性。

创建自己的评估

使用现有数据。你可以聚合多个现有数据集来创建一个针对特定能力的评估套件。聚合时需注意数据冗余、来源的均衡表示以及格式和难度级别的一致性。

使用人类标注员。构建高质量标注数据集的关键步骤包括:

  • 标注流程:迭代式标注、精心选择数据、设计标注方案和指南、进行试点研究和验证。
  • 标注员:选择合适的团队、进行资格测试和培训、提供合理的金钱激励。
  • 质量估计:使用错误率、控制问题和一致性协议来评估质量。
  • 质量改进:修正错误、更新指南、筛选数据和标注员。
  • 裁决:通过人工策划、多数投票或概率聚合来解决分歧。
    核心准则是:明确任务和评分指南,仔细选择并培训标注员,通过多轮迭代和质量控制来确保数据质量。

以合成方式创建数据集
* 基于规则的技术:对于数学、逻辑或编码等任务,使用程序化生成基准是一种避免污染并获得无限样本的好方法。例如,IFEval、GSM-Symbolic等都采用这种方法,通过算法生成测试用例,同时控制难度并实现自动验证。
* 使用模型创建合成数据:通常从一些种子文档(如Wikipedia)开始,将其分块,然后使用一个前沿模型根据这些数据设计问题。最好要求模型提供其提问的依据。之后,可以使用另一个不同家族的模型作为裁判,对生成的问题和答案进行自动验证。无论自动化程度多高,都必须在每一步手动检查数据以确保评估质量。

管理污染。应假设任何公开发布在互联网上的数据集都可能或将会被污染。缓解措施包括:在评估集中加入“金丝雀字符串”、以加密或门控形式提供评估集、运行动态更新的基准、以及事后尝试检测污染(如通过查看生成困惑度)。

选择Prompt。Prompt定义了向模型提供任务信息的方式。即使是语义等价的prompt,微小的变化也可能导致结果显著不同。可以通过多次运行不同prompt变体或在一次评估中使用多种prompt格式来缓解这个问题。使用few-shot示例可以帮助模型遵循预期格式。

为你的模型选择推理方法
* 对数似然评估:适用于多项选择题,用于测试知识或消歧能力。优点是快速、能为小模型提供信号。缺点是可能高估了那些本会生成范围外答案的小模型的得分,并且可能受选项顺序影响。
* 生成式评估:是目前大多数评估采用的方式,适用于测试流畅性、推理或实际回答问题的能力。优点是与LLM的实际应用能力相关性强,且是评估闭源和开源模型的唯一途径。缺点是评分更困难且成本更高。

评估的主要挑战:为自由形式文本评分

自动评分
* 度量标准(METRICS)
* 基于匹配的度量:最简单的是精确匹配(Exact Match),但它不提供部分分数。翻译错误率(TER)计算将预测转换为参考所需的编辑次数。BLEU和ROUGE通过n-gram重叠来衡量相似性,但可能与人类判断的相关性较差。
* 基于模型的度量:BLEURT使用BERT等模型的嵌入距离来衡量语义相似性,比n-gram方法更能理解语义。
度量标准比较

  • 归一化(NORMALIZATION):归一化是将字符串转换为特定参考格式的过程,对于比较模型预测和参考答案至关重要。例如,在数学评估中,需要从更长的预测中提取答案,并将其与参考答案进行比较。Math-Verify是一个专门的数学解析器,解决了天真使用SymPy时遇到的提取失败、部分解析等问题。
    Math-Verify解决的问题
  • 采样(SAMPLING):多次采样并聚合结果可以提供比单次贪婪生成更稳健的信号。常见的基于采样的度量包括:
    • pass@k over n:在n个生成样本中,衡量是否至少有k个通过测试。
    • maj@n(多数投票):采样n个生成结果,并取最常见的答案。
    • cot@n(思维链采样):采样n个推理轨迹并进行评估。
    • avg@n(稳定平均分):对n个样本的分数取平均。
      采样度量比较
      采样在后训练评估中能揭示贪婪解码可能错过的能力,但在训练消融实验中应避免使用,因为它成本高且增加了方差。

功能性评分器(FUNCTIONAL SCORERS)。这种方法不比较生成的文本与参考文本的相似度,而是评估输出是否满足特定的、可验证的约束。例如,IFEval检查输出是否包含特定数量的项目符号、是否遵循大写规则、是否包含特定词汇等。这种方法更明确、可解释、快速且成本远低于模型裁判。

人类评分

  • 方法

    • Vibe-checks:社区成员进行的非正式手动评估,以获得模型在特定用例上的“感觉”。
    • 竞技场(Arena):如LMSYS聊天机器人竞技场,通过大规模社区投票对模型进行Elo排名。
    • 系统性标注:向经过挑选的付费标注员提供极其具体的指南,以尽可能减少主观偏见。
      Vibe-check示例
  • 偏见:人类评估存在多种偏见,如第一印象、语气偏见、自我偏好(与标注员价值观一致)和身份偏见(不同身份群体评分不同)。
    人类评估偏见

使用模型作为裁判
* 概念:使用神经网络(通常是LLM)来评估其他神经网络的输出。
* 优缺点:支持者认为模型裁判比人类更具客观性、可扩展性且成本更低。然而,它们引入了许多难以察觉的隐藏偏见,并且可能产生“回声室效应”,从而强化偏见。
* 偏见:模型裁判存在多种偏见,包括内部不一致、自我偏好、对输入扰动的盲目性、位置偏见、冗长偏见和格式偏见。
LLM裁判偏见
* 实践指南
* 模型选择:可使用闭源模型(如GPT-o)、开源模型(如DeepSeek R1)、微型专用模型(如Prometheus)或自己训练的模型。
* Prompt设计:提供清晰的任务描述、评估标准和评分系统,并指定输出格式(如JSON)。
* 提高准确性:成对比较比直接打分更可靠;使用few-shot示例、参考答案、思维链(CoT)或多个裁判组成的“陪审团”可以提高准确性。
* 评估你的评估器:在使用模型裁判前,应将其判断与基线(如人类标注)进行比较,以评估其质量。

奖励模型(REWARD MODELS)

  • 概念:奖励模型学习从人类标注中预测一个分数,以代表人类偏好。最常见的Bradley-Terry模型输出一个成对比较分数。
  • 评估用途:可计算模型生成结果相对于一组参考结果的“胜率”或“获胜概率”,以提供更细粒度的信号。
  • 优缺点:优点是速度快、确定性高、不易受位置偏见影响且无需prompt工程。缺点是需要特定的微调,且当用于强化学习和评估时可能会导致语言模型过拟合奖励模型的偏好。

约束模型输出
* 使用Prompt:在任务prompt中加入非常具体的格式指令。
* Few Shots和上下文学习:在prompt中提供示例(few-shot prompting)来引导模型遵循特定格式。
* 结构化文本生成:使用outlines等库,通过语法或正则表达式(如有限状态机)来约束模型的输出,确保其遵循特定结构。这可以减少prompt方差,使结果更稳定,但有研究表明可能会降低模型在某些任务(如推理)上的性能。

A4 实验环境与结果

实验环境

本文是一本评估指南,而非单一的实验性研究论文,因此没有统一的实验环境。但文中提到的FineWeb团队为模型训练选择基准的研究提供了一个具体的实验设置:
* 模型:训练了多个1.5B参数的模型。
* 数据集:在五个最大的公开多语言网页数据集的子集上,使用30B token进行训练。
* 硬件配置:整个过程消耗了73,000个GPU小时。
* 软件配置:所有模型使用相同的超参数和分词器进行训练。评估在0-shot设置下进行,没有指令和系统提示。

实验结果

本文总结了大量基准测试的普遍结果,并展示了FineWeb团队研究的具体发现:

  • 基准测试的普遍结果

    • 许多历史基准(如MMLU, GSM8K, HumanEval)已达到饱和被污染的状态,失去了区分顶尖模型的能力。
    • 长上下文检索任务如NIAH (Needle in a Haystack)在2025年已接近被解决
    • 预测未来事件的基准如FutureBench上,目前模型的表现仅略好于随机猜测
    • GAIA2等助手任务中,对时间敏感故意引入噪声的子集对当前最先进的模型来说仍是最困难的。
  • FineWeb团队选择基准的研究结果
    该研究通过绘制不同任务在训练过程中的得分曲线,直观地展示了评估信号的质量。

    • 单调性:好的任务(如mlmm_hellaswag_fra_cf)得分随训练稳步上升,而差的任务(如mlmm_truthfulqa_ara_cf)得分波动剧烈,无明显上升趋势。
    • 噪声:信噪比高的任务(如xstory_cloze_tel_cf)在不同随机种子下的得分曲线紧密,而信噪比低的任务(如tydiqa_tel)曲线分散,表明结果受噪声影响大。
    • 非随机性:好的任务(如agieval_zho_cf在使用PMI度量时)得分显著高于随机基线,而差的任务得分可能长时间徘徊在基线附近甚至低于基线。
    • 排序一致性:一致性好的任务(如xcsqa_ara_cf)在训练后期对不同模型的排名趋于稳定,而差的任务(如thai_exams_tha_cf)排名持续剧烈波动。
      这些结果为模型构建者在训练过程中选择能提供可靠、早期信号的评估任务提供了量化依据。

A7 补充细节

评估中被遗忘的因素

统计有效性。在报告评估结果时,仅给出点估计值是不够的,必须包含置信区间。这些置信区间可以通过计算分数的标准差或使用自助法(bootstrapping)获得。对于自动度量,这相对简单;对于模型裁判,已有研究提出使用估计器进行偏差校正。对于基于人类的评估,应报告评估者之间的一致性。

成本与效率。在设计和报告评估结果时,我们应开始集体报告模型运行成本。一个需要10分钟思考和10K token才能回答简单问题的推理模型,其效率远低于一个用少量token就能快速回答的小模型。建议报告以下内容:

  • Token消耗:报告评估期间使用的总输出token数,这直接影响金钱成本。
  • 时间:记录模型完成评估所需的推理时间,包括API速率限制等开销。
  • 环境足迹:报告模型训练和推理的碳排放和能源消耗,这取决于模型大小、硬件和生成的token数。
    评估中被忽视的方面

A5 结论

评估既是一门艺术,也是一门科学。本指南探讨了2025年LLM评估的全景——从理解我们为何评估模型、分词和推理的基本机制,到驾驭不断演变的基准生态系统,最终到为特定用例创建评估。

核心要点回顾:

  1. 批判性地思考你正在衡量什么。评估是能力的代理指标,因此在基准测试上的高分不保证在真实世界中的表现。不同的评估方法(自动度量、人类裁判或模型裁判)各有其偏见、局限和权衡。
  2. 使你的评估与你的目标相匹配。如果你在训练期间进行消融实验,请使用即使在小模型上也能提供强信号的快速、可靠的基准。如果你为选择最终模型而进行比较,请专注于更难、未被污染的、测试综合能力的数据集。如果你为特定用例构建,请创建能反映你问题和数据的自定义评估。
  3. 可复现性需要关注细节。在prompt、分词、归一化、模板或随机种子上的微小差异都可能使分数产生几个百分点的波动。报告结果时,要对你的方法论保持透明。
  4. 优先选择可解释的评估方法。在可能的情况下,应选择功能性测试和基于规则的验证器,而不是模型裁判。能够被理解和调试的评估将提供更清晰、更可行的见解。
  5. 评估永无止境。随着模型的改进,基准会饱和。随着训练数据的增长,污染变得更有可能。随着用例的演变,需要衡量新的能力。评估是一场持续的战斗。

总而言之,我们构建的模型的优劣,取决于我们衡量重要事物的能力。