LLM 课程文档
评估
并获得增强的文档体验
开始使用
评估
通过 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 之间的匿名“战斗”,提出问题并投票选出哪个模型提供更好的响应。这种方法通过多样化、具有挑战性的问题捕捉了现实世界的使用模式和偏好,研究表明,众包投票与专家评估之间具有很强的一致性。虽然功能强大,但这些平台也存在局限性,包括潜在的用户群体偏差、倾斜的提示分布以及主要关注有用性而非安全考虑因素。
自定义基准套件
组织通常会开发针对其特定需求和用例的内部基准套件。这些可能包括特定领域的知识测试或反映实际部署条件的评估场景。
自定义评估
虽然标准基准提供了一个有用的基线,但它们不应成为您唯一的评估方法。以下是如何开发更全面的方法
从相关的标准基准开始,建立基线并实现与其他模型的比较。
确定您的用例的具体要求和挑战。您的模型实际将执行哪些任务?哪些类型的错误最成问题?
开发反映您的实际用例的自定义评估数据集。这可能包括
- 来自您领域的真实用户查询
- 您遇到的常见边缘情况
- 特别具有挑战性的场景示例
考虑实施多层评估策略
- 用于快速反馈的自动化指标
- 用于细致理解的人工评估
- 针对专业应用的领域专家评审
- 在受控环境中的 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 中评估您的微调模型在特定任务上的表现。