HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于

推理框架对比:vLLM vs TensorRT-LLM vs SGLang

推理框架选择很多:vLLM、TensorRT-LLM、SGLang、Text Generation Inference...

各有特点,怎么选?这篇对比主流框架,帮你做决策。


框架概览

框架开发者主要特点
vLLMUC BerkeleyPagedAttention,高吞吐
TensorRT-LLMNVIDIA极致优化,低延迟
SGLangUC Berkeley结构化生成,编程友好
TGIHugging Face易部署,生态好
DeepSpeed-MII微软低延迟,易用
LMDeploy商汤国产,性能不错

vLLM

特点

  • PagedAttention:显存利用率高
  • Continuous Batching:高吞吐
  • 兼容 OpenAI API:迁移方便
  • 社区活跃:更新快

优点

  1. 吞吐高,并发能力强
  2. 显存效率好
  3. 支持模型多(LLaMA、Mistral、Qwen 等)
  4. 易用,开箱即用
  5. 社区大,问题好解决

缺点

  1. TTFT 不是最优
  2. 自定义 kernel 较少
  3. 部分模型支持不如 TensorRT-LLM

适合场景

  • 高并发在线服务
  • 对吞吐要求高
  • 快速部署

代码示例

from vllm import LLM, SamplingParams

llm = LLM(model="meta-llama/Llama-2-7b-hf")
outputs = llm.generate(["Hello"], SamplingParams(max_tokens=100))

TensorRT-LLM

特点

  • NVIDIA 官方:针对 GPU 深度优化
  • 极致性能:延迟最低
  • FP8 支持:H100 上效果好
  • 量化支持全:INT8、INT4、FP8

优点

  1. 延迟最低(kernel 级优化)
  2. H100 上性能最强
  3. 量化效果好
  4. 官方支持,稳定

缺点

  1. 配置复杂,学习成本高
  2. 需要先编译模型
  3. 灵活性不如 vLLM
  4. 部分特性需要 Triton 配合

适合场景

  • 延迟敏感场景
  • NVIDIA 硬件(尤其 H100)
  • 有专业团队

使用流程

# 1. 转换模型
python convert_checkpoint.py \
    --model_dir ./llama-7b \
    --output_dir ./trt_ckpt \
    --dtype float16

# 2. 构建引擎
trtllm-build \
    --checkpoint_dir ./trt_ckpt \
    --output_dir ./trt_engine \
    --gemm_plugin float16

# 3. 运行推理
python run.py --engine_dir ./trt_engine

比 vLLM 复杂不少。


SGLang

特点

  • 结构化生成:支持 JSON、正则约束
  • RadixAttention:前缀缓存优化
  • 编程友好:Python 原生语法

优点

  1. 结构化输出(JSON、正则)原生支持
  2. 前缀缓存效率高
  3. API 设计优雅
  4. Agent 场景友好

缺点

  1. 社区相对小
  2. 模型支持不如 vLLM 全
  3. 文档相对少

适合场景

  • 需要结构化输出
  • Agent / Tool Use 场景
  • 对 API 设计有要求

代码示例

import sglang as sgl

@sgl.function
def example(s):
    s += "Write a JSON object with name and age:\n"
    s += sgl.gen("json_output", regex=r'\{"name": "\w+", "age": \d+\}')

state = example.run()
print(state["json_output"])

结构化生成很方便。


Text Generation Inference (TGI)

特点

  • Hugging Face 官方
  • 易部署:Docker 一键启动
  • 生态好:和 HF 无缝集成

优点

  1. 部署最简单
  2. HuggingFace 模型开箱即用
  3. 文档全
  4. 稳定

缺点

  1. 性能不如 vLLM 和 TRT-LLM
  2. 功能更新较慢
  3. 自定义能力弱

适合场景

  • 快速验证
  • HuggingFace 生态用户
  • 对性能要求不极端

部署示例

docker run --gpus all -p 8080:80 \
    ghcr.io/huggingface/text-generation-inference:latest \
    --model-id meta-llama/Llama-2-7b-hf

一行命令启动。


性能对比

吞吐(tokens/s)

LLaMA-7B,A100 80GB:

框架并发 1并发 32并发 128
vLLM358001500
TensorRT-LLM409001700
TGI30500900
SGLang357501400

TensorRT-LLM 最高,vLLM 和 SGLang 接近。

延迟(TTFT)

框架TTFT(ms)
TensorRT-LLM50
vLLM80
SGLang85
TGI120

TensorRT-LLM 延迟最低。

显存效率

框架显存利用率
vLLM~95%
SGLang~90%
TensorRT-LLM~85%
TGI~70%

vLLM 显存效率最高。


功能对比

功能vLLMTRT-LLMSGLangTGI
Continuous Batching✅✅✅✅
PagedAttention✅✅✅✅
FP8 量化✅✅✅❌
INT4 量化✅✅✅✅
结构化生成有限❌✅有限
Speculative Decoding✅✅✅❌
多模态✅✅✅✅
OpenAI API 兼容✅需配合✅✅
易用性高低中高

怎么选

决策树

需要结构化输出(JSON、正则)?
├── 是 → SGLang
└── 否 →
    延迟要求极高(<50ms TTFT)?
    ├── 是 → TensorRT-LLM
    └── 否 →
        需要快速部署,不想折腾?
        ├── 是 → TGI 或 vLLM
        └── 否 →
            高并发,吞吐优先?
            ├── 是 → vLLM
            └── 否 → 根据团队情况选

按场景推荐

场景推荐理由
高并发 API 服务vLLM吞吐高,显存效率好
延迟敏感服务TensorRT-LLM延迟最低
Agent / Tool UseSGLang结构化生成好
快速验证TGI部署最简单
H100 部署TensorRT-LLMFP8 优化
显存紧张vLLMPagedAttention

按团队推荐

团队推荐
小团队/个人vLLM 或 TGI
有 infra 能力TensorRT-LLM
做 Agent 产品SGLang
HuggingFace 重度用户TGI

组合使用

一些高级用法:

vLLM + 其他

vLLM 做主力推理,其他框架做特定场景:

在线服务:vLLM
延迟敏感场景:TensorRT-LLM
结构化输出:SGLang

Triton + TensorRT-LLM

NVIDIA Triton Inference Server + TensorRT-LLM:

  • Triton 做请求管理、负载均衡
  • TensorRT-LLM 做实际推理

这是企业级部署的常见方案。


未来趋势

性能趋同

各框架都在互相学习,性能差距在缩小:

  • vLLM 在优化延迟
  • TensorRT-LLM 在改善易用性
  • SGLang 在提升吞吐

新特性

  • Speculative Decoding:都在支持
  • 长上下文优化:128K+ 上下文
  • 多模态:图片、视频输入
  • FP8/FP4:更激进的量化

生态整合

框架之间可能会更好地集成,或者出现统一的抽象层。


小结

框架选择速查:

框架一句话
vLLM高吞吐首选,生产环境主力
TensorRT-LLM延迟极致,需要专业能力
SGLang结构化生成,Agent 友好
TGI快速部署,入门友好

建议:

  1. 先用 vLLM 跑通
  2. 有延迟要求上 TensorRT-LLM
  3. 需要结构化输出试 SGLang

推理篇结束。下一部分讲模型评测。