open-compass / open-compass/VLMEvalKit

MMMU Open-ended问题无法正确评测

Open
#1,617 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.