vLLM:大模型推理的加速引擎,PagedAttention 颠覆显存管理

vLLM:大模型推理的加速引擎,PagedAttention 颠覆显存管理

大模型

📖 简介

vLLM 是当前最快的大模型推理引擎,PagedAttention 将 KV Cache 利用率从 20% 提升到 95%+,吞吐量达传统方案 10-24 倍。87k+ Stars,大模型推理的事实标准。

📝 详细介绍

vLLM:PagedAttention 重新定义大模型推理显存效率

大模型推理时,显存碎片和 KV cache 浪费是低吞吐量的根本原因。vLLM 用 PagedAttention 解决了这个问题,让单卡也能跑高并发推理,吞吐量比传统方案提升 2-4 倍。如果你正被显存限制推理成本,这值得你花十分钟了解。

指标数据
Stars41k+
语言Python / C++ / CUDA
协议Apache 2.0
最近更新2025-04-10(持续活跃)

项目背景

vLLM 由加州大学伯克利分校的 Sky Computing Lab(团队核心成员包括罗志强等)开发,最初为了应对大模型推理中显存管理的痛点。传统推理框架(如 Hugging Face Transformers)在服务多个请求时,KV cache 会占用大量连续显存,且 memory fragmentation 导致有效利用率仅 20%-40%。vLLM 的 PagedAttention 技术借鉴操作系统虚拟内存分页思想,将 KV cache 按页管理,消除碎片,实现接近零浪费的显存利用。

核心痛点:连续显存分配导致大量碎片,高并发场景下即使显存未满,新的请求也可能因找不到连续块被拒绝。

核心功能解析

PagedAttention:显存管理的操作系统级革新

vLLM 的核心是 PagedAttention,将 KV cache 切分成固定大小的页(Page),每个页不是连续存储,而是通过页表映射。这彻底解决了碎片问题:大序列可以分散在多个非连续页中,新请求可以填入任何空闲页,显存利用率接近 100%。调度时仅需维护一个页表,代价极小。

# vLLM 启动时默认使用 PagedAttention
python -m vllm.entrypoints.openai.api_server 
    --model meta-llama/Llama-2-7b-chat-hf 
    --max-num-seqs 256   # 高并发下也能保持低显存

# 在 API 调用中,用户无需关心显存管理细节
curl http://localhost:8000/v1/completions 
    -H "Content-Type: application/json" 
    -d '{"model": "meta-llama/Llama-2-7b-chat-hf", "prompt": "Hello", "max_tokens": 100}'

Continuous Batching:动态批处理减少等待

传统批处理(静态批处理)需要等一个 batch 所有序列完成才能返回或开始新请求。Continuous Batching 允许在序列完成后立即退出 batch,空闲槽位立即被新请求填充,消除了尾部延迟。vLLM 的调度器会在每个推理步骤根据当前活跃序列动态重组计算图,实现流水线无空转。

# 启动时指定调度策略
python -m vllm.entrypoints.openai.api_server 
    --model TheBloke/Llama-2-13B-chat-GPTQ 
    --gpu-memory-utilization 0.9 
    --max-num-batched-tokens 4096   # 控制一次 batch 的 token 总数,避免 OOM

量化与格式原生支持

vLLM 内置对 AWQGPTQSqueezeLLM 等量化格式的原生加载,无需额外 converter。还支持 Flash Attention v2,在 Ampere 及以上架构上自动启用,进一步加速 attention 计算。

# 加载量化模型直接指定量化方法
python -m vllm.entrypoints.openai.api_server 
    --model TheBloke/Llama-2-7B-Chat-GPTQ 
    --quantization gptq

快速上手

# 安装(推荐 Python 3.10+,CUDA toolkit 11.8+)
pip install vllm

# 启动 OpenAI 兼容 API 服务(自动下载模型权重)
python -m vllm.entrypoints.openai.api_server 
    --model meta-llama/Llama-2-7b-chat-hf 
    --port 8000

# 测试请求
curl http://localhost:8000/v1/completions 
    -H "Content-Type: application/json" 
    -d '{"model": "meta-llama/Llama-2-7b-chat-hf", "prompt": "What is vLLM?", "max_tokens": 50}'

# 更多功能:使用 Ray 做分布式推理
python -m vllm.entrypoints.openai.api_server 
    --model meta-llama/Llama-2-70b-chat-hf 
    --tensor-parallel-size 4   # 4 张 GPU 并行

技术亮点

vLLM 最让我佩服的设计决策是将操作系统级的内存管理思想直接搬到 GPU 显存上。传统框架(如 Transformers)为每个序列预分配连续 block,遇到碎片宁可直接报 OOM。PagedAttention 的页表开销极小(每页 4KB 大小,页表条目仅 8 字节),在 Llama 2-7B 上,页表只占显存的 0.1% 不到。更妙的是,它支持 copy-on-write:多个序列共享相同前缀时,页表条目可指向同一物理页,只在写入不同位置时才拷贝,这在公共前缀(如 Chat 场景的系统提示)下节省大量显存。

此外,vLLM 的调度器做了一个很聪明的“前缀缓存”:它将输入 prompt 的 token 做哈希,相同前缀的 token 可以复用 KV cache 页,不必重新计算。在实际多用户场景中(如前缀都是“You are a helpful assistant”),推理速度几乎翻倍。

同类对比

项目显存利用率批处理策略量化支持分布式框架依赖
vLLM (PagedAttention)95%+ (消除碎片)Continuous Batching原生 AWQ/GPTQ/SqueezeLLMRay TP/PP无(独立调度器)
Hugging Face TGI70-80% (连续分配)静态 + 动态拼接需外部转换自定义Transformers + HF Hub
NVIDIA TensorRT-LLM~90% (预调优)In-flight batching专用引擎内建多卡TensorRT
LightLLM类似 vLLM (页式)Continuous Batching部分简单TP自定义

简评:TGI 生态好但显存浪费严重;TensorRT-LLM 性能顶尖但编译配置复杂、不灵活;vLLM 在易用性和性能间做了最好的平衡。

总结

如果你是推理服务开发者部署大模型应用的 SRE,或者只是想在自己卡上跑个高并发 Chatbot,vLLM 是当前最推荐的推理引擎:安装一行命令,性能让 TGI 望尘莫及,开源生态活跃,社区贡献者包括 NVIDIA 工程师。唯一需要留意的是,它目前主要优化 LLM 的 decoder-only 架构,对于 encoder-decoder 模型支持有限——但对主流 Llama、Mistral、Falcon 系列来说,它就是最佳选择。

🚀

AI 项目推荐

大模型
标签
#大模型推理 #LLM Serving #PagedAttention #CUDA
浏览
👁️ 3
发布日期
2026-07-30