Skip to content

推理框架深度对比

LLM 推理框架是将模型部署到生产环境的核心基础设施。从云端高吞吐到端侧边缘部署,不同框架在架构、优化策略和场景适用性上差异显著。本页深度对比主流推理框架的架构原理、性能基准与选型指南。

对比概览

维度vLLMTensorRT-LLMTGIllama.cppOllamaSGLang
开发方UC Berkeley / LMSYSNVIDIAHugging FaceggerganovOllamaLMSYS / Berkeley
开源协议Apache 2.0Apache 2.0Apache 2.0MITMITApache 2.0
主要优化PagedAttention (高吞吐)TensorRT (极致性能)安全生产级GGUF 量化 (端侧)一键部署RadixAttention (编排优化)
吞吐量 (QPS)★★★★★★★★★★★★★★☆★★☆☆☆★★☆☆☆★★★★★
延迟 (TTFT)极低
量化支持AWQ / GPTQ / FP8FP8 / INT8 / INT4GPTQ / AWQGGUF (Q4/Q5/Q8)GGUFFP8 / GPTQ / AWQ
批处理 (Batch)Continuous BatchingIn-flight BatchingContinuous Batching有限有限Continuous Batching
并行策略TP / PP / DPTP / PPTP / PPTP / PP / DP
支持模型几乎所有主流模型几乎所有Llama/Qwen/Mistral 等主流模型几乎所有
API 格式OpenAI-compatibleTritonOpenAI-compatible自定义 / OAI自定义 / OAIOpenAI-compatible
部署难度高 (需编译)极低
最佳场景云端高并发NVIDIA GPU 极致性能企业生产环境端侧/边缘本地开发复杂编排应用

架构深度分析

vLLM — PagedAttention 革命

vLLM 的核心创新是 PagedAttention,将操作系统的虚拟内存管理思想应用到 LLM 推理中的 KV Cache 管理:

特性说明
分块管理将 KV Cache 分为固定大小的块 (blocks),像操作系统分页那样管理
动态分配根据实际需求动态分配和释放块,避免预分配浪费
内存共享通过复制与写时复制 (CoW) 实现跨请求的 KV Cache 共享
吞吐量提升相比传统方法提升 2-4x

vLLM v0.5+ 新特性 (2024-2025):

  • Prefix Caching: 缓存常用提示词的 KV Cache,加速同类请求
  • Chunked Prefill: 将大提示词分块处理,降低 TTFT
  • Speculative Decoding: 支持推测解码加速
  • Pipeline Parallelism: 支持流水线并行

适用: 云端生产环境、高并发 API 服务、需要灵活模型切换的场景。

TensorRT-LLM — NVIDIA 极致性能

TensorRT-LLM 是 NVIDIA 官方推理框架,通过编译时优化实现最高性能:

特性说明
编译优化将模型编译为高度优化的 CUDA kernel,充分利用 Tensor Core
FP8 支持充分利用 Hopper (H100) 和 Ada (RTX 4090) 架构的 FP8 精度
In-flight Batching在请求处理过程中动态批次调度,比 Continuous Batching 更精细
性能优势同等硬件下通常比 vLLM 快 10-30%

部署复杂度:

bash
# 需要编译模型为 TensorRT 引擎格式
# 支持的量化格式有限 (FP8/INT8/INT4)
# 需要熟悉 NVIDIA 生态工具链

适用: NVIDIA GPU 环境、对延迟和吞吐有极致追求、有运维团队处理编译的场景。

TGI — Hugging Face 生产级

Text Generation Inference (TGI) 是 Hugging Face 的官方推理服务,强调安全与生态整合

特性说明
安全特性内置输入验证、流量限制、日志记录
生态整合与 Hugging Face Hub、Inference Endpoints 无缝对接
量化支持GPTQ、AWQ、BitsAndBytes 动态量化
模型加载自动从 Hugging Face Hub 下载和缓存
监控内置 Prometheus metrics,支持 Grafana 监控

TGI 的局限: 吞吐量略低于 vLLM;部分高级优化功能需要企业版。

适用: 使用 Hugging Face 生态的团队、需要安全和监控功能的企业环境。

llama.cpp — 端侧推理先驱

llama.cpp 是端侧推理的开源标准,以跨平台和无依赖为核心:

特性说明
GGUF 格式专为量化模型设计的二进制格式,支持 Q4/Q5/Q8 等多种精度
跨平台CPU (x86/ARM)、GPU (CUDA/Metal/Vulkan)、WebAssembly
无依赖单一二进制文件,无需 Python 环境
社区极其活跃,支持模型最广
量化选项Q4_0、Q4_K_M、Q5_K_M、Q6_K、Q8_0、F16 等

性能特点:

  • CPU 上可运行 7B 模型 (Q4 量化,速度 5-20 tokens/s)
  • Apple Silicon 上通过 Metal 加速表现优秀
  • 支持推测解码 (speculative decoding) 加速

适用: 端侧/边缘部署、私有化部署、资源受限环境、需要跨平台支持。

Ollama — 本地部署极简

Ollama 在 llama.cpp 之上提供了更简单的体验:

特性说明
一行命令ollama run llama3 即可运行模型
模型库内置丰富的预置模型,自动下载
API 服务内置 OpenAI-compatible API 服务
多平台macOS、Linux、Windows 原生支持
Modelfile类似 Dockerfile 的模型定义格式

局限: 吞吐量低于专业框架;无分布式支持;适合开发而非生产。

适用: 开发者本地开发、原型验证、小型部署、非技术用户。

SGLang — 编排优化新秀

SGLang 是从 vLLM 团队分支出来的新框架,以程序化编排为核心:

特性说明
RadixAttention重用跨请求的公共 KV Cache,适合多轮对话
编排优化支持复杂的 LLM 程序化编排(分支、循环、并行)
性能在多轮对话场景下比 vLLM 快 2-5x
兼容支持 vLLM 的 PagedAttention 和 OpenAI API

SGLang 编排示例:

python
import sglang as sgl

@sgl.function
def multi_turn_qa(s, question):
    s += sgl.system("You are a helpful assistant.")
    s += sgl.user(question)
    s += sgl.assistant(sgl.gen("answer", max_tokens=256))
    # 自动重用 system prompt 的 KV Cache

适用: 需要复杂程序化控制的应用(如 Agent、多轮对话、思维链)。

性能基准

吞吐量对比(Llama-3-70B,8xA100)

框架吞吐量 (tokens/s)相对基准
TensorRT-LLM3,200+1.3x
vLLM2,500+1.0x (基准)
SGLang2,400+0.96x
TGI2,000+0.8x
llama.cpp (GPU)800+0.32x
Ollama700+0.28x

注:数据为示意性,实际性能依赖硬件、模型和配置。

延迟对比(TTFT - Time To First Token)

框架TTFT (ms)说明
TensorRT-LLM15-30编译后最优
vLLM20-40动态批次调度
SGLang20-40RadixAttention 重用
TGI25-50安全检查开销
llama.cpp50-200依赖 CPU/GPU 比例
Ollama60-250简化封装开销

内存效率对比

框架KV Cache 管理内存浪费长上下文支持
vLLMPagedAttention极低优秀
TensorRT-LLMIn-flight Batching优秀
TGIContinuous Batching良好
SGLangRadixAttention极低优秀 (重用优化)
llama.cpp简单缓冲一般
Ollama简单缓冲一般

量化与精度支持

框架FP16FP8INT8INT4 (GPTQ)INT4 (AWQ)GGUF
vLLM
TensorRT-LLM
TGI
llama.cpp
Ollama
SGLang

关键洞察: GGUF 是端侧专用格式,云端框架不支持。如果需要在云端和端侧之间共享模型,需要维护两套量化版本。

决策矩阵

场景推荐框架理由
云端高并发 API 服务vLLM生态最好,支持最广,稳定性高
NVIDIA GPU 极致性能TensorRT-LLM编译后最快,FP8 优化
企业生产环境TGI安全、监控、HF 生态
端侧/边缘部署llama.cpp跨平台,无依赖,资源敏感
开发者本地开发Ollama一键安装,极简体验
复杂 Agent/多轮对话SGLangRadixAttention,编排优化
需要程序化控制SGLang支持分支、循环、并行
混合部署(云+端)vLLM + Ollama分别对应不同场景
长上下文场景 (>128K)vLLM / SGLangPagedAttention 内存效率最优
快速原型验证Ollama分钟级部署

框架组合策略

生产环境中常见的多层次部署:

云端生产:TensorRT-LLM / vLLM → 高并发 API
开发测试:Ollama → 本地快速迭代
端侧部署:llama.cpp → 设备本地推理
Agent 服务:SGLang → 复杂编排优化

技术趋势

  1. FP8 普及: Hopper 架构推动 FP8 量化成为标配,TensorRT-LLM 和 vLLM 均已支持
  2. 推测解码标准化: vLLM 、SGLang 等框架开始原生支持推测解码
  3. 长上下文优化: Prefix Caching、Chunked Prefill 等技术降低长文本处理成本
  4. 端侧性能提升: llama.cpp 通过 Metal/CUDA 加速,端侧速度持续提升
  5. 编排流抽象: SGLang 等框架推动 LLM 程序化编排的标准化

相关页面

参考来源

  • Kwon et al. (2023). "Efficient Memory Management for Large Language Model Serving with PagedAttention." (vLLM)
  • NVIDIA (2024). "TensorRT-LLM User Guide."
  • Hugging Face (2024). "Text Generation Inference Documentation."
  • ggerganov (2024). "llama.cpp: Port of Facebook's LLaMA model in C/C++."
  • Ollama (2024). "Ollama Documentation."
  • Zheng et al. (2024). "SGLang: Efficient Execution of Structured Language Model Programs."

AI Knowledge Base — 持续积累