一、总体说明
1.1 工具概述
EvalScope是一款专为大模型部署后性能评估设计的压力测试工具,支持多并发场景下的吞吐量、延迟、稳定性等核心指标测试。通过配置输入/输出Token长度、并发数等参数,可模拟真实业务负载,验证模型服务在不同上下文场景下的性能表现。工具基于Apptainer容器化部署,确保环境一致性,降低依赖冲突风险。
1.2 使用须知
网络配置:被测模型服务需暴露HTTP接口(如
http://{IP}:{PORT}/v1/chat/completions),确保工具可通过IP和端口正常访问。资源要求:测试过程可能产生高I/O和网络负载,建议在独立测试环境中执行,避免影响生产服务。
1.3 应用场景
模型部署验证:确认模型服务在指定并发和上下文长度下的响应能力。
性能瓶颈定位:通过多并发和Token配置组合,识别吞吐量下降或延迟突增的临界点。
服务稳定性测试:长时间高负载下验证服务是否存在内存泄漏、连接超时等异常。
random数据模式:random 数据集模式需指定 tokenizer-path,按 prefix-length/min/max-prompt-length 随机生成 Prompt;DeepSeek-V4 系列模型权重无内置chat_template.jinja或chat_template.json文件,不支持该模式。
二、物料准备
2.1 Evalscope高性能容器SIF文件获取
基于Apptainer(原 Singularity) 封装的Evalscope压测工具,已完成x86与arm架构适配,使用cthpc一键安装工具,秒级快速下发Apptainer高性能容器灌装,当前支持:
华东1、武汉41、上海15、华北2、华南2、西南1、西南2-贵州、长沙42、杭州7。
当前上线版本 v1.7.0,cthpc支持自动识别主机硬件架构,智能下发匹配当前架构的程序版本,无需人工区分架构、手动选择安装包,实现跨架构统一分发部署。
mkdir -p /home/bench
使用 cthpc 工具极速下发
cthpc apptainer makecache
cthpc apptainer install evalscope_v1.7.0 --dir /mnt/nvme0n1/apptainer/三、测试过程
3.1 测试脚本配置
将以下脚本保存至/home/bench/test.sh
#!/bin/bash
export URL="http://{IP}:{PORT}/v1/chat/completions" # 模型服务url
export MODEL_NAME=GLM-5 # 推理服务模型名
export PARALLEL="1" # 并发数
export NUMBER="5" # 总请求次数,一般可设置为并发数的整数倍
export INPUT_TOKENS=1024 # 输入token长度
export OUTPUT_TOKENS=1024 # 输出token长度
export TOKENIZER_PATH=/mnt/nvme1n1/model/GLM-5-w8a8 # 本地模型权重路径,用于读取chat_template文件
export EVALSCOPE_IMG=/mnt/nvme0n1/apptainer/evalscope_v1.7.0.sif
apptainer exec \
--bind $TOKENIZER_PATH:/path \
$EVALSCOPE_IMG \
evalscope perf \
--url $URL \
--model $MODEL_NAME \
--parallel "$PARALLEL" \
--number "$NUMBER" \
--api openai \
--dataset random \
--min-prompt-length "$INPUT_TOKENS" \
--max-prompt-length "$INPUT_TOKENS" \
--min-tokens "$OUTPUT_TOKENS" \
--max-tokens "$OUTPUT_TOKENS" \
--connect-timeout 6000 \
--read-timeout 6000 \
--tokenizer-path /path3.2 核心参数详解
| 参数名 | 描述 | 示例值 |
|---|---|---|
| --url | 模型服务API端点,需包含协议、IP、端口和路径 | http://127.0.0.1:11025/v1/chat/completions |
| --model | 模型标识(需与服务端返回的 model字段一致) | Qwen |
| --parallel | 并发数,模拟同时发起的请求量 | 1 |
| --number | 一般可设置为并发数的整数倍,默认1000 | 5 |
| --min-prompt-length | 最小输入prompt长度 | 1024 |
| --max-prompt-length | 最大输入prompt长度 | 1024 |
| --min-tokens | 单请求最小输出token长度 | 1024 |
| --max-tokens | 单请求最大输出token长度 | 1024 |
| --stream | 是否使用SSE流输出 需要启用以测量TTFT(Time to First Token)指标 | 默认为:True |
| --tokenizer-path | 分词器权重路径 用于计算输入和输出的token数量 通常与模型权重在同一目录 | /path |
min-prompt-length与max-prompt-length设置相同值时,即可指定输入token长度。
min-tokens与max-tokens设置相同值时,即可指定输出token长度。
测试输出结果示例如下:
测试输出结果分析可参考EvalScope官方文档。
四、附录
天翼云 HCC 产品文档:弹性高性能计算-产品文档-帮助中心 - 天翼云