初识华为RazorAttention

简介: RazorAttention是一种静态KV Cache压缩算法,旨在解决长上下文大型语言模型(LLM)中KV缓存占用显存过大的问题。通过基于注意力头的有效视野动态调整KV Cache大小,RazorAttention能够压缩70%的KV Cache,同时保持模型长序列能力几乎无损。该方法保护检索头(包括Echo Head和Induction Head)的KV Cache,确保重要信息不丢失,并对非检索头进行压缩优化。相比在线动态压缩方法,RazorAttention无需实时计算,兼容FlashAttention,显著降低存储与计算开销,为模型部署提供高效解决方案。

论文原文:https://openreview.net/pdf?id=tkiZQlL04w

最近学习华为的RazorAttention,水平有限,根据论文做了初步了解。

1 背景:KV缓存成为部署模型的主要瓶颈

       长上下文大型语言模型(LLM)在不同任务的自然语言处理方面具有显著的先进性。在LLM 模型的应用场景中,KV(Key-Value)缓存需要保存所有词元的Key与Value,以便节省后续解码时的计算复杂度。然而,随着输入序列的增长,KV Cache 所占用的空间也会不断增加,总体达到 O(seq_len)的空间复杂度,导致显存消耗迅速增加(极端情况下 KV Cache 与权重的显存占比可达到 9:1),进而影响模型推理性能、限制其部署。      

1.1 当前主流方式:

  • 量化(Quantization):量化方法通过降低存储每个数据点的精度来减少内存使用。使用较低的精度(如4位或8位)来表示数据。
  • 窗口(Window):这种方法通过限制缓存中存储的数据量来优化显存使用。例如,只缓存最近的或最重要的数据。
  • 稀疏化(Sparse):这种方法通过仅存储非零或重要的数据点来减少内存占用。它利用数据的稀疏性来优化存储。

       目前业界流行的 KV Cache 压缩算法均为实时动态压缩,即实时地计算一些指标:注意力分数(与 FlashAttention 不兼容)或者 Topk 判断稀疏模式,对推理速度均有非常高的负面影响,在实际部署中不适用。

2 Razor Attention

基于Attention可解释性,提出了RazorAttention静态KV Cache压缩算法,是目前业界唯一的静态方法。RazorAttention的动机来源于 Anthropic 2022 年的论文 In-context Learning and Induction Heads,该文章介绍了 Decoder-Only架构 的语言大模型独有的上下文学习能力(In-Context Learning),并发现有一部分注意力头和模型的上下文学习能力强相关,文中称之为具有推断能力的 Induction Heads。在此基础上,本工作联想到大模型的长序列能力也是上下文学习能力的一个子集,并围绕此展开了研究。实验表明,RazorAttention 压缩了 70%的KV Cache,并保持模型的长序列能力几近语义无损

添加图片注释,不超过 140 字(可选)

2.1 算法原理

业界最新的长序列KV Cache压缩算法大多数为在线动态压缩方法(实时计算⼀些指标),存在如下问题:

  1. 例如在线计算Attention得分,存在Overhead,且与FlashAttention不兼容
  2. 最新技术在往轻量化重要性计算发展,但是依然存在TopK计算;随着序列长度增加,Top-K计算的overhead将显著增加
  3. MInfer等算法基于稀疏模式,要求在线执行稀疏计算
  4. 依赖当前输入的丢弃token无法还原,影响多轮对话等场景应用

文中先以基于 ALiBi 编码的模型为例,从理论上证明每个注意力头拥有不同的视野范围,因此可以通过动态调整每个头的 KV Cache大小来实现压缩。具体来说,需要计算出每个头的有效视野Lh,并只保留最近的 Lh 个 token 在 KV Cache中,而将距离较远的 token 丢弃掉。这样可以保证在不损失准确率的情况下,大幅减少存储空间的需求。

在此基础上,“不同注意力头拥有不同视野”的结论可以扩展到任意位置编码(如RoPE)的语言大模型。本⼯作在Induction Heads基础上发现了Echo Heads同样对长文本任务起到关键作⽤,并统称为检索头(Retrieval Heads)。检索头通常能有效利用长距离信息,对输入拥有全局视野,其 KV Cache也因此非常重要:

  • Echo Head:关注前文中与当前token相同的token
  • Induction Head:关注前文中与当前token相同的下一个token

在压缩算法设计上,RazorAttention对检索头的KV Cache进行保护,确保上下文当中重要且主要信息不丢失,并直接减少了非检索头的KV Cache大小,以达到压缩的目的。在Non-retrieval Head上进行压缩,需要保留Attention Sink+Local Attention。此外,本文提出了Compensation token(补偿token),对于丢弃掉的KV Cache以平均值形式保留在非检索头中,达到保护非检索头的局部视野的效果。基于RoPE位置编码的KV Cache压缩原理如下:

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

2.2 Alibi模型的attention

       在传统的Transformer模型中,位置嵌入通常是预先计算并添加到输入序列的每个token上的。然而,Alibi不采用这种方法。它是在计算注意力分数的过程中动态的考虑信息位置的。

       通俗来说,Alibi类型的模型是使用相对位置来计算注意力分数的。论文中发现,在这种情况的“不同的注意力拥有不同的视野”这个重要结论:基于Alibi模型,从理论上证明每个注意力头拥有不同的视野范围,因此可以通过动态调整每个头的KVcache大小来实现压缩。具体来说,需要计算出每个头的有效视野 L.h,并只保留最近的Lh个token在KVcache中,而将距离较远的token丢掉。有点窗口化的意思,但是通过计算,在保证不损失准确率的情况下,大幅减少存储空间的需求。

       论文中计算注意力头视野的公式为:

添加图片注释,不超过 140 字(可选)

      可以看到,它设置了一个超参数,当前的词对较远的注意力分数低于这个设定的超参数的时候,就会将它舍弃,被认为是不需要的信息。只需要让每个注意力头加起来的“视野”能够覆盖所有信息。保证语义信息不丢失。

2.3 RoPE模型attention

       在论文中表示,“不同注意力头拥有不同视野”的结论可以扩展到任意位置编码(如ROPE)的语言大模型。本工作在Induction Heads基础上发现了EchoHeads同样对长文本任务起到关键作用,并统称为检索头(Retrieval Heads)。

检索头通常能有效利用长距离信息,对输入拥有全局视野,其KV Cache也因此非常重要:

  • Echo Head:关注前文中与当前token相同的token
  • Induction Head: 关注前文中与当前token相同的下一个token

添加图片注释,不超过 140 字(可选)

       在压缩算法设计上,RazorAttention对检索头的KVCache进行保护,确保上下文当中重要且主要信息不丢失,并直接减少了非检索头的KV Cache大小,以达到压缩的目的。在Non-retrievalHead上进行压缩的目的,需要保留Attention Sink+Local Attention。

       此外,本文提出了Compensation token(补偿token),对于丢弃掉的KV Cache以平均值形式保留在非检索头中,达到保护非检索头的局部视野的效果。基于RoPE位置编码的KV Cache压缩原理如上图,将部分信息压缩。

       可以简单理解为,检索头作为小队长,负责统领大局;而非检索头作为专家,专注自己的这部分工作内容。从而做到性能几乎没有损失,而减少了70%的存储。

3 总结

文中提出的RazorAttention是目前业界唯一的静态KV Cache压缩算法,一方面没有在线动态计算开销(既不依赖Attention score,也不涉及在线Topk计算),类似PTQ仅需少量输入样本进行离线校准,便可轻量快捷的决定Attention稀疏模式;另一方面能与FlashAttention等主流融合算子兼容,无明显overhead。  


参考:

【论文精读】RazorAttention如何优化模型部署-CSDN博客


相关文章
|
存储 人工智能 自然语言处理
|
10月前
|
算法 数据可视化 异构计算
SparseGPT:大规模语言模型的一次性精确剪枝——论文解读
SparseGPT提出首个可高效剪枝百亿参数大模型的一次性精确方法,通过稀疏回归与近似求解器实现高稀疏度下仍保持精度,支持半结构化稀疏与量化联合压缩,显著降低推理成本。
985 3
SparseGPT:大规模语言模型的一次性精确剪枝——论文解读
|
6月前
|
存储 缓存 算法
SGLang Hierarchical Sparse Attention 技术深度解析
阿里云 Tair 联合 SGLang 推出分层稀疏化框架,通过“稀疏+分层”协同优化,将 KVCache 从 GPU 显存扩展至 CPU 与远端存储,实现计算与存储效率双突破,为百万级超长上下文推理提供新路径。
|
存储 缓存 NoSQL
服务搭建篇(五) Redis单机/redis-cluster集群搭建
当客户端向一个错误的节点发出了指令,该节点会发现指令的 key 所在的槽位并不归自己管理,这时它会向客户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连这个节点去获取数据。客户端收到指令后除了跳转到正确的节点上去操作,还会同步更新纠正本地的槽位映射表缓存,后续所有 key 将使用新的槽位映射表。下面第21步操作会有演示
1064 0
|
7月前
|
JavaScript Shell API
阿里云百炼 API 调用教程:准备 API-Key、配置环境变量和调用 API 流程
在使用阿里云百炼平台的大模型能力时,API 调用是核心环节 —— 无论是开发 AI 应用、测试模型效果,还是搭建智能服务,都需要通过 API 将大模型能力集成到自己的系统中。不过对很多开发者来说,从准备密钥到实际调用的流程可能存在疑问,比如 “API-Key 怎么获取”“环境变量配置有什么用”“不同语言怎么写调用代码”。本文结合最新的实操细节,用通俗的语言把整个流程拆解开,从账号准备到多语言调用,每一步都附具体操作和代码示例,帮大家快速上手。
17298 113
|
9月前
|
机器学习/深度学习 人工智能 算法
火眼金睛:如何检测文本内容是否出自AI之手?
火眼金睛:如何检测文本内容是否出自AI之手?
1623 115
|
存储 机器学习/深度学习 缓存
vLLM 核心技术 PagedAttention 原理详解
本文系统梳理了 vLLM 核心技术 PagedAttention 的设计理念与实现机制。文章从 KV Cache 在推理中的关键作用与内存管理挑战切入,介绍了 vLLM 在请求调度、分布式执行及 GPU kernel 优化等方面的核心改进。PagedAttention 通过分页机制与动态映射,有效提升了显存利用率,使 vLLM 在保持低延迟的同时显著提升了吞吐能力。
9002 22
vLLM 核心技术 PagedAttention 原理详解
|
存储 缓存 人工智能
阿里云Tair KVCache:打造以缓存为中心的大模型Token超级工厂
Tair KVCache 是阿里云推出的面向大语言模型推理场景的缓存加速服务,基于分布式内存池化和分级缓存体系,解决显存墙与带宽瓶颈问题。为万亿参数模型的高效推理提供技术保障,推动 AI 算力进化与规模化应用。