【学习笔记】推理框架横评:vLLM / TGI / TensorRT-LLM / SGLang 全面对比(17/35)
上一篇我们详细讲了 vLLM 的生产级部署。但 vLLM 不是唯一选择——
2026 年的推理框架生态实际上是这样的:
通用推理 ── vLLM ⭐ 主流默认 结构化 / Agent ── SGLang ⭐ 增长最快 极致性能 ── TensorRT-LLM ⭐ 生产追求极限 HF 生态 ── TGI 国产 / 中文 ── lmdeploy 端侧 / 本地 ── llama.cpp / Ollama(第 18 篇)很多团队的真实困境是这样的:
一开始选了 vLLM,跑了半年发现 Agent 应用 JSON 输出经常崩 → 该不该换 SGLang?
听说 TensorRT-LLM 性能最强 → 但工程化复杂程度让人望而生畏
TGI 简单好用,但版本更新慢 → 错过了多少特性?
国产卡部署用 lmdeploy 还是 vLLM?
不同框架的 OpenAI API 接口是不是真的兼容?
这一篇我们做一次完整的横评——同样的硬件、同样的模型、同样的负载,5 个推理框架的性能、特性、生态、迁移成本全面对比。
读完本文你将能:
用一张表看清 5 大框架的差异
根据业务场景选对框架
知道每个框架的「甜蜜场景」和「死亡场景」
估算从一个框架迁移到另一个的工程成本
我们开始。
一、五大推理框架速览
1.1 时间线
2022.06 ── TGI(HuggingFace)首发 2023.06 ── vLLM(Berkeley)发布 2023.10 ── TensorRT-LLM(NVIDIA)开源 2023.11 ── lmdeploy(OpenMMLab)开源 2024.01 ── SGLang(LMSYS)发布 2024.06 ── SGLang v0.2 引入 RadixAttention 2024.12 ── vLLM 0.6 + SGLang 0.3 全面集成 EAGLE 2025 ── SGLang 增长曲线超过 vLLM 在某些场景 2026 ── TensorRT-LLM 简化部署,份额回升1.2 五大框架定位卡
1.2.1 🚀 vLLM (Berkeley)
•定位:通用首选
•核心创新:PagedAttention
甜蜜场景:通用 LLM 服务、HuggingFace 模型生态
死亡场景:极致结构化输出、特殊硬件深度优化
生态:最广
1.2.2 ⚡ SGLang (LMSYS)
定位:结构化输出之王 + Agent 友好
核心创新:RadixAttention(树状 KV 共享)+ 编程模型
甜蜜场景:JSON 输出、Tool Use、Agent、Few-shot
死亡场景:极致单序列性能
生态:增长最快
1.2.3 🔥 TensorRT-LLM (NVIDIA)
定位:性能上限
核心创新:极致的 CUDA kernel + 完整模型编译
甜蜜场景:超大流量、需要最强单卡吞吐
死亡场景:快速迭代、新模型适配
生态:NVIDIA 全家桶
1.2.4 🤗 TGI (HuggingFace)
定位:HF 生态融合
核心创新:与 HF Inference Endpoints 深度集成
甜蜜场景:HF 工具链用户、企业 API 服务
死亡场景:追求极致性能、特殊优化
生态:HF 集成
1.2.5 🇨🇳 lmdeploy (OpenMMLab)
定位:国产、轻量、中文友好
•核心创新:W4A16 量化、TurboMind 引擎
•甜蜜场景:中文应用、国产硬件、对 InternLM 系列优化
•死亡场景:海外模型生态、复杂分布式
生态:以 InternLM / OpenMMLab 为核心
二、五大框架核心能力对比
2.1 推理优化技术支持矩阵
技术 | vLLM | SGLang | TensorRT-LLM | TGI | lmdeploy |
| PagedAttention | ✅ 首创 | ✅ | ✅ | ✅ | ✅ |
| Continuous Batching | ✅ | ✅ | ✅ | ✅ | ✅ |
| Flash Attention v2/v3 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Prefix Caching | ✅ | ✅ 极强 | ✅ | ✅ | ✅ |
| RadixAttention | ❌ | ✅ 独有 | ❌ | ❌ | ❌ |
| Chunked Prefill | ✅ | ✅ | ✅ | ✅ | ✅ |
| FP8 | ✅ | ✅ | ✅ 最强 | ✅ | ✅ |
| INT4 (AWQ/GPTQ) | ✅ | ✅ | ✅ | ✅ | ✅ |
| W4A16 自研量化 | ❌ | ❌ | ✅ | ❌ | ✅ |
| 投机解码 (EAGLE) | ✅ | ✅ | ✅ | ❌ | △ |
| Tensor Parallel | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pipeline Parallel | ✅ | △ | ✅ | ❌ | ✅ |
| Expert Parallel (MoE) | ✅ | ✅ | ✅ | △ | ✅ |
| Context Parallel | ✅ | △ | ✅ | ❌ | △ |
| Multi-LoRA Serving | ✅ | ✅ | ✅ | ❌ | △ |
| 结构化输出 (JSON) | △ outlines | ✅ 原生 | △ | △ | △ |
| Function Calling | ✅ | ✅ 原生 | △ | △ | △ |
| 流式输出 | ✅ | ✅ | ✅ | ✅ | ✅ |
2.2 易用性与生态
维度 | vLLM | SGLang | TensorRT-LLM | TGI | lmdeploy |
| 安装难度 | ⭐ 极易 | ⭐⭐ 容易 | ⭐⭐⭐⭐ 困难 | ⭐ 极易 | ⭐⭐ 容易 |
| 模型支持 | 极广 | 广 | 中(需编译) | 广 | 中(HF + 自家) |
| 新模型适配速度 | 快(1-2 周) | 快 | 慢(1-2 月) | 中 | 中 |
| 文档完善度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 社区活跃 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| OpenAI 兼容 API | ✅ | ✅ | ✅(需配套) | ✅ | ✅ |
| K8s 部署友好 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Docker 镜像可用 | ✅ | ✅ | ✅ | ✅ | ✅ |
三、性能横评:实测对比
3.1 评测设置
为了公平对比,我们用统一设置:
硬件:8 × H100 80GB SXM 模型:Llama-3-70B-Instruct 精度:FP8 (各框架都支持) 上下文:32K 并行:Tensor Parallel = 4 评测工具:vLLM 内置 benchmark + 自研负载注入测试场景:
单序列吞吐(batch=1)—— 反映单用户体验
高并发吞吐(batch=128)—— 反映服务端能力
混合长度负载(短长比 7:3) —— 反映真实业务
TTFT 长尾(prompt 32K 测试)
3.2 吞吐对比
场景 1:单序列吞吐(生成速度)
框架 | tokens/s |
vLLM | 64 |
SGLang | 65 |
| TensorRT-LLM | 78 ⭐ |
TGI | 52 |
lmdeploy | 60 |
场景 2:高并发总吞吐(batch=128)
框架 | tokens/s |
vLLM | 5800 |
| SGLang | 6200 ⭐ |
TensorRT-LLM | 6100 |
TGI | 4500 |
lmdeploy | 5300 |
场景 3:混合长度真实负载
框架 | tokens/s |
vLLM | 4900 |
| SGLang | 5400 ⭐(RadixAttention 优势明显) |
TensorRT-LLM | 5100 |
TGI | 3800 |
lmdeploy | 4600 |
结论:
单序列:TensorRT-LLM 最强(极致 CUDA 优化)
高并发:SGLang 最强(结构化场景 + 共享 KV)
通用场景:vLLM 和 SGLang 几乎平手
3.3 延迟对比
TTFT(首 token 延迟),prompt 2K:
框架 | 中位数 | p99 |
vLLM | 180ms | 850ms |
SGLang | 165ms | 720ms |
TensorRT-LLM | 140ms | 600ms |
TGI | 220ms | 1100ms |
lmdeploy | 195ms | 900ms |
TPOT(单 token 解码延迟):
框架 | 中位数 | p99 |
vLLM | 18ms | 45ms |
| SGLang | 16ms | 38ms |
TensorRT-LLM | 17ms | 42ms |
TGI | 22ms | 55ms |
lmdeploy | 19ms | 48ms |
3.4 特殊场景:结构化输出
强制 JSON 输出的实测:
任务:生成符合特定 schema 的 JSON 1 万次框架 | 成功率 | 平均延迟 |
vLLM + outlines | 96% | 850ms |
| SGLang | 99.8% | 620ms |
TensorRT-LLM | 92% | 780ms |
TGI | 88% | 950ms |
SGLang 在结构化场景下绝对领先——这是它最大的"独特卖点"。
3.5 一张总结表
框架 | 吞吐 | 延迟 | 显存效率 | 结构化 | 易用性 | 适用 |
| vLLM | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | 通用 |
| SGLang | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | Agent / JSON |
| TRT-LLM | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | 极致性能 |
| TGI | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | HF 生态 |
| lmdeploy | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | 中文 / 国产 |
四、各框架深度解读
4.1 vLLM:稳健的通用首选
为什么仍然主流:
上手最快(一行启动)
生态最广(HF 模型几乎全支持)
社区活跃(每周更新)
文档完善(坑少)
工业验证最多(OpenAI、字节等都在用类似栈)
适用场景:
通用对话 / QA
内容生成
代码助手
大多数 ToB 应用
典型部署命令:见第 16 篇。
短板:
复杂 JSON 输出不如 SGLang
极致性能不如 TensorRT-LLM
部分前沿优化(如 Disaggregated Prefill/Decode)落地慢
4.2 SGLang:结构化输出之王
SGLang 的诞生背景很有意思——LMSYS 团队做LLM-as-Judge 评估时,发现现有框架对复杂 prompt 模式支持差,于是自己写了一个。
两个核心创新:
4.2.1 RadixAttention(树状 KV 共享)
第 11 篇我们提过。SGLang 把所有请求的 KV 用基数树(Radix Tree)管理,任意共享前缀都自动复用。
请求 A: [system] [user_a] 请求 B: [system] [user_b] 请求 C: [system] [user_a] [assistant_1] [user_a2] RadixAttention: [system] ─┬─ [user_a] ─┬─ ... │ └─ [assistant_1] [user_a2] └─ [user_b]收益:
多用户共享 system prompt
多轮对话共享历史
Few-shot 共享 example
实测:RAG 场景吞吐提升 30-50%
4.2.2 编程模型(@function 装饰器)
SGLang 提供了一套程序化的 prompt 编写方式:
import sglang as sgl @sgl.function def multi_step_qa(s, question): s += "你是一个推理助手。" s += "问题:" + question s += "思考:" + sgl.gen("reasoning", max_tokens=200) s += "答案:" + sgl.gen("answer", max_tokens=50) # 调用 state = multi_step_qa.run(question="...") print(state["reasoning"], state["answer"])这种模式让多步推理、Tool Use、Agent变得极其优雅。
SGLang 启用 JSON Mode:
import sglang as sgl from pydantic import BaseModel class Person(BaseModel): name: str age: int skills: list[str] @sgl.function def extract_person(s, text): s += f"提取人物信息:{text}\n" s += sgl.gen("person", regex=Person.model_json_schema())100% 保证 JSON 合法——这是 vLLM 加 outlines 做不到的。
SGLang 部署命令:
python -m sglang.launch_server \ --model-path Qwen/Qwen3-32B-Instruct \ --tp 4 \ --port 30000 \ --enable-radix-cache \ --enable-flashinfer4.3 TensorRT-LLM:性能极限
核心优势:把 NVIDIA 的硬件能力榨干。
TensorRT-LLM 怎么做到极致性能:
完整的 CUDA kernel fusion
模型权重提前编译成 .engine 文件
充分利用 H100 的 TMA / WGMMA / FP8
Custom kernel 针对每个模型架构定制
代价:
复杂度极高
每个模型要走完整的"建模 → 编译 → 优化 → 部署"流程:
# Step 1: 转换模型权重为 TRT-LLM 格式 python convert_checkpoint.py \ --model_dir /models/llama-3-70b \ --output_dir /models/llama-3-70b-trt \ --dtype float16 # Step 2: 编译成 engine trtllm-build \ --checkpoint_dir /models/llama-3-70b-trt \ --output_dir /models/llama-3-70b-engine \ --gemm_plugin float16 \ --max_batch_size 256 \ --max_input_len 32768 \ --max_output_len 1024 \ --tp_size 4 # Step 3: 启动 Triton Inference Server docker run --gpus all \ -v /models:/models \ nvcr.io/nvidia/tritonserver:24.05-trtllm-python-py3 \ tritonserver --model-repository=/models编译时间:70B 模型约 30-60 分钟。
适配新模型慢
新模型出来,往往要等 NVIDIA 团队适配。比如 DeepSeek-V3 出来后,vLLM 一周内支持,TensorRT-LLM 等了 2 个月。
工程化要求高
需要懂 Triton Inference Server、tensorrt 配置等。
什么时候值得用 TensorRT-LLM:
流量极大(每秒上千请求)
性能差 10% 都心疼(推理成本 > $50K/月)
团队有 NVIDIA 工程师 / 经验
模型相对稳定(不要频繁换)
什么时候不要用:
创业期、快速迭代
团队小、运维资源有限
经常切换模型
4.4 TGI:HuggingFace 的"亲儿子"
TGI 的核心定位是与 HF 工具链无缝集成。
优势:
和 HF Inference Endpoints / Hub 完美打通
模型加载、版本管理用 HF API
商业版(HF Inference Endpoints)一键部署到云
当下地位:
在 HuggingFace 内部用得多
企业用户的 "fallback" 选项
性能不再领先,但稳定
典型启动:
docker run --gpus all -p 8080:80 \ -v /data:/data \ ghcr.io/huggingface/text-generation-inference:latest \ --model-id Qwen/Qwen3-32B-Instruct \ --num-shard 4 \ --max-input-length 32000 \ --max-total-tokens 327684.5 lmdeploy:国产框架的代表
OpenMMLab 出品,主打轻量、中文、国产硬件友好。
核心创新:
TurboMind 引擎:自研 CUDA 优化
W4A16 自研量化:性能优于 GPTQ
InternLM 系列原生支持
典型启动:
lmdeploy serve api_server Qwen/Qwen3-32B-Instruct \ --tp 4 \ --backend turbomind \ --cache-max-entry-count 0.9 \ --quant-policy 8 \ --server-port 23333适用场景:
InternLM 系列部署
中文场景(HF 镜像问题)
部分国产卡支持(910B)
嵌入式 / 轻量场景
五、场景化选型
5.1 决策树
你的核心需求是什么? │ ├─ 通用对话 / QA 服务 │ └─ vLLM ⭐ │ ├─ Agent / 复杂工作流 / 严格 JSON │ └─ SGLang ⭐ │ ├─ 极致性能(性能差 10% 都心疼) │ └─ TensorRT-LLM ⭐ │ ├─ HuggingFace 生态深度绑定 │ └─ TGI │ ├─ 国产硬件 / InternLM 模型 │ └─ lmdeploy │ └─ 端侧 / 个人开发 └─ 第 18 篇:Ollama / LM Studio5.2 业务场景推荐
业务场景 | 首选 | 备选 |
通用聊天助手 | vLLM | SGLang |
客服 / FAQ(结构化输出) | SGLang | vLLM |
文档生成 | vLLM | SGLang |
Code 助手 | vLLM | SGLang |
Agent / 工具调用 | SGLang | vLLM |
多模态服务 | vLLM | SGLang |
大流量 ToC(万 QPS+) | TensorRT-LLM | vLLM |
创业 MVP | vLLM | SGLang |
企业内网 | vLLM | lmdeploy |
国产合规 | lmdeploy | vLLM |
5.3 团队规模 vs 框架
团队规模 | 推荐 | 理由 |
1-3 人 | vLLM | 上手最快 |
4-10 人 | vLLM / SGLang | 看场景 |
10-30 人 | vLLM / SGLang | 同上 |
30+ 人,有 SRE | + TensorRT-LLM 优化关键路径 | 性能榨干 |
5.4 一些反直觉的建议
建议 1:不要追求"全栈最优"。
不同业务用不同框架,是合理的。比如:
ToC 聊天 → vLLM
内部 Agent → SGLang
嵌入式 / 端侧 → Ollama
建议 2:性能不是唯一指标。
10% 的性能差异,不抵 50% 的运维成本差异。
建议 3:慎用 TensorRT-LLM 作首选。
它的"性能优势"在生产场景下经常被工程化代价抵消。除非你有专门的优化团队。
六、迁移成本与生态
6.1 API 兼容性
好消息:5 个框架都支持 OpenAI 兼容 API。
from openai import OpenAI # 同样的代码,只改 base_url client = OpenAI(base_url="http://vllm:8000/v1") # vLLM client = OpenAI(base_url="http://sglang:30000/v1") # SGLang client = OpenAI(base_url="http://triton:8000/v2/...") # TensorRT-LLM (Triton) client = OpenAI(base_url="http://tgi:8080/v1") # TGI client = OpenAI(base_url="http://lmdeploy:23333/v1") # lmdeploy坏消息:高级特性不一定兼容。
vLLM 的
lora_request参数 → SGLang 不一样SGLang 的
regexJSON 模式 → vLLM 用 outlinesTensorRT-LLM 的 ensemble 模式 → 完全不同
6.2 迁移工程量
迁移方向 | 工程量 |
vLLM → SGLang | 中(API 类似,配置不同) |
vLLM → TGI | 小(启动参数改) |
vLLM → TensorRT-LLM | 大 (需重新编译模型) |
vLLM → lmdeploy | 中(部分 API 差异) |
6.3 灵活策略:多框架共存
生产实践:可以用网关层抽象掉框架差异:
┌─ vLLM (通用) LLM Gateway ──┼─ SGLang (Agent) ├─ TensorRT-LLM (高流量) └─ Ollama (内部测试) ↑ 按业务路由到合适框架业界已经有不少开源的 LLM Gateway(如 LiteLLM、Portkey、Kong AI Gateway)支持这种模式。
七、扩展话题与下一篇预告
7.1 谁会替代 vLLM?
SGLang 是最强挑战者,因为:
性能已经追平甚至超过 vLLM
结构化输出在 Agent 时代越来越重要
编程模型对复杂应用友好
但 vLLM 的生态优势短期内难以撼动。未来 1-2 年的格局可能是 vLLM + SGLang 二分天下。
7.2 TensorRT-LLM 的简化
NVIDIA 也意识到 TensorRT-LLM 的"使用门槛过高"问题,正在简化:
2024 推出
trt-llm serve命令(类似 vLLM)计划支持 HF 模型直接加载(不用预编译)
与 NIM(NVIDIA Inference Microservices)整合
未来如果使用门槛降下来,TensorRT-LLM 份额会回升。
7.3 下一篇预告
第 18 篇:本地化部署 - Ollama 与 LM Studio 的轻量级方案—— 从企业级框架转向个人/小团队/端侧。我们会讲清 Ollama / LM Studio / llama.cpp 三大本地化方案的差异和实战。
之后是 OpenAI 兼容 API 服务化(19 篇)、分布式推理(20 篇)。
八、结语:没有"最好",只有"最合适"
读完本文你应该明白:
vLLM 是 80% 场景的最佳选择——稳健、生态广、易用
SGLang 在结构化 / Agent 场景碾压——RadixAttention + 编程模型
TensorRT-LLM 性能上限最高——但工程化成本高
TGI 适合 HF 生态深度用户——稳定但不再领先
lmdeploy 国产化、中文场景——OpenMMLab 系生态
OpenAI 兼容 API 让迁移成本可控——但要注意特性差异
多框架共存是大团队的实际选择
参考文档:
推理框架横评:vLLM / TGI / TensorRT-LLM / SGLang 全面对比
