推理框架:vLLM/TGI 对比

部署大模型在线服务时,推理框架决定了吞吐与延迟。vLLM 与 Text Generation Inference(TGI)是当前最主流的两个开源方案,都用连续批处理(continuous batching)提升 GPU 利用率,并支持张量并行、权重量化与流式输出。选型时要在吞吐、生态、硬件支持之间权衡。

是什么

vLLM 由 Kwon 等人在 2023 年提出,核心创新是 PagedAttention,像操作系统管理内存分页一样管理注意力缓存(KV cache),减少显存碎片。TGI 是 Hugging Face 出品的推理服务器,同样支持批处理、张量并行与量化,且与 Transformers 生态无缝衔接。

为什么关注吞吐

大模型自回归生成时,每个请求都要缓存历史 KV,显存容易碎片化并限制并发。高效的 KV 管理能显著提升并发数,从而降低单位请求成本。在同样的硬件上,调度策略的差异可能带来数倍的吞吐差距,直接影响服务价格。

怎么用

vLLM 启动一个 OpenAI 兼容服务只需一行:

python -m vllm.entrypoints.openai.api_server \
  --model meta-llama/Llama-3.1-8B-Instruct

TGI 常用容器方式启动:

docker run -p 8080:80 \
  ghcr.io/huggingface/text-generation-inference:latest \
  --model-id meta-llama/Llama-3.1-8B-Instruct

两者都暴露兼容接口,便于替换与迁移。

对比要点

  • 量化:两者都支持 AWQ、GPTQ 等权重量化,TGI 还支持 FP8(在支持的硬件上)。
  • 生态:vLLM 接口贴近 OpenAI,易替换;TGI 与 Hugging Face 生态集成紧密。
  • 硬件:TGI 对部分加速卡(如 Intel Gaudi)有官方支持,vLLM 社区硬件覆盖广。
  • 调度:两者均以连续批处理为核心,差异更多在默认参数与可观测性。

注意点

  • 显存不足时优先开启权重量化与 KV 量化,而非盲目增大并发。
  • 长上下文会放大 KV 占用,需关注框架的 KV 管理策略。
  • 选型应结合硬件与生态,而非只看论文吞吐数字。

实践建议

选型时先用业务流量与上下文长度做压测,而不是只看论文吞吐数字。显存不足优先开启权重量化与 KV 量化,再考虑增大并发。长上下文会显著放大 KV 占用,需关注框架的 KV 管理策略与分页能力。若已深度使用 Hugging Face 生态,TGI 集成更顺;若要 OpenAI 兼容接口便于替换,vLLM 更方便。上线前用真实提示做延迟与成本基线。两者都支持连续批处理,但默认批处理参数不同,需按请求长度分布调优。监控层面应采集首字延迟、每 token 延迟与显存占用,避免只看平均吞吐。容器化部署时注意 GPU 拓扑与多卡并行配置。若团队规模小,优先选文档完善、社区活跃的框架,长期维护成本往往比微小吞吐差异更重要。在容量规划时,预留峰值缓冲,避免高并发下频繁显存溢出导致服务抖动。

小结

vLLM 以 PagedAttention 高效管理 KV 缓存,TGI 与 Hugging Face 生态融合紧密。两者都靠连续批处理提升吞吐,选型需结合量化需求、硬件与既有工具链。

参考与延伸阅读

本文累计阅读