EvolvingLMMs-Lab/lmms-eval

One-for-All Multimodal Evaluation Toolkit Across Text, Image, Video, and Audio Tasks

lmms‑eval – 用于多模态大语言模型的统一评估工具包

产品定义lmms-eval 是一个 Python 库,允许研究人员和工程师对多模态大语言模型(视觉-语言、音频-语言、视频-语言等)运行可复现、高效且统计严谨的基准测试。它拥有不断增长的包含 >100 个任务(MMMU, MME, VideoMME, MathVista, …)的目录,以及针对 30 多个模型家族(如 Qwen‑2.5‑VL, Qwen‑3‑VL, LLaVA‑OneVision, InternVL‑2, VILA 以及任何 OpenAI 兼容的 API)的封装器。

重要意义 – 目前的多模态评估是碎片化的:数据集分布在不同地方,预处理方式各异,且结果往往在没有置信区间的情况下报告。lmms‑eval 通过提供一个单一的、确定性的流水线来解决这个问题,该流水线:

  • 保证可复现性(相同的模型 + 相同的任务 $\rightarrow$ 相同的结果)。
  • 通过异步服务、自适应批处理和视频 I/O 优化实现吞吐量最大化(比早期版本快约 ~3.5 倍)。
  • 输出可靠的统计数据(置信区间、配对检验 p 值、聚类标准误差),以便您可以判断性能提升是否真实。

核心功能

功能 说明
统一任务目录 100 多个由 YAML 定义的基准测试,涵盖图像、视频和音频模态。
模型后端 用于聊天风格模型、传统简单模型、vLLM、SGLang 以及任何 OpenAI 兼容端点的原生封装器。
聊天风格 API 结构化的 ChatMessages(角色 + 多模态内容)——支持在单个请求中交错使用图像/视频/音频。
统计报告 置信区间、配对 t 检验、标准误差聚类、每样本 Token 计数、吞吐量指标。
评估即服务 独立的 HTTP 服务器,可对任务进行排队、在专用 GPU 上运行并通过 REST API 返回结果。
Web UI 可选的基于 React 的 UI,用于选择模型/任务、预览命令、流式传输实时输出以及浏览日志。
Async/Sync 客户端 Python 客户端库 (EvalClient, AsyncEvalClient),可在不阻塞的情况下从训练循环中提交任务。
可扩展性 通过实现 generate_until 来添加新模型,通过 YAML 配置加 doc_to_messages 函数来添加新任务。
多语言文档 README 和完整文档提供 17 种语言版本。

快速入门(在 < 5 分钟内运行小型测试)

git clone https://github.com/EvolvingLMMs-Lab/lmms-eval.git
cd lmms-eval && uv pip install -e "[all]"
python -m lmms_eval \
  --model qwen2_5_vl \
  --model_args pretrained=Qwen/Qwen2.5-VL-3B-Instruct \
  --tasks mme \
  --batch_size 1 \
  --limit 8

如果您看到带有准确率数字的 JSON-L 日志,则表示工具包已准备就绪。

安装说明

  • 该项目推荐使用 uv 包管理器以获得确定性的环境 (uv install -e "[all]")。
  • 传统的 pip install git+https://github.com/EvolvingLMMs-Lab/lmms-eval.git 同样有效。
  • 对于字幕风格的数据集,您需要 Java 8 来使用 pycocoeval API。

典型工作流程

  1. 选择模型 – 使用内置封装器 (qwen2_5_vl, internvl_2 等) 或指向 OpenAI 兼容的端点。
  2. 选择任务docs/advanced/current_tasks.md 中列出的 100 多个任务中的任何一个。
  3. 运行评估 – 通过 CLI (python -m lmms_eval …)、HTTP 服务器或 Web UI。
  4. 分析 – 结果以扁平化的 JSONL 文件形式输出;您可以计算聚合指标、置信区间,或将其输入下游仪表板。

扩展库

  • 新模型 – 子类化 lmms_eval.api.model.lmms,设置 is_simple=False,实现构建 ChatMessages 对象并调用模型聊天模板的 generate_until
  • 新基准测试 – 在 lmms_eval/tasks/ 下放置一个 YAML 文件,描述数据集路径、划分以及将每条记录转换为结构化聊天格式的 doc_to_messages 函数。
  • 自定义指标 – 插入一个 process_results 函数并在 YAML 中列出指标名称。

资源


以上所有陈述均直接取自仓库的 README;未添加任何外部假设。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目