模型评测人工智能大模型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 评测任务的生命周期展开从run.py的多种启动方式、完整命令行参数解析到任务在 infer/eval/viz 三阶段中的划分与调度原理再到基于 Lark 机器人的实时状态上报与outputs/目录结果解读。读完本文你将掌握如何在本地、Slurm 集群与阿里云 DLC 上正确启动评测任务并能独立排查与监控大规模评测的完整流程。一、任务入口run.py 与评测配置OpenCompass 评测任务的程序入口是仓库根目录下的 run.py其核心逻辑极简——直接调用 opencompass/cli/main.py 中的main()函数完成参数解析、配置装配、任务调度与汇总输出。整体用法如下python run.py $EXP {--slurm | --dlc | None} [-p PARTITION] [-q QUOTATYPE] [--debug] [-m MODE] [-r [REUSE]] [-w WORKDIR] [-l] [--dry-run] [--dump-eval-details]其中$EXP即任务配置。配置可以来自三种途径get_config_from_arg()会按优先级依次解析对应源码见 opencompass/utils/run.py1. 直接指定配置文件run.py接受一个 .py 配置文件作为任务参数该配置必须包含datasets和models字段。典型的 demo 配置可以参考 examples/eval_base_demo.py它通过read_base()引入 gsm8k、math 两个数据集与两个 HuggingFace 模型然后聚合出datasets与modelspython run.py configs/eval_demo.py从源码看配置文件路径传入后会被Config.fromfile()读取若配置中带有chatml_datasets字段还会额外拼接 chatml 数据集并可配合--acceleratorvllm/lmdeploy将模型一键切换为对应推理加速后端见get_config_from_arg与change_accelerator的实现。2. 用--models/--datasets组合不提供配置文件时可以用命令行直接指定模型与数据集run.py会在configs/datasets、configs/dataset_collections与configs/models等目录中按名称匹配并加载相应配置片段python run.py --models hf_opt_350m hf_opt_125m --datasets siqa_gen winograd_ppl注意数据集名形如siqa_gen数据集_推理方式代码会将其拆分为数据集名siqa与后缀_gen从而只挑选对应推理配置片段如_gen对应生成式推理、_ppl对应困惑度推理。若匹配不到或匹配到多个同名配置match_cfg_file()会抛出带表格提示的报错并建议使用tools/list_configs.py辅助定位。3. HuggingFace 参数快速建模对于 HuggingFace 系模型还可以直接在命令行中通过一组--hf-*参数快速定义模型再配合--datasets指定数据集python run.py --datasets siqa_gen winograd_ppl --hf-type base --hf-path huggyllama/llama-7b此时 opencompass/utils/run.py 会根据--hf-type为chat或base分别构造HuggingFacewithChatTemplate或HuggingFaceBaseModel类型的模型字典其中run_cfg.num_gpus由--hf-num-gpus决定。完整的 HuggingFace 参数说明如下参数含义备注/默认值来自parse_hf_args--hf-type模型类型base或chat默认chat--hf-pathHuggingFace 模型路径必填--peft-pathPEFT 模型路径可选配合--peft-kwargs--tokenizer-pathHuggingFace tokenizer 路径与模型路径一致时可省略--model-kwargs构造模型的参数字典形式如--model-kwargs dtypebfloat16--tokenizer-kwargs构造 tokenizer 的参数字典形式--max-out-len最大生成 token 数默认 256--max-seq-len模型可接受的最大序列长度影响显存与上下文上限--batch-size批大小默认 8--hf-num-gpus运行模型所需 GPU 数默认 1仅用于推算任务所需 GPU 数不决定任务实际占用 GPU 数详见 Efficient Evaluation补充旧参数--num-gpus已弃用opencompass/cli/main.py 中一旦检测到该参数会直接抛出 ValueError 提示改用--hf-num-gpus。此外还有--generation-kwargs、--pad-token-id、--stop-words、--min-out-len等生成相关参数可进一步定制。二、四种启动方式根据执行环境的不同run.py支持四种启动方式本地直接运行run.py $EXP任务由LocalRunner在本机多进程并行执行Slurm 集群run.py $EXP --slurm -p $PARTITION_name任务通过srun提交到集群指定--slurm后-p为必填parse_args中有断言校验阿里云 DLCrun.py $EXP --dlc --aliyun-cfg $AliYun_Cfg由DLCRunner提交到 PAI-DLC需要环境预装dlc客户端并指定阿里云配置文件自定义启动run.py $EXP其中$EXP配置内含eval与infer字段用户可自行定义 Partitioner 与 Runner 策略。关于第 4 种方式infer/eval字段分别描述推理阶段与评测阶段的划分Partitioner和执行Runner策略。以 docs/en/user_guides/evaluation.md 中的示例为参考可在配置中直接引入SizePartitioner、SlurmRunner、OpenICLInferTask等组件from opencompass.partitioners import SizePartitioner, NaivePartitioner from opencompass.runners import SlurmRunner from opencompass.tasks import OpenICLInferTask, OpenICLEvalTask infer dict( partitionerdict(typeSizePartitioner, max_task_size5000), runnerdict( typeSlurmRunner, max_num_workers64, taskdict(typeOpenICLInferTask), retry5), ) eval dict( partitionerdict(typeNaivePartitioner), runnerdict( typeLocalRunner, max_num_workers32, taskdict(typeOpenICLEvalTask)), )需要注意的是当同时指定--slurm/--dlc且配置中已存在infer/eval字段时运行时参数会覆盖配置中的对应字段main.py会打印提示日志未提供infer/eval配置时fill_infer_cfg()与fill_eval_cfg()会自动填充默认策略——推理阶段默认使用NumWorkerPartitioner 按启动方式选择的 Runner评测阶段默认使用NaivePartitioner。三、核心命令行参数详解以下参数覆盖了任务调度的主要控制面默认值与语义均核对自 opencompass/cli/main.py参数含义备注-p/--partition指定 Slurm 分区仅 Slurm 模式生效-q/--quotatype指定 Slurm 配额类型默认None可选reserved、auto、spot仅在部分 Slurm 变体如阿里云 PAI可用--qosSlurm 服务质量等级可选--debug调试模式推理与评测任务以单进程运行输出实时回显便于排查-m/--mode运行模式默认all可选infer仅推理产出模型输出、eval已有输出时仅评测、viz仅可视化汇总表格、all推理评测可视化全流程-r/--reuse复用已有推理结果跳过已完成任务可接时间戳精确指定复用某个历史结果如20230516_144254不带参数时复用指定工作目录下最新的结果目录-w/--work-dir工作路径默认./outputs/default所有输出日志、预测、结果、汇总均保存在该路径下-l/--lark开启 Lark 机器人状态上报需先在配置中定义lark_bot_url--dry-run只派发不真正运行仅打印将要执行的命令常用于调试调度逻辑开启时内部会强制debugTrue--dump-eval-details评测结果是否包含逐样本细节默认开启results/下会额外保存每个样本的正确性等信息传--dump-eval-details False可关闭以节省磁盘--max-num-workers最大并行 worker 数默认 1可被配置中的同名参数覆盖--max-workers-per-gpu单 GPU 上并行任务数仅LocalRunner生效默认 1--retrySlurm/DLC 任务失败重试次数默认 2可被配置覆盖--config-dir自定义配置搜索目录默认configs用于搜索 datasets/models/summarizers 配置运行-m eval或-m viz模式时必须显式给出-r或配合--read-from-station与--station-path从结果站读取否则main.py会直接抛出ValueError提示。四、整体执行流程infer → eval → viz以默认模式-m all为例整体执行流程如下对应 opencompass/cli/main.py 的主流程读取配置get_config_from_arg()解析出模型、数据集、评测器evaluator与 summarizer 等配置信息若--dry-run开启则立即返回划分任务并调度评测任务主要包含三阶段——推理infer、评测eval、可视化viz。配置按mode决定哪些阶段参与推理阶段由infer.partitioner默认NumWorkerPartitioner将大规模样本切分为子任务infer.partitioner[out_dir]指向{work_dir}/predictions/评测阶段由eval.partitioner默认NaivePartitioner即每个「模型-数据集」组合一个任务产出评测任务eval.partitioner[out_dir]指向{work_dir}/results/单个推理与评测任务分别被抽象为OpenICLInferTask与OpenICLEvalTask最终交给 RunnerLocalRunner/SlurmRunner/DLCRunner并行执行若评测任务类型为OpenICLEvalWatchTask守护式评测main.py会启动HeartBeatManager心跳线程与评测线程待推理全部完成后停止心跳并汇合线程汇总可视化所有阶段结束后viz 阶段读取results/中的评测结果交由 Summarizer未指定时默认DefaultSummarizer生成汇总表格开启--analysis-repeat还会额外输出重复预测分析。值得注意的细节每次启动都会以datetime.now()生成形如20230220_183030的时间戳目录并将解析后的完整配置 dump 到{work_dir}/configs/{time}_{pid}.py后重新加载以保证序列化的可靠性。五、任务监控Lark 机器人实时上报OpenCompass 支持通过配置飞书Lark机器人实现对任务状态的实时监控。LarkReporter的底层实现见 opencompass/utils/lark.py它通过 Webhook 以text或富文本post消息格式向群聊发送内容任务启动、结束等关键事件都会由main.py调用LarkReporter(url).post(content)完成推送。配置方法分三步1. 定义 Webhook 地址。在configs/lark.py文件中加入一行lark_bot_url YOUR_WEBHOOK_URLWebhook 地址一般形如https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx。创建机器人的方法可参考飞书官方文档中「自定义机器人」的指引。2. 在完整评测配置中继承该配置。使用mmengine.config的read_base机制from mmengine.config import read_base with read_base(): from .lark import lark_bot_url3. 通过-l开启状态上报。为了避免机器人频繁推送造成打扰状态上报默认不开启需要按需显式指定-l或--larkpython run.py configs/eval_demo.py -p {PARTITION} -l从main.py的源码逻辑看未指定-l时cfg[lark_bot_url]会被置为NoneRunner 不会上报指定后不仅会在任务启动时发送「任务已启动」通知还会把lark_bot_url注入infer.runner与eval.runner的配置中使各阶段的关键状态持续同步到群聊。六、运行结果目录结构所有运行结果默认存放在outputs/default/目录下每个时间戳目录对应一次完整运行目录结构如下outputs/default/ ├── 20200220_120000 ├── ... ├── 20230220_183030 │ ├── configs │ ├── logs │ │ ├── eval │ │ └── infer │ ├── predictions │ │ └── MODEL1 │ └── results │ └── MODEL1每个时间戳目录内包含四类内容configs/存放以该时间戳为输出目录的每次运行对应的配置文件文件名为{时间戳}_{进程ID}.pylogs/存放推理与评测阶段的输出日志两个阶段内部再按模型分子目录predictions/存放推理产出的 json 结果按模型分子目录results/存放评测产出的 json 结果按模型分子目录在--dump-eval-details默认开启时还会包含逐样本正确性等细节。此外所有不带时间戳的-r复用操作都会通过按字典序排序选择最新的文件夹作为复用来源对应main.py中sorted(dirs)[-1]的逻辑。七、结果汇总与后续步骤评测结果由 Summarizer 组件汇总。默认情况下main.py在 viz 阶段会使用DefaultSummarizer读取results/下的评测输出并生成可读的汇总表格对于主观评测则会按数据集前缀分组后逐个调用对应的主观 summarizersummarizer配置中带function字段时走主观分支最终产出带分组得分的汇总。关于任务划分与执行后端的更深入内容SizePartitioner、NaivePartitioner、LocalRunner、SlurmRunner、DLCRunner的完整参数与适用场景可以继续阅读 Efficient Evaluation 获取系统化介绍。赞分享模型评测人工智能大模型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点击查看免费下载相关推荐终极Task监控告警指南如何实时监控任务执行状态与故障告警终极Task监控告警指南如何实时监控任务执行状态与故障告警 Task作为一款现代化的跨平台构建工具其强大的任务执行状态监控和告警功能是保障自动化工作流稳定运构建工具开发工具CLIDeepStack API完全指南快速集成物体检测与图像增强功能DeepStack API完全指南快速集成物体检测与图像增强功能 DeepStack是一款领先的跨平台AI引擎专为边缘设备设计提供强大的物体检测、图像增强WAN2.2-Rapid-AIO8GB显存也能流畅生成专业级AI视频的终极方案WAN2.2 Rapid AIO8GB显存也能流畅生成专业级AI视频的终极方案 还在为AI视频生成的高硬件要求而烦恼吗WAN2.2 Rapid AIO为你带人工智能计算机视觉基础模型上一篇ESP-SR语音识别框架5步构建智能语音设备的终极指南下一篇InternVL3_5-4B-HF视频理解实战如何把多模态模型变成你的视频分析师创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考