问题
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 加回来。
问题
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_inferextract_answer_from_item里没有给 MMMU 单独分支,open 改写题和正常 MCQ 一样走字母提取。can_infer适合短输出、单字母选项;对长段开放作答基本只能返回 Z。3. 标准 MCQ 不受影响
MMMU 里真正的选择题,模型一般直接输出选项字母,
can_infer和历史版本的专用解析器结果一致。问题集中在 open 改写那部分。核实情况
影响