EvalScope模型推理压力测试
1. EvalScope简介
EvalScope是魔搭社区官方推出的模型评测与性能基准测试框架,内置多个常用测试基准和评测指标,如MMLU、CMMLU、C-Eval、GSM8K、ARC、HellaSwag、TruthfulQA、MATH和HumanEval等;支持多种类型的模型评测,包括LLM、多模态LLM、embedding模型和reranker模型。EvalScope还适用于多种评测场景,如端到端RAG评测、竞技场模式和模型推理性能压测等。此外,通过ms-swift训练框架的无缝集成,可一键发起评测,实现了模型训练到评测的全链路支持。

2. 环境安装
# 创建环境
conda create -n eval python==3.11.7 -y -y
# 安装evalscope,压力测试所需要的环境依赖
pip install evalscope[perf] -U
3. 指标说明
| 指标 | 说明 |
|---|---|
| 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的时间(秒) |
| 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的数量 |
4. 推理压测
evalscope的推理压力测试支持本地transformer推理和本地vLLM推理。
本文中使用的模型:DeepSeek-R1-Distill-Qwen-14B
硬件环境:4090 24GB * 2
本地transformer推理
运行脚本
CUDA_VISIBLE_DEVICES=0,1 evalscope perf \
--parallel 1 \
--model /root/models/DeepSeek-R1-Distill-Qwen-14B \
--attn-implementation flash_attention_2 \ # 提前安装flash-attention
--log-every-n-query 5 \
--connect-timeout 6000 \
--read-timeout 6000 \
--max-tokens 2048 \
--min-tokens 2048 \
--api local \
--dataset speed_benchmark \
--debug
测试结果
+---------------+-----------------+----------------+
| Prompt Tokens | Speed(tokens/s) | GPU Memory(GB) |
+---------------+-----------------+----------------+
| 2 | 15.59 | 28.06 |
| 6145 | 15.49 | 30.16 |
| 14337 | 15.28 | 33.48 |
+---------------+-----------------+----------------+
本地vLLM推理
运行脚本
CUDA_VISIBLE_DEVICES=0,1 evalscope perf \
--parallel 1 \
--model /root/models/DeepSeek-R1-Distill-Qwen-14B \
--log-every-n-query 5 \
--connect-timeout 6000 \
--read-timeout 6000 \
--max-tokens 2048 \
--min-tokens 2048 \
--api local_vllm \
--dataset speed_benchmark \
--port 8001
测试结果
+---------------+-----------------+----------------+
| Prompt Tokens | Speed(tokens/s) | GPU Memory(GB) |
+---------------+-----------------+----------------+
| 2 | 49.23 | 0.0 |
| 6145 | 46.28 | 0.0 |
| 14337 | 36.75 | 0.0 |
+---------------+-----------------+----------------+
GPU使用情况通过torch.cuda.max_memory_allocated函数获取,因此此处不展示GPU使用情况。
转:https://zhuanlan.zhihu.com/p/23926434400
浙公网安备 33010602011771号