❗重要
⭐️收藏项目,你将能第一时间获取 AISBench评测工具 的最新动态~
-
[2025.11.25] 支持服务化模型PPL(Perplexity-based,困惑度)模式精度测评。🔥🔥🔥
-
[2025.9.08] 支持📚模拟真实业务流量:通过控制请求发送速率波动,感知在模拟真实场景下服务化的性能测评结果!🔥🔥🔥
-
[2025.8.28] 支持📚多次独立重复推理精度场景,计算pass@k/cons@k/avg@n等不同维度的精度指标!🔬🔬🔬
-
[2025.8.19]
- 新增Function Call专用模型配置 vllm_api_function_call_chat,支持 BFCL 函数调用能力评估 🔥🔥🔥
- 提供工具支持的性能测试规格说明,优化推理集群场景工具内存占用及性能计算。最大规格场景(250K条请求,输入/输出token 4K/4K)内存占用降低60%,内存占用小于64GB;性能结果计算效率提升20倍。🚀🚀🚀
-
[2025.7.15]
-
[2025.6.19] 支持📚性能评测结果可视化,辅助定位推理服务性能瓶颈!🔥🔥🔥
-
[2025.6.12] 支持textvqa、videobench和vocalsound等多模态数据集的精度和性能评测!🔥🔥🔥
-
[2025.6.6] AISBench支持稳态性能评测,获取系统真实最佳性能,参考📚 服务化稳定状态性能测试进行快速上手! 🔥🔥🔥
-
[2025.5.16] 支持3W+高并发服务化性能评测,📚 性能指标对齐🔗 vllm benchmark,参考📚 服务化性能测评指南了解详情!🔥🔥🔥
-
[2025.4.30] 精度评测支持断点续测和失败用例重测,大幅提高精度评测鲁棒性,参考📚 中断续测 & 失败用例重测进行快速上手! 🔥🔥🔥
-
[2025.4.15] 优化固定batch发送请求的方式为continuous batch模式发送请求,大幅提高精度评测效率! 🔥🔥🔥
-
[2025.4.12] 支持合并MMLU、Ceval等所有多文件数据集为单个数据集任务进行精度评测,参考📚 合并多文件数据集了解详情! 🔥🔥🔥
AISBench Benchmark 是基于 OpenCompass 构建的模型评测工具,兼容 OpenCompass 的配置体系、数据集结构与模型后端实现,并在此基础上扩展了对服务化模型的支持能力。
当前,AISBench 支持两大类推理任务的评测场景:
🔍 精度测评:支持对服务化模型和本地模型在各类问答、推理基准数据集上的精度验证。
🚀 性能测评:支持对服务化模型的延迟与吞吐率评估,并可进行压测场景下的极限性能测试。
✅ 环境要求
Python 版本:仅支持 Python 3.10、 3.11 或 3.12
不支持 Python 3.9 及以下版本,也不兼容 Python 3.13 及以上版本
推荐使用 Conda 管理环境,以避免依赖冲突
conda create --name ais_bench python=3.10 -y
conda activate ais_bench📦 安装方式(源码安装)
AISBench 当前仅提供源码安装方式,请确保安装环境联网:
git clone https://github.com/AISBench/benchmark.git
cd benchmark/
pip3 install -e ./ --use-pep517该命令会自动安装核心依赖。
执行ais_bench -h,如果打印出AISBench评测工具的所有命令行的帮助信息,说明安装成功
⚙️ 服务化框架支持(可选)
若需评估服务化模型(如 vLLM、Triton 等),需额外安装相关依赖:
pip3 install -r requirements/api.txt
pip3 install -r requirements/extra.txt⚙️ Huggingface多模态模型/vllm多模态离线推理支持(可选)
pip3 install -r requirements/hf_vl_dependency.txt🔗 Berkeley Function Calling Leaderboard (BFCL) 测评支持
pip3 install -r requirements/datasets/bfcl_dependencies.txt --no-deps重要提示:由于 bfcl_eval 会自动安装 pathlib 库,而 Python 3.5+ 环境已内置该库,为避免版本冲突,请务必使用 --no-deps 参数跳过额外依赖的自动安装。
如需进一步配置、使用 CLI 或 Python 脚本发起评测任务,请参考快速入门指南。
如需卸载 AISBench Benchmark,可执行以下命令:
pip3 uninstall ais_bench_benchmarkAISBench命令执行的单个或多个评测任务是由模型任务(单个或多个)、数据集任务(单个或多个)和结果呈现任务(单个)的组合定义的,AISBench的其他命令行则规定了评测任务的场景(精度评测场景、性能评测场景等)。以如下AISBench命令为例:
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --summarizer example此命令没有指定其他命令行,默认是一个精度评测场景的任务,其中:
-
--models指定了模型任务,即vllm_api_general_chat模型任务。 -
--datasets指定了数据集任务,即demo_gsm8k_gen_4_shot_cot_chat_prompt数据集任务。 -
--summarizer指定了结果呈现任务,即example结果呈现任务(不指定--summarizer精度评测场景默认使用example任务),一般使用默认,不需要在命令行中指定,后续命令不指定。
多任务测评请参考:📚 精度场景的多任务测评 和 性能场景的多任务测评。
如需自行组合测评任务,实现更灵活的测评方式,可参考:📚 自定义配置文件运行AISBench。
所选模型任务vllm_api_general_chat、数据集任务demo_gsm8k_gen_4_shot_cot_chat_prompt和结果呈现任务example的具体信息(简介,使用约束等)可以分别从如下链接中查询含义:
--models: 使用vllm_api_general_chat模型任务,需要准备支持v1/chat/completions子服务的推理服务,可以参考🔗 VLLM启动OpenAI 兼容服务器启动推理服务--datasets: 使用demo_gsm8k_gen_4_shot_cot_chat_prompt数据集任务,需要准备gsm8k数据集,可以从🔗 opencompass 提供的gsm8k数据集压缩包下载。将解压后的gsm8k/文件夹部署到AISBench评测工具根路径下的ais_bench/datasets文件夹下。
每个模型任务、数据集任务和结果呈现任务都对应一个配置文件,运行命令前需要修改这些配置文件的内容。这些配置文件路径可以通过在原有AISBench命令基础上加上--search来查询,例如:
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --search
⚠️ 注意: 执行带search命令会打印出任务对应的配置文件的绝对路径。
执行查询命令可以得到如下查询结果:
╒══════════════╤═══════════════════════════════════════╤════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╕
│ Task Type │ Task Name │ Config File Path │
╞══════════════╪═══════════════════════════════════════╪════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╡
│ --models │ vllm_api_general_chat │ /your_workspace/benchmark/ais_bench/benchmark/configs/models/vllm_api/vllm_api_general_chat.py │
├──────────────┼───────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ --datasets │ demo_gsm8k_gen_4_shot_cot_chat_prompt │ /your_workspace/benchmark/ais_bench/benchmark/configs/datasets/demo/demo_gsm8k_gen_4_shot_cot_chat_prompt.py │
╘══════════════╧═══════════════════════════════════════╧════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╛
- 快速入门中数据集任务配置文件
demo_gsm8k_gen_4_shot_cot_chat_prompt.py不需要做额外修改,数据集任务配置文件内容介绍可参考📚 配置开源数据集
模型配置文件vllm_api_general_chat.py中包含了模型运行相关的配置内容,是需要依据实际情况修改的。快速入门中需要修改的内容用注释标明。
from ais_bench.benchmark.models import VLLMCustomAPIChat
models = [
dict(
attr="service",
type=VLLMCustomAPIChat,
abbr='vllm-api-general-chat',
path="", # 指定模型序列化词表文件绝对路径(精度测试场景一般不需要配置)
model="", # 指定服务端已加载模型名称,依据实际VLLM推理服务拉取的模型名称配置(配置成空字符串会自动获取)
stream=False,
request_rate=0, # 请求发送频率,每1/request_rate秒发送1个请求给服务端,小于0.1则一次性发送所有请求
retry=2, # 每个请求最大重试次数
api_key="", # 自定义API key,默认是空字符串
host_ip="localhost", # 指定推理服务的IP
host_port=8080, # 指定推理服务的端口
url="", # 自定义访问推理服务的URL路径(当base url不是http://host_ip:host_port的组合时需要配置, 配置后host_ip和host_port会被忽略)
max_out_len=512, # 推理服务输出的token的最大数量
batch_size=1, # 请求发送的最大并发数
trust_remote_code=False, # tokenizer是否信任远程代码,默认False;
generation_kwargs=dict( # 模型推理参数,参考VLLM文档配置,AISBench评测工具不做处理,在发送的请求中附带
temperature=0.01,
ignore_eos=False,
)
)
]修改好配置文件后,执行命令启动服务化精度评测:
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt执行AISBench命令后,正在执行的任务状态会在命令行实时刷新的看板上显示(键盘按"P"键可以停止刷新,用于复制看板信息,再按"P"可以继续刷新),例如:
Base path of result&log : outputs/default/20250628_151326
Task Progress Table (Updated at: 2025-11-06 10:08:21)
Page: 1/1 Total 2 rows of data
Press Up/Down arrow to page, 'P' to PAUZE/RESUME screen refresh, 'Ctrl + C' to exit
+----------------------------------+-----------+-------------------------------------------------+-------------+-------------+-------------------------------------------------+------------------------------------------------+
| Task Name | Process | Progress | Time Cost | Status | Log Path | Extend Parameters |
+==================================+===========+=================================================+=============+=============+=================================================+================================================+
| vllm-api-general-chat/demo_gsm8k | 547141 | [############### ] 4/8 [0.5 it/s] | 0:00:11 | inferencing | logs/infer/vllm-api-general-chat/demo_gsm8k.out | {'POST': 5, 'RECV': 4, 'FINISH': 4, 'FAIL': 0} |
+----------------------------------+-----------+-------------------------------------------------+-------------+-------------+-------------------------------------------------+------------------------------------------------+
任务执行的细节日志会不断落盘在默认的输出路径,这个输出路径在实时刷新的看板上显示,即Log Path。Log Path(logs/infer/vllm-api-general-chat/demo_gsm8k.out)是在Base path(outputs/default/20250628_151326)下的路径,以上述的看板信息为例,任务执行的详细日志路径为:
# {Base path}/{Log Path}
outputs/default/20250628_151326/logs/infer/vllm-api-general-chat/demo_gsm8k.out💡 如果希望执行过程中将详细日志直接打印,执行命令时可以加上
--debug:ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --debug
Base path(outputs/default/20250628_151326)下包含了所有任务的执行细节,命令执行结束后所有的执行细节如下:
20250628_151326/
├── configs # 模型任务、数据集任务和结构呈现任务对应的配置文件合成的一个配置
│ └── 20250628_151326_29317.py
├── logs # 执行过程中日志,命令中如果加--debug,不会有过程日志落盘(都直接打印出来了)
│ ├── eval
│ │ └── vllm-api-general-chat
│ │ └── demo_gsm8k.out # 基于predictions/文件夹下的推理结果的精度评测过程的日志
│ └── infer
│ └── vllm-api-general-chat
│ └── demo_gsm8k.out # 推理过程日志
├── predictions
│ └── vllm-api-general-chat
│ └── demo_gsm8k.json # 推理结果(推理服务返回的所有输出)
├── results
│ └── vllm-api-general-chat
│ └── demo_gsm8k.json # 精度评测计算的原始分数
└── summary
├── summary_20250628_151326.csv # 最终精度分数呈现(表格格式)
├── summary_20250628_151326.md # 最终精度分数呈现(markdown格式)
└── summary_20250628_151326.txt # # 最终精度分数呈现(文本格式)
⚠️ 注意: 不同评测场景落盘任务执行细节内容不同,具体请参考具体评测场景的指南。
因为只有8条数据,会很快跑出结果,结果显示的示例如下
dataset version metric mode vllm_api_general_chat
----------------------- -------- -------- ----- ----------------------
demo_gsm8k 401e4c accuracy gen 62.50更多教程请查看我们的👉文档
- [2025.10] AISBench完成全面重构,支持在AISBench框架下🔌插件化集成前沿测试基准,以应对业界愈发复杂多样化的测试任务;并且显著提高易用性。
- [2025.11] 提供业界前沿的多模态测评能力。
- [2025.12] 提供业界主流Agent测评能力。
- [2025.9] 支持模拟真实任务流量。
- [2025.8] 将支持ShareGPT、BFCL等多轮对话数据集的性能评测。
- [2025.8] 优化性能测评中评估eval阶段的计算效率,优化工具显存占用,补充工具使用规格说明。
- [2025.7] 性能评测场景使用自定义数据集,将支持定义每条数据对应的最大输出长度限制。
- 本项目代码基于🔗 OpenCompass做拓展开发。
- 本项目部分数据集和提示词实现修改自simple-evals。
- 本项目代码中打点的性能指标与VLLM Benchmark对齐。
- 本项目的BFCL函数调用能力评估功能基于 Berkeley Function Calling Leaderboard (BFCL) 实现。