大模型推理加速:KVCache和Pageattendtion

首先声明不搞infra的不用看,我现在看底层了,

本篇内容基于Efficient Memory Management for Large Language Model Serving with PagedAttention》 (SOSP 2023)出处: 加州大学伯克利分校(UC Berkeley)

这篇里面讲了vllm,那么我们就先讲vllm。

LLM 模型在推理阶段的显存有三部份组成:模型权重、KVCache 显存占用以及激活值显存占用

而今天我们是速成教程,所以又要体现深度,那么就先讲KVCache,

这个本质上是一种通用的思路就是减少k,v的计算,采用缓存的机制去减少中间值,

而这个的问题是kv的乘积是会有上限的,因为本来就很大,HBM根本放不下,所以vllm提出思路去优化这个东西,去搞定显存碎片。

同样的在HBM里面存储基本上都是连续存储的,也就是说少了一个,少了10个都是少了。

而现在搞成分页存储,不会出现空缺的。

当全部的空闲HBM被塞满,

这里暂时讲Swapping:

当多余的KV Cache会被提到cpu内存里面。

然后这个是怎么实现的?

基本上逻辑是:

第一步:

当新请求, Block Table分配空闲块的编号

第二步:

定位物理地址: 物理地址 = 物理块ID * 块大小 + (35 % 16) * 每个Token的特征维度。

第三步:

在计算的时候,动态地把这些散乱的地址传给 GPU/NPU。

当同时请求时候就采取写时复制。

当大量人同时询问同一个问题时候,此时采取多序列共享机制,也就是哈希映射:

这么解释呢?就是说记录物理块的地址位置,然后新的相似的token进来,这个block table直接指过去就行。这样就不会出现kv cache无限复制的问题了。

然后同时访问,这个时候hash冲突了,也就是网络请求太多,

那么就LRU,先把最少访问的释放同时触发swapping吧没用的丢出cpu了。

现在最新的技术也就是vllm的发展思路:

1:速度推理加速:投机采样

可以用小模型先给几个词然后大模型验证,这样减少完整跑的神经网络和逻辑。

2:延迟优化减少:切块预处理

太长的token进来,就直接切块然后混在输出里面。

3:解码:多卡

等于一张卡负责算kv cache,一张卡负责decode,甚至一张卡搞promot。

最后总结一下:

Vllm启动后:

Scheduler: 负责控制哪些请求该进 Batch,哪些该排队。

Block Manager(块管理器): Block Table 所在地,负责划拨 HBM 显存块。

Worker: 负责在 NPU/GPU 上跑矩阵运算的。

一般是先跑算子这个跑通才能调内存,最后开始调策略。

 

 

 

 

 

 

 

 

 

#硬件/芯片公司工作体验#

放一些相关的,这里算是大模型的进阶版了。这个封面是吉米。

全部评论

相关推荐

1.  注意力机制:请简述 MHA、MQA 和 GQA 三种注意力机制的核心区别。2.  模型架构:Dense 模型与 MoE 模型有何本质区别?3.  路由机制:MoE 模型中,路由(Routing)机制具体是如何工作的?4.  LoRA 微调:请阐述 LoRA 的原理,以及其中 A、B 矩阵的初始化方式和秩(Rank)的设置考量。5.  强化学习:请对比 DPO、PPO 和 GRPO 的原理与区别,并写出 DPO 的 Loss 函数公式。6.  推理加速:vLLM 中使用了哪些关键技术(如 PagedAttention、KV Cache)来优化推理?7.  并行框架:你对 DeepSpeed 这一加速推理与训练框架有多少了解?8.  BM25 算法:请讲解 BM25 算法的计算原理。9.  负载均衡:MoE 模型中专家(Expert)的负载不均衡问题该如何解决?10.  损失函数:能否通过修改损失函数的方式来缓解 MoE 的负载均衡问题?11.  数据分布:SFT 微调数据与预训练数据分布差异较大时,该如何处理?12. Scaling Law:SFT 微调的数据集是越大越好吗?是否存在 Scaling Law 现象?13. 训练稳定性:强化学习(RL)为何存在训练不稳定的问题?既然不稳定为何业界仍广泛使用?14. 三数之和:LeetCode 15. 三数之和。📳对于想求职算法岗的同学,如果想参加高质量项目辅导,提升面试能力,欢迎后台联系。
查看14道真题和解析
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务