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

四大推理框架的吞吐量、延迟优化、显存效率与工程化部署对比 | 2026-02


一、推理框架的核心价值

大模型的推理成本占总运营成本的 80% 以上。推理框架的选择直接决定了每 token 的成本、首 token 延迟(TTFT)、生成吞吐量和并发承载能力

本文对比 vLLM、TGI(Text Generation Inference)、SGLang 和 TensorRT-LLM 四大推理框架。


二、架构设计

2.1 基础信息

维度 vLLM TGI SGLang TensorRT-LLM
团队 UC Berkeley Hugging Face UC Berkeley / LMSYS NVIDIA
语言 Python + C++/CUDA Rust + Python Python + C++/CUDA C++ + Python
协议 Apache 2.0 Apache 2.0 Apache 2.0 Apache 2.0
核心创新 PagedAttention Continuous Batching RadixAttention TensorRT 编译优化
API 兼容 OpenAI OpenAI + HF OpenAI OpenAI + Triton
模型支持 广泛 广泛 广泛 需编译

2.2 核心架构对比

vLLM Architecture:
  Request Queue -> Scheduler -> PagedAttention Engine
                      |              |
                   Dynamic      KV Cache managed
                   Batching     like virtual memory
                      |              |
                   GPU Kernel   Physical blocks
                   Execution    allocated on demand

TGI Architecture:
  Request Queue -> Token Streaming Router -> Model Shard
                      |                         |
                   Continuous              Rust-native
                   Batching                HTTP server
                      |                         |
                   Flash Attention         CUDA graphs
                   + Paged Attention

SGLang Architecture:
  Request Queue -> RadixAttention Engine -> Constrained Decoding
                      |                         |
                   Radix Tree for           JSON schema
                   KV cache sharing         enforcement
                      |                         |
                   Prefix-aware             Jump-forward
                   scheduling               decoding

TensorRT-LLM Architecture:
  Model Definition -> TensorRT Compiler -> Optimized Engine
                         |                      |
                      Graph fusion          FP8/INT4 kernels
                      Layer merging         Custom CUDA kernels
                         |                      |
                      Quantization          Inflight batching
                      calibration

2.3 关键技术创新

技术 vLLM TGI SGLang TensorRT-LLM
PagedAttention 发明者 采用 采用 采用
RadixAttention 发明者
Continuous Batching 发明者
Speculative Decoding
Prefix Caching 原生(Radix)
Chunked Prefill
CUDA Graphs 深度优化
量化推理 AWQ/GPTQ/FP8 AWQ/GPTQ/EETQ AWQ/GPTQ/FP8 FP8/INT4/INT8

三、性能基准

3.1 吞吐量对比(Llama-3-70B, 2xA100-80G)

指标 vLLM TGI SGLang TensorRT-LLM
吞吐量(tokens/s) 2800 2400 3200 3500
TTFT p50 (ms) 120 150 100 90
TTFT p99 (ms) 350 400 280 250
ITL p50 (ms) 25 30 22 20
ITL p99 (ms) 45 55 40 35
最大并发 256 128 256 256
GPU 利用率 85% 80% 88% 92%

3.2 显存效率(Llama-3-8B, 1xA100-80G)

指标 vLLM TGI SGLang TensorRT-LLM
模型加载 16GB 16GB 16GB 14GB(编译后)
KV Cache 动态分配 动态分配 Radix 共享 预分配
最大 batch size 128 64 128 128
显存利用率 90% 85% 92% 95%
Prefix 复用率 30-50% 20-30% 50-70% 30-40%

3.3 SGLang RadixAttention 优势

SGLang 在有大量共享前缀的场景下表现最突出:

# Scenario: Chat application with system prompt reuse
# System prompt: 2000 tokens (shared across all requests)
# User messages: 100-500 tokens (unique per request)

# Traditional approach: each request processes full context
# SGLang RadixAttention: system prompt KV cache shared via radix tree

"""
Radix Tree KV Cache Structure:

          [System Prompt: 2000 tokens]
         /          |           \
   [User A:      [User B:     [User C:
    100 tok]      300 tok]     200 tok]
       |             |             |
   [Asst A:      [Asst B:     [Asst C:
    200 tok]      150 tok]     300 tok]

Prefix sharing ratio: 2000 / (2000 + avg_unique) = ~80%
Memory saving: ~4x compared to no sharing
TTFT improvement: ~3-5x for subsequent requests
"""

# Benchmark results for chat with shared system prompt:
# Framework    | Throughput | TTFT (cached) | Memory
# vLLM         | 2800 t/s   | 120ms         | 60GB
# SGLang       | 4200 t/s   | 25ms          | 35GB  <-- 50% more throughput
# TensorRT-LLM | 3500 t/s   | 90ms          | 45GB

四、模型支持

4.1 模型兼容性矩阵

模型 vLLM TGI SGLang TensorRT-LLM
Llama 3/3.1 Day-0 Day-0 Day-0 Day-0
Qwen2.5
DeepSeek-V3 (MoE) 社区 官方推荐 部分
Mistral/Mixtral
Gemma 2
GLM-4 部分
多模态(VLM) 是(LLaVA等) 部分
Embedding 模型
新模型适配速度 1-3天 1-7天 1-3天 7-30天

4.2 量化支持

量化方法 vLLM TGI SGLang TensorRT-LLM
FP16/BF16
FP8 (E4M3) 是(最优)
AWQ (INT4)
GPTQ (INT4)
SqueezeLLM
INT8 Smooth
Marlin kernel

五、部署工程化

5.1 部署复杂度

维度 vLLM TGI SGLang TensorRT-LLM
pip install 否(Docker优先) 是(trtllm-build)
Docker 镜像 官方 官方(推荐) 官方 官方(NVIDIA NGC)
编译步骤 需要(模型编译)
配置复杂度
首次启动时间 <30s <30s <30s 5-30min(编译)
K8s Operator 社区 官方 社区 NVIDIA Triton

5.2 快速部署示例

# vLLM: Simplest deployment
pip install vllm
vllm serve meta-llama/Llama-3.1-8B-Instruct \
    --tensor-parallel-size 1 \
    --max-model-len 8192 \
    --gpu-memory-utilization 0.9

# TGI: Docker-first
docker run --gpus all \
    -p 8080:80 \
    -v /data/models:/data \
    ghcr.io/huggingface/text-generation-inference:latest \
    --model-id meta-llama/Llama-3.1-8B-Instruct \
    --max-input-length 4096 \
    --max-total-tokens 8192

# SGLang: Similar to vLLM
pip install sglang[all]
python -m sglang.launch_server \
    --model meta-llama/Llama-3.1-8B-Instruct \
    --tp 1 \
    --port 30000

# TensorRT-LLM: Multi-step compilation
# Step 1: Convert model to TRT-LLM format
python convert_checkpoint.py \
    --model_dir /models/llama-3.1-8b \
    --output_dir /engines/llama-3.1-8b/checkpoint \
    --dtype float16

# Step 2: Build TensorRT engine
trtllm-build \
    --checkpoint_dir /engines/llama-3.1-8b/checkpoint \
    --output_dir /engines/llama-3.1-8b/engine \
    --max_batch_size 128 \
    --max_input_len 4096 \
    --max_seq_len 8192 \
    --gemm_plugin float16

# Step 3: Serve
python -m tensorrt_llm.serve \
    --model_dir /engines/llama-3.1-8b/engine \
    --port 8000

5.3 生产化配置

# vLLM production configuration
# serve_config.yaml
engine_args:
  model: "meta-llama/Llama-3.1-70B-Instruct"
  tensor_parallel_size: 2
  max_model_len: 32768
  gpu_memory_utilization: 0.92
  enable_prefix_caching: true
  max_num_seqs: 256
  quantization: "awq"
  enforce_eager: false  # Use CUDA graphs

serving_args:
  host: "0.0.0.0"
  port: 8000
  api_key: "${VLLM_API_KEY}"
  max_log_len: 100
  disable_log_stats: false
  uvicorn_log_level: "warning"

# Health check: GET /health
# Metrics: GET /metrics (Prometheus format)
# OpenAI API: POST /v1/chat/completions

六、高级功能

6.1 Speculative Decoding

维度 vLLM TGI SGLang TensorRT-LLM
Draft model
Medusa heads
Eagle
加速比 1.5-2x 1.3-1.8x 1.5-2.2x 1.5-2x

6.2 结构化输出 / Constrained Decoding

# SGLang: Native constrained decoding (fastest)
import sglang as sgl

@sgl.function
def extract_info(s, text):
    s += sgl.system("Extract structured information.")
    s += sgl.user(text)
    s += sgl.assistant(
        sgl.gen("output", regex=r'\{"name": "[^"]+", "age": \d+\}')
    )

# vLLM: Guided decoding via outlines
from vllm import LLM, SamplingParams

llm = LLM(model="meta-llama/Llama-3.1-8B-Instruct")

# JSON schema guided generation
from pydantic import BaseModel

class UserInfo(BaseModel):
    name: str
    age: int
    city: str

params = SamplingParams(
    temperature=0.0,
    max_tokens=256,
    guided_json=UserInfo.model_json_schema(),
)
outputs = llm.generate(["Extract user info from: ..."], params)

6.3 多模态推理支持

维度 vLLM TGI SGLang TensorRT-LLM
Vision (图片) LLaVA/Qwen-VL IDEFICS/LLaVA LLaVA/Qwen-VL 部分支持
音频 Whisper(有限) Whisper
视频
图片批处理

七、运维与可观测性

7.1 监控指标

指标 vLLM TGI SGLang TensorRT-LLM
Prometheus Triton 集成
Grafana 模板 社区 官方 社区 NVIDIA 模板
请求延迟分布
GPU 利用率
KV Cache 命中率 是(Radix)
队列深度
Token 吞吐量

7.2 故障处理

能力 vLLM TGI SGLang TensorRT-LLM
OOM 恢复 重启 重启 重启 重启
请求超时 可配置 可配置 可配置 Triton 配置
热更新模型
多副本负载均衡 外部(nginx) 外部 外部 Triton 内置
优雅关闭

八、选型决策

8.1 按场景推荐

场景 首选 理由
通用 LLM 服务 vLLM 最广模型支持,社区最大
聊天应用(共享前缀多) SGLang RadixAttention 前缀复用最优
NVIDIA GPU 极致优化 TensorRT-LLM 编译优化吞吐量最高
HuggingFace 生态 TGI 原生集成,Inference Endpoints
DeepSeek-V3 MoE SGLang 官方推荐框架
结构化输出需求 SGLang 约束解码原生最快
快速部署/测试 vLLM 一行 pip install 即可
Embedding 服务 vLLM 唯一支持 Embedding 的框架

8.2 综合评分

维度(权重) vLLM TGI SGLang TensorRT-LLM
吞吐量(25%) 8.0 7.0 9.0 9.5
延迟(20%) 8.0 7.5 9.0 9.5
易用性(20%) 9.5 8.0 9.0 5.0
模型支持(15%) 9.5 8.5 9.0 7.0
生态/社区(10%) 9.0 8.5 7.5 7.0
高级功能(10%) 8.0 7.0 9.0 8.0
加权总分 8.7 7.6 8.9 7.8

九、总结

LLM 推理框架的竞争正在从"谁更快"转向"谁在特定场景更优"。vLLM 以广泛兼容性和简易部署成为默认选择;SGLang 在前缀缓存和结构化输出上领先;TensorRT-LLM 在纯吞吐量上仍是王者但牺牲了灵活性;TGI 适合 HuggingFace 生态用户。

实际选型建议:先用 vLLM 快速验证,有性能瓶颈时按场景迁移到 SGLang 或 TensorRT-LLM


Maurice | maurice_wen@proton.me