重温 vLLM 中的 PagedAttention
vLLM introduced PagedAttention, which borrows the paging abstraction that operating systems use for RAM and applies it to the GPU’s KV cache. During LLM inference, the KV cache – the stored key and value tensors for all previous tokens – is the dominant memory consumer. Managing it efficiently is the central challenge of high-throughput inference.vLLM 引入了 PagedAttention 技术该技术借鉴了操作系统为内存RAM设计的分页抽象机制paging abstraction并将其应用于 GPU 的 KV 缓存。在大语言模型推理过程中KV 缓存——即所有先前 token 的存储KV张量——是主要的内存消耗者。高效管理 KV 缓存是高吞吐量推理的核心挑战KV Cache 计算公式BF16 每个数值占 2 ByteMHA → MQA → GQAMHA 多头注意力原始标准LLaMA1 7B/13B 用Multi-Head AttentionQ、K、V 头数量完全相等40 个 Q 头 40 个 K 头 40 个 V 头。推理时 KV Cache 要存和 Q 一样多的 KV 头显存占用极大就是 KV 公式里的 H 会很大MQA 多查询注意力极端简化Multi-Query Attention很多 Q 头 共享同一组 K/V 头。例40 个 Q 头共用 1 个 K 头 1 个 V 头。KV Cache 极小但精度掉得比较明显GQA 分组查询注意力LLaMA2/3 70B、大模型主流方案Grouped-Query AttentionGQA 分组查询注意力MHA 和 MQA 的折中方案把全部 Query 头分成若干组每一组内所有 Q 头共用同一对 K/V 头KV 头数量远少于 Q 头但比 MQA 的单 KV 头多精度损失可控Llama3-70B 真实配置Query 头总数128 个分成 16 组每组 8 个 Q 头每组对应 1 组 KV 头所以 KV 头 H 8GQA 优点KV 头变少KV Cache 显存占用暴跌推理吞吐大幅提升相比 MQA分组保留更多 KV 信息模型能力、生成质量衰减很小训练、推理框架原生支持vLLM、TensorRT-LLM、Transformers缺点训练成本比纯 MHA 略高小模型7B 及以下一般不用 GQA收益不明显还是 MHAKV Cache Fragmentation 的问题fragmentationˌfræɡmenˈteɪʃnn. 破碎分裂分段储存传统推理系统会为每条请求序列的 KV Cache 预分配一块连续显存contiguous memory分配大小按模型支持的最大序列长度预留。这种朴素分配方式会造成两类显存浪费内部碎片Internal fragmentation一条实际只生成 500 个 token 的对话却独占一块预留 4096 token 容量的连续显存块剩余 3596 个 token 对应的缓存空间全程闲置造成显存空洞浪费。外部碎片External fragmentation大量对话请求执行完毕释放显存后空闲显存会分裂成大量零散、不连续的小块。此时若新到来一条长序列请求即便整体空闲显存总量充足也找不到一块足够大的连续内存来完成分配导致请求无法执行。工程实测采用这种简单预分配方案时GPU 显存实际利用率通常仅 20%–40%PagedAttention – Virtual Memory for KV Cachesanalogousəˈnæləɡəsadj. 相似的类似的器官同功的PagedAttention (Kwon et al., 2023) borrows the paging abstraction from operating systems. Instead of one contiguous block per sequence, the KV cache is carved into fixed-size pages (blocks), and an indirection table—analogous to a CPU page table—translates each sequence’s logical token positions into scattered physical GPU memory addresses.PagedAttentionKwon 等2023借鉴了操作系统中的分页抽象机制。与每个序列sequence对应一个连续区块不同KV缓存被划分为固定大小的页面块并通过一个间接表类似于CPU的页表将每个序列中逻辑令牌的位置映射到分散的GPU物理内存地址上Block size块大小通常每块存储 16 个 token可配置调参。单块存储元素总量公式16 × 2 × L × H × d16块内 token 数量2Key Cache Value Cache 两份缓存Block table块映射表每条对话序列独立维护一张映射表建立逻辑块编号 → GPU 显存池内物理块编号的对应关系作用逻辑上连续的 KV 序列底层可以分散存储在不连续的物理显存块中Physical block pool物理块显存池提前预分配一批固定尺寸的显存块统一管理空闲块链表分配操作复杂度为 O(1)需要新块时直接从空闲链表头部取出一块即可无内存拷贝开销Attention kernel注意力计算内核计算注意力时依靠块映射表从多个不连续的物理显存位置收集分散的 KV 块数据完成计算Llama3-70B BF16 中L80,H8,d128BF16 每个元素占 2 Byte单块总字节为5MB4096 token 总 KV 显存单序列总块数256块PagedAttention的好处近乎零显存浪费Near-zero waste内部碎片被严格限制每条序列最多只会存在1 块未填满的分页最后一块。若分页大小为 16 token单条序列最坏仅浪费 15 个 token 对应的 KV 空间损耗可忽略不计同时彻底消除外部碎片 —— 所有分页尺寸统一、可互相复用对比传统方案传统预分配整块 4096token 缓存短会话会浪费数千 token 空间分页仅末尾一块有少量空洞动态按需分配Dynamic allocation序列随着 token 生成按需申请分页无需提前预知整条对话最终长度。这对大模型生成任务至关重要因为模型输出 token 数量无法提前确定优势不用上线前强制设定全局最大序列长度不会为未知长文本预留大量闲置显存前缀共享 Prefix sharing写时复制 copy-on-write多条拥有相同前置文本的会话例如统一系统提示词可以共用这套前缀对应的物理分页。多条会话的块映射表仅需同时指向同一批物理显存块当某条会话在前缀后生成新内容、需要修改共享分页时会触发写时复制机制单独拷贝一份分页供该会话独立使用场景固定 1000 token 系统提示词同时在线 128 位并发用户沿用 Llama3-70B 单 token 占用 327680 字节参数不开启前缀共享所有用户独立存储系统提示词 KV 缓存128 × 1000 × 327680 ÷ 10^9 ≈ 42 GB开启前缀共享仅存储 1 份系统提示词 KV 缓存 1 × 1000 × 327680 ÷ 10^9 ≈ 0.33 GB显存节省共享前缀部分显存占用直接缩减约 128 倍显存交换抢占Preemption via swapSwap 交换vLLM PagedAttention 原生支持当 GPU 显存耗尽时vLLM 可对低优先级会话执行抢占将该会话全部 KV 分页交换至 CPU 内存也可直接丢弃分页后续需要时重新计算 KV。该功能仅在分页架构下可行传统连续整块分配方案交换时必须拷贝整块巨大缓存开销极高落地价值实现 GPU 显存软扩容提升系统并发承载上限避免直接 OOM 报错GPU 显存全部物理块被占满新序列需要分配 KV 块但空闲链表为空框架挑选低优先级 / 长时间无交互的会话做抢占Preemption把该会话对应的全部物理 KV 块批量拷贝到 CPU 主内存同时在块表标记 “已交换到 CPU”释放这批 GPU 物理块分给新进来的请求若被抢占会话恢复交互再把它的 KV 块从 CPU 内存拷贝回 GPU恢复推理优缺点优点不用直接拒绝新请求提升整体并发承载上限缺点CPU ↔ GPU 内存拷贝存在 PCIe 带宽延迟恢复生成时会卡顿频繁 swap 吞吐会明显下跌重计算Recompute备选方案不长期占用 CPU 内存不把 KV 缓存存在 CPU直接丢弃被抢占序列的所有 KV 块等会话再次交互时重新前向走一遍模型从头算出全套 KV Cache代替从 CPU 加载适用上下文很短、重计算成本低于 PCIe 传输开销的场景代价需要重复执行 Transformer 层计算消耗算力PCIeThe Host-Device LinkPCIe is used for:• CPU ↔ GPU data transfers (model loading, CPU offloading)• Cross-node GPU communication when NVLink is unavailable (rare, very slow)• NVMe storage access (via CPU)Host主机端CPU 系统主内存 DRAMDevice设备端GPU、NVMe SSD、网卡等 PCIe 外设PCIeHost 和 Device 之间唯一的高速物理互联链路Host-Device Link

相关新闻

Vscode 如何配置远程环境的 ssh 连接

Vscode 如何配置远程环境的 ssh 连接

1. 在 Vscode 的扩展插件安装栏内,检索并安装 Remote - SSH,未安装过该插件的 Vscode 编辑器左侧将出现用于管理远程连接 SSH 的新图标(见步骤 2):2. 点击左侧用于管理远程连接 SSH 的新图标,再点击 SSH 栏…

2026/7/20 16:50:34 阅读更多 →
Poller模块的设计与实现

Poller模块的设计与实现

前言: 在上一文中,我们完成了 Channel 模块的代码设计与实现。通过 Channel,我们优雅地将文件描述符(fd)、感兴趣的事件掩码以及对应的业务回调函数绑定在了一起。 但是,当我们审视 Channel 的代码时&#…

2026/7/20 16:50:34 阅读更多 →
3步快速集成Android离线人脸识别SDK的完整指南

3步快速集成Android离线人脸识别SDK的完整指南

3步快速集成Android离线人脸识别SDK的完整指南 【免费下载链接】FaceAISDK_Android Android on_device Face Recognition 、 Liveness detection and 1:N & M:N Face Search SDK 端侧可离线人脸识别 活体检测 以及1:N M:N 人脸搜索SDK 项目地址: https://gitcode.com/Gi…

2026/7/20 16:49:26 阅读更多 →

最新新闻

3步掌握AI金融分析:用Finance Skills轻松计算公司真实价值

3步掌握AI金融分析:用Finance Skills轻松计算公司真实价值

3步掌握AI金融分析:用Finance Skills轻松计算公司真实价值 【免费下载链接】finance-skills A collection of skills for AI financial analysis. 项目地址: https://gitcode.com/gh_mirrors/fi/finance-skills 想要快速判断一家公司是否值得投资&#xff1f…

2026/7/21 16:46:25 阅读更多 →
上门批量设备参数统一规整服务落地 哈尔滨市香坊区双工电子解决全网通信混乱问题

上门批量设备参数统一规整服务落地 哈尔滨市香坊区双工电子解决全网通信混乱问题

哈尔滨讯 本地绝大多数企事业单位的对讲机都是分批次、分年度零散采购,设备品牌不一、新旧混杂、参数杂乱,长期存在同组不互通、新旧设备串台、接收发射不同步、加密参数不匹配等问题。日常调度中经常出现“有人听得到、有人听不到、部分设备杂音干扰”的…

2026/7/21 16:46:25 阅读更多 →
2026网盘不限速实测:直链下载助手pandownload安装指南

2026网盘不限速实测:直链下载助手pandownload安装指南

在日常开发或团队协作中,大文件传输往往是最让人头疼的环节之一。很多开发者不得不依赖各类网盘服务,但随之而来的客户端强制安装、会员限速策略以及复杂的分享链接解析过程,常常让简单的“下载”动作变得异常曲折。 https://www.pandown.or…

2026/7/21 16:46:25 阅读更多 →
动漫下载加速终极指南:3步打造你的专属Tracker智能系统

动漫下载加速终极指南:3步打造你的专属Tracker智能系统

动漫下载加速终极指南:3步打造你的专属Tracker智能系统 【免费下载链接】animeTrackerList 动漫磁性链接加速方案(animeTrackerList) 项目地址: https://gitcode.com/GitHub_Trending/an/animeTrackerList 还在为动漫资源下载速度慢如…

2026/7/21 16:46:25 阅读更多 →
蔚蓝档案自动化脚本终极指南:如何10分钟实现游戏全自动,彻底解放双手

蔚蓝档案自动化脚本终极指南:如何10分钟实现游戏全自动,彻底解放双手

蔚蓝档案自动化脚本终极指南:如何10分钟实现游戏全自动,彻底解放双手 【免费下载链接】blue_archive_auto_script 支持按轴凹总力战, 无缝制造三解, 用于实现蔚蓝档案自动化的程序( Steam已适配 ) 项目地址: https://gitcode.com/gh_mirrors/bl/blue_a…

2026/7/21 16:46:25 阅读更多 →
终极PINTO_model_zoo项目常见问题解决方案:从安装到模型转换的完整指南

终极PINTO_model_zoo项目常见问题解决方案:从安装到模型转换的完整指南

终极PINTO_model_zoo项目常见问题解决方案:从安装到模型转换的完整指南 【免费下载链接】PINTO_model_zoo A repository for storing models that have been inter-converted between various frameworks. Supported frameworks are TensorFlow, PyTorch, ONNX, Ope…

2026/7/21 16:45:24 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻