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 来使用
pycocoevalAPI。
典型工作流程
- 选择模型 – 使用内置封装器 (
qwen2_5_vl,internvl_2等) 或指向 OpenAI 兼容的端点。 - 选择任务 –
docs/advanced/current_tasks.md中列出的 100 多个任务中的任何一个。 - 运行评估 – 通过 CLI (
python -m lmms_eval …)、HTTP 服务器或 Web UI。 - 分析 – 结果以扁平化的 JSONL 文件形式输出;您可以计算聚合指标、置信区间,或将其输入下游仪表板。
扩展库
- 新模型 – 子类化
lmms_eval.api.model.lmms,设置is_simple=False,实现构建ChatMessages对象并调用模型聊天模板的generate_until。 - 新基准测试 – 在
lmms_eval/tasks/下放置一个 YAML 文件,描述数据集路径、划分以及将每条记录转换为结构化聊天格式的doc_to_messages函数。 - 自定义指标 – 插入一个
process_results函数并在 YAML 中列出指标名称。
资源
- 文档:
docs/README.md - 完整任务列表: https://github.com/EvolvingLMMs-Lab/lmms-eval/blob/main/docs/advanced/current_tasks.md
- 模型列表: https://github.com/EvolvingLMMs-Lab/lmms-eval/tree/main/lmms_eval/models
- Discord 社区: https://discord.gg/8xTM6jWnXa
- 官网: https://www.lmms-lab.com/
以上所有陈述均直接取自仓库的 README;未添加任何外部假设。
相关
- 项目
- 项目
- 项目
- 项目
- 项目