本文测试环境
系统 | Ubuntu 22.04.4 LTS |
---|---|
Python版本 | Python 3.10 |
vCPU | 12核 |
内存 | 52G |
显卡 | NVIDIA-RTX-4090-D 24G * 1 |
API | vllm + 魔塔 okwinds/DeepSeek-R1-Distill-Qwen-14B-Int4-W4A16 |
1. 安装EvalScope相关依赖
pip install evalscope
# 安装额外依赖
pip install evalscope[perf] -U
2. 使用EvalScope进行推理测试
创建 per_test.py 测试脚本,然后运行。(运行脚本前,需要vllm serve 运行起来模型,模型名称填你需要测试的模型)
from evalscope.perf.main import run_perf_benchmark
task_cfg = {
"url": "http://127.0.0.1:8000/v1/chat/completions",
"parallel": 20,
"model": "DeepSeek-R1-Distill-Qwen-14B-Int4-W4A16",
"number": 300,
"api": "openai",
"dataset": "openqa",
"stream": True}
run_perf_benchmark(task_cfg)
参数名 | 说明 |
---|---|
url | 请求的URL地址 |
parallel | 并行请求的任务数量 |
model | 使用的模型名称 |
number | 请求数量 |
api | 使用的API服务 |
dataset | 数据集名称 |
stream | 是否启用流式处理 |
实测输出结果(参数:使用openqa通用问题数据集,并行请求的任务数量40,请求数量800)
输出结果说明
指标 | 说明 |
---|---|
Time taken for tests (s) | 测试所用的时间(秒) |
Number of concurrency | 并发数量 |
Total requests | 总请求数 |
Succeed requests | 成功的请求数 |
Failed requests | 失败的请求数 |
Throughput(average tokens/s) | 吞吐量(平均每秒处理的token数) |
Average QPS | 平均每秒请求数(Queries Per Second) |
Average latency (s) | 平均延迟时间(秒) |
Average time to first token (s) | 平均首次token时间(秒) |
Average time per output token (s) | 平均每个输出token的时间(秒) |
Average input tokens per request | 每个请求的平均输入token数 |
Average output tokens per request | 每个请求的平均输出token数 |
Average package latency (s) | 平均包延迟时间(秒) |
Average package per request | 每个请求的平均包数 |
Expected number of requests | 预期的请求数 |
Result DB path | 结果数据库路径 |
Percentile | 数据被分为100个相等部分,第n百分位表示n%的数据点在此值之下 |
TTFT (s) | Time to First Token,首次生成token的时间 |
TPOT (s) | Time Per Output Token,生成每个输出token的时间 |
Latency (s) | 延迟时间,指请求到响应之间的时间 |
Input tokens | 输入的token数量 |
Output tokens | 输出的token数量 |
Throughput (tokens/s) | 吞吐量,指每秒处理token的数量 |
详细输出结果json文件及日志将会输出在运行命令的当前目录下的 'outputs’处,文件按照日期时间命名
3. 测试结果可视化
使用wandb记录测试结果
请安装wandb:
pip install wandb
在启动时,添加以下参数,即可:
注意wandb-api-key是你自己的,名称自定义
--wandb-api-key 'wandb_api_key'
--name 'name_of_wandb_log'
戳我访问wandb官网,注册登录后点击右上角,进入User settings。
往下划找到API keys,新建自己的key,记得复制。
示例命令
evalscope perf \
--url 'http://127.0.0.1:8000/v1/chat/completions' \
--parallel 16 \
--model 'DeepSeek-R1-Distill-Qwen-14B-Int4-W4A16' \
--wandb-api-key '填你的key' \
--name '自定义名称' \
--number 320 \
--api openai \
--dataset openqa \
--stream
运行完成后记录会上传到wandb。点击左上角的project 即可查看。
实测结果