前言
经过前三篇文章的铺垫:
生产环境H200部署DeepSeek 671B 满血版全流程实战(一):系统初始化
生产环境H200部署DeepSeek 671B 满血版全流程实战(二):vLLM 安装详解
生产环境H200部署DeepSeek 671B 满血版全流程实战(三):SGLang 安装详解
相信大家已经成功在 H200 服务器上搭建起了 DeepSeek 671B 的运行环境。但一个新的问题也随之而来:vLLM和SGLang这两款推理引擎在实际性能表现上究竟有何差异?如何根据具体的业务需求在它们之间做出最佳选择?本篇我们将使用 EvalScope 基准测试工具, 对 vLLM 和 SGLang 进行全方位、 多角度的性能压测。
一、EvalScope
1.1 简介
EvalScope是魔搭社区官方推出的模型评测与性能基准测试框架,内置多个常用测试基准和评测指标,如MMLU、CMMLU、C-Eval、GSM8K、ARC、HellaSwag、TruthfulQA、MATH和HumanEval等;支持多种类型的模型评测,包括LLM、多模态LLM、embedding模型和reranker模型。EvalScope还适用于多种评测场景,如端到端RAG评测、竞技场模式和模型推理性能压测等。
1.2 安装EvalScope
pip install --upgrade pip
pip install 'evalscope[app,perf]' -U
二、压力测试
在本次性能对比测试中,我们使用了相同的硬件环境(H200 服务器,8 卡 GPU)、相同的模型(DeepSeek 671B)和相同的压力测试参数,分别对 vLLM 和 SGLang 进行了压测。
2.1 硬件系统环境
- 硬件配置
| 服务器 | 数量 | CPU | 内存(TB) | 系统版本 |
|---|---|---|---|---|
| NVIDIA H200 141GB * 8 | 1 | INTEL 8568Y+ *2 | 3 | Ubuntu 22.04.5 LTS |
- 系统环境
| 软件名称 | 版本 | 备注 |
|---|---|---|
| NVIDIA Driver | 550.54.15 | GPU驱动 |
| NVIDIA-Fabric Manager | 550.54.15 | NVSwitch互联 |
| CUDA | 12.4 | Cuda |
| NCCL | 2.21.5 | GPU多卡通信 |
| vLLM | 0.7.3 | LLM推理引擎 |
| SGLang | v0.4.3.post2 | LLM推理引擎 |
2.2 vLLM&SGLang服务启动命令
#vllm
conda activate vllm
vllm serve /data/DeepSeek-R1 --tensor-parallel-size 8 --max-model-len 16384 --port 8102 --trust-remote-code --served-model-name deepseek-r1 --enable-chunked-prefill --max-num-batched-tokens 2048 --gpu-memory-utilization 0.9
#sglang
conda activate sglang
python -m sglang.launch_server --model /data/DeepSeek-R1 --trust-remote-code --tp 8 --mem-fraction-static 0.9 --host 0.0.0.0 --port 8102
2.3 压测命令
vLLM和SGLang的压测统一使用如下压测命令,并发数覆盖128、256、512三种级别:
evalscope perf --parallel 32 --url http://127.0.0.1:8102/v1/chat/completions --model deepseek-r1 --log-every-n-query 10 --connect-timeout 600 --read-timeout 600 --api openai --prompt '写一个科幻小说,不少于2000字' -n 2048
参数详解:
--parallel 32建议初始并发设为GPU卡数4(此处为8卡4=32) --model deepseek-r1需与--served-model-name参数一致 --log-every-n-query 10每处理10次请求打印日志 --connect-timeout 600连接超时600秒 --read-timeout 600响应超时600秒 --api openai接口协议类型 --prompt '写一个科幻小说,不少于2000字'测试用提示词 -n 2048总请求数
2.4 vLLM&SGLang压测关键性能数据
三、压测性能分析结论
3.1 吞吐量与并发效率优势
vLLM在高并发场景下展现出显著优势:
- 在 所有并发级别(128/256/512)下,vLLM的吞吐量均高于SGLang
- 256并发时,vLLM吞吐量达到 2373.069 tok/s,比SGLang(1661.768 tok/s)高42.7%
- 512并发时,vLLM仍保持 2363.209 tok/s,SGLang虽提升至 2247.848 tok/s,但仍有 5.2%差距,延迟激增(327s vs 246s)
- 核心机制:得益于PagedAttention的动态内存管理,vLLM能更高效处理突发请求队列,避免显存碎片化导致的性能衰减
3.2 响应延迟与稳定性差异
vLLM在关键延迟指标上全面领先:
- 平均延迟:在256并发时,vLLM延迟为 166.327秒,SGLang为 265.613秒,vLLM 低37.4%
- 首Token时间:vLLM在512并发时首Token时间为 246.39秒,SGLang为 327.487秒,vLLM 快24.7%
- 每Token生成时间:vLLM在所有并发级别下均更快(如512并发时 0.156秒 vs. 0.18秒)
四、系统监控
- vLLM
- SGLang
五、 vLLM&SGLang,压测详细数据
5.1 压测指标说明
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的数量
5.2 测试数据截图
- vLLM
- SGLang
总结
通过本篇 EvalScope 性能大比拼, 我们对 vLLM 和 SGLang 这两大主流推理引擎在 H200 服务器上部署 DeepSeek 671B 满血版的性能进行了深入对比。 希望本系列教程能够帮助大家在 H200 服务器上成功部署 DeepSeek 671B 模型,并根据自身需求选择合适的推理框架,充分释放 H200 的澎湃算力,打造高性能的 AI 应用! 性能优化之路永无止境,期待大家在实际应用中不断探索,创造更多 AI 奇迹!