关于 ais-bench
ais-bench 是面向 Ascend NPU 上 AI 模型的评测工具,基于 OpenCompass。它覆盖准确率与性能测试,并支持文本、多模态、多轮对话和函数调用基准。
主要功能
- 01准确率与性能评测
- 02文本及多模态基准
- 03时延、吞吐与压力测试
- 04稳态性能及流量模拟
- 05多模型与数据集并行评测
适用场景
- 01比较本地模型和服务模型的问答表现
- 02测量推理服务的时延与吞吐
- 03模拟实际业务流量进行性能测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ascend-ai-coding/ awesome-ascend-skills --skill ais-bench安装后在 Claude Code 中输入/ais-bench确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/custom_mcq_template.csvcustom_meta_template.jsoncustom_multimodal_template.jsonlcustom_qa_template.jsonlmodel_config_template.pyreferences/cli-reference.mdmodel-configs.mdscripts/check_env.shparse_results.pyrun_accuracy_test.shrun_performance_test.sh详细介绍
AISBench 基准测试工具
AISBench Benchmark 是一款基于 OpenCompass 构建的模型评估工具,支持在 Ascend NPU 上对 AI 模型进行准确性和性能测试。
概览
- 准确性评估:在各种问答和推理基准数据集上,对服务部署模型和本地模型进行准确性验证,涵盖文本、多模态等场景。
- 性能评估:评估服务部署模型的延迟和吞吐量,进行压力测试场景下的极限性能测试、稳态性能评估,以及真实业务流量模拟。
支持的场景
| 场景 | 说明 |
|---|---|
| 准确性评估 | 模型在文本/多模态数据集上的准确性 |
| 性能评估 | 延迟、吞吐量、压力测试 |
| 稳态性能 | 获取系统的真实最佳性能 |
| 真实流量模拟 | 模拟真实业务流量模式 |
| 多轮对话 | 评估多轮对话模型 |
| 函数调用(BFCL) | 函数调用能力评估 |
支持的基准测试
- 文本:GSM8K、MMLU、Ceval、FewCLUE 系列、dapo_math、leval
- 多模态:docvqa、infovqa、ocrbench_v2、omnidocbench、mmmu、mmmu_pro、mmstar、videomme、textvqa、videobench、vocalsound
- 多轮对话:sharegpt、mtbench
- 函数调用:BFCL(Berkeley Function Calling Leaderboard)
安装
环境要求
Python 版本:仅支持 Python 3.10、3.11 或 3.12。
# Create conda environment
conda create --name ais_bench python=3.10 -y
conda activate ais_bench
从源代码安装
git clone https://github.com/AISBench/benchmark.git
cd benchmark/
pip3 install -e ./ --use-pep517
验证安装:
ais_bench -h
可选依赖项
# For service-deployed model evaluation (vLLM, Triton, etc.)
pip3 install -r requirements/api.txt
pip3 install -r requirements/extra.txt
# For Huggingface multimodal / vLLM offline inference
pip3 install -r requirements/hf_vl_dependency.txt
# For BFCL Function Calling evaluation
pip3 install -r requirements/datasets/bfcl_dependencies.txt --no-deps
快速入门
基本命令结构
ais_bench --models <model_task> --datasets <dataset_task> [--summarizer example]
--models:指定模型任务配置--datasets:指定数据集任务配置--summarizer:结果呈现任务(默认值:example)
查找配置文件
# List all available task configurations
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --search
示例:服务模型准确性评估
-
启动 vLLM 推理服务(请参阅 vLLM 文档)
-
准备数据集:
- 从 opencompass 下载 GSM8K
- 解压到
ais_bench/datasets/gsm8k/
-
修改模型配置(
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="", stream=False, request_rate=0, retry=2, api_key="", host_ip="localhost", host_port=8080, url="", max_out_len=512, batch_size=1, trust_remote_code=False, generation_kwargs=dict( temperature=0.01, ignore_eos=False, ) ) ] -
运行评估:
ais_bench --models vllm_api_general_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt
输出结果
dataset version metric mode vllm_api_general_chat
----------------------- -------- -------- ----- ----------------------
demo_gsm8k 401e4c accuracy gen 62.50
模型任务类型
服务部署模型
| 模型类型 | 说明 |
|---|---|
vllm_api_general_chat | 通用 vLLM API 聊天模型 |
vllm_api_function_call_chat | 函数调用模型(BFCL) |
triton_api_* | Triton 推理服务 |
本地模型
| 模型类型 | 说明 |
|---|---|
hf_* | HuggingFace 模型 |
vllm_offline_* | vLLM 离线推理 |
性能评估
关键指标
| 指标 | 说明 |
|---|---|
| TTFT | 首个 Token 的生成时间 |
| TPOT | 每个输出 Token 的生成时间 |
| 吞吐量 | 每秒处理的 Token 数 |
| 延迟 | 请求延迟(P50、P90、P99) |
性能测试示例
ais_bench --models vllm_api_general_chat --datasets custom_performance \
--mode performance --concurrency 100
稳态性能
用于获取系统的真实最佳性能:
ais_bench --models vllm_api_general_chat --datasets sharegpt \
--stable-stage --duration 300
真实流量模拟
ais_bench --models vllm_api_general_chat --datasets custom \
--rps-distribution rps_config.json
多任务评估
多个模型
ais_bench --models model1 model2 model3 --datasets dataset1
多个数据集
ais_bench --models model1 --datasets dataset1 dataset2 dataset3
并行执行
ais_bench --models model1 model2 --datasets dataset1 dataset2 --parallel 4
自定义数据集
自定义性能数据集
创建包含自定义请求的 JSONL 文件:
{"input": "Your prompt here", "max_output_length": 512}
自定义准确性数据集
请参阅自定义数据集指南
输出结构
outputs/default/20250628_151326/
├── configs/ # Combined configuration
├── logs/ # Execution logs
│ ├── eval/ # Evaluation logs
│ └── infer/ # Inference logs
├── predictions/ # Raw inference results
├── results/ # Calculated scores
└── summary/ # Final summaries
├── summary_*.csv
├── summary_*.md
└── summary_*.txt
任务管理界面
执行期间,实时任务管理界面会显示:
- 任务名称和进度
- 耗时和状态
- 日志路径
- 扩展参数
控制项:
P键:暂停/恢复屏幕刷新Ctrl+C:退出
常用 CLI 选项
| 选项 | 描述 |
|---|---|
--models | 模型任务名称 |
--datasets | 数据集任务名称 |
--summarizer | 结果摘要器 |
--search | 列出配置文件路径 |
--debug | 打印详细日志 |
--mode | 评估模式(准确率/性能) |
--parallel | 并行任务数 |
--resume | 从断点恢复 |
--failed-only | 仅重新运行失败的用例 |
高级功能
断点续跑
ais_bench --models model1 --datasets dataset1 --resume outputs/default/20250628_151326
失败用例重跑
ais_bench --models model1 --datasets dataset1 --failed-only --resume outputs/default/20250628_151326
多文件数据集合并
对于包含多个文件的数据集(如 MMLU):
ais_bench --models model1 --datasets mmlu_merged
pass@k 重复推理
ais_bench --models model1 --datasets dataset1 --repeat-n 5
故障排除
安装问题
- Python 版本不匹配:使用 Python 3.10/3.11/3.12
- 依赖冲突:使用 conda 环境
- bfcl_eval pathlib 问题:使用
--no-deps标志
运行时问题
- 模型连接失败:检查
host_ip、host_port和服务状态 - 未找到数据集:将数据集下载到
ais_bench/datasets/ - 内存问题:减小
batch_size或使用较小的数据集
辅助脚本
用于常见操作的快捷实用脚本:
| 脚本 | 描述 |
|---|---|
| scripts/check_env.sh | 验证环境设置 |
| scripts/run_accuracy_test.sh | 快速准确率测试运行器 |
| scripts/run_performance_test.sh | 快速性能测试运行器 |
| scripts/parse_results.py | 解析并汇总结果 |
# Check environment
bash scripts/check_env.sh
# Quick accuracy test
bash scripts/run_accuracy_test.sh vllm_api_general_chat demo_gsm8k --host-port 8080
# Quick performance test
bash scripts/run_performance_test.sh vllm_api_general_chat sharegpt --concurrency 100
# Parse results
python scripts/parse_results.py outputs/default/20250628_151326
参考资料
特定用例的详细文档:
模板
可直接用于自定义评估的模板:
| 模板 | 描述 |
|---|---|
| assets/model_config_template.py | 模型配置模板 |
| assets/custom_qa_template.jsonl | QA 数据集模板 |
| assets/custom_mcq_template.csv | 选择题数据集模板 |
| assets/custom_meta_template.json | 数据集元数据模板 |
评论
支持 Markdown