Page Attention图解

上篇讲到了KVcache,KVcache就是将KV对存放到显存中用来加快推理过程的技术。

但是KVcache有一个缺点:如何合理的分配显存?学过操作系统的人肯定都懂,如何合理的分配内存是个大问题,解决方法就是使用分页解决。无独有偶,PageAttention就是参考了OS中的内存分配方法来实现的。

背景

在模型推理时,使用KVcache后需要按照最长prompt分配显存。可能会有三种情况出现:

1. 预分配后没有使用这块显存

2. 预分配后需要使用这块显存,但是在生成前期没有使用这块显存

3. 显存中的外碎片

和OS很类似

解决方法

OS中内存分配原理

先回忆一下OS中的内存分配原理

通过页表来查询离散的物理地址,而程序看到的是连续的虚拟内存

内存被分成多个page块。

物理显存

将显存分成多个KVCache 块,来进行管理。

每个KV块中可以缓存4个token的KVcache中

逻辑显存

这就是和OS相同的方法,使用向量表来进行映射。

特性

OS中有Copy on write机制,PageAttention也参考过来了。

写时复制(Copy-on-write,COW),有时也称为隐式共享(implicit sharing)。COW 将复制操作推迟到第一次写入时进行:在创建一个新副本时,不会立即复制资源,而是共享原始副本的资源;当修改时再执行复制操作。通过这种方式共享资源,可以显著减少创建副本时的开销,以及节省资源;同时,资源修改操作会增加少量开销。

首先两个相同任务但是要求输出有不同时候会用到,prompt都是这句话,这句话会在显存中只存一次,即初始的KV块是共享的

但是当自循环生成文本的时候,它就会看引用数量,如果为2就会重新选择一个block来进行缓存,并且将原有的块引用-1。实现显存的高效应用。只有当block的引用为0的时候,显存才会被释放,与OS相同。

参考视频:

怎么加快大模型推理?10分钟学懂VLLM内部原理,KV Cache,PageAttention_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值