尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

vLLM Ascend 评测实战:用 AISBench 完成昇腾 NPU 上的模型精度与性能评估

vLLM Ascend 评测实战:用 AISBench 完成昇腾 NPU 上的模型精度与性能评估 人工智能大模型模型推理服务AscendCANN【免费下载链接】vllm-ascendCommunity maintained hardware plugin for vLLM on Huawei Ascend项目地址https://gitcode.com/gh_mirrors/vl/vllm-ascend点击查看免费下载本文以 vLLM Ascendvllm-ascend开源仓库的官方评测指南为主线讲解如何在昇腾 NPU 上以在线服务方式启动 vLLM Server并通过 AISBench 工具对 C-Eval、MMLU、GPQA、MATH-500、LiveCodeBench、AIME 2024、GSM8K 等主流数据集执行精度accuracy与性能performance评估。读完本文你将掌握从环境准备、数据集下载、评测配置到结果解读与常见故障排查的完整链路并能结合仓库中的 tools/aisbench.py 封装理解评测的自动化与阈值校验机制。1. 认识 AISBench 与 vllm-ascend 的评测方案AISBench 是面向昇腾 AI 硬件生态的基准评测框架同时提供精度评估accuracy与性能评估performance能力覆盖数学、知识问答、代码生成、多模态理解等多种评测场景。vllm-ascend 官方文档将其作为推荐评测工具之一与 lm-eval、EvalScope 等方案并列可对比阅读 using_lm_eval.md 与 using_evalscope.md。在仓库的 tools/aisbench.py 中AisbenchRunner类将 AISBench 进一步封装为三类可自动化、可验证的任务对应aisbench_config[case_type]accuracy跑通数据集推理并计算准确率默认用baseline ± threshold阈值默认 1区间校验结果是否达标见_accuracy_verifyperformance统计输出吞吐、输入吞吐、TPOT 等指标默认校验Output Token Throughput 0.97 * baseline见_performance_verify并支持可选的input_throughput_threshold与tpot_threshold额外约束spec_decode基于指标服务测量投机解码speculative decoding的接受率见_spec_decode_verify。这意味着本文讲解的手工流程同样可以被 CI/e2e 测试复用例如 tests/e2e/cases/features/kv_pool/test_qwen3_30b_acc.py 就通过run_aisbench_cases(model, port, aisbench_cases)批量跑精度用例。下面从最基础的手工流程讲起。2. 前置准备在单卡昇腾 NPU 上启动 vLLM 在线服务2.1 启动 Docker 容器vllm-ascend 官方镜像已经内置 vLLM Ascend 运行环境。执行以下命令启动容器需按实际环境修改DEVICE与IMAGE# Update DEVICE according to your device (/dev/davinci[0-7]) export DEVICE/dev/davinci7 # Update the vllm-ascend image export IMAGEquay.io/ascend/vllm-ascend:{{ vllm_ascend_version }} docker run --rm \ --name vllm-ascend \ --shm-size1g \ --device $DEVICE \ --device /dev/davinci_manager \ --device /dev/devmm_svm \ --device /dev/hisi_hdc \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /root/.cache:/root/.cache \ -p 8000:8000 \ -e VLLM_USE_MODELSCOPETrue \ -e PYTORCH_NPU_ALLOC_CONFmax_split_size_mb:256 \ -it $IMAGE \ /bin/bash各挂载与环境变量的作用说明--device系列将 NPU 设备/dev/davinci[0-7]以及驱动管理节点davinci_manager、devmm_svm、hisi_hdc透传进容器/usr/local/dcmi、npu-smi、Ascend 驱动 lib64 与version.info、/etc/ascend_install.info供容器内感知驱动与设备信息/root/.cache复用宿主机模型与数据集缓存-p 8000:8000暴露 vLLM OpenAI 兼容服务端口VLLM_USE_MODELSCOPETrue让 vLLM 从 ModelScope 下载模型便于国内网络环境PYTORCH_NPU_ALLOC_CONFmax_split_size_mb:256调整 NPU 侧 PyTorch 内存分配粒度缓解大模型场景下的碎片化。2.2 在容器内启动 vLLM Servervllm serve Qwen/Qwen2.5-0.5B-Instruct --max-model-len 35000 注意--max-model-len应设置为大于35000这一长度对绝大多数评测数据集都足够否则可能影响精度评估结果。服务启动成功后日志应包含INFO: Started server process [9446] INFO: Waiting for application startup. INFO: Application startup complete.此时http://localhost:8000即对外提供 OpenAI 兼容的/v1接口供 AISBench 以service模式接入。3. 安装 AISBench在容器内从源码安装 AISBenchgit clone https://github.com/AISBench/benchmark.git cd benchmark/ pip3 install -e ./ --use-pep517再安装评测所需的扩展依赖pip3 install -r requirements/api.txt pip3 install -r requirements/extra.txt安装完成后运行ais_bench -h确认 CLI 可用。4. 下载评测数据集AISBench 仓库按ais_bench/benchmark/configs/datasets目录组织各数据集的评测配置每个数据集附带README.md说明下载与安装方式。下面给出官方文档示例中的常用数据集下载命令均需在ais_bench/datasets目录下执行。4.1 C-Evalcd ais_bench/datasets mkdir ceval/ mkdir ceval/formal_ceval cd ceval/formal_ceval wget https://www.modelscope.cn/datasets/opencompass/ceval-exam/resolve/master/ceval-exam.zip unzip ceval-exam.zip rm ceval-exam.zip4.2 MMLUcd ais_bench/datasets wget https://opencompass.oss-cn-shanghai.aliyuncs.com/datasets/data/mmlu.zip unzip mmlu.zip rm mmlu.zip4.3 GPQAcd ais_bench/datasets wget https://opencompass.oss-cn-shanghai.aliyuncs.com/datasets/data/gpqa.zip unzip gpqa.zip rm gpqa.zip4.4 MATHcd ais_bench/datasets wget https://opencompass.oss-cn-shanghai.aliyuncs.com/datasets/data/math.zip unzip math.zip rm math.zip4.5 LiveCodeBenchcd ais_bench/datasets # If HuggingFace is slow or unreachable, set HF_ENDPOINT to a mirror: # export HF_ENDPOINThttps://hf-mirror.com huggingface-cli download livecodebench/code_generation_lite --repo-type dataset --local-dir code_generation_lite4.6 AIME 2024cd ais_bench/datasets mkdir aime/ cd aime/ wget https://opencompass.oss-cn-shanghai.aliyuncs.com/datasets/data/aime.zip unzip aime.zip rm aime.zip4.7 GSM8Kcd ais_bench/datasets wget https://opencompass.oss-cn-shanghai.aliyuncs.com/datasets/data/gsm8k.zip unzip gsm8k.zip rm gsm8k.zip提示仓库 tools/aisbench.py 中的DATASET_RENAME映射如aime2024 - aime、gsm8k-lite - gsm8k、textvqa-lite - textvqa说明自动化流程在复制数据集时会统一目录名手工操作时建议按同样命名放置避免配置与目录对不上。5. 配置模型评测参数精度与性能评测共用一个模型配置文件ais_bench/benchmark/configs/models/vllm_api/vllm_api_general_chat.py。需要根据环境修改以下字段字段含义说明attr推理后端类型标识固定为service基于服务的推理或local本地加载模型type后端 API 类型用于选择不同的后端 API 实现示例使用VLLMCustomAPIChatabbr本地任务唯一标识用于区分多个评测任务path模型权重路径本地模型权重路径modelvLLM 中的模型名需与vllm serve启动时的模型名一致host_ip/host_portvLLM 服务地址与端口默认localhost:8000max_out_len最大生成长度注意max_out_len 输入长度必须小于 vLLM Server 的max_model_len32768对大多数数据集足够batch_size批大小按数据集规模调整temperature采样温度按评测要求设置推理参数官方示例配置如下from ais_bench.benchmark.models import VLLMCustomAPIChat from ais_bench.benchmark.utils.model_postprocessors import extract_non_reasoning_content models [ dict( attrservice, typeVLLMCustomAPIChat, abbrvllm-api-general-chat, pathxxxx, modelxxxx, request_rate 0, retry 2, host_ip localhost, host_port 8000, max_out_len xxx, batch_size xxx, trust_remote_codeFalse, generation_kwargs dict( temperature 0.6, top_k 10, top_p 0.95, seed None, repetition_penalty 1.03, ), pred_postprocessordict(typeextract_non_reasoning_content) ) ]关键点解读extract_non_reasoning_content作为后处理器会从模型输出中剥离思维链/推理过程只保留最终答案文本确保评测打分器拿到的结果是干净的作答内容request_rate 0表示按需发送而非压测模式下的固定速率retry 2允许失败重试。从源码看自动化封装正是围绕该模板做定制化生成AisbenchRunner._init_request_conf读取vllm_api_general_chat.py用正则替换model、host_port、host_ip、max_out_len、batch_size、trust_remote_code等字段并支持注入top_k、top_p、seed、min_p、presence_penalty、repetition_penalty、thinking即chat_template_kwargs{thinking: True}与reasoning_effort等推理参数最终写出vllm_api_general_chat_custom.pytools/aisbench.py。对应地性能模式会强制temperature0、ignore_eosTrue精度/投机解码模式默认temperature0.6。单元测试 tests/ut/tools/test_aisbench.py 验证了reasoning_effort与thinking字段能够被正确注入生成文件手工流程可参考此逻辑保证配置一致性。6. 执行精度评估运行以下命令分别执行各数据集的精度评估# run C-Eval dataset ais_bench --models vllm_api_general_chat --datasets ceval_gen_0_shot_cot_chat_prompt.py --mode all --dump-eval-details --merge-ds # run MMLU dataset ais_bench --models vllm_api_general_chat --datasets mmlu_gen_0_shot_cot_chat_prompt.py --mode all --dump-eval-details --merge-ds # run GPQA dataset ais_bench --models vllm_api_general_chat --datasets gpqa_gen_0_shot_str.py --mode all --dump-eval-details --merge-ds # run MATH-500 dataset ais_bench --models vllm_api_general_chat --datasets math500_gen_0_shot_cot_chat_prompt.py --mode all --dump-eval-details --merge-ds # run LiveCodeBench dataset ais_bench --models vllm_api_general_chat --datasets livecodebench_code_generate_lite_gen_0_shot_chat.py --mode all --dump-eval-details --merge-ds # run AIME 2024 dataset ais_bench --models vllm_api_general_chat --datasets aime2024_gen_0_shot_chat_prompt.py --mode all --dump-eval-details --merge-ds # run GSM8K dataset ais_bench --models vllm_api_general_chat --datasets gsm8k_gen_0_shot_cot_chat_prompt.py --mode all --dump-eval-details --merge-ds命令行参数说明--models指定模型配置对应configs/models/vllm_api下的文件名不带.py--datasets指定数据集配置对应configs/datasets下的文件名--mode all同时执行推理与精度评分--dump-eval-details导出逐样本的评测细节--merge-ds合并数据集便于一次汇总结果。每次执行后结果保存在带时间戳的目录中例如outputs/default/20250628_15132620250628_151326/ ├── configs # Combined configuration file for model tasks, dataset tasks, and result presentation tasks │ └── 20250628_151326_29317.py ├── logs # Execution logs; if --debug is added to the command, no intermediate logs are saved to disk (all are printed directly to the screen) │ ├── eval │ │ └── vllm-api-general-chat │ │ └── demo_gsm8k.out # Logs of the accuracy evaluation process based on inference results in the predictions/ folder │ └── infer │ └── vllm-api-general-chat │ └── demo_gsm8k.out # Logs of the inference process ├── predictions │ └── vllm-api-general-chat │ └── demo_gsm8k.json # Inference results (all outputs returned by the inference service) ├── results │ └── vllm-api-general-chat │ └── demo_gsm8k.json # Raw scores calculated from the accuracy evaluation └── summary ├── summary_20250628_151326.csv # Final accuracy scores (in table format) ├── summary_20250628_151326.md # Final accuracy scores (in Markdown format) └── summary_20250628_151326.txt # Final accuracy scores (in text format)目录语义configs保存本次评测的合并配置模型任务 数据集任务 结果展示任务logs分eval基于predictions的评分日志与infer推理过程日志两类predictions是推理服务返回的全部原始输出results是评分后的原始分数summary则是 CSV / Markdown / TXT 三种格式的最终汇总表也是人工阅读结论的首选文件。在自动化校验场景下_get_result_accuracy会读取汇总表最后一个单元格作为准确率并断言其落在[baseline - threshold, baseline threshold]区间内tools/aisbench.py你可以据此在 CI 中设定达标基线。7. 执行性能评估性能评估使用--mode perf并搭配--summarizer default_perf聚合指标。7.1 纯文本基准# run C-Eval dataset ais_bench --models vllm_api_general_chat --datasets ceval_gen_0_shot_cot_chat_prompt.py --summarizer default_perf --mode perf # run MMLU dataset ais_bench --models vllm_api_general_chat --datasets mmlu_gen_0_shot_cot_chat_prompt.py --summarizer default_perf --mode perf # run GPQA dataset ais_bench --models vllm_api_general_chat --datasets gpqa_gen_0_shot_str.py --summarizer default_perf --mode perf # run MATH-500 dataset ais_bench --models vllm_api_general_chat --datasets math500_gen_0_shot_cot_chat_prompt.py --summarizer default_perf --mode perf # run LiveCodeBench dataset ais_bench --models vllm_api_general_chat --datasets livecodebench_code_generate_lite_gen_0_shot_chat.py --summarizer default_perf --mode perf # run AIME 2024 dataset ais_bench --models vllm_api_general_chat --datasets aime2024_gen_0_shot_chat_prompt.py --summarizer default_perf --mode perf # run GSM8K dataset ais_bench --models vllm_api_general_chat --datasets gsm8k_gen_0_shot_cot_str_perf.py --summarizer default_perf --mode perf注意 GSM8K 的性能评测使用单独的gsm8k_gen_0_shot_cot_str_perf.py配置与精度评测的 prompt 配置不同。7.2 多模态基准文本 图像# run textvqa dataset ais_bench --models vllm_api_stream_chat --datasets textvqa_gen_base64 --summarizer default_perf --mode perf多模态评测使用vllm_api_stream_chat模型配置流式对话 API与textvqa_gen_base64数据集配置Base64 图像输入。性能结果同样输出到带时间戳的目录例如20251031_070226/ |-- configs # Combined configuration file for model tasks, dataset tasks, and result presentation tasks | -- 20251031_070226_122485.py |-- logs | -- performances | -- vllm-api-general-chat | -- cevaldataset.out # Logs of the performance evaluation process -- performances -- vllm-api-general-chat |-- cevaldataset.csv # Final performance results (in table format) |-- cevaldataset.json # Final performance results (in json format) |-- cevaldataset_details.h5 # Final performance results in details |-- cevaldataset_details.json # Final performance results in details |-- cevaldataset_plot.html # Final performance results (in html format) -- cevaldataset_rps_distribution_plot_with_actual_rps.html # Final performance results (in html format)其中cevaldataset.csv/cevaldataset.json是最终指标cevaldataset_details.*是逐请求明细两个 HTML 文件则提供可视化图表结果曲线与真实请求速率分布。核心指标包括 TTFT首 Token 延迟、TPOT每输出 Token 延迟、输出/输入 Token 吞吐与请求吞吐等自动化校验时即从 JSON 的Output Token Throughput[total]与 CSV 的TPOT行读取数据做断言tools/aisbench.py。8. 常见问题排查TextVQA 图像路径错误按 AISBench 官方文档下载 TextVQA 数据集时cd ais_bench/datasets git lfs install git clone https://huggingface.co/datasets/maoxx241/textvqa_subset mv textvqa_subset/ textvqa/ mkdir textvqa/textvqa_json/ mv textvqa/*.json textvqa/textvqa_json/ mv textvqa/*.jsonl textvqa/textvqa_json/可能遇到如下报错AISBench - ERROR - /vllm-workspace/benchmark/ais_bench/benchmark/clients/base_client.py - raise_error - 35 - [AisBenchClientException] Request failed: HTTP status 400. Server response: {error:{message:1 validation error for ChatCompletionContentPartImageParam\nimage_url\n Input should be a valid dictionary [typedict_type, input_valuedata/textvqa/train_images/b2ae0f96dfbea5d8.jpg, input_typestr]\n For further information visit https://errors.pydantic.dev/2.12/v/dict_type None,type:BadRequestError,param:null,code:400}}原因分析数据集 JSON 中记录的图片路径是相对路径data/textvqa/train_images/...而 OpenAI 兼容接口的image_url要求传入可访问的绝对路径pydantic 校验ChatCompletionContentPartImageParam时因此返回 400。解决办法用sed将 JSON 中的相对路径批量替换为实际绝对路径cd ais_bench/datasets/textvqa/textvqa_json sed -i s#data/textvqa/train_images/#/path/to/benchmark/ais_bench/datasets/textvqa/train_images/#g textvqa_val.json将/path/to/benchmark/ais_bench/datasets/textvqa/train_images/替换为你机器上图像文件真实存放的绝对目录即可。9. 小结与延伸阅读本指南完整覆盖了 vllm-ascend 环境下 AISBench 评测的标准流程Docker 启动单卡 vLLM 服务注意--max-model-len需大于 35000、安装 AISBench、下载七类常用数据集、修改vllm_api_general_chat.py配置重点是max_out_len与max_model_len的约束关系、分别执行--mode all精度评测与--mode perf性能评测以及 TextVQA 图像路径的修复。读懂outputs/default/时间戳目录结构predictions/results/summary即可快速定位最终得分。如果你想将同样的评测接入自动化验证可深入研究仓库中的 tools/aisbench.pyAisbenchRunner的配置生成与阈值校验逻辑及其单元测试 tests/ut/tools/test_aisbench.py并参考 e2e 用例 tests/e2e/cases/features/kv_pool/test_qwen3_30b_acc.py 的aisbench_cases组织方式。若需对比其他评测框架可阅读同目录下的 using_lm_eval.mdlm-eval 的在线/离线/本地数据集用法与 using_evalscope.mdEvalScope 的精度评测与压测。赞分享人工智能大模型模型推理服务AscendCANN【免费下载链接】vllm-ascendCommunity maintained hardware plugin for vLLM on Huawei Ascend项目地址https://gitcode.com/gh_mirrors/vl/vllm-ascend点击查看免费下载相关推荐开源大模型食用指南昇腾 Ascend NPU 平台大模型部署实战MindIE / vLLM-ascend / sglang-ascend开源大模型食用指南昇腾 Ascend NPU 平台大模型部署实战MindIE / vLLM ascend / sglang ascend 本文是《开源大模教程大模型本地部署微调OpenBot 多智能体协作让 AI Bot 互相交接任务的 handoff 机制深度解析OpenBot 多智能体协作让 AI Bot 互相交接任务的 handoff 机制深度解析 OpenBot 是一个开源 AI 同事AI coworker平人工智能大模型模型推理服务AscendCANNvLLM Ascend 插件vllm-ascend完全指南在昇腾 NPU 上无缝运行 vLLM 的社区硬件插件vLLM Ascend 插件vllm ascend完全指南在昇腾 NPU 上无缝运行 vLLM 的社区硬件插件 本文档系统介绍 vllm ascend 这人工智能大模型模型推理服务AscendCANN上一篇undici CacheStorage 实战指南caches 单例、Cache 生命周期与 W3C Service Worker 缓存语义解析下一篇Dark Reader 四步配置从开箱暗黑模式到逐站调优的浏览器扩展清单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表