专栏名称: GiantPandaLLM
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
GiantPandaLLM  ·  【博客转载】Row-Major VS ... ·  昨天  
51好读  ›  专栏  ›  GiantPandaLLM

揭秘 PagedAttention(上):如何管理 Paged KV Cache

GiantPandaLLM  · 公众号  · 3D  · 2024-10-15 12:18

正文

请到「今天看啥」查看全文


前文 大语言模型推理,用动画一看就懂! 图解KV Cache:加速大模型推理的幕后功臣 的动图里,我们用的都是同一个例子,从中能看到模型推理可以分为两个阶段:Prefill(装填) 阶段和 Decode(解码)阶段。Prefill 是模型推理的第一步,输入是 prompt,此时需要计算整个输入文本上的 attention (self-attention)。而第二次及以后的前向迭代,输入只是单个 token,只需要计算单个 query 上的 attention,可以复用缓存里计算好的之前的 key 和 value。

KV Cache Block 的生命周期

首先来看看 vLLM 里处理请求的大致流程图,请求会被放到队列里,然后调度器负责处理这些请求,需要做的事情主要是合理安排 KV Cache 的存储资源,具体是 BlockSpaceManager 来做的。Scheduler 准备好当前想要调度的请求的资源后,LLMEngine 会再调用 Executor(Modle) 来执行一次前向的迭代。下面是 vLLM 里处理请求的大致流程图:

下面我们放大,进入到几个管理 KV Cache 的核心组件上,组件和相互之间的关系如下(假期看了三天才完全梳理清楚):

初始化







请到「今天看啥」查看全文