一个典型的带有 KV cache 优化的生成大模型的推理过程包含了两个阶段: 1.预填充阶段:输入一个prompt序列,为每个transformer层生成 key cache 和 value cache(KV cache)。 2.解码阶段:使用并更新KV cache,一个接一个地生成token,当前生成的token词依赖于之前已经生成的token。 预填充阶段计算过程如下: image.png ...
一、KV cache 的由来与基本矛盾 第一阶段(prompt 输入): 第二阶段(token by token): KV cache的显存占用分析 二、KV cache 优化的典型方法 2.1 共用 KV cache:MQA,GQA 2.2 窗口优化 2.3 量化与稀疏 2.4 存储与计算优化 三、StreamingLLM:简洁高效的“无限长度” 3.1 精度是如何保证的? 3.2 “无限长度”是...
简单来说就是通过动态的评价方式来判断需要保留和废弃的KV值,其评估的算法如下所示: 结果显示,在 KV cache 稀疏到只有原来的 20% 时仍然可以保持很高的精度。 2.4 存储与计算优化 该方法的典型代表即vLLM的 PagedAttention,简单来说就是允许在非连续的内存空间中存储连续的 K 和 V。详情可参考笔者之前的文章,...
PageAttention:受操作系统虚拟内存和分页技术的启发,PageAttention将KV Cache划分为固定大小的块进行存储,并在多个序列之间共享这些块,从而进一步降低显存占用。 结论 KV Cache作为大模型推理优化的重要手段,通过减少冗余计算、提升推理速度、降低资源消耗,为LLM的广泛应用提供了有力支持。随着技术的不断进步,未来KV Cache...
KV Cache,即键-值缓存,是一种通过缓存Attention机制中的键(Key)和值(Value)来实现推理优化的技术。在Transformer模型中,Attention机制是计算成本最高的部分之一,其涉及大量矩阵乘法和softmax操作。KV Cache通过缓存之前token的K和V,避免了在每次推理时重复计算这些值,从而显著提升了推理效率。 1. Attention机制简述 ...
一个典型的带有 KV cache 优化的生成大模型的推理过程包含了两个阶段: 1.预填充阶段:输入一个prompt序列,为每个transformer层生成 key cache 和 value cache(KV cache)。 2.解码阶段:使用并更新KV cache,一个接一个地生成token,当前生成的token词依赖于之前已经生成的token。
简介:在本文中,我们将详细介绍两种在业务中实践的优化策略:多轮对话间的 KV cache 复用技术和投机采样方法。我们会细致探讨这些策略的应用场景、框架实现,并分享一些实现时的关键技巧。 1. 背景 RTP-LLM 是阿里巴巴大模型预测团队开发的大模型推理加速引擎,作为一个高性能的大模型推理解决方案,它已被广泛应用于阿里...
KV-Cache是一种加速Transformer推理的策略,几乎所有自回归模型都内置了KV-Cache,理解KV-Cache有助于更深刻地认识Transformer中注意力机制的工作方式。 内容摘要 自回归推理过程知识准备 KV-Cache原理介绍 KV-Cache推理效率提升统计 KV-Cache工作流程简述 past_key_values存储结构和作用分析 ...
但比较遗憾的是,FlashAttention优化的开源实现要求Attention计算的QKV维度一致,而KV csache复用和投机采样都未满足这个条件,导致对显存有额外的占用。除此之外,投机采样因为要额外加载小模型的权重,且运行时需要多保存一份小模型的KV cache,还需要额外的显存。
Mooncake 的核心理念是将模型推理过程中的两个截然不同的优化阶段分开处理,因为这两个阶段的优化目标和受限的瓶颈各不相同。这种分离式处理方法是一种直观且自然的思路。具体来说,Mooncake 采用了以 KVCache 为中心的分离式推理架构,主要由三个核心部分组成: ...