☰
AISBench提效终极秘籍:自定义配置文件完全指南,一个文件管理全部模型×数据集组合
2026/10/28 14:25:46 网站建设 项目流程

【免费下载链接】benchmark

AISBench Benchmark is a model evaluation tool built on OpenCompass, compatible with OpenCompass’s configuration system, dataset structure, and model backend implementation, while extending support for service-based models.

项目地址:https://gitcode.com/gh_mirrors/benchmark48/benchmark
点击查看免费下载

AISBench是一款构建于 OpenCompass 之上的大模型测评工具,兼容 OpenCompass 的配置系统、数据集结构与模型后端,并扩展了对服务化模型(vLLM、TGI 等推理 API)的支持。它的自定义配置文件机制允许你用一个 Python 文件集中管理「模型 × 数据集」的任意组合:一次编写、反复复用、团队共享,把过去要敲 N 次命令的批量测评,压缩成一条执行命令。

为什么推荐用自定义配置文件

AISBench 有两种运行方式:命令行参数(CLI)和自定义配置文件。官方推荐优先使用后者 📌:

对比维度CLI 参数方式自定义配置文件方式
可复用性每次运行需重新输入完整命令文件可保存、可版本管理、反复使用
表达能力只能指定模型/数据集名称可控制模型参数、采样范围、推理配置等所有细节
组合灵活性仅支持笛卡尔积组合支持model_dataset_combinations精确配对
参数覆盖无法修改预设任务内部参数可直接改abbr、test_range、host_port等任意字段
团队协作命令难以共享和追溯配置即代码,可提交仓库 review 和复用

一句话总结:CLI 适合快速验证,配置文件适合正式、可复现、复杂的测评场景。

核心概念:一个配置文件就是一份 Python 脚本

自定义配置文件本质是一个 Python 脚本,因此循环、条件判断、列表推导式全部可用。一个完整的测评任务由以下几个顶层变量定义:

变量名是否必需作用
models✅(推理时)模型任务列表,元素为模型配置字典(含type、abbr、host_ip等)
datasets✅(推理时)数据集任务列表,元素为数据集配置字典(含type、abbr、reader_cfg、infer_cfg、eval_cfg)
model_dataset_combinations❌自定义模型-数据集精确配对;不指定时默认做笛卡尔积组合
summarizer❌结果汇总器,通常从 example.py 导入
work_dir❌结果与日志输出目录,默认outputs/default/
infer/eval❌推理/评测流程配置(分区器、运行器、任务类型)

其中abbr是模型与数据集在结果表格中的列名/行名,也是任务的唯一标识——这一点在后面的"避坑"环节至关重要 ⚠️

第一步:修改预置模板,跑通你的第一个配置文件

仓库已内置了一个带完整中文注释的预置模板 model_api_test_zh_cn.py,只需按顺序完成 3 件事:

  1. 选模型:取消注释切换服务化模型类型(vllm_api_general/vllm_api_general_chat/vllm_api_stream_chat),并按你的推理服务修改host_ip、host_port、generation_kwargs(temperature、top_k 等)。
  2. 选数据集:把数据集任务的 import 语句替换成你需要的,例如 demo 用的demo_gsm8k_gen_4_shot_cot_chat_prompt;所有可用数据集的导入方式可在 all_dataset_configs.py 中一站式查到。
  3. 执行:
ais_bench ais_bench/configs/model_api_test_zh_cn.py

想并行跑多个任务时,加一个参数即可:

ais_bench ais_bench/configs/model_api_test_zh_cn.py --max-num-workers 4

执行后命令行会实时刷新任务看板(按P暂停刷屏方便复制),全部日志与结果落在work_dir下的时间戳目录中。

批量提效核心:一个文件跑满"模型 × 数据集"矩阵

这正是自定义配置文件最强大的地方——变量拼接即组合。以下真实样例来自 infer_vllm_api_multi_model_multi_dataset.py:

from mmengine.config import read_base with read_base(): from ais_bench.benchmark.configs.summarizers.example import summarizer from ais_bench.benchmark.configs.datasets.gsm8k.gsm8k_gen_0_shot_cot_str import gsm8k_datasets as gsm8k from ais_bench.benchmark.configs.datasets.math.math500_gen_0_shot_cot_chat_prompt import math_datasets as math500 from ais_bench.benchmark.configs.datasets.mmlu.mmlu_gen_5_shot_str import mmlu_datasets as mmlu from ais_bench.benchmark.configs.models.vllm_api.vllm_api_general import models as m1 from ais_bench.benchmark.configs.models.vllm_api.vllm_api_general_chat import models as m2 from ais_bench.benchmark.configs.models.vllm_api.vllm_api_stream_chat import models as m3 datasets = gsm8k + math500 + mmlu # 3 个数据集 models = m1 + m2 + m3 # 3 个模型 work_dir = 'outputs/multi_model_multi_dataset/'

不写model_dataset_combinations时,AISBench 自动做笛卡尔积:3 个模型 × 3 个数据集 = 9 个测评任务,一个文件全部搞定🚀 单条命令即可在最终汇总表里得到一张"模型为列、数据集为行"的完整对比表。

精确控制:model_dataset_combinations 按需配对

当笛卡尔积会产生无意义任务时(比如某个模型只测特定数据集),用model_dataset_combinations精确配对。样例见 infer_vllm_api_with_model_dataset_combinations.py:

model_dataset_combinations = [ dict(models=[models[0]], datasets=[datasets[0]]), # 模型0 只测 数据集0 dict(models=[models[1]], datasets=[datasets[1]]), # 模型1 只测 数据集1 dict(models=[models[2]], datasets=[datasets[0], datasets[1]]), # 模型2 全测 ]

⚠️ 最常见的坑:abbr 重复导致任务被静默跳过

同一配置文件中,相同abbr的模型与数据集组合会被视为重复任务而跳过,即使内部参数(如端口)不同也会被跳过。正确做法是复用配置时先改名:

model_copy = vllm_api_general.copy() model_copy[0]['abbr'] = vllm_api_general[0]['abbr'] + '-copy' # 先改 abbr 再复用

四个高频进阶技巧

  1. for 循环批量构建模型:多台服务不同端口(8080/8081/8082)逐个压测,一个循环生成全部模型配置,abbr用 f-string 自动加后缀区分。
  2. .copy()复用改参数:复制同一模型配置、仅改generation_kwargs中的temperature(如 0.9 vs 0.1),即可在同一文件里完成温度对比实验。
  3. 环境变量条件切换:os.environ.get('USE_STREAM')判断后选择VLLMCustomAPIChat或VLLMCustomAPI,一份配置适配流式/非流式两套服务。
  4. test_range限制采样:修改reader_cfg的test_range为'[0:8]',只跑前 8 条数据做快速冒烟验证,省时间又省钱 💰

六大典型场景:预置样例文件速查

仓库为每类场景都提供了现成模板,直接复制修改即可:

场景预置样例文件
单任务快速上手(中文注释)model_api_test_zh_cn.py
服务化精度多模型×多数据集infer_vllm_api_multi_model_multi_dataset.py
自定义模型-数据集配对infer_vllm_api_with_model_dataset_combinations.py
裁判模型(LLM Judge)测评infer_vllm_api_with_judge_model.py
精度多任务(2 模型×2 数据集)multi_task_zh_cn.py
性能多任务(流式接口压测)multi_task_zh_cn.py

更完整的变量字段参考与 10 个场景样例(稳态压测、多轮对话、自定义数据集等),详见官方教程 run_custom_config.md。

性能测评同样一个文件搞定

性能场景与精度场景共用同一套配置文件,只需将模型改为流式类型(vllm_api_stream_chat等)、指定request_rate(请求速率,0 表示不限速)和batch_size(并发数),运行命令加-m perf切换性能模式:

ais_bench ais_bench/configs/performance_benchmark/multi_task_zh_cn.py -m perf

跑完后除了指标表格,还会输出请求数与并发的时间曲线图,直观观察流量爬坡、稳态、退出三个阶段:

如果通过不同request_rate值批量配置多个模型(如 0/5/10/20),还可模拟稳态负载,AISBench 会自动识别"计算稳态阶段"并只基于该阶段的请求计算吞吐与延迟:

查看结果:一张表看全所有组合

任务结束后,work_dir下的时间戳目录会包含完整产物:configs/(合成配置)、logs/(推理与评测日志)、predictions/(模型原始输出)、results/(原始分数)、summary/(csv/md/txt 三种格式的最终汇总)。多个模型多个数据集的结果自然合并为一张对比表,性能场景则输出 E2EL、TTFT、TPOT、吞吐等分位数指标:

总结

  • 一个文件 = 完整测评计划:models+datasets拼接即笛卡尔积,批量组合零成本。
  • 精确配对:model_dataset_combinations消除无意义任务;改abbr避免任务被误判重复。
  • 配置即代码:循环、.copy()、环境变量让"多端口压测""温度对比"这类实验变得优雅。
  • 可复现、可共享:把配置文件提交到仓库,团队成员一条命令复现完全相同的测评。

更多资料入口:自定义配置完整教程、快速入门、数据集列表、GSM8K 数据集说明。

【免费下载链接】benchmark

AISBench Benchmark is a model evaluation tool built on OpenCompass, compatible with OpenCompass’s configuration system, dataset structure, and model backend implementation, while extending support for service-based models.

项目地址:https://gitcode.com/gh_mirrors/benchmark48/benchmark
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询