ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

lm-evaluation-harness 中的 MMMU 基准实现:多模态专家级推理评估的配置、源码原理与复现指南

lm-evaluation-harness 中的 MMMU 基准实现:多模态专家级推理评估的配置、源码原理与复现指南 lm-evaluation-harness 中的 MMMU 基准实现多模态专家级推理评估的配置、源码原理与复现指南【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness导读MMMUA Massive Multi-discipline Multimodal Understanding and Reasoning Benchmark for Expert AGI是评估多模态大模型大学级跨学科知识与刻意推理能力的标杆基准。本文基于 lm-evaluation-harness 仓库中 MMMU 任务目录 的文档与实现完整解析该基准在框架内的组/任务层级结构、prompt 构造与答案解析的源码原理、30 个学科任务的 YAML 配置写法并给出可直接运行的评估命令与 4 个已测多模态模型的分数对照帮助你快速上手多模态评测或复现论文结果。MMMU 基准是什么MMMU 是一个专门用于评测多模态模型的大规模多学科基准其论文信息记录在 mmmu README 中论文标题MMMU: A Massive Multi-discipline Multimodal Understanding and Reasoning Benchmark for Expert AGI论文摘要MMMU 是一个新基准用于在需要大学水平学科知识和刻意推理的大规模多学科任务上评测多模态模型规模构成基准由 30 个任务组成共 900 条混合图像文本样本部分样本的上下文包含多张图像发表信息收录于 CVPR 2024inproceedings{yue2023mmmu一个关键使用要点在 README 的 Note 中明确给出部分问题上下文含有多张图像需要通过在模型初始化参数中设置max_imagesN来控制每样本允许的图像数量上限见下文运行与参数一节。任务层级结构Group 与 Task 的组织方式MMMU 的实现遵循 lm-evaluation-harness 的 YAML 任务配置规范整体呈总组 → 学科组 → 具体任务 → 模板的四层结构。顶层组mmmu_val_mmmu.yaml 定义了顶层聚合组mmmu_val它由 6 个学科子组构成并声明聚合指标acc按样本数加权求均值weight_by_size: truegroup: mmmu_val task: - mmmu_val_art_and_design - mmmu_val_business - mmmu_val_health_and_medicine - mmmu_val_humanities_and_social_science - mmmu_val_science - mmmu_val_tech_and_engineering aggregate_metric_list: - metric: acc aggregation: mean weight_by_size: true metadata: version: 0.0六个学科子组README 中列出的 Groups 与仓库中的 YAML 文件一一对应每个子组都使用group_alias定义展示名称并按样本数加权聚合 acc子组名别名配置文件包含任务mmmu_val_art_and_designArt and Design_art_and_design.yamlart、art_theory、design、musicmmmu_val_businessBusiness_business.yamlaccounting、economics、finance、manage、marketingmmmu_val_health_and_medicineHealth and Medicine_health_and_medicine.yamlbasic_medical_science、clinical_medicine、diagnostics_and_laboratory_medicine、pharmacy、public_healthmmmu_val_humanities_and_social_scienceHumanities and Social Science_humanities_and_social_sciences.yamlhistory、literature、sociology、psychologymmmu_val_scienceScience_science.yamlbiology、chemistry、geography、math、physicsmmmu_val_tech_and_engineeringTech and Engineering_tech_and_engineering.yamlagriculture、architecture_and_engineering、computer_science、electronics、energy_and_power、materials、mechanical_engineering以 _science.yaml 为例其结构为group: mmmu_val_science group_alias: Science task: - mmmu_val_biology - mmmu_val_chemistry - mmmu_val_geography - mmmu_val_math - mmmu_val_physics aggregate_metric_list: - metric: acc aggregation: mean weight_by_size: true metadata: version: 0.030 个具体任务README 中列出的任务accounting、agriculture、architecture_and_engineering、art、art_theory、basic_medical_science、biology、chemistry、computer_science、clinical_medicine、design、diagnostics_and_laboratory_medicine、electronics、energy_and_power、economics、finance、geography、history 等共 30 个在目录中均有独立 YAML 文件例如mmmu_accounting.yaml、mmmu_math.yaml、mmmu_physics.yaml等。每个任务文件极为精简通过include: _template_yaml继承公共模板仅覆盖任务别名与 HuggingFace 数据集子集名task: mmmu_val_math include: _template_yaml task_alias: Math dataset_name: Math以dataset_name对应 MMMU 官方 HuggingFace 数据集MMMU/MMMU中的学科子集如Math、Accounting从而实现 30 个任务共用一套处理逻辑。任务模板与核心处理逻辑源码解析模板 _template_yaml所有任务共享的模板 _template_yaml 定义了数据来源、输入输出格式与评测指标dataset_path: MMMU/MMMU validation_split: validation output_type: generate_until doc_to_image: !function utils.doc_to_image doc_to_text: !function utils.doc_to_text doc_to_target: answer process_results: !function utils.process_results generation_kwargs: until: - |endoftext| temperature: 0.0 do_sample: false max_gen_toks: 512 metric_list: - metric: acc aggregation: mean higher_is_better: true metadata: version: 0.0关键配置说明output_type: generate_untilMMMU 属于开放式生成评测模型需要自回归生成答案文本而非对有限选项做 loglikelihood 打分generation_kwargs使用贪心解码temperature: 0.0、do_sample: false最大生成 512 token遇到|endoftext|停止——这也是 README 中所有模型结果统一采用无 few-shot、贪心生成的原因doc_to_image/doc_to_text/process_results全部指向 utils.py 中通过!function引用的 Python 函数这是本实现的核心。prompt 构造doc_to_text 与多图占位符处理utils.py 中定义了三种 prompt 格式其 prompt fstring 来源是 MMMU 官方仓库 Llava-1.5 评测配置代码注释中给出了对应源文件路径MULTI_CHOICE_EXAMPLE_FORMAT {} {} Answer with the options letter from the given choices directly. SHORT_ANS_EXAMPLE_FORMAT {} Answer the question using a single word or phrase.多选题将options字段存储为字符串形式的 list通过ast.literal_eval解析后逐项格式化为(A) xxx\n(B) xxx\n...起始字母由START_CHR A控制再拼接到多选题模板后要求模型直接用选项字母作答简答题仅保留问题文本要求模型用单个词或短语回答。MMMU 原始数据中的图像占位符是带序号的image 1、image 2形式。doc_to_text会将其统一替换为image代码注释提示需要确认这对非 HF 模型也始终是正确做法而doc_to_image则负责在替换前用正则re.findall(image [1-7], input_text)定位占位符再按出现的顺序允许重复、乱序从 doc 中取出对应视觉输入例如注释中提到的validation_Math_19样本会按[image 1, image 2, image 1, image 1, image 2]的顺序取图。答案评估process_results 与解析函数process_results按question_type分两条路径返回{acc: float(is_correct)}多选题parse_multi_choice_response从生成文本中提取选项字母——依次尝试(A)括号形式、A B C D空格形式仍无结果且响应超过 5 个 token 时再尝试匹配选项内容index2ans最终都匹配不到时随机选一个若匹配到多个候选则取在响应中出现位置最靠后的一个np.argmax(start_indexes)随后用eval_multi_choice与标准答案做严格相等比较简答题parse_open_response先按句号/换行切分子句寻找 could be / so / is / thus / therefore / final / answer / result 等答案指示词截取尾部内容最后一子句额外接受以覆盖纯等式回答再调用extract_numbers支持千分位逗号、科学计数法提取数字最后normalize_str归一化数字保留两位小数、字符串转小写、单字符加空格防误匹配并去重eval_open再做字符串包含或数值相等匹配。这三类函数的解析与判定逻辑在代码注释中明确标注取自 MMMU 官方仓库eval/utils/data_utils.py与eval/utils/eval_utils.pyutils.py 内注释给出了来源路径因此本实现的打分口径与官方代码一致这也是 README 声称得分应与 MMMU 官方代码及 lmms-eval 的mmmu_val相当或略高的代码级依据。运行方式与关键参数使用 hf-multimodal 运行MMMU 属多模态评测需使用多模态模型后端。README 中所有复现结果均基于hf-multimodalHuggingFace 多模态模型完整命令形态如下以 Qwen2-VL-2B 为例配置取自 README 结果表头lm_eval \ --model hf-multimodal \ --model_args pretrainedQwen/Qwen2-VL-2B-Instruct,attn_implementationflash_attention_2,dtypebfloat16,convert_img_formatTrue \ --tasks mmmu_val \ --batch_size 2 \ --apply_chat_template参数说明--apply_chat_templateREADME 明确指出所有测试模型均开启了该参数即按各模型的对话模板组织 promptconvert_img_formatTrue对应 hf_vlms.py 中的convert_img_format模型参数开启后会将图像转换为模型期望的格式self.rgb控制 RGB 转换多模态模型评测建议开启max_imagesNREADME 的 Note 提示——MMMU 部分问题含多张上下文图像通过该参数控制。其在 hf_vlms.py 默认值为999在 api_models.py 默认值为1。设置后模型端会对文本中图像占位符数量与图像列表同时做截断见 hf_vlms.py 中min(self.max_images, text.count(DEFAULT_IMAGE_PLACEHOLDER))及images[: self.max_images]的处理Idefics2-8B 的复现即使用了max_images2README 表头可见batch_size 2、attn_implementationflash_attention_2、dtypebfloat16均为 README 结果表中的实际评测配置可按环境调整。已测模型的分数对照README 完整记录了 4 个模型在mmmu_val及其 6 个子组上的 acc 结果全部为 0-shot、贪心解码、--apply_chat_template并与作者论文报告分数对比模型mmmu_valArt and DesignBusinessHealth and MedicineHumanities and Social ScienceScienceTech and Engineering作者报告分Qwen2-VL-2B0.37780.55000.36000.36670.51670.24670.314341.1%Qwen2-VL-7B0.50560.69170.43330.56670.67500.38000.400054.1%Idefics2-8Bmax_images20.40110.61670.32000.40000.57500.26000.3381~43%Llava-v1.6-Mistral-7B0.35220.51670.26670.38670.59170.22000.252435.3%README 中给出完整表格与对应的模型参数含hf-multimodal (pretrained..., convert_img_formatTrue)形式可直接对照复现。需要说明的是这些数字是仓库文档记录的实测结果仅反映该版本代码下的表现并非对所有环境的普适保证评测得分受模型版本、解码参数、图像处理方式影响复现时建议严格采用与表中相同的参数。引用格式若在论文或报告中使用该基准可按 README 提供的 BibTeX 引用inproceedings{yue2023mmmu, title{MMMU: A Massive Multi-discipline Multimodal Understanding and Reasoning Benchmark for Expert AGI}, author{Xiang Yue and Yuansheng Ni and Kai Zhang and Tianyu Zheng and Ruoqi Liu and Ge Zhang and Samuel Stevens and Dongfu Jiang and Weiming Ren and Yuxuan Sun and Cong Wei and Botao Yu and Ruibin Yuan and Renliang Sun and Ming Yin and Boyuan Zheng and Zhenzhu Yang and Yibo Liu and Wenhao Huang and Huan Sun and Yu Su and Wenhu Chen}, booktitle{Proceedings of CVPR}, year{2024}, }小结lm-evaluation-harness 对 MMMU 的实现遵循了模板复用 函数式处理的典型任务组织方式_template_yaml 统一定义数据源、生成参数与指标utils.py 实现与官方一致的 prompt 构造、多图占位符处理、选择题/简答题双通道解析与判定6 个学科组 30 个任务 YAML 负责细分与聚合。理解这一结构后你既能一键复现 README 中的模型分数也能参照其模式为其他多模态基准编写类似的任务配置。【免费下载链接】lm-evaluation-harnessA framework for few-shot evaluation of language models.项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表