本文深入解析了 vLLM 的 PagedAttention 技术它借鉴了操作系统虚拟内存分页管理的思想通过动态分配和共享物理 KV 块有效解决了传统 KV Cache 管理中的碎片问题。PagedAttention 显著提升了显存利用率高达 85-95%并通过 Copy-on-Write 和 Beam Search 等优化策略进一步节省显存同时支持多请求并行处理和显存不足时的优雅降级。文章还介绍了 vLLM 的分布式架构、新特性如前缀缓存、Chunked Prefill以及生产环境的关键配置参数调优建议旨在帮助程序员提升大模型推理效率。一、为什么 KV Cache 管理是大模型推理的瓶颈1.1 LLM 推理的两阶段一个常规的 LLM 推理过程分为两个阶段Prefill预填充和Decode解码生成。LLM 推理两阶段示意图Prefill 阶段将整段 prompt 输入模型一次性计算所有 token 的 Key 和 Value并将结果存入KV Cache。这样后续计算 Attention 时就不需要重复计算前面 token 的 KV 了。Decode 阶段基于 Prefill 的结果逐 token 生成response。每生成一个新 token就将其 KV 值追加到 Cache 中用于下一个 token 的计算。⚠️关键洞察Decode 阶段无法并行是推理延迟的主要来源。而 KV Cache 随着序列变长持续膨胀在高并发场景下成为显存占用的大头和主要瓶颈。1.2 显存压力有多大下图展示了一个 13B 模型在 A100 40GB GPU 上的静态显存分配显存分配图可以看到模型参数本身占据了大部分显存约 65%KV Cache 在单请求、短序列场景下占比约 30%。但这只是起步价——当同时处理多个长序列请求时KV Cache 会动态膨胀迅速耗尽剩余显存成为实际的瓶颈。1.3 传统分配方式的三大碎片问题传统框架通常按(batch_size, max_seq_len)预分配连续的矩形存储空间传统 KV Cache 分配这种静态预留方式会产生三种显存浪费碎片类型说明危害预留碎片(Reservation Fragment)Decode 阶段已分配但尚未使用的 KV 块潜在浪费无法挪作他用内部碎片(Internal Fragment)序列结束后仍未使用的预留空间彻底浪费永远无法回收外部碎片(External Fragment)分散的小块空闲空间无法被大请求使用导致有空间却装不下的悖论核心矛盾序列长度无法预知却要提前预留固定空间 → 必然导致浪费。vLLM 的实验数据显示传统框架的 KV Cache 显存利用率往往不足 50%而 vLLM 能将有效利用率提升至85-95%vLLM vs 其他框架显存利用率二、从操作系统虚拟内存到 PagedAttention2.1 操作系统虚拟内存一个精妙的类比PagedAttention 的设计灵感来自操作系统虚拟内存分页管理。理解这个类比是掌握 PagedAttention 的关键。1最原始的方式直接操作物理内存程序直接读写物理内存地址。单进程没问题多进程时• 每个进程都要考虑其他进程的内存布局• 耦合度极高开发困难2分段管理为每个进程分配连续空间分段管理操作系统为每个进程在物理内存上找一块连续空间。但当进程 2 释放后剩余空间碎片化进程 4需要连续大块内存无法加载——虽然总空闲内存足够但不连续。这与传统 KV Cache 的困境一模一样3分页管理化整为零动态映射分页管理核心思想• 将物理内存划分为固定大小的页Page• 进程的虚拟内存也按相同大小划分•按需加载用到哪页加载哪页•非连续存储物理上不连续虚拟上连续•通过页表Page Table维护映射关系这正是 PagedAttention 的精髓所在接下来我们将这一思想迁移到 GPU 显存管理上看看 vLLM 如何解决 KV Cache 的碎片难题。三、PagedAttention 核心原理3.1 核心概念对照表操作系统概念PagedAttention 对应概念作用进程Process请求Request一次推理任务虚拟内存页逻辑 KV 块Logical KV Block请求视角的连续存储物理内存页物理 KV 块Physical KV BlockGPU 显存上的实际存储页表Page Table块表Block Table逻辑块 → 物理块的映射3.2 PagedAttention 如何解决三种碎片碎片类型传统框架的问题PagedAttention 的解决方案预留碎片按max_seq_len静态预留未使用部分闲置按需分配物理块逻辑块未填满可继续填充新 token内部碎片序列结束后预留的剩余空间彻底浪费固定大小的物理块仅最后一个块可能存在少量浪费可控外部碎片要求连续空间导致有空间却装不下物理块非连续存储通过 Block Table 映射灵活排布3.3 单请求处理流程详解假设 prompt 为“Four score and seven years ago our”实际约 8-9 个 token取决于 tokenizerblock 大小设为 4。单请求 PagedAttention 流程Step 1: Prefill 阶段① 划分逻辑块• 按 block 大小 B4将 prompt 的 KV 值划分到逻辑块中• Block 0前 4 个 token 的 KV• Block 1接下来 3-4 个 token 的 KV可能未填满未填满的位置称为保留位Reservation后续 Decode 生成的 token 会填充到这里。② 分配物理块 建立映射• 通过 Block Table 记录映射关系• 逻辑块 0 → 物理块 7• 逻辑块 1 → 物理块 1• Block Table 同时记录每个物理块的填充数# filled③ 计算并存储 KV 值• 正常计算 prompt 的 KV 值• 按映射关系写入物理块Step 2: Decode 阶段 - 生成第 1 个 token① 注意力计算• 使用 KV Cache 计算 Attention•关键请求看到的是逻辑上连续的 KV 块• vLLM 后台通过 Block Table自动从物理上不连续的块中读取数据② 更新状态• 新 token 的 KV 值写入逻辑块• 更新 Block Table 中的填充数③ 检查是否需要新块• 若当前逻辑块已满分配新的逻辑块• 通过 Block Table 映射到新的物理块Step 3: 继续 Decode重复上述过程直到生成结束符eos。3.4 多请求并行处理多请求处理多个请求共享同一组物理块池各自维护自己的 Block Table 和逻辑块视图。这种设计天然支持•动态扩容用多少占多少无内部碎片•灵活排布物理块不连续无外部碎片•按需分配无预留碎片四、高级特性Copy-on-Write 与解码策略优化4.1 Parallel Sampling共享 Prompt分叉生成场景同一个 prompt要求模型生成 3 个不同答案。传统做法的问题为每个 sample 预分配(1, max_seq_len)的连续空间prompt 部分的 KV Cache重复存储 3 份。vLLM 的做法Copy-on-Write写时复制CoWParallel SamplingPrefill 阶段• Sample A1 和 A2 的 prompt 完全相同• 各自有独立的逻辑块Block 0, Block 1• 但映射到相同的物理块Block 7, Block 1• 物理块的引用计数Ref Count 2Decode 阶段 - 生成不同 token• A1 生成 “fathers”A2 生成 “mothers”• 两个 token 不同 →触发 Copy-on-Write• 物理块 1 被复制A1 指向新块Block 3A2 保持原块Block 1• 更新引用计数Block 1 的 Ref Count 减为 1Block 3 的 Ref Count 设为 1✅收益Prompt 部分完全共享仅在生成内容分叉时才复制极大节省显存。4.2 Beam Search动态剪枝及时释放Beam SearchBeam Search 中每个时刻保留 top-k 个候选序列大量前缀 KV Cache 可以共享。vLLM 的优势共享前缀所有候选序列共享 prompt 的 KV 块动态剪枝被淘汰的候选序列其独占的 KV 块立即释放引用计数自动管理当 Ref Count 降为 0物理块自动回收图中从右向左看时间线Block 5 和 Block 8 在当前时刻被淘汰其对应的物理内存立即释放。向左追溯Block 4 也因 Block 8 被淘汰而释放一路回溯到共享的 Block 0。五、调度与抢占显存不足时的优雅降级5.1 核心调度原则当 GPU 显存不足时vLLM 遵循FCFS先来的请求优先服务抢占策略后来的请求先被抢占Preemption为什么不能让请求抢来抢去• 如果所有请求都争夺资源最终没有一个能完成• 暂停部分请求让先来的请求跑完才能尽快释放资源5.2 抢占后的两种恢复策略策略机制适用场景代价Swapping交换将被抢占请求的 KV 块从 GPU swap 到 CPU 内存长序列、KV Cache 大CPU↔GPU 带宽开销Recomputation重计算直接释放 KV 块请求回退到等待队列后续重新做 Prefill短序列、KV Cache 小重新计算的开销vLLM 的选择逻辑• 默认优先尝试 Swapping• 若 CPU 内存也不足或序列较短选择 Recomputation 更划算• 现代版本v0.6支持Partial Preemption只 swap 部分块而非 all-or-nothing5.3 抢占流程图新请求到达 → 检查显存是否充足 ↓ 充足直接调度执行 ↓ 不足暂停最后到达的请求Preemption ↓将其 KV 块 Swap 到 CPU / 或标记为需 Recompute ↓释放 GPU 显存 → 继续调度新请求/恢复早先请求 ↓早先请求完成 → 检查资源 → 恢复被抢占请求六、分布式场景下的 vLLM 架构分布式架构在多 GPU 场景中组件职责中央调度器Scheduler统一管理所有 GPU 的 Block TableCache Engine各卡管理本卡的物理 KV 块Worker各卡执行模型计算Tensor ParallelismTP场景• 各卡输入数据相同负责不同 Attention Head 的计算•共享同一张 Block Table逻辑映射相同• 各卡物理块存储不同 Head 的 KV 数据Pipeline ParallelismPP场景• 模型按层切分到不同 GPU• 各 Stage独立维护 Block Table• Scheduler 协调跨 Stage 的块分配与释放现代 vLLMv0.7已支持 TP PP 混合并行Scheduler 会自动协调多节点的 Block 分配。七、PagedAttention 的演进与新特性自论文发表以来vLLM 持续迭代以下是与 PagedAttention 相关的重要更新7.1 Prefix Caching前缀缓存•原理将常见 prompt 前缀如 system message的 KV 块缓存到物理内存•收益相同前缀的请求无需重复计算 Prefill•实现物理块增加哈希标识命中缓存时直接复用•启用方式启动参数添加--enable-prefix-caching7.2 Chunked Prefill•问题长 prompt 的 Prefill 阶段会阻塞所有 Decode导致尾部延迟Tail Latency激增•方案将长 prompt 切分为多个 chunk与 Decode 请求合并到同一个 batch 中交错执行•与 PagedAttention 结合每个 chunk 作为独立的逻辑块管理无缝衔接到已有的 Block Table 中•收益避免长序列独占GPU保持 Decode 的低延迟7.3 与 FlashAttention-3 的集成• FlashAttention-3 优化了 GPU SRAM → HBM 的访存效率• vLLM 将 PagedAttention 的块管理与 FlashAttention-3 的 kernel 融合•收益不仅省显存计算速度也更快7.4 量化与压缩技术说明启用参数FP8 KV Cache将 KV 值量化为 FP8物理块容量减半--kv-cache-dtype fp8INT8/INT4进一步压缩适合长上下文场景需配合特定量化方案稀疏注意力结合 PagedAttention跳过不重要的 KV 块实验特性⚠️注意量化虽能节省显存但可能轻微影响模型精度建议在特定任务上验证后再部署到生产环境。7.5 Speculative Decoding推测解码•原理使用小模型Draft Model快速生成候选 token大模型验证并修正•与 PagedAttention 结合Draft 和 Target 模型共享 Prefix 的 KV Cache通过 Block Table 的引用计数机制高效管理•收益在保持输出质量的前提下吞吐量提升 1.5-2.5 倍八、实践建议vLLM 关键配置参数8.1 Block Size 选择Block Size 是关键调参点必须是 2 的幂次如 4, 8, 16, 32, 64Block Size优势劣势适用场景小4-8碎片少利用率高Block Table 开销大kernel 效率低短序列、高并发中16-32平衡平衡通用场景推荐默认 16大64kernel 效率高管理开销小内部碎片多长序列、低并发建议• 默认 16 适用于大多数场景• 若平均序列长度 50可尝试 8• 若平均序列长度 2000可尝试 32 或 648.2 其他关键启动参数参数说明推荐值--gpu-memory-utilizationGPU 显存使用比例上限0.85-0.95留有余量防止 OOM--max-num-seqs最大并发请求数根据模型大小和序列长度调整--swap-spaceCPU 交换空间大小GB4-16内存充足时建议 8--enable-prefix-caching启用前缀缓存长 system prompt 场景必开--enable-chunked-prefill启用 Chunked Prefill长 prompt 高并发场景建议开启--num-scheduler-steps调度器每次迭代步数1默认或更大值降低调度开销8.3 生产环境调优 checklist监控指标显存利用率、KV Cache 命中率、抢占次数、Swap 带宽避免 OOMgpu-memory-utilization不要设为 1.0预留 5-10% 给临时激活值长序列优化开启 Prefix Caching Chunked Prefill 适当增大 Block Size高并发优化减小 Block Size 增加 Swap Space 启用 Continuous Batching九、总结PagedAttention 的设计哲学传统方法PagedAttention静态预留连续存储动态分配非连续存储“先占坑再使用”“用多少占多少”每个请求孤立管理全局物理块池共享复用碎片多、利用率低碎片少、利用率高85-95%无法处理显存不足Swapping/Recomputation 优雅降级PagedAttention 的本质将操作系统几十年沉淀的虚拟内存管理智慧迁移到 GPU 显存管理上让大模型推理服务像现代 OS 一样高效、灵活、健壮。最后对于正在迷茫择业、想转行提升或是刚入门的程序员、编程小白来说有一个问题几乎人人都在问未来10年什么领域的职业发展潜力最大答案只有一个人工智能尤其是大模型方向当下人工智能行业正处于爆发式增长期其中大模型相关岗位更是供不应求薪资待遇直接拉满——字节跳动作为AI领域的头部玩家给硕士毕业的优质AI人才含大模型相关方向开出的月基础工资高达5万—6万元即便是非“人才计划”的普通应聘者月基础工资也能稳定在4万元左右。再看阿里、腾讯两大互联网大厂非“人才计划”的AI相关岗位应聘者月基础工资也约有3万元远超其他行业同资历岗位的薪资水平对于程序员、小白来说无疑是绝佳的转型和提升赛道。对于想入局大模型、抢占未来10年行业红利的程序员和小白来说现在正是最好的学习时机行业缺口大、大厂需求旺、薪资天花板高只要找准学习方向稳步提升技能就能轻松摆脱“低薪困境”抓住AI时代的职业机遇。如果你还不知道从何开始我自己整理一套全网最全最细的大模型零基础教程我也是一路自学走过来的很清楚小白前期学习的痛楚你要是没有方向还没有好的资源根本学不到东西下面是我整理的大模型学习资源希望能帮到你。扫码免费领取全部内容1、大模型学习路线2、从0到进阶大模型学习视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、 入门必看大模型学习书籍文档.pdf书面上的技术书籍确实太多了这些是我精选出来的还有很多不在图里4、AI大模型最新行业报告2026最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5、面试试题/经验【大厂 AI 岗位面经分享107 道】【AI 大模型面试真题102 道】【LLMs 面试真题97 道】6、大模型项目实战配套源码适用人群四阶段学习规划共90天可落地执行第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容3、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】