vllm的pageattention到底是怎么回事?

pageattention 经常听到的就是有两大优点:一个是减少 内存块浪费,另一个方面就是 减少内存碎片。

这两点 主要就是克服了传统分配方式的痛点(特别是传统方法都是连续存储),而这个方法建立了一个block table 能够查表找到存储位置,即逻辑上是连续的,物理存储上是随机的。

传统的方法,一个是对某个请求静态分配一个很大的token_length,这种对于很简单的请求的时候,就会造成大量的空间浪费(因为还有很多没用到嘛)。

还有一种方法 就是动态分配token长度, 一种方法就是有多长就分配多长。 但是有个弊端就是,对于模型来说,有可能同时有多个请求,进行并发的操作,就像开多个窗口进行提问。这就会使得原本分配空间是 AAABBBB,此时A...,B...相当于两个不同的请求框内内容,同时请求后,就会在decoder的时候,会生成新的token,这样的话,A请求继续扩展就不行了,因为下一个位置存的B请求的token,所以一般的操作就是,预先对 各个请求多分配一些空间 即 AAA_ _ _BBBB_ _ _ _ _这的弊端就也一样,导致资源可能浪费很多,还有另一种方法就是将空间不够的请求A,重新一起复制到新的位置空间进行扩展。 但这也有一个很明显的弊端,就是搬移大量数据时候的成本和时延,磨损等。

而pageattention是怎么解决这个问题的呢?

有两个关键的点,一个是 将一个请求分配n个block,每个block 的token数量相对比较小,这样一个请求可能就存成了多个block(而不是静态分配一样,存在一大张存储空间中),而这个block 并不是连续的, 哪里有对应block大小的空间都可以被分配(这就减少了存储空间碎片了)。 它能把不连续的block利用起来的原因就是,它是把存储池挨着挨着编码 为block 1,2,3...,这样分配给A的,需要多少就在A的block表中写对应的block标号就行 例如:block table:3, 17, 8, 25, 41(逻辑顺序 0~4,对应这 5 个物理块)。

综上就可以看出:pageattention 就算浪费也只是浪费最后一个block-1大小的存储空间,从而节省空间,另外,其存储并不要求连续,且把存储空间切割成多个可以独立出来的小块,这样也避免了存储碎片。

相关推荐
陈 洪 伟2 天前
大模型推理引擎vLLM(39):CUDAGraph模式以及CUDAGraphWrapper和BreakableCUDAGraphWrapper问题整理
vllm
论文复现现场2 天前
A100 跑 Qwen3.8-27B,FP8 还是 INT8?显存、速度、精度与微调兼容性怎么选
模型量化·vllm·a100·大模型部署·int8·fp8·qwen3.8
Zhu7582 天前
docker环境,vLLM 部署 Qwen3.8-27B
docker·qwen·vllm
basketball6163 天前
Python FastAPI 介绍以及常用方法
python·fastapi·vllm·ai infra
论文复现现场3 天前
RTX 3090 如何跑 13B 级大模型推理?4-bit AWQ、vLLM 部署与并发调优实战
模型量化·vllm·大模型推理·awq·算家云·rtx3090
一颗小树x4 天前
vLLM大模型推理:Jetson AGX Thor 的 GPU 共享内存清理实战
jetson·vllm·vlm·gpu内存清理
论文复现现场5 天前
Qwen3.8-27B 做 GRPO 需要几张 GPU?4×RTX 4090 与 8×RTX 4090 显存、vLLM 和 ZeRO-3 配置分析
deepspeed·qlora·大模型训练·vllm·rtx4090·grpo·qwen3.8
安易算力5 天前
昇腾生态开发深度实践:CANN算子库架构解析与MindSpore模型优化
网络·容器·架构·kubernetes·vllm
SunnyRivers5 天前
vLLM 官方调优方案
优化·vllm
政企项目老覃6 天前
边缘 AI 推理部署:安防零售场景下的模型裁剪与端侧落地实践
人工智能·程序人生·算法·性能优化·vllm