推理引擎对比
vLLM vs SGLang vs TensorRT-LLM vs llama.cpp 特性与适用场景
快速选型测试
回答 3 个问题,获取推荐引擎
1. 你拥有什么硬件?
2. 你最看重什么?
3. 你的部署规模是?
核心指标对比
| 引擎 | 吞吐量 | 延迟 (5=低) | 上手难度 (5=容易) | 硬件支持 | 量化支持 | 最适合 |
|---|---|---|---|---|---|---|
| vLLM | ●●●●● | ●●●●● | ●●●●● | NVIDIA GPU, AMD GPU, CPU, TPU | FP8, INT8, INT4 (AWQ), GPTQ, GGUF(有限支持) | 需要 OpenAI 兼容 API 的高并发生产服务 |
| SGLang | ●●●●● | ●●●●● | ●●●●● | NVIDIA GPU, AMD GPU | FP8, INT8, INT4 (AWQ), GPTQ | 复杂提示词流水线、结构化输出与多轮前缀复用场景 |
| TensorRT-LLM | ●●●●● | ●●●●● | ●●●●● | NVIDIA GPU | FP8, INT8, INT4 (AWQ), NVFP4 | 纯 NVIDIA 环境下追求极限性能的团队(有工程投入能力) |
| llama.cpp | ●●●●● | ●●●●● | ●●●●● | CPU, NVIDIA GPU, AMD GPU, Apple Silicon | GGUF Q2, GGUF Q4, GGUF Q5, GGUF Q6, GGUF Q8 | 本地 / 边缘设备、个人电脑、CPU 或 Mac 上运行模型 |
功能矩阵
✓ 支持 · ~ 部分支持 · ✗ 不支持
| 功能 | vLLM | SGLang | TensorRT-LLM | llama.cpp |
|---|---|---|---|---|
| 连续批处理 | ✓ | ✓ | ✓ | ~ |
| OpenAI 兼容 API | ✓ | ✓ | ~ | ✓ |
| 前缀缓存 | ✓ | ✓ | ✓ | ~ |
| 结构化 / 约束输出 (JSON) | ✓ | ✓ | ~ | ✓ |
| 张量并行(多卡) | ✓ | ✓ | ✓ | ~ |
| 投机解码 | ✓ | ✓ | ✓ | ✓ |
| 多模态(视觉)模型 | ✓ | ✓ | ✓ | ~ |
| LoRA 适配器热加载 | ✓ | ✓ | ✓ | ~ |
| 纯 CPU 运行 | ~ | ✗ | ✗ | ✓ |
| Apple Silicon (Metal) | ✗ | ✗ | ✗ | ✓ |
| AMD GPU (ROCm) | ✓ | ✓ | ✗ | ✓ |
| 一条 pip 命令即可安装 | ✓ | ✓ | ✗ | ✓ |
决策流程图
开始:要在哪里运行模型?
│
├─ 纯 CPU / Mac / 边缘设备?
│ └─ 是 → llama.cpp(GGUF 量化,单二进制即可运行)
│
└─ 有 GPU 服务器?
│
├─ 非 NVIDIA(AMD ROCm)?
│ └─ 是 → vLLM 或 SGLang(TensorRT-LLM 不支持 AMD)
│
└─ NVIDIA GPU?
│
├─ 追求极限性能且愿意投入工程成本?
│ └─ 是 → TensorRT-LLM(配合 Triton 服务器)
│
└─ 否 → 主要场景是什么?
│
├─ 多轮对话 / 结构化输出 / 前缀复用密集
│ └─ → SGLang(RadixAttention 优势明显)
│
└─ 通用高并发 API 服务
└─ → vLLM(生态最成熟,默认之选)