LLM 课程文档

评估

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

评估

通过 SFT 或 LoRA SFT 微调的模型,我们应该在标准基准上对其进行评估。作为机器学习工程师,您应该为您的目标兴趣领域维护一套相关的评估。在本页中,我们将了解一些最常用的基准,以及如何使用它们来评估您的模型。我们还将了解如何为您的特定用例创建自定义基准。

自动基准

自动基准作为标准化工具,用于评估跨不同任务和能力方面的语言模型。虽然它们为理解模型性能提供了一个有用的起点,但重要的是要认识到,它们仅代表全面评估策略的一部分。

理解自动基准

自动基准通常由带有预定义任务和评估指标的精选数据集组成。这些基准旨在评估模型能力的各个方面,从基本的语言理解到复杂的推理。使用自动基准的关键优势在于其标准化 - 它们允许跨不同模型进行一致的比较,并提供可重现的结果。

然而,至关重要的是要理解,基准性能并不总是直接转化为现实世界的有效性。一个在学术基准上表现出色的模型,在特定领域应用或实际用例中可能仍然会遇到困难。

通用知识基准

MMLU(大规模多任务语言理解)测试了从科学到人文科学等 57 个学科的知识。虽然全面,但它可能无法反映特定领域所需的专业知识深度。TruthfulQA 评估模型再现常见误解的倾向,但它无法捕捉所有形式的错误信息。

推理基准

BBH(Big Bench Hard)和 GSM8K 侧重于复杂的推理任务。BBH 测试逻辑思维和计划能力,而 GSM8K 专门针对数学问题解决。这些基准有助于评估分析能力,但可能无法捕捉现实场景中所需的细致入微的推理。

语言理解

HELM 提供了一个全面的评估框架。诸如 HELM 之类的基准可以深入了解常识、世界知识和推理等方面的语言处理能力。但可能无法完全代表自然对话或特定领域术语的复杂性。

领域特定基准

让我们看一些专注于特定领域(如数学、编码和聊天)的基准。

MATH 基准是数学推理的另一个重要评估工具。它包含来自数学竞赛的 12,500 个问题,涵盖代数、几何、数论、计数、概率等。MATH 特别具有挑战性的地方在于,它需要多步骤推理、对形式数学符号的理解以及生成逐步解决方案的能力。与更简单的算术任务不同,MATH 问题通常需要复杂的解决问题策略和数学概念应用。

HumanEval 基准是一个以编码为中心的评估数据集,包含 164 个编程问题。该基准测试模型生成功能正确的 Python 代码以解决给定编程任务的能力。HumanEval 特别有价值的地方在于,它通过实际的测试用例执行来评估代码生成能力和功能正确性,而不仅仅是表面上与参考解决方案的相似性。问题范围从基本的字符串操作到更复杂的算法和数据结构。

Alpaca Eval 是一个自动评估框架,旨在评估指令遵循语言模型的质量。它使用 GPT-4 作为评判者来评估模型在各个维度上的输出,包括有用性、诚实性和无害性。该框架包括一个包含 805 个精心策划的提示的数据集,并且可以针对多个参考模型(如 Claude、GPT-4 等)评估响应。Alpaca Eval 特别有用的地方在于,它能够提供一致的、可扩展的评估,而无需人工标注者,同时仍然可以捕捉传统指标可能遗漏的模型性能的细微之处。

替代评估方法

许多组织已经开发了替代评估方法,以解决标准基准的局限性

LLM 作为评判者

使用一个语言模型来评估另一个模型的输出已变得越来越流行。这种方法可以提供比传统指标更细致的反馈,尽管它有自身的偏见和局限性。

评估竞技场

诸如 Chatbot Arena 之类的评估竞技场通过众包反馈为 LLM 评估提供了一种独特的方法。在这些平台上,用户参与两个 LLM 之间的匿名“战斗”,提出问题并投票选出哪个模型提供更好的响应。这种方法通过多样化、具有挑战性的问题捕捉了现实世界的使用模式和偏好,研究表明,众包投票与专家评估之间具有很强的一致性。虽然功能强大,但这些平台也存在局限性,包括潜在的用户群体偏差、倾斜的提示分布以及主要关注有用性而非安全考虑因素。

自定义基准套件

组织通常会开发针对其特定需求和用例的内部基准套件。这些可能包括特定领域的知识测试或反映实际部署条件的评估场景。

自定义评估

虽然标准基准提供了一个有用的基线,但它们不应成为您唯一的评估方法。以下是如何开发更全面的方法

  1. 从相关的标准基准开始,建立基线并实现与其他模型的比较。

  2. 确定您的用例的具体要求和挑战。您的模型实际将执行哪些任务?哪些类型的错误最成问题?

  3. 开发反映您的实际用例的自定义评估数据集。这可能包括

    • 来自您领域的真实用户查询
    • 您遇到的常见边缘情况
    • 特别具有挑战性的场景示例
  4. 考虑实施多层评估策略

    • 用于快速反馈的自动化指标
    • 用于细致理解的人工评估
    • 针对专业应用的领域专家评审
    • 在受控环境中的 A/B 测试

实施自定义评估

在本节中,我们将为微调模型实施评估。我们可以使用 lighteval 在标准基准上评估我们的微调模型,其中包含内置于库中的各种任务。我们只需要定义我们要评估的任务以及评估的参数。

LightEval 任务使用特定格式定义

{suite}|{task}|{num_few_shot}|{auto_reduce}
参数 描述
套件 基准套件(例如,‘mmlu’、‘truthfulqa’)
任务 套件中的特定任务(例如,‘abstract_algebra’)
num_few_shot 提示中包含的示例数量(0 表示零样本)
auto_reduce 如果提示太长,是否自动减少少样本示例(0 或 1)

示例:"mmlu|abstract_algebra|0|0" 在 MMLU 的抽象代数任务上进行零样本推理评估。

示例评估管道

让我们为我们的微调模型设置一个评估管道。我们将评估与医学领域相关的子任务集上的模型。

这是一个完整的示例,说明如何使用 Lighteval 和 VLLM 后端在与特定领域相关的自动基准上进行评估

lighteval accelerate \
    "pretrained=your-model-name" \
    "mmlu|anatomy|0|0" \
    "mmlu|high_school_biology|0|0" \
    "mmlu|high_school_chemistry|0|0" \
    "mmlu|professional_medicine|0|0" \
    --max_samples 40 \
    --batch_size 1 \
    --output_path "./results" \
    --save_generations true

结果以表格格式显示

|                  Task                  |Version|Metric|Value |   |Stderr|
|----------------------------------------|------:|------|-----:|---|-----:|
|all                                     |       |acc   |0.3333|±  |0.1169|
|leaderboard:mmlu:_average:5             |       |acc   |0.3400|±  |0.1121|
|leaderboard:mmlu:anatomy:5              |      0|acc   |0.4500|±  |0.1141|
|leaderboard:mmlu:high_school_biology:5  |      0|acc   |0.1500|±  |0.0819|

Lighteval 还包括一个 Python API,用于更详细的评估任务,这对于以更灵活的方式操作结果非常有用。有关更多信息,请查看 Lighteval 文档

✏️ 试试看!在 lighteval 中评估您的微调模型在特定任务上的表现。

章末测验

Ask a Question

1. 使用自动基准进行模型评估的主要优势是什么?

2. 哪个基准专门测试 57 个不同学科的知识?

3. 什么是 LLM 作为评判者?

4. 综合评估策略应包括哪些内容?

5. 自动基准的局限性是什么?

6. 创建自定义评估数据集的目的是什么?

< > 在 GitHub 上更新