重温 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/25 12:41:44 阅读更多 →
Poller模块的设计与实现

Poller模块的设计与实现

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

2026/7/25 13:21:00 阅读更多 →
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/24 22:10:53 阅读更多 →

最新新闻

5分钟成为二维码修复专家:QRazyBox让你的破损二维码重获新生

5分钟成为二维码修复专家:QRazyBox让你的破损二维码重获新生

5分钟成为二维码修复专家:QRazyBox让你的破损二维码重获新生 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否遇到过这样的烦恼:打印出来的二维码模糊不清、手机截…

2026/7/26 14:50:48 阅读更多 →
SSHFS-Win-Manager架构深度解析与生产环境部署指南

SSHFS-Win-Manager架构深度解析与生产环境部署指南

SSHFS-Win-Manager架构深度解析与生产环境部署指南 【免费下载链接】sshfs-win-manager A GUI for SSHFS-Win (https://github.com/billziss-gh/sshfs-win) 项目地址: https://gitcode.com/gh_mirrors/ss/sshfs-win-manager SSHFS-Win-Manager作为基于Electron框架构建的…

2026/7/26 14:50:48 阅读更多 →
基于计算机视觉的AI质检系统设计与工业应用

基于计算机视觉的AI质检系统设计与工业应用

1. 项目背景与核心价值 在制造业和工业生产领域,产品质量控制一直是企业运营的核心环节。传统的人工质检方式存在效率低下、标准不统一、人力成本高等问题。我们团队开发的这套基于计算机视觉的AI质检系统,正是为了解决这些痛点而生。 这套系统最核心的…

2026/7/26 14:50:48 阅读更多 →
YOLOv11结合Retinexformer的低照度目标检测优化方案

YOLOv11结合Retinexformer的低照度目标检测优化方案

1. 项目背景与核心价值低照度环境下的目标检测一直是计算机视觉领域的难点问题。传统YOLO系列算法在光线充足时表现优异,但当面对夜间监控、地下停车场或昏暗室内等场景时,检测性能会显著下降。这主要是因为低照度图像存在噪声大、细节丢失、颜色失真等问…

2026/7/26 14:50:48 阅读更多 →
WSL升级失败解决方案与系统修复指南

WSL升级失败解决方案与系统修复指南

1. 问题现象与背景解析最近在给WSL(Windows Subsystem for Linux)执行wsl --update命令升级时,不少用户遇到了"灾难性故障"的错误提示。这个报错通常伴随着升级过程中断,导致WSL完全无法启动。作为一名长期使用WSL进行开…

2026/7/26 14:50:48 阅读更多 →
TMS320F28335串行通信接口(SCI/SPI/I2C)配置与实战指南

TMS320F28335串行通信接口(SCI/SPI/I2C)配置与实战指南

1. 项目概述与串行通信核心价值在嵌入式系统开发,尤其是工业控制、电机驱动和复杂传感器网络领域,微控制器与外部世界的数据交换是构建智能系统的基石。这种交换的“语言”就是通信协议,而串行通信因其简洁、可靠和成本效益,成为了…

2026/7/26 14:49:48 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻