大语言模型推理引擎性能对比分析:vLLM与sglang
推理引擎基准测试对比报告
本报告对比了三种推理引擎(vLLM V0、vLLM V1 和 sglang V0.4.9)在 Llama-3.1-8B-Instruct 模型下的性能表现。所有测试均生成了 634,000 tokens,确保数据的横向可比性。
测试环境
- 模型: Llama-3.1-8B-Instruct
- 硬件: 1 NVIDIA H100 80GB GPU
- 命令:
evalscope perf --parallel 5 10 20 30 40 50 60 70 80 90 100 --number 5 10 20 30 40 50 60 70 80 90 100 --model meta-llama/Llama-3.1-8B-Instruct --url <URL> --api openai --dataset longalpaca --max-tokens 2000 --min-tokens 2000 --max-prompt-length 10000 --min-prompt-length 5000
- vLLM V0 and V1 versions: v0.9.0
- sglang version: v0.4.9
一、基本性能对比
推理引擎 | 总耗时 (秒) | 平均输出速率 (tokens/sec) | 性能提升(基于 vLLM V0 比较) |
---|---|---|---|
vLLM V0 | 268.79 | 2358.71 | 基准 |
vLLM V1 | 236.00 | 2686.49 | +14%(速率提升) |
sglang V0.4.9 | 236.95 | 2675.66 | +13%(速率提升) |
- vLLM V1 和 sglang V0.4.9 表现接近,均显著优于 vLLM V0。
- vLLM V1 略快于 sglang,但差距较小。
二、详细性能指标对比
1. 平均延迟 (Avg Latency)
并发数 | vLLM V0 Avg Lat(s) | vLLM V1 Avg Lat(s) | sglang Avg Lat(s) |
---|---|---|---|
5 | 16.98 | 15.75 | 15.00 |
50 | 26.18 | 22.80 | 23.38 |
100 | 26.16 | 23.59 | 23.29 |
- 低并发:sglang 延迟最低,响应速度最快。
- 高并发:vLLM V1 延迟稍低,表现略优。
2. 平均生成速率 (Avg Gen. toks/sec)
并发数 | vLLM V0 Gen. toks/s | vLLM V1 Gen. toks/s | sglang Gen. toks/s |
---|---|---|---|
5 | 588.62 | 634.87 | 666.54 |
50 | 2742.96 | 3141.16 | 3077.68 |
100 | 2744.10 | 3036.62 | 3088.08 |
- 高并发:vLLM V1 和 sglang 均突破 3000 tokens/s,性能远超 vLLM V0。
3. 首 Token 响应时间 (TTFT)
并发数 | vLLM V0 TTFT(s) | vLLM V1 TTFT(s) | sglang TTFT(s) |
---|---|---|---|
5 | 0.318 | 0.276 | 0.136 |
50 | 0.357 | 0.348 | 0.258 |
100 | 0.415 | 0.373 | 0.254 |
- sglang 在所有并发场景下的 TTFT 表现最佳,响应速度显著更快。
4. 吞吐量(RPS & 并发能力)
推理引擎 | 最高吞吐 (RPS) | 最优并发数 | 推荐并发范围 |
---|---|---|---|
vLLM V0 | 1.37 req/sec | 50 | ~50 |
vLLM V1 | 1.57 req/sec | 40 | ~40 |
sglang | 1.55 req/sec | 60 | ~60 |
- vLLM V1 和 sglang 在吞吐量上领先,推荐分别在并发 40 和 60 时使用。
三、最佳性能配置
推理引擎 | 最低延迟 (s) | 最优并发数 | 生成速率 (tokens/sec) |
---|---|---|---|
vLLM V0 | 16.98 | 5 | 588.62 |
vLLM V1 | 15.75 | 5 | 634.87 |
sglang | 15.00 | 5 | 666.54 |
- 在低延迟场景下,sglang 表现最佳。
四、总结与建议
-
性能提升:
- vLLM V1 和 sglang 在生成速率和延迟上显著优于 vLLM V0,整体性能提升约 14%。
- 高并发下,vLLM V1 在延迟方面稍优,而 sglang 在 TTFT 和吞吐量上更具优势。
-
应用场景:
- 低延迟场景:推荐选择 sglang,其短延迟和快速响应尤为适合。
- 高吞吐场景:vLLM V1 和 sglang 均有出色表现,可根据具体需求选择。
-
推荐配置:
- 对于并发需求较高的场景,推荐将并发数设置为:
- vLLM V1:40 左右
- sglang:60 左右
- 对于并发需求较高的场景,推荐将并发数设置为:
-
优化方向:
- 进一步优化测试硬件配置,验证三者在更高负载下的性能表现。
- 针对特定任务和模型场景,探索不同引擎的适配性。
备注:本报告基于 Llama-3.1-8B-Instruct 模型的性能测试,其他模型的表现需独立测试验证。
五、原始基准测试数据
vLLM V0 v0.9.0
Basic Information:
┌───────────────────────┬──────────────────────────────────┐
│ Model │ Llama-3.1-8B-Instruct │
│ Total Generated │ 634,000.0 tokens │
│ Total Test Time │ 268.79 seconds │
│ Avg Output Rate │ 2358.71 tokens/sec │
└───────────────────────┴──────────────────────────────────┘
Detailed Performance Metrics
┏━━━━━━┳━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┓
┃ ┃ ┃ Avg ┃ P99 ┃ Gen. ┃ Avg ┃ P99 ┃ Avg ┃ P99 ┃ Success┃
┃Conc. ┃ RPS ┃ Lat.(s) ┃ Lat.(s) ┃ toks/s ┃ TTFT(s) ┃ TTFT(s) ┃ TPOT(s) ┃ TPOT(s) ┃ Rate┃
┡━━━━━━╇━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━┩
│ 5 │ 0.29 │ 16.981 │ 16.988 │ 588.62 │ 0.318 │ 0.375 │ 0.008 │ 0.008 │ 100.0%│
│ 10 │ 0.53 │ 18.707 │ 18.719 │ 1068.23 │ 0.306 │ 0.332 │ 0.009 │ 0.009 │ 100.0%│
│ 20 │ 0.92 │ 21.738 │ 21.784 │ 1835.82 │ 0.401 │ 0.589 │ 0.011 │ 0.011 │ 100.0%│
│ 30 │ 1.19 │ 25.037 │ 25.119 │ 2388.07 │ 0.391 │ 0.643 │ 0.012 │ 0.012 │ 100.0%│
│ 40 │ 1.32 │ 27.254 │ 27.355 │ 2631.36 │ 0.434 │ 0.621 │ 0.013 │ 0.013 │ 100.0%│
│ 50 │ 1.37 │ 26.176 │ 26.241 │ 2742.96 │ 0.357 │ 0.426 │ 0.013 │ 0.013 │ 100.0%│
│ 60 │ 1.34 │ 26.708 │ 26.784 │ 2687.64 │ 0.393 │ 0.454 │ 0.013 │ 0.013 │ 100.0%│
│ 70 │ 1.37 │ 26.148 │ 26.223 │ 2744.60 │ 0.405 │ 0.478 │ 0.013 │ 0.013 │ 100.0%│
│ 80 │ 1.35 │ 26.531 │ 26.604 │ 2705.46 │ 0.425 │ 0.502 │ 0.013 │ 0.013 │ 100.0%│
│ 90 │ 1.35 │ 26.600 │ 26.672 │ 2698.57 │ 0.518 │ 0.582 │ 0.013 │ 0.013 │ 100.0%│
│ 100 │ 1.37 │ 26.157 │ 26.234 │ 2744.10 │ 0.415 │ 0.488 │ 0.013 │ 0.013 │ 100.0%│
└──────┴──────┴──────────┴──────────┴─────────┴──────────┴─────────┴──────────┴─────────┴──────────┘
Best Performance Configuration
Highest RPS Concurrency 50 (1.37 req/sec)
Lowest Latency Concurrency 5 (16.981 seconds)
Performance Recommendations:
• Optimal concurrency range is around 50
vLLM V1 v0.9.0
Basic Information:
┌───────────────────────┬──────────────────────────────────┐
│ Model │ Llama-3.1-8B-Instruct │
│ Total Generated │ 634,000.0 tokens │
│ Total Test Time │ 236.00 seconds │
│ Avg Output Rate │ 2686.49 tokens/sec │
└───────────────────────┴──────────────────────────────────┘
Detailed Performance Metrics
┏━━━━━━┳━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┓
┃ ┃ ┃ Avg ┃ P99 ┃ Gen. ┃ Avg ┃ P99 ┃ Avg ┃ P99 ┃ Success┃
┃Conc. ┃ RPS ┃ Lat.(s) ┃ Lat.(s) ┃ toks/s ┃ TTFT(s) ┃ TTFT(s) ┃ TPOT(s) ┃ TPOT(s) ┃ Rate┃
┡━━━━━━╇━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━┩
│ 5 │ 0.32 │ 15.747 │ 15.752 │ 634.87 │ 0.276 │ 0.292 │ 0.008 │ 0.008 │ 100.0%│
│ 10 │ 0.58 │ 17.082 │ 17.096 │ 1169.81 │ 0.181 │ 0.206 │ 0.009 │ 0.009 │ 100.0%│
│ 20 │ 1.03 │ 19.303 │ 19.342 │ 2067.71 │ 0.366 │ 0.474 │ 0.009 │ 0.009 │ 100.0%│
│ 30 │ 1.36 │ 21.902 │ 22.004 │ 2726.02 │ 0.459 │ 0.673 │ 0.011 │ 0.011 │ 100.0%│
│ 40 │ 1.57 │ 22.797 │ 22.898 │ 3143.68 │ 0.397 │ 0.549 │ 0.011 │ 0.011 │ 100.0%│
│ 50 │ 1.57 │ 22.803 │ 22.911 │ 3141.16 │ 0.348 │ 0.442 │ 0.011 │ 0.011 │ 100.0%│
│ 60 │ 1.57 │ 22.872 │ 22.979 │ 3132.07 │ 0.375 │ 0.459 │ 0.011 │ 0.011 │ 100.0%│
│ 70 │ 1.56 │ 22.962 │ 23.070 │ 3120.01 │ 0.354 │ 0.437 │ 0.011 │ 0.011 │ 100.0%│
│ 80 │ 1.55 │ 23.071 │ 23.185 │ 3104.36 │ 0.384 │ 0.478 │ 0.011 │ 0.011 │ 100.0%│
│ 90 │ 1.57 │ 22.866 │ 22.984 │ 3130.58 │ 0.434 │ 0.524 │ 0.011 │ 0.011 │ 100.0%│
│ 100 │ 1.52 │ 23.590 │ 23.702 │ 3036.62 │ 0.373 │ 0.466 │ 0.012 │ 0.012 │ 100.0%│
└──────┴──────┴──────────┴──────────┴─────────┴──────────┴─────────┴──────────┴─────────┴──────────┘
Best Performance Configuration
Highest RPS Concurrency 40 (1.57 req/sec)
Lowest Latency Concurrency 5 (15.747 seconds)
Performance Recommendations:
• Optimal concurrency range is around 40
sglang V0.4.9
Basic Information:
┌───────────────────────┬──────────────────────────────────┐
│ Model │ Llama-3.1-8B-Instruct │
│ Total Generated │ 634,000.0 tokens │
│ Total Test Time │ 236.95 seconds │
│ Avg Output Rate │ 2675.66 tokens/sec │
└───────────────────────┴──────────────────────────────────┘
Detailed Performance Metrics
┏━━━━━━┳━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┓
┃ ┃ ┃ Avg ┃ P99 ┃ Gen. ┃ Avg ┃ P99 ┃ Avg ┃ P99 ┃ Success┃
┃Conc. ┃ RPS ┃ Lat.(s) ┃ Lat.(s) ┃ toks/s ┃ TTFT(s) ┃ TTFT(s) ┃ TPOT(s) ┃ TPOT(s) ┃ Rate┃
┡━━━━━━╇━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━┩
│ 5 │ 0.33 │ 15.000 │ 15.003 │ 666.54 │ 0.136 │ 0.143 │ 0.007 │ 0.007 │ 100.0%│
│ 10 │ 0.59 │ 16.829 │ 16.833 │ 1188.16 │ 0.154 │ 0.164 │ 0.008 │ 0.008 │ 100.0%│
│ 20 │ 1.03 │ 19.443 │ 19.450 │ 2056.25 │ 0.213 │ 0.236 │ 0.010 │ 0.010 │ 100.0%│
│ 30 │ 1.36 │ 22.031 │ 22.042 │ 2721.65 │ 0.236 │ 0.273 │ 0.011 │ 0.011 │ 100.0%│
│ 40 │ 1.54 │ 23.429 │ 23.442 │ 3070.85 │ 0.303 │ 0.506 │ 0.012 │ 0.012 │ 100.0%│
│ 50 │ 1.54 │ 23.375 │ 23.386 │ 3077.68 │ 0.258 │ 0.322 │ 0.012 │ 0.012 │ 100.0%│
│ 60 │ 1.55 │ 23.256 │ 23.267 │ 3093.28 │ 0.263 │ 0.328 │ 0.011 │ 0.011 │ 100.0%│
│ 70 │ 1.53 │ 23.439 │ 23.450 │ 3068.73 │ 0.273 │ 0.404 │ 0.012 │ 0.012 │ 100.0%│
│ 80 │ 1.53 │ 23.496 │ 23.510 │ 3062.05 │ 0.305 │ 0.522 │ 0.012 │ 0.012 │ 100.0%│
│ 90 │ 1.55 │ 23.186 │ 23.201 │ 3102.28 │ 0.266 │ 0.325 │ 0.011 │ 0.011 │ 100.0%│
│ 100 │ 1.54 │ 23.293 │ 23.307 │ 3088.08 │ 0.254 │ 0.302 │ 0.011 │ 0.012 │ 100.0%│
└──────┴──────┴──────────┴──────────┴─────────┴──────────┴─────────┴──────────┴─────────┴──────────┘
Best Performance Configuration
Highest RPS Concurrency 60 (1.55 req/sec)
Lowest Latency Concurrency 5 (15.000 seconds)
Performance Recommendations:
• Optimal concurrency range is around 60