OpenCompass 实用工具集详解:Prompt 预览、任务监控、预测合并与配置管理 模型评测人工智能大模型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 官方工具文档 docs/en/tools.md 展开系统讲解项目自带的 7 个命令行工具Prompt Viewer、Case Analyzer、Lark 机器人通知、API Model Tester、Prediction Merger、List Configs 与 Dataset Suffix Updater。读完本文你将掌握如何在不启动完整评测流程的前提下预览 Prompt、如何对评测结果做错误样本分析、如何合并分片预测结果、如何用飞书机器人实时监控任务状态以及如何快速检索和规整模型/数据集配置从而显著提升评测任务的调试与运维效率。1. 工具全景一次纵览OpenCompass 在仓库根目录的 tools 目录下集中放置了一批面向评测全流程的辅助脚本。它们与 run.py完整评测入口和 opencompass/cli/main.py命令行参数解析配合使用覆盖配置检索 → Prompt 审查 → 模型连通性验证 → 任务运行与监控 → 结果分析与合并的完整链路工具核心用途对应脚本Prompt Viewer不跑评测直接查看模型实际收到的 Prompttools/prompt_viewer.pyCase Analyzer基于已有预测结果生成错误样本与全量样本tools/case_analyzer.pyLark Bot通过run.py的-l/--lark上报任务运行状态opencompass/utils/lark.pyAPI Model Tester快速验证 API 模型封装是否可用tools/test_api_model.pyPrediction Merger合并分布式/分片推理产生的分片预测文件tools/prediction_merger.pyList Configs列出或模糊搜索全部模型/数据集配置tools/list_configs.pyDataset Suffix Updater按 Prompt 哈希重命名数据集配置文件后缀tools/update_dataset_suffix.py下文按调试前 → 运行中 → 运行后的顺序逐一深入。2. Prompt Viewer不跑评测先看 Prompt2.1 功能定位Prompt Viewer 允许你直接查看生成的 Prompt 而无需启动完整的评测流程原文档称之为 without starting the full training process。它的行为取决于传入的配置内容如果传入的只是数据集配置例如 nq 数据集配置目录 下的nq_gen.py则展示该数据集配置中定义的原始 Prompt如果传入的是完整评测配置同时包含模型与数据集则展示所选模型在运行过程中实际收到的 Prompt——此时会真实构建模型、按meta_template等模板机制做一次消息组装输出最接近线上效果的结果。2.2 运行方式与参数python tools/prompt_viewer.py CONFIG_PATH [-n] [-a] [-p PATTERN]从源码 tools/prompt_viewer.py 的parse_args可以看到除文档列出的三个参数外还有一个-c/--count参数参数含义默认值CONFIG_PATH配置路径位置参数必填-n, --non-interactive不进入交互模式默认选中第一个模型若有和第一个数据集关闭-a, --all查看配置中所有模型 × 所有数据集组合收到的 Prompt关闭-p, --pattern不进入交互模式选中所有匹配该正则/通配符的数据集无-c, --count每个数据集打印的 Prompt 条数1不传-n/-a/-p时脚本会调用 opencompass/utils/menu.py 中的Menu组件进入交互模式让你用方向键/序号挑选模型与数据集。传-p时内部使用fnmatch.filter做通配符匹配源码 prompt_viewer.py若匹配不到数据集会报错并列出所有可选数据集名。2.3 底层实现它是如何还原 Prompt 的从 tools/prompt_viewer.py 的实现可以梳理出它的还原链路解析配置Config.fromfile读取配置若配置中有models字段则按model_abbr_from_cfg建立模型缩写 → 配置的映射否则以None占位此时无法计算 token 长度、只展示数据集模板数据集则从datasets或形如xxx_datasets的键中收集prompt_viewer.py。构建模型可选当存在模型配置时build_model_from_cfg会构建模型对象对非 API 模型会设置tokenizer_only True即只加载分词器用于计算 token 数不加载权重因此该操作非常轻量prompt_viewer.py。构建数据集与检索器build_dataset_from_cfg加载数据集再根据infer_cfg.retriever构建检索器并执行retrieve()拿到 few-shot 示例索引。按推理器类型分路径目前支持AgentInferencer、PPLInferencer、GenInferencer、CLPInferencer、PPLOnlyInferencer、ChatInferencer、LLInferencer七类prompt_viewer.pyPPL/LL 类逐 label 打印ICE Template、每个 label 对应的样例 Prompt并显示 Number of tokens生成类打印Sample prompt与 token 数。超长截断模拟若指定了模型且max_seq_len模型配置中指定默认 32768受限脚本会模拟评测时的截断行为——逐步删掉最后一个 in-context example直到 token 数不超过上限并打印Truncating ice N - N-1日志prompt_viewer.py。这对排查长上下文任务因 ice 过多被截断的问题非常有用。2.4 使用示例查看某个数据集配置的原始 Prompt无模型仅模板python tools/prompt_viewer.py opencompass/configs/datasets/gsm8k/gsm8k_gen.py -n查看完整评测配置中第一个模型 × 所有匹配mmlu的数据集的 Promptpython tools/prompt_viewer.py my_eval_config.py -p *mmlu*一次性打印所有模型与数据集的全部 Prompt适合全面审查模板python tools/prompt_viewer.py my_eval_config.py -a3. Case Analyzer从预测结果中提炼错误样本3.1 功能定位Case Analyzer 基于已有的评测推理结果产出两类 JSON 样本文件带标注信息的推理错误样本bad case与全量样本all cases。原文档将其标注为 To be updated因此它的定位是辅助分析而非正式评测组件输出格式可能随版本演进。3.2 运行方式与参数python tools/case_analyzer.py CONFIG_PATH [-w WORK_DIR]参数含义默认值CONFIG_PATH评测配置路径必填-w, --work-dir工作目录所有输出预测、结果、汇总都保存在该目录下./outputs/default-f, --force即使结果已存在也强制重新分析关闭源码 tools/case_analyzer.py 中-f的作用是在dispatch_tasks时若case_analysis/all对应文件已存在且未加-f则跳过该 (模型, 数据集) 组合。3.3 工作机制与输出格式BadcaseShower的核心流程case_analyzer.py通过get_infer_output_path定义在 opencompass/utils/abbr.py路径规则为work_dir/predictions/{model_abbr}/{dataset_abbr}.json定位预测文件若完整文件不存在则按_0.json、_1.json… 依次加载分片并合并case_analyzer.py。若eval_cfg中配置了dataset_postprocessor/pred_postprocessor会先对参考答案与预测结果做文本后处理通过TEXT_POSTPROCESSORS注册表。逐条对比预测与参考答案区分两种评测类型PPL 评测预测记录中含in-context examples字段每条样本输出prediction_prompt、prediction、prediction_PPL、reference_prompt、reference、reference_PPL六个字段便于观察模型对错误答案的 PPL 与正确答案的 PPL 差异生成式评测gen输出origin_prompt、prediction、reference三个字段。注意源码注释# FIXME: we now consider all cases as bad casescase_analyzer.py——当前版本生成式评测暂时把所有样本都计入 bad case属于已知的待完善点。结果分别写入case_analysis/bad/{model_abbr}/{dataset_abbr}.json与case_analysis/all/{model_abbr}/{dataset_abbr}.json相对 work_dirJSON 均以indent4, ensure_asciiFalse写出中文内容不会被转义便于人工阅读。4. Lark Bot用飞书机器人实时监控任务状态4.1 配置步骤按照原文档配置飞书Lark机器人分为三步第一步创建机器人并获取 Webhook。在飞书开放平台创建自定义机器人获取 Webhook URL。文档给出参考格式https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx。第二步在 secrets 文件中登记地址。打开configs/secrets.py历史路径在当前仓库布局中等价做法是把该配置写进你自己的私有配置并通过Config.fromfile继承添加一行lark_bot_url YOUR_WEBHOOK_URL第三步在完整评测配置中继承该文件使lark_bot_url字段进入最终的评测配置。4.2 开启状态上报为避免机器人频繁发消息造成打扰默认不会自动上报运行状态。需要时通过-l或--lark显式开启python run.py CONFIG_PATH -l原文档示例为python run.py configs/eval_demo.py -l。需要说明的是configs/eval_demo.py是文档撰写时的示例路径当前仓库的配置统一位于 opencompass/configs 目录含 models、datasets、summarizers 等子目录请以你实际的完整评测配置路径替换CONFIG_PATH。4.3 底层实现LarkReporter 与 CLI 接线消息发送由 opencompass/utils/lark.py 中的LarkReporter负责不带title时发送msg_typetext的纯文本消息带title时发送msg_typepost的富文本消息zh_cn版块可包含结构化内容lark.py。CLI 侧的逻辑在 opencompass/cli/main.py-l/--lark参数定义于 main.py若未指定-l则cfg[lark_bot_url] None彻底关闭上报指定后若配置中存在该字段任务启动时会立即发送一条形如xxxs task has been launched!的文本消息main.py随后分别把lark_bot_url注入cfg.infer.runner与cfg.eval.runnermain.py 与 main.py因此推理阶段与评测阶段的运行状态都能上报。该字段同样被 opencompass/runners 下的local.py、slurm.py、dlc.py、volc.py等 runner 所消费覆盖本地与各类集群环境。5. API Model Tester快速验证 API 模型封装该工具用于快速测试 API 模型的功能是否正常适合在接入新 API 厂商或修改封装后第一时间做连通性验证python tools/test_api_model.py [CONFIG_PATH] -n源码 tools/test_api_model.py 要求配置中必须包含models字段否则报No models specified in config file!指定-n会跳过模型选择菜单直接测试第一个模型。test_modeltest_api_model.py实际执行三类检查三种 meta_template 逐一测试None无模板、round结构HUMAN→BOT(generate)两轮以及带reserved_rolesSYSTEM 角色保留的round结构test_api_model.py验证 API 封装在原始消息、对话轮次、系统角色三种场景下都能正确组装请求体token 长度计算对内置测试 Prompt一组含 SYSTEM 角色的PromptList以及一句普通问候分别调用get_token_len_from_template验证分词器与模板解析是否正常真实生成调用generate_from_template(test_prompts, max_out_len100)发起请求并打印两条响应验证 API 密钥、端点与返回解析是否可用。内置测试 Prompt 来自法律多选样例含ice分段与参考答案tools/test_api_model.py 中定义可直接作为封装调试的稳定输入。6. Prediction Merger合并分片预测结果6.1 功能定位当推理任务被切分成多个 worker 并行执行时OpenCompass 会把每个 worker 的预测写入独立的分片文件形如{dataset_abbr}_0.json、{dataset_abbr}_1.json…。Prediction Merger 负责把这些分片合并为一个完整的预测文件供后续评测与汇总使用。python tools/prediction_merger.py CONFIG_PATH [-w WORK_DIR]6.2 完整参数源码 tools/prediction_merger.py 定义了四个参数其中三个在原文档之外参数含义默认值CONFIG_PATH评测配置路径必填-w, --work-dir工作目录./outputs/default-r, --reuse复用哪个时间戳子目录latest表示自动选取 work_dir 下最新的结果目录也可直接传时间戳字符串latest-c, --clean合并完成后删除分片文件关闭-f, --force目标完整文件已存在时强制重新合并关闭6.3 工作机制定位分片通过get_infer_output_path得到完整预测路径若完整文件存在且未加-f直接返回否则从_0.json开始递增加载所有分片按顺序拼接为{0: pred, 1: pred, ...}prediction_merger.py。长度校验合并后校验len(preds) len(dataset.test)不一致则打印length mismatch并中止避免预测缺失却继续评测的静默错误prediction_merger.py。时间戳目录OpenCompass 每次运行会在 work_dir 下生成带时间戳的子目录-r latest通过os.listdir sorted自动选取最新一个prediction_merger.py保证合并的是最近一次运行的产物。典型用法先-c清理分片避免磁盘堆积python tools/prediction_merger.py my_eval_config.py -c7. List Configs检索模型与数据集配置7.1 运行方式该工具用于列出或搜索所有可用的模型与数据集配置支持模糊搜索方便与run.py搭配使用python tools/list_configs.py [PATTERN1] [PATTERN2] [...]不带参数默认列出 opencompass/configs/models 与 opencompass/configs/datasets 目录下的全部模型与数据集配置原文档描述的历史路径为configs/models与configs/dataset当前仓库实际位于opencompass/configs/下带任意多个参数脚本会列出与这些字符串相关的全部配置支持模糊匹配与*通配符。例如列出所有与mmlu和llama相关的配置python tools/list_configs.py mmlu llama7.2 输出示例原文档给出了该命令的典型输出节选---------------------------------------------------- | Model | Config Path | |----------------------------------------------------| | hf_llama2_13b | configs/models/hf_llama2_13b.py | | hf_llama2_70b | configs/models/hf_llama2_70b.py | | hf_llama2_7b | configs/models/hf_llama2_7b.py | | hf_llama_13b | configs/models/hf_llama_13b.py | | hf_llama_30b | configs/models/hf_llama_30b.py | | hf_llama_65b | configs/models/hf_llama_65b.py | | hf_llama_7b | configs/models/hf_llama_7b.py | | llama2_13b_chat | configs/models/llama2_13b_chat.py | | llama2_70b_chat | configs/models/llama2_70b_chat.py | | llama2_7b_chat | configs/models/llama2_7b_chat.py | ---------------------------------------------------- ---------------------------------------------------------------------- | Dataset | Config Path | |----------------------------------------------------------------------| | cmmlu_gen | configs/datasets/cmmlu/cmmlu_gen.py | | cmmlu_gen_ffe7c0 | configs/datasets/cmmlu/cmmlu_gen_ffe7c0.py | | cmmlu_ppl | configs/datasets/cmmlu/cmmlu_ppl.py | | cmmlu_ppl_fd1f2f | configs/datasets/cmmlu/cmmlu_ppl_fd1f2f.py | | mmlu_gen | configs/datasets/mmlu/mmlu_gen.py | | mmlu_gen_23a9a9 | configs/datasets/mmlu/mmlu_gen_23a9a9.py | | mmlu_gen_5d1409 | configs/datasets/mmlu/mmlu_gen_5d1409.py | | mmlu_gen_79e572 | configs/datasets/mmlu/mmlu_gen_79e572.py | | mmlu_gen_a484b3 | configs/datasets/mmlu/mmlu_gen_a484b3.py | | mmlu_ppl | configs/datasets/mmlu/mmlu_ppl.py | | mmlu_ppl_ac766d | configs/datasets/mmlu/mmlu_ppl_ac766d.py | ----------------------------------------------------------------------注意输出表中同时出现mmlu_gen与mmlu_gen_23a9a9这类带哈希后缀的配置——后者是经过 Prompt 哈希规整后的命名详见下一节。7.3 模糊匹配的实现源码 tools/list_configs.py 调用了 opencompass/utils/file.py 中的match_files开启fuzzyTrue后每个 pattern 会被包装成*pattern*再做fnmatch大小写不敏感匹配命中即返回(名称去后缀, 完整路径)最终用tabulate以psql表格格式打印。因此你可以放心使用部分关键词如list_configs.py llama2实现近似搜索。8. Dataset Suffix Updater按 Prompt 哈希规整配置命名8.1 功能定位OpenCompass 中同一数据集的不同 Prompt 变体会被赋予基于 Prompt 哈希的后缀如mmlu_gen_23a9a9用于唯一标识数据 模板 检索策略组合。当模板或检索配置被修改后旧哈希后缀会失效。Dataset Suffix Updater 可以快速批量重命名配置目录下的文件使其后缀与最新 Prompt 哈希对齐python tools/update_dataset_suffix.py默认扫描configs/datasets目录源码 tools/update_dataset_suffix.py在当前仓库布局下可指定--root_folder opencompass/configs/datasets也可以直接传入需要处理的 Python 文件路径作为位置参数。8.2 命名规则与哈希算法文件名模式脚本用正则(.*)_(gen|ppl|ll|mixed)_(.*).py识别合法命名的配置文件即{数据集}_{模式}_{哈希}.py模式覆盖生成gen、困惑度ppl、对数似然ll与混合mixed四类update_dataset_suffix.py。哈希计算与 opencompass/utils/prompt.py 的get_prompt_hash一致——对infer_cfgreader/retriever/inferencer 的配置字典做json.dumps(sort_keysTrue)后取 SHA-256文件名后缀取前 6 位十六进制多个数据集组合时先逐项哈希再对拼接串哈希update_dataset_suffix.py。并发处理使用multiprocessing.Pool(16)并行计算哈希与执行os.rename对大型配置目录也能快速完成update_dataset_suffix.py。8.3 使用场景当你在评测前修改了数据集配置中的 Prompt 模板、few-shot 检索策略或推理器参数运行run.py时 OpenCompass 会依据新哈希去寻找匹配的配置文件若你的配置文件仍沿用旧哈希后缀评测结果可能无法正确关联。此时执行一次python tools/update_dataset_suffix.py --root_folder opencompass/configs/datasets即可让文件名与最新的 Prompt 哈希保持一致脚本只重命名后缀变化的文件哈希未变的文件保持原样。这一工具与list_configs输出中的哈希后缀配置一一对应是维护自建数据集配置时的标准操作。9. 组合实战一套完整的评测调试流程将上述工具串联起来可以形成一条高效的评测迭代工作流找配置python tools/list_configs.py mmlu llama确认可用的模型与数据集配置名及路径审 Promptpython tools/prompt_viewer.py my_eval_config.py -p *mmlu*检查模型实际收到的 Prompt、token 数与 ice 截断情况在真正花钱跑评测前发现模板问题验连通性对 API 模型先执行python tools/test_api_model.py my_eval_config.py -n确认密钥、端点与消息组装正常跑任务并监控python run.py my_eval_config.py -l开启飞书机器人上报实时掌握推理与评测阶段的运行状态合并结果并行推理结束后python tools/prediction_merger.py my_eval_config.py -c合并分片预测并清理临时文件分析样本python tools/case_analyzer.py my_eval_config.py从case_analysis/bad与case_analysis/all中读取错误样本定位模型的系统性短板维护配置调整 Prompt 后执行python tools/update_dataset_suffix.py --root_folder opencompass/configs/datasets规整配置命名避免哈希失配。10. 小结与注意事项版本差异原文档示例中的configs/secrets.py、configs/eval_demo.py、configs/models、configs/dataset为历史路径当前仓库的配置统一位于 opencompass/configs 下models、datasets 等使用工具时请以实际路径为准。默认工作目录case_analyzer与prediction_merger的默认 work_dir 均为./outputs/default实际运行中 OpenCompass 会在 work_dir 下生成时间戳子目录合并/分析时可通过-w、-r精确指定。已知限制Case Analyzer 原文档标注 To be updated其生成式评测路径当前将所有样本计入 bad case见源码 FIXME 注释PPL 路径的 bad/all 区分则是可靠的解读结果时需注意这一差异。只读仓库上述工具均为官方提供的运行/维护脚本用于查看、生成与整理评测产物不会修改评测框架本身update_dataset_suffix.py只重命名你自己维护的数据集配置文件。掌握这 7 个工具即可在不启动完整评测的前提下完成配置审查、连通性验证、任务监控与结果分析让 OpenCompass 的评测迭代更快、更可控。赞分享模型评测人工智能大模型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点击查看免费下载相关推荐你的数字护盾3步彻底解决电脑视觉疲劳问题你的数字护盾3步彻底解决电脑视觉疲劳问题 在当今数字化工作时代你是否经常感到眼睛干涩、视力模糊、甚至头痛这可能是 电脑视觉综合征 在悄悄侵蚀你的健康。据统TuGraph深度解析高性能图数据库的技术架构与性能突破TuGraph深度解析高性能图数据库的技术架构与性能突破 TuGraph作为一款高性能图数据库在LDBC SNB基准测试中创下世界纪录为大规模图数据处理提数据库图数据库图计算后端LearnOpenCVC 与 Python 双语言计算机视觉教程完整指南LearnOpenCVC 与 Python 双语言计算机视觉教程完整指南 当你要在应用里加入实时人脸检测、OCR 文字识别或目标跟踪功能时最缺的往往不是示例工程计算机视觉人工智能上一篇Vosk-api Web界面开发构建语音识别Web应用下一篇Jimmer ORM 框架使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考