技术博客

LLM 推理引擎横评 2026:vLLM、SGLang、TensorRT-LLM 怎么选

2026 年主流的开源 LLM 推理引擎已经形成明确的梯队:vLLM 以通用性和社区生态领先,SGLang 在结构化输出和多步推理场景性能更强,TensorRT-LLM 则在 NVIDIA 硬件上达到极限性能。本文从部署难度、适用场景、吞吐量/延迟表现、社区活跃度四个维度做横向对比,帮助工程师根据实际场景选择合适的推理框架。

LLM推理引擎vLLMSGLangTensorRT-LLMGPUAI基础设施性能对比

自建大模型推理服务时,选择推理引擎是第一个工程决策。2026 年这个领域已经不再混沌——三个框架各有明确的定位,了解差异就能做出合理选择。


三个框架的基本定位

vLLM
  发起方:UC Berkeley
  定位:通用 LLM 推理,易部署,社区生态最完善
  核心技术:PagedAttention + 连续批处理
  适用场景:绝大多数在线服务场景

SGLang(Structure Generation Language)
  发起方:UC Berkeley(与 vLLM 同一个实验室)
  定位:面向复杂推理任务(多步骤/结构化输出/Agent 工作流)
  核心技术:RadixAttention(共享前缀 KV Cache)+ 编译加速
  适用场景:RAG 系统、Agent 框架、需要 JSON 结构化输出的场景

TensorRT-LLM
  发起方:NVIDIA
  定位:NVIDIA GPU 上的极限性能推理
  核心技术:CUDA 内核深度优化 + 量化(FP8/INT4/INT8)
  适用场景:追求极限吞吐量的生产环境,资源充裕的大规模集群

技术原理对比

KV Cache 管理

vLLM — PagedAttention
  将 KV Cache 切成固定大小的 Block
  按需分配,避免碎片
  不同请求可以共享相同前缀的 Block
  → 通用场景效率高

SGLang — RadixAttention
  在 PagedAttention 基础上更进一步
  使用前缀树(Radix Tree)结构管理 KV Cache
  多个请求共享相同 System Prompt 的 KV Cache
  → System Prompt 很长且被大量复用时,收益显著(RAG 场景)
  
  例:
    100 个请求,System Prompt 相同(1000 tokens)
    vLLM:每个请求单独计算 System Prompt 的 KV
    SGLang:第一个请求计算,其余 99 个直接复用
    → 显存节省和吞吐提升明显

TensorRT-LLM — In-Flight Batching + 自定义 CUDA Kernel
  NVIDIA 深度定制的 Kernel,充分利用 Tensor Core
  In-Flight Batching 类似连续批处理
  FP8 量化支持(H100 上硬件原生支持 FP8,精度损失极小)
  → 原始吞吐量最高,但仅限 NVIDIA 硬件

结构化输出

vLLM
  支持 JSON Schema 约束输出(guided decoding)
  使用 outlines 库实现
  配置简单,开箱即用

SGLang
  结构化输出是核心设计目标之一
  原生支持 JSON/Regex/Grammar 约束
  性能比 vLLM 的 outlines 实现更快(编译器优化)
  → 需要大量结构化输出的场景,SGLang 有明显优势

TensorRT-LLM
  结构化输出支持有限,需要在上层封装处理
  不是其设计重点

性能对比(参考数据)

以下数据基于开源 benchmark,仅供参考方向,实际性能受模型、硬件、负载特征影响。

测试环境参考:A100 80GB,Llama 3.1 8B,并发 100 请求

吞吐量(requests/second,越高越好):
  TensorRT-LLM:最高(约为 vLLM 的 1.3-2x,取决于配置)
  SGLang:与 vLLM 接近,特定场景(共享前缀)明显更高
  vLLM:基准

首 token 延迟 TTFT(越低越好):
  SGLang:在 prefix caching 命中时最低
  vLLM:中等
  TensorRT-LLM:生产配置下通常最低

结构化输出场景(JSON Schema):
  SGLang:最快(原生编译支持)
  vLLM:中等(outlines 实现)
  TensorRT-LLM:不适用

共享 System Prompt 场景(RAG/Agent):
  SGLang:显著更高(RadixAttention 复用前缀 KV)
  vLLM:也有 prefix caching,但不如 SGLang 精细
  TensorRT-LLM:基础实现

部署复杂度对比

vLLM(最简单):
  pip install vllm
  python -m vllm.entrypoints.openai.server --model ...
  → 5 分钟能跑起来
  → OpenAI 兼容 API,原有代码零改动

SGLang(较简单):
  pip install sglang
  python -m sglang.launch_server --model ... --port 30000
  → API 格式和 vLLM 类似(也支持 OpenAI 兼容)
  → 10 分钟能跑起来

TensorRT-LLM(最复杂):
  需要先将模型转换为 TRT 引擎格式(几十分钟到数小时)
  容器镜像大(50GB+)
  需要针对每种模型/硬件组合重新构建引擎
  → 需要 1-2 天才能稳定跑起来
  → 模型更新需要重新构建引擎

各框架快速启动对比

vLLM

pip install vllm

python -m vllm.entrypoints.openai.server \
    --model Qwen/Qwen2.5-7B-Instruct \
    --port 8000

# 调用(OpenAI 兼容)
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"Qwen/Qwen2.5-7B-Instruct","messages":[{"role":"user","content":"你好"}]}'

SGLang

pip install sglang[all]

python -m sglang.launch_server \
    --model-path Qwen/Qwen2.5-7B-Instruct \
    --port 30000 \
    --host 0.0.0.0

# 调用(OpenAI 兼容)
curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"Qwen/Qwen2.5-7B-Instruct","messages":[{"role":"user","content":"你好"}]}'

# SGLang 的结构化输出示例
curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen2.5-7B-Instruct",
    "messages": [{"role": "user", "content": "提取以下文本中的人名、地点,以 JSON 格式返回:张三在北京工作"}],
    "response_format": {
      "type": "json_schema",
      "json_schema": {
        "schema": {
          "type": "object",
          "properties": {
            "persons": {"type": "array", "items": {"type": "string"}},
            "locations": {"type": "array", "items": {"type": "string"}}
          }
        }
      }
    }
  }'

TensorRT-LLM(简化流程)

# 步骤 1:拉取 NVIDIA 官方镜像
docker pull nvcr.io/nvidia/tritonserver:24.12-trtllm-python-py3

# 步骤 2:转换模型(以 Qwen2.5-7B 为例)
docker run --gpus all -v /path/to/models:/models \
    nvcr.io/nvidia/tritonserver:24.12-trtllm-python-py3 \
    python /app/tensorrt_llm/examples/qwen/convert_checkpoint.py \
        --model-dir /models/Qwen2.5-7B-Instruct \
        --output-dir /models/trt_ckpt \
        --dtype float16

# 步骤 3:构建 TRT 引擎(耗时 30 分钟到数小时)
trtllm-build \
    --checkpoint-dir /models/trt_ckpt \
    --output-dir /models/trt_engine \
    --gemm-plugin float16 \
    --max-batch-size 32 \
    --max-input-len 4096 \
    --max-seq-len 8192

# 步骤 4:启动推理服务
python /app/tensorrt_llm/examples/run.py \
    --engine-dir /models/trt_engine \
    --max-output-len 512

选型决策树

你的优先级是什么?

快速上线(几小时内要跑起来)
→ vLLM(最快,文档最全)

需要大量结构化输出(JSON/API 提取/表格解析)
→ SGLang(原生支持,性能更好)

RAG 系统(大量请求共享同一个 System Prompt)
→ SGLang(RadixAttention 前缀复用,显存和吞吐都更优)

追求极限吞吐量,有专职 AI 基础设施团队
→ TensorRT-LLM(NVIDIA 硬件上性能最强,但运维复杂)

在用 AMD GPU(ROCm)
→ vLLM(ROCm 支持最好)或 SGLang(也支持 ROCm)
→ TensorRT-LLM 不支持 AMD GPU

模型经常更新
→ vLLM 或 SGLang(不需要重新构建引擎)
→ TensorRT-LLM 每次换模型都要重新构建(成本高)

团队没有深度 AI 基础设施经验
→ vLLM(社区最大,问题最容易找到答案)

2026 年的趋势

几个值得关注的方向:

1. vLLM 和 SGLang 差异在缩小
   vLLM 也在加强 prefix caching 和结构化输出
   两者的功能集在逐渐趋同

2. FP8 量化的普及
   H100/H200/Blackwell GPU 原生支持 FP8
   FP8 相比 FP16 吞吐提升 2x,精度几乎无损
   TensorRT-LLM 目前支持最好,vLLM/SGLang 也在跟进

3. 多节点推理
   超大模型(671B 参数如 DeepSeek-V3)需要多节点推理
   vLLM 和 SGLang 都在完善 disaggregated prefill(预填充和解码分离到不同节点)

4. 硬件多样化
   AMD ROCm、华为昇腾、国产 GPU 的支持在改善
   vLLM 的硬件支持最广,是多种硬件场景的优先选择

小结

三个框架的选择逻辑:vLLM 是默认选项,覆盖 80% 的场景;SGLang 是 RAG 和结构化输出场景的升级选项,特定场景性能更好;TensorRT-LLM 是极限性能选项,适合有专职团队、追求极致吞吐的生产环境。

没有绝对的优劣,只有适合特定场景的选择。对大多数团队来说,vLLM 先跑起来、观察瓶颈、再决定是否切换,是最稳妥的路线。