内容提要
本文介绍8个LLM推理框架:vLLM通过PagedAttention与连续批处理实现高吞吐;SGLang擅长结构化与多步提示;MAX支持CPU/GPU及内核级调优;TensorRT-LLM在NVIDIA硬件上速度最快;LMDeploy专注量化与并发;llama.cpp轻量可移植;Ollama适合本地实验;MLC-LLM支持多平台边缘部署。选型应结合流量、硬件与部署目标,并在自有模型上实测延迟与成本。
延伸解读
从实验到生产:推理框架解决的核心问题
文章指出,在笔记本中运行模型一次只处理一个请求,而生产端点需同时处理多个请求,每个请求都需要GPU内存用于KV缓存、批处理槽位和响应流。纯PyTorch或Transformers虽能服务模型,但需自行构建请求调度、缓存管理和API层。推理框架填补了这些空白,位于模型与应用之间,覆盖令牌生成、KV缓存管理、请求批处理和API接口,使同一GPU能以更低延迟服务更多并发请求,且无需更改模型。
选型关键:流量模式、硬件与部署目标
文章强调,选择推理框架应基于流量模式、硬件和部署目标,并在自有模型上测量延迟和成本。例如,vLLM适合高吞吐服务,支持多种硬件;TensorRT-LLM在NVIDIA硬件上速度最快;Ollama适合本地实验,但面向多用户时vLLM或SGLang更合适;MLC-LLM适合多平台边缘部署。因此,没有通用最佳框架,需结合具体场景实测。
量化与并发:LMDeploy和Ollama的权衡
LMDeploy专注于解码吞吐量和量化,支持4位AWQ等权重量化及INT8/INT4 KV缓存量化,降低大模型内存占用,并支持自动前缀缓存。Ollama则通过OLLAMA_NUM_PARALLEL设置处理并行请求,内存按并行数乘以上下文长度增长,适合单用户或小团队。若需服务大量并发用户,vLLM或SGLang的页式KV缓存管理和连续批处理更具优势。
Q&A
LLM推理框架主要解决哪些问题?
推理框架位于模型和应用之间,负责令牌生成、KV缓存管理、请求批处理和API接口,让你无需为每个模型自行构建这些机制。使用合适的框架,同一GPU可以更低延迟服务更多并发请求,且无需修改模型。
vLLM为什么适合高吞吐量服务?
vLLM使用PagedAttention以小块管理KV缓存内存,能在同一GPU上容纳更多并发请求;支持连续批处理,新请求可加入正在运行的批次;提供OpenAI兼容服务器,现有客户端代码通常无需更改;支持NVIDIA、AMD、Intel GPU以及CPU和TPU。
SGLang在什么场景下更有优势?
SGLang适合具有复杂提示逻辑的工作负载,如多步或分支生成。它协同设计服务后端和提示前端,使用RadixAttention跨共享前缀的请求复用KV缓存,支持结构化输出和约束解码(适用于工具调用和JSON输出),还能通过SGLang Diffusion服务扩散模型。
TensorRT-LLM有哪些针对NVIDIA硬件的优化?
TensorRT-LLM基于NVIDIA TensorRT生态系统,针对NVIDIA芯片的低延迟推理。支持飞行中批处理和带块重用的分页KV缓存;支持低精度量化,包括H100及之后GPU的FP8、Blackwell GPU的FP4以及INT4 AWQ;可通过专用后端集成到Triton推理服务器等NVIDIA-centric MLOps栈中。
Ollama适合什么规模的使用?
Ollama适合单用户和小团队工作负载。它几乎无需设置,通过简洁的CLI处理模型拉取、版本管理和本地服务;通过OLLAMA_NUM_PARALLEL设置处理每个模型的并行请求,并通过OLLAMA_MAX_QUEUE排队额外请求;内存划分为固定并行槽,内存使用随并行设置乘以上下文长度增长。对于大量同时用户,vLLM或SGLang更合适。
如何选择适合的LLM推理框架?
根据流量模式、硬件和部署目标选择,并在自有模型上测量延迟和成本。例如,高吞吐量服务选vLLM,结构化多步提示选SGLang,NVIDIA硬件追求最快速度选TensorRT-LLM,量化并发服务选LMDeploy,轻量可移植选llama.cpp,本地实验选Ollama,多平台边缘部署选MLC-LLM。