ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

阿里二面凉了:Transformer为何要用KV缓存?

阿里二面凉了:Transformer为何要用KV缓存? 前言前几天有个网友偷偷给我发私信那叫一个信心满满地冲向阿里面试大模型岗位结果悲催了铩羽而归。到底是哪里出了岔子呢这篇文章我们就从面试官的视角来拆解这个 Transformer 的面试连环炮。如果是你在面试现场被这些问题 “轰炸”到底该咋回答呢嘿嘿一起看看吧为什么Transformer推理要做KV缓存面试官心理分析第一个问题一般都是先热热身面试官问这个呢其实是想看看你知不知道 Transformer 的一个最基本的工作原理。面试题解析因为在 Transformer 中文本是逐个 token 生成的每次新的预测会基于之前生成的所有 token 的上下文信息。这种对顺序数据的依赖会减慢生成过程因为每次预测下一个 token都需要重新处理序列中所有之前的 token。举个例子如果我们要预测第 100 个 token那模型必须使用前面 99 个 token 的信息这就需要对这些 token 进行矩阵运算而这个矩阵运算是非常复杂和耗时的。因此 KV 缓存就是为了减少这种耗时的矩阵运算在 Transformer 推理过程中会将这些键和值存储在缓存中这样模型就可以在生成后续 token 的时候直接访问缓存而不需要重新计算。KV 缓存的工作机制的什么样的OK那既然你知道 KV 缓存是为了减少生成 token 时的矩阵运算那它具体是怎么减小的讲讲 KV 缓存的工作机制。这个时候你最好能结合画图讲出来会很清晰。干讲很多东西讲不清楚几张图就能说明白。前面说了由于解码器是因果的也就是一个 token 的注意力只依赖于其前面的 token在每个生成步骤中我们希望只需要计算最新那个 token 的注意力不需要重新计算相同的先前 token 注意力。来看下面这两张图分别是有缓存和没有缓存的情况。对于第一个新到的词假设之前没有缓存过每次 query 的 token 会和 K 做矩阵相乘然后做 softmax 计算注意力得分然后再和V相乘再输出。我们对比一下上下两张图其实有缓存和没有缓存的计算量是一样的不过在下图中我们会把这一步计算过的 K,V 缓存起来。然后是第二个 token这时候可以看出紫色的是缓存的 K V在没有缓存的时候需要重新计算一次 K V而如果做了 K V 缓存那么只需要把历史的 K, V 拿出来同时只计算最新那个 token 的 K, V并拼接成一个大矩阵就可以了。对比一下有缓存和没有缓存的计算量明显减少了一半。第三个第四个 token 也一样每次历史计算过的 K V 就不用重新计算了从而极大的减少了 self attention 的计算量从序列长度的二次方变成了线性。带有 KV 缓存优化的大模型推理过程包含几个阶段OK那这个时候一些面试官会继续追问那实际在解码的时候一个典型的带有 KV 缓存优化的大模型推理过程包含几个阶段这个时候你首先要答出包含几个阶段实际在解码的时候一个典型的带有 KV cache 优化的生成大模型的推理过程会包含两个阶段prefill 和 decoding。然后再回答每个阶段干的事情**prefill 阶段**输入一个 prompt 序列为每个 transformer 层生成 KV cache同时输出第一个 token。**decoding 阶段**发生在计算第二个输出 token 至最后一个 token 过程中这时 Cache 是有值的每轮推理只需读取 Cache同时将当前轮计算出的新的 Key、Value 追加写入至 CacheFLOPs 降低gemm 变为 gemv 操作推理速度相对第一阶段变得更快。如何估算KV缓存消耗的显存大小呢好那下一个问题如何估算 KV 缓存消耗的显存大小呢我们首先要知道KV 缓存通常使用 float16 或者 bfloat16 数据类型也就是以 16 位的精度存储张量。对于一个 tokenKV 缓存会为每一层和每个注意力头存储一对 KV 张量。KV 张量的总显存消耗可以通过下面这个公式计算这里我们以字节为单位。层数 × KV注意力头的数量 × 注意力头的维度 × (位宽/8) × 2解释一下这个公式最后的 “2” 是因为有两组张量也就是键和值。位宽通常为 16 位由于 8 位 1 字节因此将位宽除以 8这样在 KV 缓存中每 16 位参数占用 2 个字节。KV 缓存为何在长文本和复杂模型结构下成瓶颈既然你知道怎么估算 KV 缓存那面试官可能继续问你为什么 KV 缓存在长文本和复杂模型结构场景下会成为瓶颈呢这个时候我们可以用实际的例子跟面试官说明以 Llama 3 8B 为例上面公式就变为32 × 8 × 128 × 2 × 2 131,072字节这里注意虽然 Llama 3 8B 有 32 个注意力头。不过由于 GQA 的存在只有 8 个注意力头用于键和值对于一个 tokenKV 缓存占用 131,072 字节差不多 0.1 MB。这看起来好像不大但对于许多不同类型的应用大模型需要生成成千上万的 tokens。举个例子如果我们想利用 Llama 3 8B 的全部上下文大小是 8192KV 缓存将为 8191 个 token 存储键值张量差不多会占用 1.1 G 显存。换句话说对于一块 24 G 显存的消费级 GPU 来说KV 缓存将占用其总显存的 4.5%。对于更大的模型KV 缓存增长得更快。比如对于 Llama 3 70B它有 80 层公式变为80 × 8 × 128 × 2 × 2 327,680 字节对于 8191 个 tokenLlama 3 70B 的 KV 缓存将占用 2.7 GB。注意这只是单个序列的显存消耗如果我们进行批量解码还需要将这个值乘以 batch size。举个例子使用 batch size 为 32 的 Llama 3 8B 模型将需要 35.2 GB 的 GPU 显存一块消费级 GPU 就显然搞不定了。所以 KV 缓存会随着文本长度增加和模型结构的复杂性增强大幅膨胀对于需要处理超长上下文的应用可能会成为瓶颈。KV 缓存缺陷的解决方案有哪些那下一个问题自然就来了针对 KV 缓存这个缺陷有什么解决方案答案是量化 KV 缓存量化可以降低参数精度比如从 16 位降到 4 位。换句话说一个 16 位张量可以缩减到原来的 1/4而通过两位量化甚至可以缩减到 1/8。所以上面的例子理论上 4 bit 量化可以将 KV 缓存的大小从 35.2 G 缩减到 8.8 G使用 2bit 量化甚至可以缩减到 4.4 GB。当然实际效果取决于所使用的算法及其超参数需要结合具体情况分析。那量化有没有什么缺点呢当然有没有哪个方案是完美的。量化可能会减慢解码过程并且可能显著影响 LLM 的准确性。实际中需要通过调整量化超参减轻这些影响另外可以通过重写量化算子对量化操作和反量化操作与其他算子做一些融合来提高降低解码速度的影响。0****7是否了解有关 KV 缓存的最新技术那最后面试官可能还会问你一些开放性的问题比如有没有了解过关于 KV 缓存的一些最新工作这个呢就是看你的技术热情有没有对业界最新的技术/paper保持敏感度。**你可以这么来回答**对于 KV 缓存这块今年 KV-cache 复用从层内复用跨越到层间服用。微软最近新发了一篇论文提出了 YOCOYou Only Cache Once这是一个 KV Cache 层间共享的新思路。同期 MIT-IBM Watson AI Lab 也发了一篇类似的论文提出了 CLA Cross-Layer Attention即 KV Cache 跨层推理。这和 YOCO 不谋而合。YOCO 的名称借鉴了单阶段目标检测始祖 YOLO 的风格。整篇论文提出的最核心的思想 KV Cache 共享方式即层间共享。并且基于此将上下文长度扩展到了 1 百万。我们知道目前最常见的 KV Cache 共享策略是 MQA/GQA。从 Layer 的视角来看MQA/GQA 可以认为是层内 KV Cache 共享而 YOCO 提出的想法则可以认为是 Inter-Layer 层间 KV Cache 共享。这个算法理论上的可以最多把 KV Cache 的 Memory 需求降低到 1/NN 为 Transformer 层数。并且这和层内 KV Cache 共享的技术比如 MQA 和 GQA 是不冲突的两者可以一起使用从而极大地降低 KV Cache 的显存开销。最后的最后感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你。因为这个行业不同于其他行业知识体系实在是过于庞大知识更新也非常快。作为一个普通人无法全部学完所以我们在提升技术的时候首先需要明确一个目标然后制定好完整的计划同时找到好的学习方法这样才能更快的提升自己。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】大模型知识脑图为了成为更好的 AI大模型 开发者这里为大家提供了总的路线图。它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。经典书籍阅读阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表