SuperAPI AI 工具集

LLMeBench

LLMeBench 是一个用于加速大语言模型(LLM)基准测试的灵活框架,由 QCRI 开发并维护。该框架旨在简化对各类 LLM 在不同 NLP 任务上的评估流程,支持多种模型提供商,包括 OpenAI(如 GPT)、HuggingFace Inference API、Azure 和 Petals(如 BLOOMZ)。它能够无缝定制以适应任何 NLP 任务、LLM 模型和数据集,不受语言限制。LLMeBench 当前支持 34 个任务、7 个模型提供商,并已在 16 种语言的 80 个数据集上测试,提供约 800 个可运行的基准测试资产。框架支持文本、语音和多模态任务,具备广泛的缓存能力以避免重复的昂贵 API 调用,支持零样本和少样本学习范式,并能自动下载和缓存数据集。安装命令为 pip install 'llmebench[fewshot]',下载资产使用 python -m llmebench assets download,下载数据使用 python -m llmebench data download <DatasetName>,运行基准测试则通过 python -m llmebench 命令并配合过滤、限制样本数、少样本设置等选项。结果保存在指定目录,包含详细的结果文件和摘要。该框架持续更新,近期新增了多模态能力、语音问答等资产以及新的模型提供商支持。

访问官网

工具介绍

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 基准测试提供了一个强大且灵活的工具,支持广泛的任务、模型和语言,并持续更新以涵盖最新的模型和能力。