专栏名称: GiantPandaCV
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
GiantPandaCV  ·  免费 | 抢先试用此芯Armv9 AI ... ·  3 天前  
GiantPandaCV  ·  美团基于SGLang提供INT8无损满血版D ... ·  3 天前  
51好读  ›  专栏  ›  GiantPandaCV

图解KV Cache:加速大模型推理的幕后功臣

GiantPandaCV  · 公众号  · 3D  · 2024-10-14 15:34

正文

在开始之前,给大家出几个“高频面试题”,看看你能答上来吗?

1. 举例说明 KV Cache 的计算过程

2.为什么要用 KV Cache?它能解决什么问题,代价又是什么?

3. vLLM 里 KV Cache 形影不离的搭档是谁?

还记得之前那篇 大语言模型推理,用动画一看就懂! 的文章吗?是的!我们再次用动画来演示大语言模型的推理过程!几乎所有的大语言模型(LLM)都基于 Transformer 架构,它依赖于之前生成的 token 来预测下一个字符。而自注意力机制(self-attention)则是模型推理的核心:它不仅需要当前 token,还要每次“回顾”之前的所有 token。

动画演示 KV Cache

为了更加形象理解上面提到的自注意力机制的“回顾机制”,下面我画了一张图。它是 大语言模型推理,用动画一看就懂! 中那个文本生成步骤的第四步,其中计算 self-attention 时所需的 Key 和 Value 的示意图。

注意:Prompt 是 "The future of AI is" 有五个 token,第一步推理时模型输入的是整个 prompt,会计算出每个 prompt token 对应的 key 值和 value 值,为了清晰起见图里仅用 K1 和 V1 来代表它们。

接下来的动画演示了每一步计算自注意力的过程,清晰起见去掉了其他算子。

从图里看到每一步计算时,当前的 Qi 都需要和之前的 Kj 进行矩阵乘法计算,然后再和之前的 Vj 进行矩阵乘法。那么为了节省算力,我们可以把之前的 Kj、Vj 的结果“缓存”起来,这样每次只需要做增量计算。这个缓存机制就是 KV Cache ,简单却非常有效!来看看加上 KV Cache,推理过程变得多轻松吧!

从上面的动画可以看到除了第一步,其他步骤都可以通过缓存复用之前步骤产生的 Ki 和 Vi。这些步骤在计算 self attention 时只有一个 query,因此叫做 single query attention。

KV Cache 有多大?

一条文本所需的 KV Cache 计算公式如下:

KV Cache Bytes = 2 * 2 * Sequence Length *   Number of Layers * Hidden Size

举个实际的例子,Qwen2 7B 这个国产大模型,在 4 K 序列长度下,KV Cache 大小是 1.6 GB!这是什么概念呢?要知道很多人的显卡也就 8GB 或者 16GB。

KV Cache 的代价







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