LLMeBench 是一个由 QCRI 开发的灵活框架,旨在加速大语言模型(LLM)的基准测试。该框架的代码托管在 GitHub 上,相关描述见其论文。
用途
LLMeBench 主要用于评估各种 LLM 在不同 NLP 任务上的表现。它提供了一个标准化的流程,让研究人员和开发者能够方便地对模型进行基准测试,比较不同模型在相同数据集和任务上的性能。
主要能力
- 广泛的任务和模型支持:当前支持 34 个任务,涉及 7 个模型提供商(如 OpenAI、HuggingFace Inference API、Azure、Petals 等)。已在 16 种语言的 80 个数据集上测试,提供约 800 个可运行的基准测试资产。
- 多模态支持:支持文本、语音和多模态任务。2024 年 7 月添加了多模态能力,资产包括对 GPT-4(OpenAI)和 Sonet(Anthropic)的支持。
- 易于扩展:可以无缝定制以适应任何 NLP 任务、LLM 模型和数据集,不受语言限制。通过 API 可轻松扩展新模型。
- 缓存机制:具备广泛的缓存能力,避免为重复实验重新调用昂贵的 API。
- 学习范式:支持零样本和少样本学习范式。
- 数据集管理:支持动态数据集下载和数据集缓存。
使用方式
安装
使用 pip 安装:pip install 'llmebench[fewshot]'
下载资产和数据集
- 下载当前资产:
python -m llmebench assets download,这会将资产下载到当前工作目录。 - 下载特定数据集,例如 ArSAS:
python -m llmebench data download ArSAS,数据将下载到当前工作目录的 data 文件夹内。
运行评估
例如,对 ArSAS 数据集进行情感分析并评估随机基线的性能:
python -m llmebench --filter 'sentiment/ArSAS_Random*' assets/ results/
其中 ArSAS_Random 是一个资产文件,指定了要评估的数据集、模型和任务。assets/ar/sentiment_emotion_others/sentiment/ 是情感分析任务在阿拉伯语 ArSAS 数据集上的基准测试资产所在目录。结果将保存在 results 目录中。
命令行选项
--filter '*benchmarking_asset*':(可选)指定要运行的特定任务。框架会在资产目录中使用通配符搜索。如果未设置,将运行整个基准测试。--limit <k>:(可选)指定从输入数据中运行的样本数量,便于高效测试。如果未设置,将评估数据集中的所有样本。--n_shots <n>:(可选)如果定义,框架将期望一个少样本资产,并运行少样本学习范式,n 为样本数。如果未设置,则默认为零样本。--ignore_cache:(可选)忽略从缓存加载和保存中间模型响应。<benchmark-dir>:基准测试资产所在目录的路径。<results-dir>:保存输出结果和中间缓存值的目录路径。
环境变量
根据运行的基准测试,可能需要定义环境变量(如访问令牌和 API URL,例如 AZURE_API_URL 和 AZURE_API_KEY)。可以通过以下方式设置:
- 在运行上述命令前执行
export AZURE_API_KEY="..." - 在命令前加上
AZURE_API_URL="..." AZURE_API_KEY="..." - 使用
--env标志提供 dotenv 文件。env/ 文件夹中提供了示例 dotenv 文件。 每个模型提供商的文档指定了运行时预期的环境变量。
结果输出
<results-dir> 文件夹将包含运行资产的结果,结构如下:
all_results.json:汇总所有运行的资产的输出。- 每个基准测试资产会创建一个子文件夹,包含:
n.json:每个数据集样本一个文件,包含输入样本、发送给模型的完整提示、完整模型响应以及资产文件中定义的后处理后的模型输出。summary.jsonl:列出所有输入样本,以及每个样本的模型预测摘要和后处理后的模型预测。summary_failed.jsonl:列出所有未从模型获得成功响应的输入样本,以及模型失败的原因。results.json:包含已处理和失败输入样本数量的摘要以及评估结果。
- 对于少样本实验,结果存储在如
3_shot的子文件夹中,数字表示该实验中提供的少样本样本数。
可以使用 jq 命令行工具分析结果 JSON 文件,例如 jq . summary.jsonl 将以可读形式打印所有样本和模型响应的摘要。
缓存
框架提供缓存(如果未传递 --ignore_cache),以允许:
- 跳过对已成功处理项进行的 API 调用。
- 增强对模型输出的后处理,后处理可以重复执行而无需每次调用 API。
少样本示例选择
框架初步支持基于最大边际相关性(使用 langchain 的实现)为每个测试样本自动选择 n 个示例。未来将扩展更多少样本示例选择机制(如随机、基于类别等)。
要运行少样本资产,请在基准测试脚本中提供 --n_shots <n> 选项。默认设置为 0,仅运行零样本资产。如果 --n_shots 大于零,则仅运行少样本资产。
教程
tutorials 目录提供以下教程:更新现有资产、运行不同基准测试用例的高级用法命令,以及通过至少一个组件扩展框架。
适用场景
LLMeBench 适用于需要评估 LLM 在多种 NLP 任务上性能的研究人员、开发者和组织。它特别适合以下场景:
- 比较不同 LLM 在相同数据集上的表现。
- 在多种语言(包括低资源语言)上测试模型。
- 进行零样本和少样本学习实验。
- 集成多模态任务(文本、语音、图像)。
- 需要缓存机制以节省 API 调用成本的实验。
限制
- 数据集可用性:一些数据集和关联资产已在 LLMeBench 中实现,但数据集文件不能重新分发,用户有责任从原始来源获取数据。每个数据集的元数据包含主要页面的链接,可用于获取数据。数据应下载并放在
data/<DatasetName>文件夹下。 - 许可:当前版本 LLMeBench 关联的数据集是现有数据集或其处理版本。用户应参考每个数据集脚本元数据中提供的原始许可证。据理解,这些许可证允许数据集用于研究或非商业目的的使用和重新分发。
- 持续开发:LLMeBench 是一个持续开发的项目,将不断扩展。
- 引用:使用该框架时,请引用其论文。如果使用源自其他论文的资产,请考虑引用这些论文。
最新更新
- 2025 年 2 月 26 日:新增功能:口语原生问答、多语言原生问答和宣传内容分类的资产,以及仇恨和宣传模因的数据集。
- 2025 年 1 月 20 日:新增资产。更新了 openai、anthropic 和 sentence_transformers 的版本。
- 2024 年 7 月 21 日:添加了多模态能力。资产现在包括对 GPT-4(OpenAI)和 Sonet(Anthropic)的支持。
LLMeBench 框架为 LLM 基准测试提供了一个强大且灵活的工具,支持广泛的任务、模型和语言,并持续更新以涵盖最新的模型和能力。