GoldFinch:高性能RWKV/Transformer混合加线性预填充和极限KV-Cache压缩
通过自适应KV缓存压缩的插拔式方法,我们引入了一种减少大型语言模型(LLM)生成推理内存占用的方法。通过有针对性的分析注意力模块的内在结构,我们构建自适应KV缓存:针对局部上下文的注意力头强调接触范围短的上下文,针对特殊标记的注意力头中心化的丢弃非特殊标记,只有广泛关注所有标记的注意力头才使用标准KV缓存。此外,通过轻量级的注意力分析引导自适应KV缓存的构建,FastGen不需要资源密集的微调或重新训练。在各种场景的实验中,FastGen在GPU内存消耗方面显著减少,同时几乎没有生成质量损失。我们将发布用于重现的代码和兼容的CUDA内核。
Oct, 2023
通过压缩键值缓存并保留关键上下文,提出了一种名为PyramidInfer的方法,以提高大型语言模型在GPU内存使用和推理速度方面的可扩展性。实验结果显示PyramidInfer相比Accelerate方法,在增加2.2倍的吞吐量的同时减少了54%的GPU内存占用。
May, 2024
ZipCache是一种用于LLMs的准确而高效的KV缓存量化方法,通过通道可分离的逐标记量化方案可显著减少量化参数的内存开销,并通过考虑注意力矩阵的下三角特性提出了规范化注意力分数作为识别重要标记的有效度量,以获得更高的压缩比,同时提供了快速生成速度和最小性能损失。
May, 2024
在这项研究中,我们调查了大语言模型内部的基于注意力的信息流是否通过明显的模式进行大范围长文本处理。我们的观察揭示了大语言模型通过金字塔信息漏斗聚合信息,注意力在较低的层级中广泛散布,逐渐在特定上下文中巩固,并最终集中于关键标记(即大规模激活或注意力汇聚)在较高的层级。在这些洞察的基础上,我们开发了一个新颖且有效的 KV 缓存压缩方法 PyramidKV。该方法动态调整不同层级上的 KV 缓存大小,分配较低层级较多的缓存,而较高层级较少,与维护统一 KV 缓存大小的传统方法有所不同。我们根据 LongBench 基准评估的实验表明,PyramidKV 与完整 KV 缓存模型的性能相当,但只保留了 12% 的 KV 缓存,因此显著减少了内存使用。在强调内存效率的情景下,仅维护 0.7% 的 KV 缓存,PyramidKV 超越其他 KV 缓存压缩技术,在 TREC 上实现了高达 20.5 个绝对准确度的提升。
Jun, 2024
在基于transformer的大型语言模型(LLMs)中,通过使用一个保存了初始token和固定大小的滑动窗口的键值(KV)缓存,以线性复杂度实现稳定的流式生成,并能够在总缓存大小不变的情况下存储更远过去的token,取得了5.6%在长上下文生成(LongBench)、1.2%在流式困惑度(PG19)和0.6%在语言理解(MMLU STEM)方面的改进。
Jun, 2024
大型语言模型在各个领域取得了很好的成绩,但由于长序列推理所需的广泛KV缓存限制了效率。许多努力尝试在运行时清除非关键缓存元素,从而在给定的内存预算内减小缓存大小,同时保持生成质量。我们重新审查了现有策略的基本原理,并发现当前的做法是在驱逐过程中均匀分配预算到不同的注意力头上,这往往会降低驱逐后生成质量。基于这些发现,我们提出了一种简单而有效的自适应分配算法,不仅在理论上确保其损失上限不超过之前均匀分配方法的上限,而且还能与自注意机制的特性相一致,从而实际降低上限。此外,将此算法与两种最先进的方法结合起来,得到了Ada-SnapKV和Ada-Pyramid。对16个数据集和“大海捞针”测试的广泛实验验证证实,Ada-SnapKV和Ada-Pyramid实现了进一步的改进,在最高性能的技术水平上建立了新的基准。
Jul, 2024
本研究解决了大语言模型在长上下文任务中键值缓存带来的内存开销问题。提出的CSKV方法通过分析通道维度的冗余,采用低秩分解技术,并引入双分支键值缓存架构,以较低的训练成本实现缓存压缩。实验表明,该方法能将内存开销降低80%,而且能够与量化技术结合,实现高达95%的压缩率。
Sep, 2024
本研究解决了长上下文任务中关键值(KV)缓存带来的大内存开销问题。通过引入CSKV技术,利用通道维度的冗余性并进行低秩分解,从而实现KV缓存的压缩,同时引入双分支KV缓存以保持模型性能。研究结果表明,CSKV能够将KV缓存的内存开销减少80%,并在与量化结合时实现高达95%的压缩比。
Sep, 2024
本研究解决了大型语言模型(LLMs)在KV缓存方面的内存消耗问题,该问题随着序列长度和批处理大小线性增长。提出了一种低秩近似KV权重矩阵的新方法,通过渐进压缩策略在不需要重新训练模型的情况下有效减小KV缓存的内存占用。大量实验表明,此方法显著降低了GPU内存使用,同时保持了性能。
Oct, 2024