ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;">sglang.bench_serving基准测试工具,以及ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;">Locust和ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;">EvalScope两款成熟的性能测试工具,进行全面的性能评估。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0.3em 1em;color: rgb(255, 255, 255);background: rgb(0, 152, 116);border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 6px;">测试环境软件环境
| 软件 | 版本 | 备注 |
:~# 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-1818:10:16__init__.py:190] Automatically detected platform cuda.
batch size:16
latency:2.46s
output throughput:104.01token/s
(input+ output) throughput:6760.66token/s
batch size:1
latency:4.64s
output throughput:27.61token/s
(input+ output) throughput:55.22token/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-1818:10:55__init__.py:190] Automatically detected platform cuda.
batch size:16
latency:2.50s
output throughput:102.31token/s
(input+ output) throughput:6650.28token/s
batch size:10
latency:58.57s
output throughput:218.54token/s
(input+ output) throughput:437.07token/s官网地址:https://locust.io
Locust 是一款开源的性能和负载测试工具,主要用于测试 HTTP 和其他协议的性能。它的最大优势是,用户可以用简单的 Python 代码来定义测试,灵活且易于使用,并且提供Web UI界面,在测试过程中,可以实时查看吞吐量、响应时间和错误情况,或者将数据导出以供后续分析。
~# pip3 install locust
~# locust--version
locust2.32.9from/usr/local/lib/python3.10/dist-packages/locust (Python3.10.12)fromlocustimportHttpUser,task, between
importjson
classLLMUser(HttpUser):
wait_time = between(1,2) # 每个用户请求间隔1s
@task
defgenerate_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-1717:35:34,204] mgmt-ser-14-128/INFO/locust.main: Starting Locust2.32.9
[2025-02-1717:35:34,204] mgmt-ser-14-128/INFO/locust.main: Starting web interfaceathttp://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
fromevalscope.perf.mainimportrun_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 。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |