推理框架选型:vLLM、SGLang 与 TensorRT-LLM 的适用边界

三个主流推理框架在延迟、吞吐和部署复杂度上的差异,以及按场景选择的判断依据。

三个框架都能跑,但优化方向完全不同。选错不会让你跑不起来,只会让你在错误的维度上优化。

各自的强项

vLLM:PagedAttention 的起点,生态最广,模型支持最全。适合通用场景,尤其是需要快速上线多种模型时。

SGLang:RadixAttention 对前缀复用做了深度优化,多轮对话和结构化输出的场景优势明显。约束解码(JSON schema 等)做得比较完整。

TensorRT-LLM:编译式优化,把算子融合和 kernel 调优做到极致。延迟最低,但模型支持滞后,编译流程重。

实测对比

在同一台 8 卡机器上跑同一个 70B INT4 模型,固定负载:

指标 vLLM SGLang TensorRT-LLM
首 token 延迟 中 低(有前缀缓存) 最低
高并发吞吐 高 最高 高
模型支持 最全 较全 有限
部署复杂度 低 中 高

数字会随模型和负载变化,这里只反映相对关系。

按场景选

  1. 快速上线、多模型:vLLM。开箱即用,模型库最全
  2. 多轮对话、RAG、结构化输出:SGLang。前缀复用和约束解码是实打实的优势
  3. 延迟敏感、模型固定:TensorRT-LLM。愿意投入编译时间换最低延迟
  4. 需要频繁换模型:不要用 TensorRT-LLM,编译开销吃不消

一个容易被忽略的维度

前缀缓存的命中率对多轮对话场景影响巨大。如果业务是多轮交互,SGLang 的 RadixAttention 能把重复前缀的计算完全省掉,实际吞吐提升往往超过框架本身的差异。

反过来,如果是单轮、每次输入都不同的场景,前缀缓存几乎无收益,此时 vLLM 的通用性更值钱。

结论

不要迷信单一框架的基准数字。先明确业务的请求模式(单轮还是多轮、是否共享前缀、延迟还是吞吐优先),再对应选择。三个框架都能达到可用状态,差距在特定场景下才拉开。