OpenCompass 结果展示指南:summarizer 配置与评测汇总原理详解 模型评测人工智能大模型AI 评测【免费下载链接】opencompassOpenCompass is an LLM evaluation platform, supporting a wide range of models from OpenAI, Anthropic, Gemini, Qwen, GLM, DeepSeek, etc, across 100 datasets covering knowledge, reasoning, coding, science, language, long-context, and safety.项目地址https://gitcode.com/gh_mirrors/op/opencompass点击查看免费下载OpenCompass 评测完成后如何把散落在results目录下的评测分数整理成一张清晰、可对比、可复现的汇总表是理解整个评测闭环的关键一环——这正是summarizer模块承担的核心职责。本文将围绕官方文档《结果展示》结合仓库中 DefaultSummarizer 源码 与 预置汇总配置完整讲解summarizer的配置方式、输出表格每个字段的含义、汇总指标的计算规则以及如何利用configs/summarizers/groups下的现成配置快速完成 MMLU、C-Eval 等数据集的结果汇总。读完本文你将能够自主编写、裁剪并调试任何评测任务的汇总配置并准确理解屏幕上每一列数据的来历。summarizer 在评测流程中的角色在评测完成后评测结果需要被打印到屏幕或者被保存下来该过程由summarizer控制。它是评测任务task执行链路的最后一段模型推理产出预测、评测器evaluator产出分数并落盘到{work_dir}/results/随后summarizer读取这些分数文件计算汇总指标最终以表格形式输出到终端同时写入summary目录下的文件。一个需要特别注意的行为约定原文以 note 形式强调如果summarizer出现在了 config 中则评测结果输出会按照下述逻辑进行即按dataset_abbrs指定的顺序输出如果summarizer没有出现在 config 中则评测结果会按照dataset中出现的顺序进行输出。也就是说summarizer配置的存在与否直接决定了汇总表的行序与内容组织方式。从源码结构看仓库在 opencompass/summarizers/ 下提供了多种总结器实现default.pyDefaultSummarizer通用客观评测汇总本文核心default_subjective.py主观评测汇总multi_model.py、multi_faceted.py、circular.py、needlebench.py、llm_compression.py、summarizer_pretrain.py等面向多模型对比、多面评测、循环评测、NeedleBench 等特殊场景。日常配置中使用的summarizer dict(...)默认即对应DefaultSummarizer。一个典型的 summarizer 配置样例官方文档给出的典型配置文件如下summarizer dict( dataset_abbrs [ race, race-high, race-middle, ], summary_groups[ {name: race, subsets: [race-high, race-middle]}, ] )其输出结果如下dataset version metric mode internlm-7b-hf ----------- --------- ------------- ------ ---------------- race - naive_average ppl 76.23 race-high 0c332f accuracy ppl 74.53 race-middle 0c332f accuracy ppl 77.92这个例子同时展示了两个核心机制dataset_abbrs决定展示顺序表格第一列dataset与dataset_abbrs一一对应先输出汇总指标race再依次输出race-high、race-middlesummary_groups生成汇总行race行本身并不是一个真实数据集而是由race-high与race-middle两个子集汇总而来其metric被标记为naive_average不加权求平均version列显示为-汇总行没有唯一的 prompt hash。summarizer 会以 config 中的models、datasets为全集去尝试读取{work_dir}/results/路径下的评测分数并按照summarizer.dataset_abbrs列表的顺序进行展示。另外summarizer 会尝试通过summarizer.summary_groups来进行一些汇总指标的计算。关键完整性规则当且仅当subsets中的值都存在时对应的name指标才会生成——也就是说若有部分数字缺失则这个汇总指标也是会缺失的。若分数无法通过上述两种方式被获取到则 summarizer 会在表格中对应项处使用-进行表示。这一点在源码 default.py 的_calculate_group_metrics中体现得很直接遍历每个summary_groups项时将subsets逐一与已解析的结果比对落入available_metrics或missing_metrics只要存在缺失项就会在raw_results中为该汇总名写入{error: missing metrics: ...}并跳过计算最终表格对应行显示为-。输出表格各列含义输出结果是有多列的官方文档逐列说明如下dataset列与summarizer.dataset_abbrs配置一一对应version列这个数据集的 hash 值。该 hash 值会考虑该数据集模板的评测方式、提示词、输出长度限制等信息。用户可通过该列信息确认两份评测结果是否可比metric列这个指标的评测方式具体说明见 metrics 指标文档mode列这个推理结果的获取方式可能的值有ppl/gen。对于summarizer.summary_groups的项若被subsets的获取方式都一致则其值也跟subsets一致否则即为mixed其后若干列一列代表一个模型列名即模型缩写可通过模型的summarizer_abbr字段自定义。version 列的 prompt hash 机制version列并非随机数而是由提示词内容、评测方式、输出长度限制等共同决定的指纹。在源码 default.py 的_format_table中prompt_version {dataset_abbr_from_cfg(d): get_prompt_hash(d)[:6] for d in self.dataset_cfgs}即通过opencompass.utils.prompt.get_prompt_hash计算每个数据集的 hash并取前 6 位展示对应样例中的0c332f。只要提示词模板、推理方式或输出长度限制发生变化hash 就会改变因此version列是判断“两份结果是否在同一评测条件下产生”的权威依据。mode 列的推断逻辑mode列并非显式配置而是从数据集配置中的inferencer类型自动推断。在 default.py 的_pick_up_results中GenInferencer→gen生成式评测如答题、代码生成等PPLInferencer或PPLOnlyInferencer→ppl困惑度式评测如多项选择LLInferencer→lllog-likelihood 评测其他无法识别的情况 →unknown并打出 warning 日志。对于summary_groups汇总行源码会收集所有subsets的eval_mode后去重若全部一致则沿用该值否则标记为mixed见_calculate_group_metrics末尾的eval_modes list(set(eval_modes))与eval_mode eval_modes[0] if len(eval_modes) 1 else mixed。结果分数的读取与清洗_pick_up_results中还会对读取到的分数做两层过滤default.py 第 19-20 行METRIC_BLACKLIST[bp, sys_len, ref_len, type]这类非分数辅助字段会被直接忽略METRIC_WHITELIST[score, auc_score, accuracy, humaneval_pass1, rouge1, ...]用于决定同一数据集存在多个指标时的默认展示顺序——表格中每个数据集默认展示dataset_metrics列表的第一个即最重要指标其余指标仍可通过dataset_abbrs中以(dataset_abbr, metric)二元组的形式指定展示。完整字段说明summarizer 字段说明如下dataset_abbrs: (list可选) 展示列表项。若该项省略则会输出全部评测结果。summary_groups: (list可选) 汇总指标配置。summary_groups中的字段说明如下name: (str) 汇总指标的名称。subsets: (list) 被汇总指标的名称。注意它不止可以是原始的dataset_abbr也可以是另一个汇总指标的名称即支持嵌套汇总例如先汇总出mmlu-humanities等分科再汇总总mmlu。weights: (list可选) 被汇总指标的权重。若该项省略则默认使用不加权的求平均方法。汇总指标的计算方式与扩展参数源码 default.py 的_calculate_group_metrics揭示了summary_groups中除了文档列出的三要素外还支持以下可选字段来控制聚合算法这些字段已在仓库配置中实际使用metric: (str可选) 显式指定聚合算法名称如naive_average若不指定则按下列优先级自动选择weights: (dict可选) 按子集权重加权平均权重以{subset_name: weight}字典形式给出注意与文档描述的 list 形式在具体配置中的差异见下方 MMLU 示例std: (bool可选) 设为True时计算标准差standard_deviationsum: (bool可选) 设为True时直接求和sumharmonic_mean: (bool可选) 设为True时计算调和平均harmonic_meantransforms: (dict可选) 在聚合前对每个子集分数施加的变换表达式基于eval求值。默认聚合算法优先级为stdsumweightsharmonic_meannaive_average。此外subsets中的元素可以是字符串数据集缩写或(dataset_abbr, metric)二元组指定用某个具体指标参与汇总但两者不能混用否则会抛出NotImplementedError。一个细节源码中weights是按sg[weights][k]key 为子集名取用的因此在实际仓库配置里权重通常以字典形式给出例如 groups/mmlu.py 中的mmlu-weighted配置mmlu_summary_groups.append({name: mmlu-weighted, subsets: _mmlu_all, weights: _mmlu_weights})其中_mmlu_weights为形如{lukaemon_mmlu_college_biology: 144, ...}的字典权重数值对应各子集官方题目数量从而还原 MMLU 官方按题量加权的计分方式。使用预置的汇总组配置仓库在 opencompass/configs/summarizers/groups 路径下存放了 MMLU、C-Eval、CMMLU、AGIEval、BBH、GaokaoBench、LongBench、LVEval 等大量数据集的评测结果汇总配置建议优先考虑使用。以 groups/mmlu.py 为例它导出了mmlu_summary_groups列表内含mmlu-humanities人文、mmlu-stem理工、mmlu-social-science社科、mmlu-other其他四个分科汇总mmlu全部子集的不加权平均mmlu-weighted按官方题量加权的汇总。groups/ceval.py 则同时覆盖ceval-与ceval-test-两套前缀导出ceval-stem、ceval-social-science、ceval-humanities、ceval-other、ceval-hard与总ceval等汇总项。在使用时可参照 opencompass/configs/summarizers/example.py 的写法在评测配置中通过read_base导入并合并这些预置汇总组from mmengine.config import read_base with read_base(): from .groups.mmlu import mmlu_summary_groups from .groups.ceval import ceval_summary_groups summarizer dict( summary_groupssum([v for k, v in locals().items() if k.endswith(_summary_groups)], []), )除groups目录外opencompass/configs/summarizers 下还针对具体评测集提供了完整配置例如mmlu.py、mmlu_cf.py、mmlu_pro.py、mmlu_pro.py、cmmlu.py、ceval.py对应目录级别、leaderboard.py榜单汇总、tiny.py/small.py/medium.py不同规模评测集汇总等可直接作为参考或按需改写。summarizer 的完整运行链路与输出产物在评测流程中DefaultSummarizer.summarize()default.py 第 388-415 行按以下顺序执行_pick_up_results()遍历 config 中的models×datasets全集从{work_dir}/results/读取每个模型, 数据集组合的分数文件mmengine.load剔除details与黑名单指标得到四个字典raw_results、parsed_results、dataset_metrics、dataset_eval_mode_calculate_group_metrics()根据summary_groups计算各汇总指标并回填到上述字典_format_table()按dataset_abbrs或全部数据集生成二维表格_format_raw_txt()生成每个模型的原始结果文本_output_to_file()打印表格到终端并写入文件。输出文件默认情况下汇总结果会写入{work_dir}/summary/summary_{时间戳}.txtdefault.py 第 339-386 行同时自动生成同名的.csv与.md文件.txt包含 tabulate 格式表格、CSV 格式表格、Markdown 格式表格以及每个模型的原始分数raw format四段内容并以^、$和THIS IS A DIVIDER分隔.csv便于 Excel 打开或程序化处理的纯 CSV 表格.md仅包含 Markdown 表格可直接嵌入文档或提交到仓库。终端上打印的是floatfmt.2f格式化的表格即所有分数保留两位小数。若summarize被调用时显式传入output_path则输出文件路径随之改变output_path.replace(.txt, .csv/.md)。与外部工具链的对接Lark/飞书通知若评测配置中包含lark_bot_url字段DefaultSummarizer会初始化LarkReporter见 default.py 第 52-54 行汇总完成后自动向该 Webhook 推送一条包含用户与汇总文件路径的消息便于长任务结束后第一时间获知结果自定义模型显示名如果希望汇总表中的模型列不使用默认缩写可在模型配置中设置summarizer_abbr字段model_abbr_from_cfg_used_in_summarizerdefault.py 第 22-26 行会优先使用该自定义名称同一模型去重后仅保留一列。常见问题与排查建议汇总行显示-而非数字说明subsets中存在尚未产出分数的数据集。检查{work_dir}/results/下对应模型, 数据集的分数文件是否存在、是否因推理失败而被跳过日志中可见error in ...的 debug 信息确认无误后重新运行评测或仅补跑缺失部分。mode列出现unknown数据集的inferencer类型不在GenInferencer/PPLInferencer/PPLOnlyInferencer/LLInferencer的识别范围内建议核对数据集配置中的infer_cfg.inferencer.type。汇总指标与预期数值不符检查weights是否为{subset: weight}字典形式且键名与subsets完全一致如需分科加权或嵌套汇总汇总项再被另一个汇总项引用注意subsets可以引用其他汇总指标的名称。version列变化导致结果不可比prompt hash 会随提示词模板、评测方式、输出长度限制等变化两份结果对比前应确认version一致这与文档中“可通过该列信息确认两份评测结果是否可比”的说明一致。小结summarizer是 OpenCompass 评测链路中负责“最后一步呈现”的关键组件它以 config 中的models、datasets为全集读取{work_dir}/results/下的分数通过dataset_abbrs控制展示顺序通过summary_groups计算从简单平均到加权平均、求和、调和平均、标准差等多种汇总指标并输出带 prompt hashversion、指标metric与推理方式mode的完整可复现表格。对于 MMLU、C-Eval 等常见数据集直接复用 opencompass/configs/summarizers/groups 中的预置汇总配置即可在几分钟内获得与官方口径一致的汇总结果。赞分享模型评测人工智能大模型AI 评测【免费下载链接】opencompassOpenCompass is an LLM evaluation platform, supporting a wide range of models from OpenAI, Anthropic, Gemini, Qwen, GLM, DeepSeek, etc, across 100 datasets covering knowledge, reasoning, coding, science, language, long-context, and safety.项目地址https://gitcode.com/gh_mirrors/op/opencompass点击查看免费下载相关推荐OpenCompass Summarizer 结果汇总机制详解从配置到表格输出的完整指南OpenCompass Summarizer 结果汇总机制详解从配置到表格输出的完整指南 导读 评测完成后OpenCompass 需要把每个模型在每个数据集模型评测人工智能大模型AI 评测OpenCompass评测结果持久化机制详解OpenCompass评测结果持久化机制详解 引言 在大模型评测过程中评测结果的存储与管理是一个重要环节。OpenCompass提供了一套完善的评测结果持久化模型评测人工智能大模型AI 评测OpenCompass 中 MMLU 评测实战指南配置解析、评测范式与模型基准结果OpenCompass 中 MMLU 评测实战指南配置解析、评测范式与模型基准结果 OpenCompass 将 MMLUMassive Multitask模型评测人工智能大模型AI 评测上一篇MCP Configuration Notes下一篇Karpenter Node Disruption 机制全解析从控制流、优雅/强制中断到预算与逃生舱控制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考