open-compass / open-compass/VLMEvalKit
MMMU Open-ended问题无法正确评测
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 4.4k
- Forks
- 768
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 17
Description
问题
MMMU 里约 62 道 question_type=open 的题,在评测时被 MMMU_preproc 改成「A = 正确答案 / B = Other Answers」的伪 MCQ,再按选项字母打分。但推理时 prompt 以 Answer: 结尾,模型输出的是自由文本或数值,并没有按选择题作答。
结果是:Open-ended 子集的分数不能反映模型是否答对了,只能反映解析器能不能从长文本里抠出一个字母。
和历史版本比,Latest Version 在 MMMU 上整体偏低一些。用同一批 raw_predictions 分别按两套后处理重算,分差可以对上,说明不是推理变了,是打分逻辑变了。历史版本对这类题有误提字母 A 的情况(比如正文里出现 Solution A、area 等),Latest Version 用 can_infer 解析不了就记 Z,碰巧少了一些「答错却得分」的样本,但两边都没有真正比对答案内容。
原因
1. 推理和评测任务不一致
评测阶段才做 open→MCQ 改写,模型推理时看不到 A/B 选项,却要在评测时被当成选了 A 或 B。
2. Latest Version 统一走 can_infer
extract_answer_from_item 里没有给 MMMU 单独分支,open 改写题和正常 MCQ 一样走字母提取。can_infer 适合短输出、单字母选项;对长段开放作答基本只能返回 Z。
# multiple_choice.py
else:
ret = can_infer(item['prediction'], choices)
3. 标准 MCQ 不受影响
MMMU 里真正的选择题,模型一般直接输出选项字母,can_infer 和历史版本的专用解析器结果一致。问题集中在 open 改写那部分。
核实情况
- 同一 checkpoint、同一批 prediction,历史版本和 Latest Version 推理结果一致。
- 解析差异集中在 open 改写题,典型情况是:模型算了错数,Latest Version 记错(解析失败),历史版本有时记对(误提了正文里的 A)。
- 抽查样例里,误记对的占多数,说明历史分数在这块有水分;Latest Version 更严,但也不是在做内容判分。
影响
- Open-ended 子集(约 62 题)当前分数参考价值有限。
- MMMU 总分和历史版本不宜直接横比,需要说明后处理差异。
- MCQ 子集可以照常看。
- 不建议为对齐历史分数,把「全文捞唯一字母」那套 fallback 加回来。
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in multiple_choice.py at extract_answer_from_item and the can_infer fallback, then trace how MMMU open-ended items are represented during evaluation. Compare the handling of open questions with standard MCQs using the same raw_predictions. Done should make the open-ended subset evaluate answer content rather than option letters while leaving standard MCQ scoring unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- machine-learning
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100