1. 项目概述一个为“专家级”多模态AI设计的“高考”如果你最近在关注多模态大模型LMMs的进展可能会发现一个现象很多模型在常见的图像描述、视觉问答VQA基准上已经取得了接近甚至超越人类的分数。这不禁让人疑惑这些模型真的“理解”了图像和文本吗还是说它们只是在拟合我们设计得过于简单的测试题这正是MMMUMassive Multi-discipline Multimodal Understanding及其升级版MMMU-Pro诞生的背景。简单来说你可以把它理解为给AI模型设计的一场“多学科高考”。它不再问你“图片里有什么”而是直接甩给你一道大学级别的考题比如一张复杂的电路图、一份财务报表、一首乐谱的片段或者一个化学反应式然后让你基于这些视觉信息结合领域知识进行推理和解答。我最初接触这个项目是因为在评估自己团队开发的模型时深感现有基准的局限性。像VQAv2、ScienceQA这些数据集要么问题过于简单要么领域过于单一很难真正衡量模型在复杂、专业场景下的综合能力。MMMU的出现就像是为这个领域引入了一个新的“标尺”——一个更接近真实世界专家任务的标尺。这个基准的核心价值在于其大规模、多学科和高难度。它包含了超过1.15万个来自真实大学教材、考试和习题的多模态问题横跨艺术设计、商业、科学、健康医学、人文社科、技术与工程六大核心学科细分到30个科目和183个子领域。题目中的图像类型多达32种从常见的图表、地图到专业的化学结构式、乐谱、机械图纸几乎涵盖了所有需要视觉理解的专业场景。最让我印象深刻的是即使是目前公认最强的GPT-4V模型在MMMU上的准确率也只有56%左右。这个数字清晰地告诉我们当前的多模态模型距离“专家级AGI”还有很长的路要走。而MMMU-Pro在此基础上更进一步通过一系列严谨的设计如过滤纯文本可答问题、增加干扰选项、将问题文本也嵌入图像将模型的成绩“打回原形”各大模型准确率骤降至16.8%到26.9%之间这为我们揭示了模型能力中更本质的短板。接下来我将从一个实践者的角度深入拆解MMMU/MMMU-Pro的设计思路、使用方法并分享在本地进行评估和参与官方排行榜时你可能需要知道的一切细节与避坑指南。2. 核心设计思路为什么说它是“专家级”的试金石要理解MMMU的价值我们得先看看它解决了现有基准的哪些痛点。在我过去几年的模型评估工作中常常遇到以下几个问题“看图说话”陷阱许多VQA数据集的问题答案很大程度上可以从问题文本本身推断出来或者图像只是提供了非常浅层的上下文。模型可能不需要真正理解图像细节就能蒙对答案。领域单一性大多数基准集中在1-2个领域如通用视觉、科学QA模型在一个领域表现好不代表它能处理跨学科的复杂知识。缺乏高阶推理问题多停留在识别、描述层面很少需要结合领域知识进行多步逻辑推理、计算或批判性思考。MMMU的设计直击这些痛点。它的核心思路是构建一个需要“领域知识”和“深度推理”才能解决的多模态问题集合。这听起来简单但实现起来需要精心的设计。2.1 数据收集与构建从“题海”到“精选题库”项目团队的数据收集策略非常务实。他们没有从头生成问题而是直接从真实世界的知识载体中挖掘这保证了问题的真实性和难度。主要来源包括大学教科书与习题集这是核心来源确保了问题的学术性和专业性。公开的考试与测验如AP课程考试、职业资格考试题目。在线教育平台如Coursera, edX等平台课程中的测验题。注意这里涉及一个非常关键的版权问题。项目方在构建数据集时明确要求标注员严格遵守原始数据源的版权和许可协议避免使用禁止复制和再分发的网站材料。他们在项目主页也提供了联系方式承诺一旦发现侵权样本会立即移除。这一点对于任何希望构建类似数据集的研究者来说都是重要的警示合规性是第一位的。收集到原始材料后团队进行了严格的筛选和清洗模态筛选只保留那些必须同时理解图像和文本才能正确回答的问题。如果一个问题仅凭文本或仅凭图像就能解答它就会被剔除。这是保证基准“多模态”属性的关键一步。质量审核由相关领域的学生或研究者对问题进行审核确保问题清晰、答案正确、图像质量合格。格式统一将所有问题转化为统一的多项选择题格式。这虽然简化了评估的复杂性只需判断选项但题目的内容本身丝毫没有简化。选项的设计也很有讲究干扰项往往是与正确答案在知识上相关但细微处有错的选项增加了区分度。2.2 MMMU-Pro让评估更“残酷”也更“真实”如果说MMMU是高考那么MMMU-Pro就是高考的“加强版”它通过三个步骤进一步剥离了模型可能存在的“侥幸”成分过滤纯文本可答问题这是对MMMU的第一次提纯。团队使用了一个强大的纯文本模型例如GPT-4让它仅根据问题文本不提供图像进行作答。如果文本模型能达到很高的准确率说明该问题可能并不强制依赖图像信息。这类问题会被从MMMU-Pro中移除。这一步确保了基准中的每一个问题都真正需要视觉理解。增强候选选项在原有选择题选项的基础上人工添加更多看似合理的“迷惑项”。例如如果原题是问“根据图表哪一年的增长率最高”除了正确的年份和明显错误的年份可能会加入一个“增长率第二高”的年份作为新选项。这迫使模型必须进行更精确的计算和推理而不是靠排除明显错误答案来猜。视觉唯一输入这是MMMU-Pro最具特色的设计。在MMMU中问题和图像是分开的例如文本问题图片URL。而在MMMU-Pro中问题文本被直接渲染到图像上与原有的图表、公式等视觉元素融为一体。模型接收到的只有一个合并后的图像。这意味着模型必须像人一样具备从一张复杂的图片中同时“读取”文字信息和“解析”非文字视觉元素的能力。这个设置模拟了人类阅读教科书、分析带标注的图表时的真实认知过程极大地增加了难度。下表对比了MMMU和MMMU-Pro的核心区别特性MMMUMMMU-Pro核心目标评估多学科知识下的多模态理解与推理评估更鲁棒、更接近真实场景的多模态理解问题筛选需同时理解图文在MMMU基础上额外过滤掉纯文本模型可答的问题输入形式图像与问题文本分离输入问题文本被嵌入图像中仅提供单张图像作为输入选项设计原始选择题选项在原始选项基础上人工添加了更多强迷惑性选项评估难度高GPT-4V ~56%极高最佳模型 ~27%模拟场景开卷考试可以分别看题和看图闭卷考试所有信息都在一张纸上这种设计使得MMMU-Pro的评估结果更能反映模型内在的多模态融合与推理能力而不仅仅是它在特定数据格式上的表现。3. 数据集详解与本地使用指南对于想要使用MMMU/MMMU-Pro来评测自己模型的研究者和开发者来说第一步就是理解数据集的结构并能在本地跑通评估流程。官方代码库提供了清晰的指引但其中有些细节和潜在坑点我这里结合自己的实践经验详细说明。3.1 数据集结构与获取数据集托管在Hugging Face Datasets上这是目前最方便的方式。MMMU数据集https://huggingface.co/datasets/MMMU/MMMUMMMU-Pro数据集https://huggingface.co/datasets/MMMU/MMMU_Pro使用datasets库可以轻松加载from datasets import load_dataset # 加载MMMU验证集 mmmu_val load_dataset(MMMU/MMMU, validation) # 加载MMMU-Pro验证集 mmmu_pro_val load_dataset(MMMU/MMMU_Pro, validation)每个样本通常包含以下关键字段以MMMU为例id: 样本唯一标识符。question: 问题文本。options: 一个列表包含所有选项文本如[A. ..., B. ..., ...]。answer: 正确答案的索引如0代表选项A或字母如A。image: 一个PIL.Image对象包含问题所需的图像。category: 所属的一级学科类别如Art and Design。task: 所属的二级学科任务如Art History。explanation(部分集合有): 对答案的详细解释。数据集被划分为三个部分用途分明开发集 (Dev Set, 150条)用于小样本学习Few-shot Learning或上下文学习In-context Learning。你可以从这里面挑选一些例子作为提示词Prompt的一部分输入给模型让模型学会解题格式和风格。验证集 (Val Set, 900条)用于模型调试、超参数选择和快速评估。这是你本地迭代的主要依据。所有模型的论文中报告的“Val”性能都基于此集合。测试集 (Test Set, 10500条)用于最终评估和排行榜排名。注意在2026年2月12日之前测试集的答案是不公开的评估必须在官方的EvalAI平台上进行。而在此日期之后官方已经发布了测试集的答案answer_dict_test.json这意味着你现在可以在本地对测试集进行完整的评估但用于排行榜提交的官方流程可能仍有独立要求。3.2 本地评估流程拆解本地评估的核心是让你的模型对数据集中的每个样本生成一个答案选项字母然后将你的预测结果与标准答案进行比较计算准确率。官方仓库https://github.com/MMMU-Benchmark/MMMU提供了评估脚本的参考实现。其核心步骤可以概括为以下流程图所示的过程graph TD A[开始评估] -- B[加载数据集brDev/Val/Test]; B -- C[遍历每个样本]; C -- D{数据集类型?}; D -- MMMU -- E[构建Promptbr文本问题 图像]; D -- MMMU-Pro -- F[构建Promptbr仅包含嵌入问题的图像]; E -- G[调用多模态大模型brAPI或本地生成回答]; F -- G; G -- H[后处理模型输出br提取选项字母]; H -- I[保存预测结果brID: 预测答案]; C -- J[所有样本处理完毕]; J -- 否 -- C; J -- 是 -- K[加载标准答案文件]; I -- L[计算指标br准确率、分科准确率]; K -- L; L -- M[输出评估报告];下面我们针对图中的几个关键环节进行深入探讨。1. 构建模型输入Prompting这是影响模型表现的关键。对于MMMU你需要将question文本和image图像一起组织成模型能接受的格式。一个常见的Prompt模板如下请回答以下选择题。首先仔细分析图像然后结合问题做出选择。 图像[此处插入图像] 问题{question} 选项 {options} 请只输出答案的选项字母例如‘A’。对于MMMU-Pro由于问题文本已在图像中你的Prompt可以更简洁直接让模型分析图像即可。实操心得Prompt的设计需要细微调整。例如加上“逐步思考”或“让我们一步步推理”的指令即Chain-of-Thought, CoT通常会提升需要复杂推理题目的性能。你可以用开发集Dev Set快速尝试几种不同的Prompt模板看看哪种在你的模型上效果最好。2. 调用模型生成答案你需要将构建好的Prompt和图像输入到你想要评估的多模态大模型中。这可能是商业API如OpenAI的GPT-4V、Anthropic的Claude-3、Google的Gemini等。你需要处理API调用、速率限制和错误重试。开源模型如LLaVA-Next、Qwen-VL、InternVL等。你需要在本地或自己的服务器上部署模型并使用相应的推理库如vLLM, transformers进行调用。3. 后处理与答案提取模型生成的原始输出可能是“答案是A”或者一段思考后以“因此选A”结尾。你需要编写一个稳健的后处理函数通常用正则表达式从模型输出中提取出A、B、C、D这样的单个字母。4. 计算准确率收集完所有样本的预测答案后将其与标准答案对比。计算整体准确率Overall Accuracy是基本操作。但MMMU更有价值的是分学科准确率。你应该分别计算每个一级学科如Art and Design, Science等下的准确率这能帮你清晰了解模型的优势学科和短板。# 一个简单的计算示例 def calculate_accuracy(predictions, ground_truth): correct 0 total len(predictions) category_correct {} category_total {} for id, pred in predictions.items(): gt ground_truth[id][answer] # 假设ground_truth是字典 cat ground_truth[id][category] if pred gt: correct 1 category_correct[cat] category_correct.get(cat, 0) 1 category_total[cat] category_total.get(cat, 0) 1 overall_acc correct / total category_acc {cat: category_correct.get(cat, 0)/category_total[cat] for cat in category_total} return overall_acc, category_acc3.3 使用官方评估脚本官方仓库的eval目录下提供了更完整的评估脚本。我强烈建议以官方脚本为基础进行修改因为它处理了所有细节比如数据加载、答案格式对齐、分科统计等。你的主要工作就是实现一个“模型推理器”即一个函数它接收问题数据返回模型预测的答案字母。避坑指南注意数据集中的答案格式。有些可能是整数索引0,1,2,3有些可能是字符串字母‘A’,‘B’,‘C’,‘D’。在比较和计算时务必统一。官方提供的answer_dict_val.json和answer_dict_test.json文件通常将答案存储为字母。4. 参与官方排行榜与模型提交虽然现在可以本地评估测试集但如果你想在官方排行榜Leaderboard上与其他模型一较高下或者让你的模型结果被社区广泛认可了解官方的提交流程仍然很重要。4.1 排行榜与历史提交方式官方排行榜曾托管在EvalAI平台上挑战页面通常已关闭以官方最新通知为准。参与流程一般如下注册与报名在EvalAI上注册账号并报名参加MMMU挑战赛。生成测试集预测在本地使用你的模型对不提供答案的测试集生成预测结果。你需要严格按照测试集的文件列表顺序生成一个预测文件如predictions.json格式为{“id_1”: “A”, “id_2”: “B”, …}。提交结果将预测文件上传到EvalAI平台。平台的后台会自动将你的预测与隐藏的标准答案对比计算出各项分数并更新到排行榜上。限制通常会有每日或每周的提交次数限制以防止对测试集进行过度拟合。重要更新根据项目首页的新闻2026-02-12测试集的答案已经发布。这意味着EvalAI的盲测提交可能不再是唯一方式或者平台规则已变。你需要密切关注项目GitHub仓库或主页的最新说明以了解当前官方的排名提交机制。很可能现在鼓励研究者直接在论文中报告基于公开测试集计算的结果并在Leaderboard上通过引用论文进行登记。4.2 如何解读排行榜结果查看排行榜时不要只看总排名和整体准确率。深入分析分科成绩至关重要识别模型强项如果一个模型在“Business”和“Tech Engineering”上表现突出但在“Art Design”上表现很差这可能意味着它的训练数据更偏向于逻辑、图表类而缺乏艺术史、设计原理方面的知识。分析模型类型比较纯视觉语言模型如LLaVA与那些集成了外部工具如计算器、代码解释器的模型之间的表现差异。后者可能在需要计算的“Science”科目上有优势。关注MMMU vs MMMU-Pro对比同一个模型在两个基准上的表现落差可以直观看出该模型在“纯视觉理解”和“抗干扰推理”上的能力差距。落差越大说明模型在MMMU上的成绩可能更多依赖于文本线索或简单的模式匹配。5. 实践中的挑战与解决方案在实际使用MMMU进行评估的过程中我遇到了不少挑战也总结出一些经验。5.1 模型推理的工程挑战长上下文与高分辨率图像MMMU中的许多图像如详细的地图、复杂的电路图包含大量细节。为了不错失关键信息你需要以高分辨率处理图像。但这会显著增加模型的输入token数量可能导致API成本剧增对于按token收费的API评估一次完整测试集费用不菲。显存溢出对于本地部署的大模型高分辨率图像可能轻易撑爆GPU显存。解决方案智能切分对于非常大的图像可以尝试将其分割成多个重叠的区块分别输入模型再综合各区块的答案信息。但这会引入额外的逻辑复杂性。有损压缩在保持关键信息可读的前提下适当降低图像分辨率或采用更高效的编码。需要谨慎测试压缩对精度的影响。使用视觉编码器许多开源LMM采用Vision Transformer (ViT) 作为视觉编码器它有固定的输入尺寸如224x224, 336x336, 448x448。你需要了解你的模型使用哪种预处理方式并确保你的图像预处理流程与之匹配。提示工程Prompt Engineering如前所述Prompt对结果影响巨大。除了尝试CoT还可以角色扮演让模型扮演“某学科专家”有时能激发其相关知识。格式强化在Prompt中非常严格地规定输出格式如“你的回答必须是单个大写字母不要有任何其他文本。”可以减少后处理错误。少样本示例从开发集中挑选几个不同学科的典型样例连同解题过程一起放入Prompt能有效引导模型。5.2 结果分析与模型改进方向评估不是终点而是诊断模型问题的起点。拿到评估结果后应该怎么做错误分析Error Analysis这是最重要的一步。不要只盯着准确率数字。随机采样几百个模型预测错误的样本人工逐一检查。错误主要集中在哪里知识性错误模型根本不具备回答该问题所需的领域知识如不认识某个历史事件、不理解某个物理公式。这说明需要扩充模型在该领域的预训练或指令微调数据。感知性错误模型未能从图像中正确提取信息如看错了图表上的数据点、误读了电路符号。这说明模型的视觉编码器或视觉-语言对齐能力有待加强。推理性错误模型具备了相关知识和感知但逻辑推理链条出错如计算错误、因果推断错误。这可能需要通过数学、逻辑相关的数据进一步训练或者引入外部工具如计算器、符号推理引擎。格式性错误模型理解了内容但输出格式不符合要求如输出了完整句子而非单个字母。这可以通过强化指令遵循训练来解决。分学科针对性优化根据错误分析的结果你可以有针对性地收集或生成特定学科的数据对模型进行继续预训练或指令微调。例如如果模型在“Health Medicine”上表现差可以引入医学教科书、解剖图谱、病例报告等多模态数据。集成外部知识与工具对于MMMU中大量需要计算、符号操作或事实核查的题目纯端到端的模型有其局限性。可以考虑为模型配备“外挂”检索增强当遇到需要最新或非常用知识的问题时让模型先调用搜索引擎或知识库检索相关信息。代码执行对于数学计算、数据处理题让模型生成Python代码并执行将结果作为答案的一部分。专业工具对于化学结构式、乐谱等可以连接专业的解析库来辅助分析。5.3 常见问题与排查清单以下是我在多次评估中遇到的一些典型问题及解决方法问题现象可能原因排查与解决思路整体准确率极低10%1. 数据加载/预处理错误2. Prompt格式严重不符模型预期3. 模型权重加载错误或版本不对1. 先用开发集的几个样本手动测试确保图像能正常显示问题文本读取正确。2. 检查Prompt是否与模型训练时的指令格式匹配。尝试最简单的Prompt如“请回答”问题。3. 确认模型名称、路径正确并成功加载。准确率波动大同一模型多次评估结果不同1. 模型生成具有随机性温度参数02. 图像预处理存在随机性如随机裁剪、缩放1. 评估时将模型的生成温度temperature设置为0以确保确定性输出。2. 固定图像预处理的所有随机种子确保每次评估的输入完全一致。后处理提取答案失败率高1. 模型输出格式不稳定2. 正则表达式覆盖不全1. 分析一批模型的原始输出观察其规律。可能需要在Prompt中更严格地约束格式。2. 改进后处理脚本采用更鲁棒的匹配方式如寻找最后一个出现的选项字母。在MMMU上表现尚可但在MMMU-Pro上暴跌1. 模型严重依赖文本问题中的关键词2. 模型OCR能力弱无法有效读取嵌入图像的文字1. 这正说明了MMMU-Pro的价值。你需要专门增强模型的视觉问答能力而非图文分离的QA能力。2. 考虑在训练数据中加入更多“文字在图中”的样本或使用更强的视觉编码器。评估速度非常慢1. 模型本身推理慢2. 没有使用批处理3. 网络延迟API调用1. 对于开源模型尝试使用更快的推理后端如vLLM, TensorRT-LLM或量化版本。2. 如果模型支持将多个样本组成一个批次batch进行推理。3. 对于API合理设置并发数和重试机制并考虑使用异步调用。最后我想分享一点个人体会。MMMU/MMMU-Pro的出现像一面镜子照出了当前多模态大模型“华而不实”的一面。它在提醒我们让模型描述一幅画很美很容易但让它看懂一张财务报表并做出分析或者理解一首乐谱的情感还有很长的路要走。这个基准不仅仅是一个排行榜更是一个研究方向的指引。它告诉我们未来的多模态模型需要更深的领域知识、更严谨的推理能力以及更紧密的视觉-语言融合。对于从业者而言与其追逐在简单基准上的分数不如沉下心来用MMMU这样的基准认真检验自己的模型分析它的失败案例那才是通向真正“智能”的路径。