就在早些时候,Anthropic公司推出其最新Claude-3 Opus模型;而一周前,Mistral的Le Large模型刚刚面世;更早些时候,谷歌的Gemini Ultra 1.5在Ultra 1.0发布后不久便接踵而至。面对LLM以惊人速度密集发布的现状,如何通过标准化任务集量化评测模型性能已成为当务之急。那么核心问题在于——究竟该如何实现?
LLM 基准测试为评测LLMs在多任务场景下的表现提供了结构化框架。理解何时及如何运用这些基准,不仅对模型对比至关重要,更是构建可靠、容错模型的关键。
本文将带你全面了解LLM基准测试的所有要点,我们将深入探讨:
- 什么是LLM基准测试以及如何根据需求选择合适的基准。
- 技术报告和行业中的所有关键基准测试(如 MMLU、HellaSwag、BBH 等)。
- LLM基准测试的局限性,以及通过生成合成数据集来规避这些限制的方法。
什么是LLM基准测试?
诸如 MMLU、HellaSwag 和 DROP 等LLM基准测试,是一系列标准化评测工具,旨在衡量LLMs在推理与理解等多方面的能力表现,并通过特定评分标准或指标对这些能力进行量化。依据不同基准,衡量标准可能从基于统计的精确匹配比例,到由其他LLMs评测的更为复杂的指标不一而足。
一个LLM基准架构
不同的基准测试评测模型能力的各个方面,包括:
- 推理与常识:这些基准测试检验LLM运用逻辑和日常知识解决问题的能力。
- 语言理解与问答(QA):这些评测模型解释文本并准确回答问题的能力。
- 编程:此类别下的基准测试评测LLMs解释和生成代码的能力。
- 对话与聊天机器人:这些测试评测LLM进行对话并提供连贯、相关回应的能力。
- 翻译:这些评测模型将文本从一种语言准确翻译成另一种语言的能力。
- 数学:这些测试关注模型解决数学问题的能力,从基础算术到更复杂的领域如微积分。
- 逻辑:逻辑基准测试评测模型应用逻辑推理技能的能力,如归纳和演绎推理。
- 标准化考试:SAT、ACT 或其他教育评测也被用来评价和基准测试模型的性能。
LLM 基准测试类别
一些基准测试可能只有几十项测试,而其他则可能包含数百甚至上千项任务。关键在于LLM基准测试提供了一个标准化框架,用于评测LLM在不同领域和任务中的性能表现。然而,这并不等同于LLM系统基准测试,后者是针对你的LLM应用程序定制的。
为项目选择合适的基准意味着:
- 目标对齐:确保基准与你的LLM需要擅长的具体任务相匹配。
- 拥抱任务多样性:寻找涵盖广泛任务范围的基准,以便全面评测你的LLM。
- 保持领域相关性:选择与你应用领域相契合的基准,无论是语言理解、文本生成还是编码。
将它们视为高中生的 SAT 考试,但针对LLMs。虽然这些测试无法评测模型能力的每一个可能方面,但它们无疑提供了宝贵的见解。以下是 Claude 3 在多个基准测试中与其他最先进(SOTA)模型的性能对比。
Claude-3 基准测试结果
如果你不清楚 MMLU、HellaSwag 等这些基准测试的含义,不必担心,我们将在下一部分深入探讨。
不同类型的LLM基准测试
在接下来的章节中,我将讨论跨越四大关键领域(语言理解、推理、编码和对话)的 8 项核心LLM基准测试。这些测试在工业应用中广泛采用,并常见于技术报告中,包括:
- TruthfulQA — 真实性
- MMLU — 语言理解
- HellaSwag — 常识推理
- BIG-Bench Hard — 挑战性推理任务
- HumanEval — 编程挑战
- CodeXGLUE — 编程任务
- 聊天机器人竞技场——基于人类评分 ELO 的基准测试
- MT Bench — 复杂对话能力评测
语言理解与问答基准测试
TruthfulQA
[2022 年发布] ∙ 论文 ∙ 代码 ∙ 数据集
来自真实问答的示例问题(Suzgun 等人)
TruthfulQA评测模型提供准确真实答案的能力,这对于打击错误信息和促进人工智能伦理使用至关重要。
原始数据集包含 38 个类别的 817 个问题,涵盖健康、法律、金融和政治等领域。这些问题专门针对人类可能因错误信念或误解而给出错误答案的领域设计。事实上,原论文中表现最佳的模型 GPT-3 仅达到 58%的成功率,而人类基准为 94%。
最终得分是根据模型生成真实输出的比例计算的。使用经过微调的 GPT-3(“GPT-Judge”)评分器来确定答案的真实性!
如果 TruthfulQA 对你来说显得难以触及,我这里有好消息。我们已在 DeepEval——这个开源的LLM评测框架中实现了多项关键基准测试,让你仅需几行代码就能轻松对任意LLM进行基准测试。
首先安装 DeepEval:
pip install deepeval
然后运行基准测试:
from deepeval.benchmarks import TruthfulQA
from deepeval.benchmarks.modes import TruthfulQAMode
# Define benchmark with specific shots
benchmark = TruthfulQA(mode=TruthfulQAMode.MC2)
# Replace 'mistral_7b' with your own custom model
benchmark.evaluate(model=mistral_7b)
print(benchmark.overall_score)
MMLU(大规模多任务语言理解)
[2021 年发布] ∙ 论文 ∙ 代码 ∙ 数据集
MMLU 微观经济学任务示例问题。
MMLU 旨在评测模型基于预训练期间获取的知识,仅专注于零样本和小样本设置。
这是一个全面的基准测试,通过涵盖 57 个学科(包括 STEM、人文、社会科学等)的多选题来评测模型,难度从初级到高级不等。广泛的学科范围和细节使该基准测试非常适合识别模型在特定领域知识中的任何空白。
MMLU 评分仅依据正确答案的比例给出LLM。输出必须完全匹配才被视为正确(以上述例子中的‘D’为例)。
以下是如何通过 DeepEval 使用 HellaSwag 基准测试的方法:
from deepeval.benchmarks import MMLU
from deepeval.benchmarks.tasks import MMLUTask
# Define benchmark with specific tasks and shots
benchmark = MMLU(
tasks=[MMLUTask.HIGH_SCHOOL_COMPUTER_SCIENCE, MMLUTask.ASTRONOMY],
n_shots=3
)
# Replace 'mistral_7b' with your own custom model
benchmark.evaluate(model=mistral_7b)
print(benchmark.overall_score)
如需获取更多实现细节,请访问DeepEval MMLU官方文档。
其他值得注意的语言理解与问答基准:GLUE、SuperGLUE、SQuAD 及 GPT 任务,CoQA、QuAC、TriviaQA、DROP
常识与推理基准
HellaSwag
HellaSwag(Zellers 等人)的示例问题
HellaSwag 通过句子补全评测LLM模型的常识推理能力。它测试LLM模型能否从 10,000 个句子的每组 4 个选项中选出合适的结尾。
当时的最先进模型在预训练后得分难以超过 50%,而 GPT-4 在 2023 年仅通过 10 次提示就创下了 95.3%的历史新高。与 MMLU 类似,HellaSwag 的得分LLMs基于其完全正确答案的比例。
以下是你如何通过 DeepEval 使用 HellaSwag 基准测试:
from deepeval.benchmarks import HellaSwag
from deepeval.benchmarks.tasks import HellaSwagTask
# Define benchmark with specific tasks and shots
benchmark = HellaSwag(
tasks=[HellaSwagTask.TRIMMING_BRANCHES_OR_HEDGES, HellaSwagTask.BATON_TWIRLING],
n_shots=5
)
# Replace 'mistral_7b' with your own custom model
benchmark.evaluate(model=mistral_7b)
print(benchmark.overall_score)
如需了解该实现方案的更多细节,请访问DeepEval HellaSwag官方文档页。
BIG-Bench Hard(超越模仿游戏基准)
BIG-Bench Hard (BBH) 从原版 BIG-Bench 套件中精选了 23 项具有挑战性的任务,该套件原本包含 204 项多样化评测任务,这些任务在当时已超出语言模型的能力范围。
标准(少量样本)提示 vs 思维链提示(Wei 等人)
在 BIG-Bench 发布时,没有任何一个 SOTA 语言模型能在 23 项任务中的任何一项上超越人类评测者的平均水平。有趣的是,BBH 的作者通过使用思维链(CoT)提示,在完全相同的LLMs条件下,成功在 17 项任务上超越了人类表现。
虽然 BBH 的预期输出比其他基于多项选择题的基准测试更加多样化,但它也根据完全匹配的比例对模型进行评分。CoT 提示有助于将模型输出限制在预期格式内。
要使用 BBH 基准测试:
from deepeval.benchmarks import BigBenchHard
from deepeval.benchmarks.tasks import BigBenchHardTask
# Define benchmark with specific tasks and shots
benchmark = BigBenchHard(
tasks=[BigBenchHardTask.BOOLEAN_EXPRESSIONS, BigBenchHardTask.CAUSAL_JUDGEMENT],
n_shots=3,
enable_cot=True
)
# Replace 'mistral_7b' with your own custom model
benchmark.evaluate(model=mistral_7b)
print(benchmark.overall_score)
如需了解该实现方案的更多细节,请访问DeepEval HellaSwag官方文档页。
其他值得注意的常识与推理基准测试:ARC、CommonsenseQA、COPA、SNLI、MultiNLI、RACE、ANLI、PIQA、COSMOS QA
编码基准
人类评测
# HumanEval包含 164 个独特的编程任务,旨在评测模型的代码生成能力。这些任务涵盖广泛领域,从算法到编程语言的理解。
以下示例任务选自与HumanEval(代码生成基准测试集)同类的评估数据集,并附有大语言模型(LLM)生成的解决方案:
任务描述:编写一个函数 sum_list ,该函数接收一个数字列表作为参数,并返回列表中所有数字的总和。列表可以包含整数和浮点数。
生成的代码:
def sum_list(numbers: List[float]) -> float:
return sum(numbers)
HumanEval 使用 Pass@k 指标评测生成代码的质量,该指标旨在强调功能正确性,而不仅仅是基本的文本相似性。
from deepeval.benchmarks import HumanEval
# Define benchmark with number of code generations
benchmark = HumanEval(n=100)
# Replace 'gpt_4' with your own custom model
benchmark.evaluate(model=gpt_4, k=10)
print(benchmark.overall_score)
CodeXGLUE
CodeXGLUE 提供了涵盖 10 种不同任务的 14 个数据集,旨在代码补全、代码翻译、代码摘要及代码搜索等多种编程场景中直接测试与比较模型性能。该项目由微软、开发者部门与必应团队合作开发。
CodeXGLUE 的评测指标根据编码任务的不同,从精确匹配到 BLUE 分数各异。
CodeXGLUE 的评测指标根据编码任务的不同,从精确匹配到 BLUE 分数各异。
其他值得注意的编码基准包括:CodeBLEU、MBPP、Py150、MathQA、Spider、DeepFix、克隆检测、CodeSearchNet。
对话与聊天机器人基准测试
Chatbot Arena
Chatbot Arena是一个开放平台,通过超过 20 万张人类投票对语言模型进行排名。用户可以匿名测试并评判如 ChatGPT 或 Claude 等 AI 模型对,且投票仅在模型身份保持隐藏时计入排名。因此,它并非使用客观指标评分模型的传统基准测试!其得分本质上是“点赞”数量。
MT Bench
来自(Zheng 等人)MTBench 的示例问题
MT-bench 通过向聊天助手提出一系列多轮开放式问题来评测其质量,并利用LLMs作为评委。这种方法测试聊天助手处理复杂互动的能力。MT-Bench 使用 GPT-4 对对话进行 10 分制评分,并计算所有轮次的平均分以获得最终得分。
所有这些基准测试在评测特定技能时极为有用,但如果现有基准测试不完全符合你项目的独特需求呢?
其他值得注意的对话和聊天机器人基准:DSTC、ConvAI、PersonaChat
LLM 基准测试的局限性
虽然基准测试是评测LLMs能力的基础,但它们自身也存在一系列局限性:
- 领域相关性:基准测试往往难以契合LLMs应用的具体领域和情境,缺乏如法律分析或医学解读等任务所需的针对性。这一差距突显了创建能准确评测LLM在广泛专业应用中表现的基准所面临的挑战。
- 生命周期短暂:基准测试初发布时,模型表现通常难以匹敌人类基准。但只需稍待时日——比如 1 至 3 年——先进模型便能让初期挑战变得轻而易举。当这些指标不再构成挑战时,就有必要开发新的实用基准。
然而,并非全是悲观失望。通过诸如合成数据生成等创新方法,克服这些限制是可能的。
定制化LLM基准测试
对LLMs进行基准测试颇具挑战,因为标准基准无法涵盖你的具体用例。一种解决方案是利用知识库中的数据作为上下文,为你的特定用例生成合成基准。
数据合成器架构
合成数据生成是从零开始创建数据的过程,得益于LLMs的进步,这一方法已变得越来越可行。它使我们能够持续生成针对特定任务定制的基准测试,确保领域相关性,同时解决了数据生命周期短暂的问题。
便利的是,DeepEval 还允许你生成合成数据,随后可用于你的基准数据集:
from deepeval.synthesizer import Synthesizer
synthesizer = Synthesizer()
contexts = [
["The Earth revolves around the Sun.", "Planets are celestial bodies."],
["Water freezes at 0 degrees Celsius.", "The chemical formula for water is H2O."],
]
synthesizer.generate_goldens(contexts=contexts)
synthesizer.save_as(
file_type='json',
path="./synthetic_data"
)
在 DeepEval 中,golden 仅是一个输入-预期输出对。在基准测试领域,预期输出也被称为目标标签。
通过此设置,你已成功生成合成数据集并将其保存至本地./synthetic_data 目录下的.json 文件中。该定制数据集可用于基准测试及评测你的LLMs性能,为其优势与改进领域提供关键洞察。
结论
我们发现许多基准测试不够具体,无法全面评测LLMs在细分领域的表现,从而影响了其有效性。此外,LLMs领域技术进步的快速步伐意味着基准测试需要不断更新以保持相关性。为了解决这一问题,合成数据生成成为一种有价值的解决方案,它能够创建适应性强、针对特定领域的基准测试。这一策略确保了定制基准测试随时间推移仍具相关性,同时让LLM开发者能够持续提升其模型性能。
我们还揭示当前多数基准测试体系在垂直领域存在评估维度不足的痛点,难以全面评估大语言模型(LLM)的专项能力,这直接制约了其实际应用效能。更关键的是,LLM技术的快速迭代对基准测试的时效性提出严苛要求——基准体系必须与技术进步保持同步的持续迭代更新。鉴于此,合成数据生成技术展现出突破性价值:它赋能开发者构建高度灵活、可动态适配的领域专用基准测试。该技术路径不仅确保定制化基准的长期技术适配性,更为LLM开发者提供了持续优化模型性能的闭环验证机制。