模型 / 数据集
open-compass/VLMEvalKit avatar
open-compass/VLMEvalKit

VLMEvalKit 评测框架:一条命令跑 220 个多模态模型,但先想清楚你要比什么

Open-source evaluation toolkit of large multi-modality models (LMMs), support 220+ LMMs, 80+ benchmarks

4,392 个 Star768 个 ForkPythonApache-2.0

秒懂

它是什么?
VLMEvalKit 用生成式评测统一了 220 多个视觉语言模型在 80 多个基准上的跑分流程。本文拆解它的工作机制、上手命令、已知边界,以及它和直接调用官方评测代码的差别。
适合谁用?
如果你的工作是在多个视觉语言模型之间做横向对比,或者需要复现 OpenVLM Leaderboard 上的分数,VLMEvalKit 是当前最省事的路径,它把数据下载、推理、答案抽取和打分封装成了一条命令。但如果你要评测的是模型在长视频、超长输出或非标准任务上的表现,或者你只关心某一个模型的绝对能力而非相对排名,这个框架的默认设置可能不适合你。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是评测碎片化,不是评测本身

多模态模型领域的一个现实是,每个基准都有自己的数据格式、提示词模板和打分脚本。想对比 Qwen2.5-VL 和 InternVL3,你得分别去两个仓库里找评测代码,处理不同的依赖,还要祈祷它们对同一个基准的提示词没有偏差。VLMEvalKit 把这一层全部收拢了。它提供一条命令式的评测入口,数据准备、推理、答案抽取和打分都在内部完成。注意,它没有发明新的评测指标,也不试图定义什么是好的视觉理解。它做的是把已有基准的评测过程标准化。这个定位决定了它的目标用户:需要频繁跑多个模型榜单的实验室、想要复现公开排行榜结果的工程师、以及在选型时要横向比较开源模型的团队。对于只想看某一个模型在某一个任务上的定性表现的人,这个工具偏重了。

生成式评测:统一接口背后的取舍

VLMEvalKit 对全部模型采用生成式评测,而不是像某些框架那样对不同模型使用不同的解码头或分类头。这意味着所有模型都被当作文本生成器来对待,输入是图像加问题,输出是自由文本,然后再拿这个文本去和标准答案比对。文档里明确说,它同时提供 exact matching 和基于 LLM 的答案抽取两种打分方式。exact matching 快但脆弱,模型输出格式稍有变化就会判错。LLM 抽取则把模型的原始回答交给一个语言模型来提取答案,再和标准答案比对,这能容忍模型啰嗦或带解释的输出,但引入了额外成本和延迟。README 里提到,2025 年 8 月的一次更新改进了 can_infer_option 和 can_infer_text 两个函数,让更多情况自动路由到 LLM 抽取器,并称这在小样本选择题基准上带来了轻微的性能提升。这个改动说明,框架在持续向更鲁棒的抽取逻辑倾斜,代价是你需要为每次评测支付 LLM 调用的费用。

一条命令的上手路径

快速开始文档在 README 里只有链接,没有内联命令。但从仓库结构和发布说明可以拼出实际用法。Python 包名是 vlmeval,安装后通过命令行入口调用评测,典型形式是指定模型名和基准名,例如用 Qwen2.5-VL 跑 MMMU-Pro。数据会自动下载,不需要你手工准备。模型支持列表在 vlmeval/config.py 里维护,如果你想接入一个不在列表里的模型,需要在那里添加自定义配置。2025 年 5 月的一次更新加入了 use_lmdeploy 和 use_vllm 两个标志,可以启用多节点分布式推理,目前支持 InternVL 系列、QwenVL 系列和 LLaMA4。这意味着大规模评测可以拆到多台机器上跑,而不必挤在一张卡上等几天。环境变量是配置的主要入口:SPLIT_THINK=True 会解析 <think> 标签,PRED_FORMAT=tsv 会把预测结果存成 TSV 而不是 xlsx,VLMEVALKIT_USE_MODELSCOPE 则切换视频基准的下载源到 ModelScope。这些细节都写在 README 的更新日志里,上手前值得通读一遍。

长回答和思考模式:两个被认真对待的坑

2025 年 9 月的更新日志里,有两条改动值得单独说。第一条是处理超过 16k 或 32k token 的长回答。默认的预测文件格式是 xlsx,而单个单元格有 32767 字符的上限。模型一旦输出超长内容,xlsx 会静默截断,评测结果就失真了。解决办法是设置 PRED_FORMAT=tsv,改用 TSV 格式保存预测。这个细节很容易被忽略,但对推理模型或长视频理解模型来说可能是致命的。第二条是思考模式的处理。现在很多模型会输出 <think> 标签包裹的内部推理过程,这些内容如果混入最终答案,会污染抽取结果。VLMEvalKit 默认启用 SPLIT_THINK=True 时,会把 <think> 里的内容单独存到输出的 thinking 键里,不参与答案比对。它还允许为特定模型自定义 split_think 函数,InternVL 的实现被当作范例。这两个改动说明项目维护者清楚真实评测中的脏数据问题,而不是只关心基准列表的长度。

覆盖面很广,但别把它当万能评测器

README 宣称支持 220 多个模型和 80 多个基准,这个数字本身不说明质量,但至少反映了接入工作的广度。从新闻条目看,模型覆盖从闭源的 Gemini-2.5-Pro、Grok 到开源的 Qwen2.5-VL、InternVL3、LLaVA-CoT 都有。基准从通用 VQA 如 MMMU-Pro、MMVP,到专业领域如物理推理的 SeePhys、PhyX,再到文档理解的 OmniDocBench、OCR 推理的 OCR-Reasoning,跨度很大。但这恰恰是它的一个隐性限制:当评测框架试图覆盖一切时,它对单个基准的适配深度可能不如该基准官方仓库的脚本。比如某些基准有特殊的评测协议,例如对答案格式的严格要求或对部分样本的人工审核,通用框架未必能完全复现。另一个问题是视频基准。虽然支持 Video-MME-v2 等,但视频评测的数据下载可能依赖 ModelScope,你需要额外设置 VLMEVALKIT_USE_MODELSCOPE 环境变量,这暗示视频数据的获取并不像图像数据那样顺畅。如果你的研究对象是某个冷门基准或刚发布的模型,很可能不在支持列表里,你需要自己写适配代码。

和官方评测代码的对比:便利性换走的是控制力

替代方案不是另一个评测框架,而是直接使用每个基准官方发布的评测脚本。比如 MMMU-Pro 有自己仓库,Video-MME-v2 也有自己的评测管线。这种做法的好处是你能拿到基准作者原始的数据划分、提示词和打分逻辑,最大程度减少适配层引入的偏差。坏处是你得为每个基准单独搭环境,而且不同基准的代码风格和依赖要求各异,维护成本随基准数量线性增长。VLMEvalKit 的价值恰恰在于把这种碎片化收敛成一个统一入口,它牺牲的是对单个基准细节的控制力。举例来说,官方脚本可能对某些题目有特殊的 few-shot 示例格式,而 VLMEvalKit 的通用生成式评测可能只是简单地把图像和问题拼接。另一个差异是答案抽取。官方脚本通常有自己设计的后处理,而 VLMEvalKit 依赖 LLM 抽取器,这会让结果带有抽取模型的偏差。所以,如果你要发表论文或做严谨的 benchmark 对比,建议用官方脚本跑一遍关键结果,再用 VLMEvalKit 做快速筛选。两者互补,而不是互相替代。

维护节奏和许可证:活跃但需留意版本号

仓库最近一次推送是 2026 年 9 月,最新正式版是 2025 年 3 月的 v0.2,之后只有 2025 年 6 月的 v0.3rc1 候选版。发布节奏不算快,但新闻条目更新频繁,说明主分支持续有新模型和新基准接入。这种模式对使用者意味着:如果你想用某个刚发布的模型或基准,可能需要从 main 分支安装,而不是等 PyPI 上的稳定版。许可证是 Apache-2.0,对商用友好,没有强 copyleft 限制。但要注意,框架本身虽然宽松,它调用的基准数据各自有许可证,比如某些基准只允许研究用途,商用前需要逐一核查。另外,评测结果会以 TSV 或 xlsx 形式保存,如果你要发布自己的排行榜,需要自己处理这些文件的整理和可视化,框架本身不提供报告生成功能。升级成本方面,从 v0.2 到 v0.3rc1 跨越了一年多,配置文件格式可能有变化,升级前建议阅读 release notes,尤其是 config.py 的结构是否有调整。

编辑结论

如果你的工作是在多个视觉语言模型之间做横向对比,或者需要复现 OpenVLM Leaderboard 上的分数,VLMEvalKit 是当前最省事的路径,它把数据下载、推理、答案抽取和打分封装成了一条命令。但如果你要评测的是模型在长视频、超长输出或非标准任务上的表现,或者你只关心某一个模型的绝对能力而非相对排名,这个框架的默认设置可能不适合你。动手之前先确认三件事:你的模型是否在支持的 220 多个列表里,你的基准是否需要 LLM 做答案抽取(这会产生额外 API 费用),以及你的输出长度是否超过 16k token,如果是,记得设置 PRED_FORMAT=tsv 避免 xlsx 截断。VLMEvalKit 的价值在于统一和可复现,而不是替你做评测设计。

官方来源

  1. License: Apache-2.0
  2. open-compass/VLMEvalKit on GitHub
  3. Project website
  4. README
  5. Releases
社区笔记

社区笔记