DeepSeek-R1模型推理性能测试(EvalScope)

本文测试环境

系统 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

戳我访问EvalScope官方文档

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 即可查看。
在这里插入图片描述
实测结果
在这里插入图片描述