跳转至

多模态大模型统一评测协议

L0:本地机制验证

visual-shapes 使用真实像素图像询问颜色、形状和方位。必须同时报告:

  • 原图 accuracy;
  • 打乱图 accuracy 与 visual_dependency_delta
  • 空白图 accuracy 与 blank_image_delta
  • 参数量、设备、训练步数、seed 和 connector。

Fitness 为:

\[ F=\operatorname{accuracy}+0.25\max(0,\operatorname{accuracy}-\operatorname{accuracy}_{shuffle}). \]

L1:公开自然图像缩小实验

fashion-mnist-qacifar10-qa 从同一多模态接口询问图像类别,分别覆盖轻量服饰 图像和 32×32 彩色自然图像。二者固定保留 1,000 条 validation 和 1,000 条 test,首次 下载逐文件校验官方 MD5,后续缓存可完全离线复跑。仍须报告原图、打乱图和空白图; 若视觉依赖差值接近零,不得把 accuracy 提升归因于 connector。

L2:标准公开 benchmark

MR3 新增独立的 multimodal-eval,不把开放式问答和图文检索伪装成固定类别分类。 评测器只消费公开标注和模型预测,因而可以接入本项目 micro-VLM、任意 Hugging Face checkpoint 或远程推理服务,同时保持指标实现不变。

MR6 再加入 multimodal-retrieval-predict:真实加载 CLIP/SigLIP 类公开 checkpoint,批量 编码图片和 caption,并在 GPU 上计算两个方向的精确正样本 rank。完整 COCO 5K 若保存所有 排序会产生约 1.25 亿个 ID,因此预测文件只保留 top-10 与精确首个正样本 rank;Recall@1/5/10 和 median rank 均无损,文件也可以提交独立 scorer 审计。

benchmark 标注格式 必报指标
ScienceQA 官方目录,含 problems.jsonpid_splits.json accuracy、image/text slice、parse rate
POPE 官方 JSONL,逐行包含 question_idlabel(兼容转换后的 answer accuracy、precision、recall、F1、yes ratio、parse rate
COCO/Flickr30K retrieval Karpathy JSON,含 images[].sentences[] I2T/T2I Recall@1/5/10、median rank、mean recall
Video-MME-v2 官方 Parquet/JSONL + MP4 三 seed accuracy、sample std、95% CI、parse rate
ESC-50 / ESC-10 官方 metadata CSV + WAV CLAP zero-shot top-1/top-5、cache fingerprint

视频和音频的真实 checkpoint 命令、数据准备脚本和子集声明边界见 视频与音频公开 checkpoint 评测

ScienceQA 随机基线管线检查:

auto-research multimodal-eval \
  --benchmark scienceqa \
  --annotations data/scienceqa \
  --baseline random --seeds 42,43,44

真实模型预测使用相同协议。{seed} 会分别读取三个独立预测文件:

auto-research multimodal-eval \
  --benchmark pope \
  --annotations data/pope/coco_pope_random.jsonl \
  --predictions 'runs/pope/predictions-seed{seed}.jsonl' \
  --seeds 42,43,44

直接从公开 checkpoint 生成预测

multimodal-predict 固定 do_sample=false,每完成一条就追加到 JSONL;同一路径重跑会 跳过已有 ID。在线机器会把 main 解析成不可变 Hugging Face commit;隔离开发机可把 事先同步的 snapshot 放在任意目录,同时显式保留官方模型 ID 与 commit:

auto-research multimodal-predict \
  --benchmark scienceqa \
  --annotations data/scienceqa \
  --image-root data/scienceqa/images \
  --output runs/scienceqa/predictions.jsonl \
  --model-id HuggingFaceTB/SmolVLM2-256M-Video-Instruct \
  --model-revision 067788b187b95ebe7b2e040b3e4299e342e5b8fd \
  --checkpoint-path checkpoints/smolvlm2-256m \
  --maximum-examples 500 --batch-size 8 --device cuda --offline

auto-research multimodal-eval \
  --benchmark scienceqa --annotations data/scienceqa \
  --predictions runs/scienceqa/predictions.jsonl \
  --maximum-examples 500 --seeds 42

不传 --checkpoint-path --offline 时会直接从 --model-id 下载。生成器旁路文件 predictions.jsonl.metadata.json 记录 revision、prompt/解码参数、设备和续跑计数;模型权重 与预测全集不提交 Git。

--batch-size 默认为 1,保证未知 checkpoint 的兼容性;正式 GPU 评测可从 8 开始逐步增加。 生成器会为 decoder-only VLM 临时启用左 padding,避免短提示从 PAD token 后错误续写;批次 过大导致 OOM 时,缩小 batch 后使用同一输出文件即可从已落盘 ID 继续,不必重算。

图文检索使用独立预测入口:

auto-research multimodal-retrieval-predict \
  --benchmark coco-retrieval \
  --annotations data/coco/dataset_coco.json \
  --image-root data/coco/images \
  --output runs/coco/clip-predictions.jsonl \
  --model-id openai/clip-vit-base-patch32 \
  --checkpoint-path checkpoints/clip-vit-base-patch32 \
  --batch-size 64 --score-batch-size 256 --device cuda --offline

auto-research multimodal-eval \
  --benchmark coco-retrieval \
  --annotations data/coco/dataset_coco.json \
  --predictions runs/coco/clip-predictions.jsonl \
  --seeds 42 --device cuda

同一个命令可将 benchmark 换为 flickr30k-retrieval。预测 metadata 只记录公开模型 ID、 不可变 revision、通用平台/设备、耗时和峰值显存,不记录主机名、系统发行版本、内部 PyTorch 构建串或本地绝对路径。

四类任务也可以用同一脚本按已经配置的数据集批量执行;未配置的任务会跳过,至少需要配置 一项:

SCIENCEQA_ROOT=data/scienceqa \
POPE_ANNOTATIONS=data/pope/coco_pope_adversarial.json \
POPE_IMAGE_ROOT=data/coco/val2014 \
COCO_ANNOTATIONS=data/coco/dataset_coco.json \
COCO_IMAGE_ROOT=data/coco \
VLM_CHECKPOINT_PATH=checkpoints/smolvlm2-256m \
RETRIEVAL_CHECKPOINT_PATH=checkpoints/clip-vit-base-patch32 \
DEVICE=cuda ./scripts/run-multimodal-checkpoint-matrix.sh

脚本默认不截断官方 split。生成式预测可续跑;图片、checkpoint、逐题预测和完整 ranking 均留在 runs/,Git 只保存最终聚合指标和复现配方。

用真实 checkpoint 做多轮 evolve

vlm-checkpoint 不训练或复制模型权重,而是在同一个已加载 checkpoint 上使用官方 ScienceQA validation 选择推理配方,搜索提示模板、hint、图像预缩放和确定性解码预算。 所有轮次结束后,控制器才在 test 上各运行一次初始基线与冠军,避免 test 泄漏:

auto-research evolve \
  --model vlm-checkpoint --dataset scienceqa \
  --direction "比较提示模板、hint、图像分辨率和解码预算" \
  --checkpoint-model-id HuggingFaceTB/SmolVLM2-256M-Video-Instruct \
  --checkpoint-revision 067788b187b95ebe7b2e040b3e4299e342e5b8fd \
  --checkpoint-path checkpoints/smolvlm2-256m \
  --checkpoint-annotations data/scienceqa \
  --checkpoint-image-root data/scienceqa/images \
  --maximum-examples 500 --generations 3 --population 4 \
  --workers 1 --seeds 42 --device cuda --offline

本地数据必须同时包含 pid_splits.jsonproblems.jsonimages/val/images/test/。只下载 test 图片足够运行 multimodal-predict --split test,但不足以执行 无泄漏 evolve。单卡默认 --workers 1,因此 checkpoint 只加载一次;提高 workers 会让每个 隔离 worker 独立加载模型,应同时设置 --gpu-slots--gpu-memory-per-trial-mb

报告逐 trial 保存模型不可变 revision、实际 CUDA device、accuracy、image/text accuracy、 parse rate、单样本延迟和峰值显存。checkpoint、逐题预测和 runs/ 仍不进入 Git。

2026-08-11 在 NVIDIA A30 上使用 SmolVLM2-256M revision 067788b187b95ebe7b2e040b3e4299e342e5b8fd 做过真实 checkpoint 工程 smoke:2 代、每代 2 个候选,加独立基线共 5 个 trial,全部在 CUDA 完成;峰值显存约 852.6–853.5 MiB, parse rate 为 1.0。两题临时 split 的 accuracy 为 0.5,冠军仍为初始配方。这里的两题来自真实 ScienceQA 图文样本,但只是验证 checkpoint 加载、validation→test 控制流和报告链路,不是 官方 benchmark,也不能据此比较配方效果;正式结论必须使用完整官方 val/test 图像。 逐 trial 精确指标保存在 a30-vlm-checkpoint-smoke-20260811.json

ScienceQA/POPE 的每行预测为:

{"id": "question-id", "prediction": "yes / no / A / choice text"}

检索预测必须同时提供两个方向。手写完整 ranking 仍受支持;checkpoint 生成器使用紧凑格式:

{"image_id": "10", "ranked_text_ids": ["100", "101"], "relevant_text_rank": 1}
{"text_id": "100", "ranked_image_ids": ["10", "20"], "relevant_image_rank": 1}

随机基线只验证标注解析、指标和多 seed 聚合,不代表 VLM 能力。真实结果必须保留生成 预测时的 checkpoint、prompt、图像预处理和 seed。公开数据请从 ScienceQAPOPECOCOFlickr30K 的原始发布页取得;仓库不提交 图片、数据压缩包或模型 checkpoint。

CIFAR-10 正式多 seed 入口

以下命令固定 architecture 和训练预算,validation 用于诊断,test 只做隔离报告:

auto-research multimodal-eval \
  --benchmark cifar10-qa --architecture micro_vlm_query \
  --steps 300 --maximum-examples 5000 --dimensions 192 \
  --batch-size 32 --seeds 42,43,44

生成目录同时包含机器可读 metrics.json 和中文 report.md。三个及以上 seed 才标记为 正式比较;报告统一包含 mean、sample std 与 95% CI 半径。

本仓库已按上述配方在官方 CIFAR-10 上完成 CPU 三 seed 实验:test accuracy 19.43% ± 0.25 points,打乱图/空白图为 10.43%/10.00%。结构化结果见 metrics/cifar10-qa-seeds42-44.json

已执行的 ScienceQA checkpoint 结果

MR6 已在官方完整 test split 4,241 条上执行同一 SmolVLM2-256M revision:accuracy 54.92%,image/text accuracy 62.82% / 47.75%,coverage 100%,parse rate 99.95%。这是单次确定性 checkpoint 运行,不标记为多 seed 正式比较。结构化结果见 metrics/scienceqa-smolvlm2-256m-full.json

同一 checkpoint 在官方 POPE COCO adversarial 完整 3,000 条上的 accuracy 75.17%, precision 95.76%、recall 52.67%、F1 67.96%、yes ratio 27.50%,解析率 100%。accuracy 受回答 no 的偏置影响,必须与 recall、F1 和 yes ratio 一起解读。 结构化结果见 metrics/pope-adversarial-smolvlm2-256m-full.json

历史固定子集

单卡 A30、SmolVLM2-256M commit 067788b…、官方 test 固定前 500 条,确定性 zero-shot accuracy 56.80%,image/text accuracy 62.87% / 51.33%,parse rate 99.80%。 该结果用于证明“真实 checkpoint → 可续跑预测 → 独立 scorer”闭环,不是完整 test 榜单或 多 seed 稳定性结论。完整配置与数据指纹见 metrics/scienceqa-smolvlm2-256m-500.json

评测层级

层级 数据 可声明结论
L1 Fashion-MNIST / CIFAR-10 object QA 真实公开图像上的缩小实验
L2 ScienceQA、POPE、COCO/Flickr retrieval 可审计的真实 checkpoint 公开 benchmark 结果;固定子集必须显式标注
L3 lmms-eval 完整任务套件、跨 checkpoint 同预算矩阵 标准 VLM 能力与效率对照

MR7:跨 checkpoint 矩阵

MR7 把单 checkpoint 运行升级为可恢复矩阵。每个 cell 固定 benchmark、样本上限、seed 与 batch fallback;OOM 只回退配置中显式列出的 batch,已写入预测继续复用。生成式 VLM 和检索编码器按 family / benchmark 分组,绝不放进同一排行榜。

本地还用缓存的官方 SmolVLM2-256M-Video-Instruct 不可变 revision 对一个真实像素 POPE smoke cell 跑通完整加载、生成、归一化、scorer、状态文件和 Markdown 报告链路;该样例仅验证执行路径,不作为模型质量结论。多 checkpoint 的比较结果必须在相同公开 split 和预算上另行运行,不能用 smoke 样本冒充。

auto-research multimodal-matrix \
  --config configs/multimodal-checkpoint-matrix.example.json \
  --output-dir runs/multimodal-matrix \
  --device cuda

输出 matrix.json 保存 revision、性能、延迟和峰值显存,report.md 给出同类可比较表。配置中的数据和 checkpoint 路径均为本地路径,仓库不提交数据或权重。

MR8:完整 split 公平矩阵

MR8 把 MR7 的执行链路用于真实 L3 对照。生成式组固定相同 prompt、hint、确定性解码、 样本顺序与生成长度,比较 SmolVLM2 256M、500M 和 2.2B;检索组固定相同 COCO Karpathy test 5K、图像预处理入口和全库双向排序,比较 CLIP ViT-B/32 与 SigLIP2 Base P16-224。每个模型均锁定 40 位不可变 revision。两组任务的目标函数和输出空间不同, 因此只在各自 family / benchmark 内比较,不计算跨组总排名。

公开 COCO 标注与图像可用校验和脚本准备:

./scripts/prepare-coco-retrieval.sh data/coco

脚本验证 Stanford Karpathy 标注的 SHA-256 与 COCO val2014 ZIP 的 MD5,只提取 test split 需要的 5,000 张图片并删除临时 ZIP,避免为一次 5K 评测长期占用完整 val2014 的磁盘空间。

完整矩阵配置位于 configs/multimodal-checkpoint-matrix.mr8.json。 直接联网运行时无需填写 checkpoint_path;开发机离线运行时,在本地副本中为每个 cell 补充对应 snapshot 路径,然后执行:

auto-research multimodal-matrix \
  --config configs/multimodal-checkpoint-matrix.mr8.json \
  --output-dir runs/multimodal-matrix-mr8 \
  --seed 42 --device cuda --offline

执行器会拒绝同组中 split、样本数、prompt、hint、图像尺寸或解码预算不一致的配置;状态 文件同时绑定完整配置与 seed 的 SHA-256,修改协议后不能误续跑旧结果。checkpoint、COCO 图像和逐样本预测仍不提交 Git,只保存可审计的聚合指标、不可变 revision 与复现命令。

已执行结果

2026-08-13 已在单卡 NVIDIA A30 上完成 8 个 cell。结果均为固定 seed 的确定性推理,适合 比较不可变 checkpoint,不冒充训练多 seed 置信区间。完整机器可读结果见 metrics/checkpoint-matrix-mr8-full.json

ScienceQA 完整 test 4,241 条:

checkpoint accuracy image / text accuracy sec/example 峰值显存
SmolVLM2-256M 54.92% 62.82% / 47.75% 0.188 0.96 GiB
SmolVLM2-500M 65.03% 75.06% / 55.94% 0.206 1.41 GiB
SmolVLM2-2.2B 79.60% 88.25% / 71.76% 0.185 6.12 GiB

500M 相对 256M 提升 10.12 points;2.2B 相对 256M 提升 24.69 points。生成提前停止会影响 实测延迟,因此 2.2B 的较低 sec/example 不能表述为其模型本体比小模型更快。

POPE COCO adversarial 完整 3,000 条:

checkpoint accuracy precision / recall / F1 yes ratio sec/example
SmolVLM2-256M 75.13% 95.75% / 52.60% / 67.90% 27.47% 0.316
SmolVLM2-500M 80.93% 79.04% / 84.20% / 81.54% 53.27% 0.325
SmolVLM2-2.2B 83.33% 85.31% / 80.53% / 82.85% 47.20% 0.362

500M 已显著缓解 256M 的 no 偏置;2.2B accuracy/F1 继续提高,但 recall 低于 500M,说明 规模增大并不保证每个行为子指标单调改善。

COCO Karpathy test 5K(5,000 图、25,010 captions):

checkpoint I→T R@1/5/10 T→I R@1/5/10 mean recall 峰值显存
CLIP ViT-B/32 50.30 / 74.94 / 83.46 30.46 / 55.93 / 66.91 60.33% 0.53 GiB
SigLIP2 Base P16-224 65.26 / 85.92 / 91.66 48.84 / 72.96 / 81.06 74.29% 1.23 GiB

SigLIP2 mean recall 比 CLIP 高 13.95 points,但峰值显存约 2.31 倍。本次真实运行还发现并 修复了一个容易静默污染结果的兼容问题:SigLIP/SigLIP2 在最终文本位置 pooling,若使用 动态 padding,同一 caption 的表示会随 batch 最长文本变化,错误运行的 mean recall 只有 14.16%。预测器现在统一使用 checkpoint max_length,并有回归测试锁定该协议;错误结果 未写入最终指标。

官方 lmms-eval 接口

仓库以可选依赖接入上游 lmms-eval 0.7.2,通过 argv 列表启动而非 shell 字符串,并保存 完整 request。MR9 不再把子进程退出视为完成:必须找到并解析上游 *_results.json,才会生成 summary.json。该摘要只保留公开模型 ID、不可变模型/upstream revision、任务版本、有效样本 数、标量指标和固定预算,不写主机名或本地绝对路径。

先 dry-run 审计命令:

pip install -e '.[lmms-eval]'
auto-research multimodal-lmms-eval \
  --model qwen2_5_vl \
  --model-args pretrained=Qwen/Qwen2.5-VL-3B-Instruct,device_map=auto \
  --public-model-id Qwen/Qwen2.5-VL-3B-Instruct \
  --model-revision <40-character-hugging-face-commit> \
  --upstream-revision cb45ac4d4a667ea5ef89c7a148bff69b3489b981 \
  --tasks mme,mmmu_val \
  --limit 8 \
  --output-dir runs/lmms-eval/qwen25vl \
  --dry-run

去掉 --dry-run 才会下载任务并推理。上游任务模板和 scorer 属于 lmms-eval;本仓库只负责可审计调用、运行目录与后续统一矩阵汇总。

MR9:真实 L3 标准任务

MR9 锁定 lmms-eval 0.7.2 的源代码 commit cb45ac4d4a667ea5ef89c7a148bff69b3489b981。该版本的 PyPI wheel 会漏掉 extensionless task template,正式复跑应使用完整源代码 checkout;此外其通用 Hugging Face adapter 会把 SmolVLM 错误加载为不含 generate() 的 base model。本仓库保存了最小兼容补丁,不改 task prompt、generation budget 或 scorer:

git clone --branch v0.7.2 https://github.com/EvolvingLMMs-Lab/lmms-eval.git third_party/lmms-eval
python scripts/patch_lmms_eval_smolvlm.py third_party/lmms-eval
python -m pip install -e third_party/lmms-eval

auto-research multimodal-lmms-eval \
  --model huggingface \
  --model-args pretrained=checkpoints/smolvlm2-2.2b,device_map=auto \
  --public-model-id HuggingFaceTB/SmolVLM2-2.2B-Instruct \
  --model-revision 482adb537c021c86670beed01cd58990d01e72e4 \
  --upstream-revision cb45ac4d4a667ea5ef89c7a148bff69b3489b981 \
  --tasks scienceqa_img --batch-size 1 --seed 42 \
  --output-dir runs/lmms-eval/smolvlm2-2.2b-scienceqa-img --device cuda

上游 scienceqa_img 只包含 2,017 个带图问题,和本仓库 L2 scienceqa 的完整 4,241 条 图文混合 test 不是同一个评测集合,二者 accuracy 不得直接比较。受限网络可把官方 lmms-lab/ScienceQA snapshot 预下载后让 task 指向内容相同的本地 Parquet;这只改变数据 读取位置,不改变问题、prompt 或 scorer。

2026-08-13 已在单卡 NVIDIA A30 上完成上述完整 2,017 条任务:上游 exact match 为 87.21% ± 0.74 points(1,759 条正确),生成 4,422 tokens,用时 462.90 秒,平均 9.55 tokens/s。该结果是单 checkpoint 确定性推理,不是训练多 seed 正式比较;结构化证据见 metrics/lmms-eval-mr9-scienceqa-img.json。 任务的逐题 JSONL、公开 Parquet 与 checkpoint 均未提交 Git。

任何仅在 L0 获得的提升都不能表述为通用视觉语言能力提升。