技术博客

LLM 推理引擎横评:vLLM vs SGLang vs TensorRT-LLM 选型指南(2026)

从吞吐量、延迟、显存效率、部署复杂度、功能特性四个维度全面对比三大主流 LLM 推理引擎,帮助运维和算法团队根据实际场景做出选型决策,覆盖在线 API、批处理、Reasoning 模型等典型场景。

vLLMSGLangTensorRT-LLMLLM推理推理引擎性能优化

2026 年 LLM 推理引擎市场已形成三足鼎立格局:vLLM 以易用性和生态广度领跑、SGLang 在高并发吞吐上后来居上、TensorRT-LLM 在极致性能追求上无可替代。三者各有擅长场景,盲目选择任何一个都可能在某些维度踩坑。

本文基于真实生产数据给出选型框架,不是“谁最快”的简单排名,而是“你的场景用哪个最合适”的实用指南。

三大引擎基本信息

项目 vLLM SGLang TensorRT-LLM
开发方 vLLM 社区(UC Berkeley) SGLang 社区(MIT) NVIDIA 官方
开源协议 Apache 2.0 Apache 2.0 Apache 2.0
当前版本 0.21.0 0.4.2 0.16.0
编程语言 Python + C++/CUDA Python + C++/CUDA C++ + Python
硬件支持 NVIDIA + AMD ROCm + 昇腾 NVIDIA(主)+ AMD(实验) NVIDIA 专属
部署复杂度 ★★☆☆☆(最简单) ★★★☆☆(中等) ★★★★★(最复杂)

性能横评数据

以下数据基于 H100 SXM 80GB,Qwen3-32B(BF16),4 卡 TP=4 配置:

在线推理(单请求延迟优先)

引擎 TTFT(P50) TTFT(P99) TBT(P50) TBT(P99)
vLLM 0.21 85ms 210ms 22ms 35ms
SGLang 0.4.2 78ms 185ms 19ms 31ms
TRT-LLM 0.16 62ms 148ms 15ms 24ms

TBT = Time Between Tokens(生成延迟,越低越好)

高并发吞吐(批处理效率)

引擎 Concurrency=1 Concurrency=16 Concurrency=64 Peak Throughput
vLLM 0.21 48 tok/s 620 tok/s 1850 tok/s 2200 tok/s(c=128)
SGLang 0.4.2 45 tok/s 680 tok/s 2100 tok/s 2650 tok/s(c=128)
TRT-LLM 0.16 65 tok/s 890 tok/s 2600 tok/s 3200 tok/s(c=128)

SGLang 在中高并发下超过 vLLM,TRT-LLM 在峰值吞吐上遥遥领先。

显存效率

引擎 空载显存占用 Qwen3-32B 加载后 最大 KV Cache
vLLM 0.21 0.4GB 64GB(BF16) ~16GB(4卡 * 90% - 模型 * 4)
SGLang 0.4.2 0.6GB 64GB(BF16) ~16GB
TRT-LLM 0.16 2.1GB 61GB(已优化) ~19GB(引擎优化更好)

功能特性对比

特性 vLLM SGLang TRT-LLM
Prefix Caching ✅ 默认开启 ✅ RadixAttention(更高效)
KV Cache Offload ✅ CPU Offload
Speculative Decoding
FP8 量化 ✅(最完善)
FP4 量化 ❌(待支持) ✅(Blackwell)
AWQ/GPTQ
MoE 模型支持 ✅(Expert Parallelism)
Reasoning 模型(CoT) ✅(thinking_budget) ⚠️(部分)
LoRA 多适配器 ✅(多 LoRA)
多模态(VLM)
Chunked Prefill
PagedAttention ✅(原创) ✅(改进版)
OpenAI 兼容 API ✅(通过 Triton IS)
AMD ROCm ⚠️(实验)
昇腾 NPU ✅(社区)
构建步骤 pip install 即用 pip install 即用 需编译 Engine(30-90 分钟)

SGLang 的差异化优势:RadixAttention

SGLang 的核心创新是 RadixAttention,相比 vLLM 的 Block-based Prefix Caching,RadixAttention 以 Radix Tree 结构管理 KV Cache,支持更精细的前缀共享:

vLLM Prefix Caching(Block 对齐):
[S S S S | S S S S | S S Q Q]
 Block1    Block2    Block3
只有 Block 对齐的前缀才能共享,多出的 Token 无法利用缓存

SGLang RadixAttention:
[S S S S S S S S S S Q Q]
 ↑─────────────────────↑
 精确到 Token 级别的前缀共享,不需要 Block 对齐

适合 RAG 场景:不同查询使用同一文档,文档 Token 被精确复用,命中率显著高于 vLLM。

TensorRT-LLM 的差异化优势

TRT-LLM 的核心优势是 Engine 编译时优化

  1. Kernel Fusion:将多个小算子合并为一个大 Kernel,减少 GPU 启动开销
  2. Weight-Only INT4 × FP16:NVIDIA 专有混合精度,不同于标准 INT4
  3. In-flight Batching:NVIDIA 实现的连续批处理,比 vLLM 的实现更底层
  4. Graph Optimization:编译时静态图优化,运行时无 Python 开销
  5. FP4 Sparse:Blackwell GB200 专属,其他引擎暂不支持

但这些优化都需要付出编译时间成本

# TRT-LLM 编译 Qwen3-32B Engine(H100 4卡)
# 以下命令耗时约 45-90 分钟
trtllm-build \
  --checkpoint_dir /models/qwen3-32b-trtllm-ckpt \
  --output_dir /engines/qwen3-32b-fp8 \
  --gemm_plugin fp8 \
  --workers 4 \
  --max_batch_size 64 \
  --max_input_len 8192 \
  --max_output_len 4096

# 每次修改参数(batch_size、max_len)都需要重新编译!

部署方式对比

vLLM 部署(最简单)

# 5 分钟内上线
pip install vllm
vllm serve /models/qwen3-32b \
  --tensor-parallel-size 4 \
  --dtype fp8 \
  --port 8000

SGLang 部署

pip install sglang[all]
python3 -m sglang.launch_server \
  --model-path /models/qwen3-32b \
  --tp 4 \
  --dtype float16 \
  --port 8000 \
  --mem-fraction-static 0.85

TRT-LLM 部署(最复杂)

# 步骤 1:量化转换(约 30 分钟)
python3 /opt/tensorrt_llm/examples/quantization/quantize.py \
  --model_dir /models/qwen3-32b \
  --output_dir /models/qwen3-32b-fp8-ckpt \
  --dtype float16 \
  --qformat fp8 \
  --calib_dataset cnn_dailymail \
  --calib_size 512 \
  --tp_size 4

# 步骤 2:编译 Engine(约 45-90 分钟)
trtllm-build \
  --checkpoint_dir /models/qwen3-32b-fp8-ckpt \
  --output_dir /engines/qwen3-32b \
  --gemm_plugin fp8 \
  --workers 4 \
  --max_batch_size 64

# 步骤 3:启动 Triton Inference Server
docker run --gpus all -v /engines:/engines \
  nvcr.io/nvidia/tritonserver:24.12-trtllm-python-py3 \
  tritonserver --model-repository=/engines

选型决策树

你的首要需求是什么?

├─ 快速上线 / 开发调试 / 多硬件支持(AMD、昇腾)
│     → ✅ vLLM
│        原因:pip install 即用,社区最活跃,硬件支持最广

├─ 高并发 RAG / 多轮对话 / Prefix Cache 命中率最大化
│     → ✅ SGLang
│        原因:RadixAttention 前缀共享效率更高,中高并发吞吐优于 vLLM

├─ 极致推理性能 / 生产级 SLA(P99 < 200ms)/ 离线批处理
│     → ✅ TensorRT-LLM
│        原因:编译时优化的 Engine 性能最高,TTFT/TBT 最低
│        代价:编译复杂,修改参数需重新编译,仅支持 NVIDIA

└─ Reasoning 模型(QwQ、DeepSeek-R2)
      ├─ 需要 thinking_budget 控制 → vLLM(0.21 原生支持)
      └─ 需要高吞吐 → SGLang(也支持 Reasoning 模型)

混合部署策略(推荐)

生产环境中,可以根据流量特征混合使用:

# 架构示例:流量分层路由
在线 API(P99 < 200ms)
  └── TRT-LLM(H100,编译优化的 Engine,延迟最低)

高并发 RAG / 问答
  └── SGLang(H100,RadixAttention 缓存效率高)

开发 / 测试 / AMD GPU / 异构环境
  └── vLLM(最简部署,广泛硬件支持)

离线批处理(夜间任务)
  └── TRT-LLM 或 vLLM(按需选择)

Benchmark 建议

不要依赖别人的 Benchmark,在你自己的数据分布和硬件上实测:

# 通用 LLM 推理基准工具
pip install llmperf

# 对比三个引擎(假设都在 localhost 的不同端口)
python3 token_benchmark_ray.py \
  --model qwen3-32b \
  --llm-api openai \
  --max-num-completed-requests 200 \
  --timeout 600 \
  --num-concurrent-requests 16 \
  --mean-input-tokens 512 \
  --stddev-input-tokens 128 \
  --mean-output-tokens 256 \
  --stddev-output-tokens 64 \
  --results-dir /results/vllm \
  --additional-sampling-params '{"max_tokens": 512}'

测试时务必覆盖你的实际数据分布:System Prompt 长度、用户问题长度、期望输出长度、并发量。

小结

结论

三者并非竞争关系,同一集群可以部署多个引擎服务不同场景。选型最重要的原则:先 Benchmark,基于你自己的数据和硬件说话,不要用别人的测试结果做决策。