微信扫码
添加专属顾问
我要投稿
深入解析AI推理集群性能优化,揭秘DeepSeek-r1在大规模并发下的表现。核心内容:1. DeepSeek-r1推理集群在实际使用中遇到的性能挑战2. 选择的LLM性能压测工具及其特点3. 测试环境配置及软件环境设置
继上次结合K8s、SGLang、LWS 等技术栈,完成分布式 DeepSeek-r1 推理集群的部署后,经过几天的实际使用,发现当并发数达到一定阈值时,性能出现下降。为进一步评估和优化集群性能,现对已部署的 DeepSeek-r1 推理集群进行深入的性能压测。
选型LLM 性能压测工具
经过调研,选择 推理引擎 SGLang 自带的 sglang.bench_serving
基准测试工具,以及 Locust
和 EvalScope
两款成熟的性能测试工具,进行全面的性能评估。
软件环境
软件 | 版本 | 备注 |
:~# python3 -m sglang.bench_one_batch_server --model None --base-url http://127.0.0.1:8000 --batch-size 1 --input-len 128 --output-len 128
INFO 02-18 18:10:16 __init__.py:190] Automatically detected platform cuda.
batch size: 16
latency: 2.46 s
output throughput: 104.01 token/s
(input + output) throughput: 6760.66 token/s
batch size: 1
latency: 4.64 s
output throughput: 27.61 token/s
(input + output) throughput: 55.22 token/s
:~# python3 -m sglang.bench_one_batch_server --model None --base-url http://127.0.0.1:8000 --batch-size 10 --input-len 1280 --output-len 1280
INFO 02-18 18:10:55 __init__.py:190] Automatically detected platform cuda.
batch size: 16
latency: 2.50 s
output throughput: 102.31 token/s
(input + output) throughput: 6650.28 token/s
batch size: 10
latency: 58.57 s
output throughput: 218.54 token/s
(input + output) throughput: 437.07 token/s
官网地址:https://locust.io
Locust 是一款开源的性能和负载测试工具,主要用于测试 HTTP 和其他协议的性能。它的最大优势是,用户可以用简单的 Python 代码来定义测试,灵活且易于使用,并且提供Web UI界面,在测试过程中,可以实时查看吞吐量、响应时间和错误情况,或者将数据导出以供后续分析。
~# pip3 install locust
~# locust --version
locust 2.32.9 from /usr/local/lib/python3.10/dist-packages/locust (Python 3.10.12)
from locust import HttpUser,task, between
import json
class LLMUser(HttpUser):
wait_time = between(1, 2) # 每个用户请求间隔1s
@task
def generate_text(self):
headers = {"Content-Type":"application/json"}
data = {
"model": "deepseek-r1",
"text": "你好,请介绍一下自己",
"stream": False
}
self.client.post("/generate", headers=headers, json=data, timeout=60)
# locust -f locustfile.py --host http://10.0.x.x:32169
# 日志如下:
[2025-02-17 17:35:34,204] mgmt-ser-14-128/INFO/locust.main: Starting Locust 2.32.9
[2025-02-17 17:35:34,204] mgmt-ser-14-128/INFO/locust.main: Starting web interface at http://0.0.0.0:8089
配置模拟的总用户数和每秒需创建的用户(默认每秒1个)。
先看下测试结论,仅供参考~,目前暂未进行任何优化措施。
查看压测过程及报告
官网:https://evalscope.readthedocs.io
EvalScope是魔搭社区官方推出的模型评测与性能基准测试框架,内置多个常用测试基准和评测指标,如MMLU、CMMLU、C-Eval、GSM8K、ARC、HellaSwag、TruthfulQA、MATH和HumanEval等;支持多种类型的模型评测,包括LLM、多模态LLM、embedding模型和reranker模型。EvalScope还适用于多种评测场景,如端到端RAG评测、竞技场模式和模型推理性能压测等。
~# pip3 install evalscope -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 安装额外依赖
~# pip install evalscope[perf] -U -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
#!/usr/bin/env bash
evalscope perf \
--parallel 1 \
--url http://10.233.57.205:8000/v1/completions \
--model deepseek-r1 \
--log-every-n-query 5 \
--connect-timeout 6000 \
--read-timeout 6000 \
--max-tokens 2048 \
--min-tokens 2048 \
--api openai \
--dataset speed_benchmark \
--debug
注:
speed_benchmark: 测试[1, 6144, 14336, 30720]长度的prompt,固定输出2048个token。
并发数:1并发数:10
#!/usr/bin/env python
from evalscope.perf.main import run_perf_benchmark
task_cfg = {"url": "http://10.233.57.205:8000/v1/chat/completions",
"parallel": 1,
"model": "deepseek-r1",
"number": 15,
"api": "openai",
"dataset": "openqa",
"stream": True}
run_perf_benchmark(task_cfg)
并发数:1,请求数:15并发数:1 ,请求数:100
并发数:4 ,请求数:20
指标 | 说明 |
Time taken for tests (s) | |
Number of concurrency | |
Total requests | |
Succeed requests | |
Failed requests | |
Throughput(average tokens/s) | |
Average QPS | |
Average latency (s) | |
Average time to first token (s) | |
Average time per output token (s) | |
Average input tokens per request | |
Average output tokens per request | |
Average package latency (s) | |
Average package per request | |
Expected number of requests | |
Result DB path | |
Percentile | |
TTFT (s) | |
TPOT (s) | |
Latency (s) | |
Input tokens | |
Output tokens | |
Throughput (tokens/s) |
通常把评估大模型服务的指标分为两类。一类是和系统级别的指标,包括input token per sec,output token per sec;另一类是请求级别的指标,TPOT,TTFT。
系统级别指标用于衡量整个大模型服务的整体性能和吞吐能力,通常是从全局视角评估系统的效率。
InputToken Per Sec(输入 Token 吞吐量):系统每秒能够处理的输入 token 数量。
OutputToken Per Sec(输出 Token 吞吐量) :系统每秒能够生成的输出 token 数量。大家通常说的 TPS(Token Per Sec)一般都是指 Output TPS。
Concurrency(并发数) :系统在同一时间正在处理的请求数量。
请求级别指标用于衡量单个请求的性能和响应效率,通常是从用户视角评估系统的 SLA。
TTFT (Time to First Token,首 Token 延迟) 从发送请求到系统生成第一个输出 token 的时间。衡量系统对单个请求的响应速度,TTFT 越低,用户体验越好。
TPOT (Time Per OutputToken,单 Token 生成时间) :系统生成每个输出 token 所需的时间。TPOT 越低,模型生成文本的速度越快。 一般 TPOT 需要在 50ms 以内,否则会跟不上人眼的阅读速度,影响阅读体验。
吞吐量直接反映成本。同样的时间能吐的字越多,单个 token 的成本越低。 TPOT 和 TTFT 直接反映服务质量(SLA),更低的 TTFT 和 TPOT 会带来更好的体验。更低的价格和更高的服务质量,二者常常不可得兼。他们之间的桥梁是Concurrency。max-concurrency可以近似看成 decode 阶段的 batch size ,一个过大的 max-concurrency 会提升 GPU 利用率带来更高吞吐更低的成本,但是很多 request 打包在一起导致每个 request 都很高的 TPOT 。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-12
Mac Studio 首发实测:10 万块的顶配 Mac,能跑满血版 DeepSeek 吗?
2025-03-10
【一文看懂】什么是端侧算力?
2025-03-10
Tauri 2.0 —— 或许是做 AI 应用的最佳选择
2025-03-10
一文读懂:AI时代为什么需要DPU?
2025-03-09
大力出奇迹,苹果发售 10 万块的 Mac Studio M3 Ultra 能干什么?
2025-03-08
Manus 吹散了人与 Agent 之间的迷雾|直播测试 8 小时,我对 Manus 真实实测感想
2025-03-07
英伟达主流GPU服务器以及中国可售型号清单
2025-03-07
英伟达4090惊现48GB版本,未来还有96GB版本
2024-03-30
2024-05-09
2024-07-07
2024-07-23
2024-06-23
2024-07-01
2024-06-24
2024-10-20
2024-06-08
2025-02-12