关注前沿科技 量子位

在InternVL-2.5上实现10倍吞吐量提升,模型性能几乎无损失。

最新1-bit多模态大模型KV cache量化方案CalibQuant来了。

通过结合后缩放和校准方法,可显著降低显存与计算成本,无需改动原模型即可直接使用。

即插即用、无缝集成

多模态大语言模型在各种应用中展现出了卓越的性能。然而,它们在部署过程中的计算开销仍然是一个关键瓶颈。

虽然KV cache通过用显存换计算在一定程度上提高了推理效率,但随着KV cache的增大,显存占用不断增加,吞吐量受到了极大限制。

为了解决这一挑战,作者提出了CalibQuant,一种简单却高效的视觉KV cache量化策略,能够大幅降低显存和计算开销。具体来说,CalibQuant引入了一种极端的1比特量化方案,采用了针对视觉KV cache内在模式设计的后缩放和校准技术,在保证高效性的同时,不牺牲模型性能。

作者通过利用Triton进行runtime优化,在InternVL-2.5模型上实现了10倍的吞吐量提升。这一方法具有即插即用的特性,能够无缝集成到各种现有的多模态大语言模型中。

动机

当前的多模态大语言模型在实际应用中常常需要处理大尺寸、高分辨率的图像或视频数据,KV cache机制虽然能提升效率,但其显存占用与输入长度(如视觉帧数、图像尺寸等)成正比。

本文通过分析多模态大语言模型中的视觉KV cache的冗余,设计了适合多模态模型特有的KV cache量化方案。

方法

本文在通道维度量化的基础上提出了针对反量化计算顺序的后缩放优化方案和针对注意力权重优化的校准策略。

1、通道维度KV cache量化:

一种广泛使用的方法是均匀整数量化。给定一个比特宽度b>0和一个输入值x,它位于某个范围[α,β]内,则将其映射到一个离散整数,计算过程为:

这里的⌊⋅⌉表示取整运算符。最朴素的方法是使用全局统计量来计算这些极值,但是模型性能会受较大影响,作者选择在通道维度上细化统计范围。具体来说,令表示一个K cache,其中n和d分别表示token的数量和head的维度。定义两个向量如下:

然后,通过上述过程对K中的每一行向量进行量化,其中乘法操作是逐元素进行的。作者同样将这种按通道的量化方法应用于V cache。

2、后缩放KV cache管理策略:

量化后的K cache可以用离散化的整数值、一个缩放因子(scale factor)和一个偏置项(bias term)来表示。在解码阶段,这些值被用于对K cache进行反量化,并随后与Q相乘。然而,通道维度的量化需要为每个通道分别指定不同的缩放因子和偏置向量,这将导致产生大量不同的数值,增加了反量化过程中的计算开销。此外,这种方式也使得CUDA内核中的计算效率降低。作者观察到量化后的K仅具有有限数量的离散取值(例如,对于2比特量化,其取值仅为0、1、2、3),于是提出利用简单的计算顺序重排来减少存储需求,并提高计算效率。具体过程如下:

是K cache矩阵中的任意一行向量, 为其进行b比特整数量化后的结果,并伴随有逐通道的缩放因子α,β。给定一个查询向量,在生成token过程中注意力计算如下:

其中,符号⋅和⊙分别表示向量之间的内积和逐元素乘积。通道维度上的反量化操作被延迟执行,并高效地集成到后续的向量乘法运算中。因此,这种方法仅存储经过b比特整数量化后的数值,并且避免了全精度反量化计算过程。这种方法确保了低比特反量化执行的高效性。这种后缩放方法也可以自然地应用到V cache的反量化过程中。

3、量化后的校准:

1比特量化的一个限制是经过反量化之后的数值往往会包含大量的极端值。这是因为1比特量化的码本总是包含了最小值和最大值,导致那些接近边界的输入值在反量化后直接映射到了极端值。

因此,重建后的KV cache通常包含过多的大绝对值,最终导致注意力分数产生明显的失真。为了解决这个问题,作者提出了一种量化后校准方法,用于调整softmax之前注意力分数的峰值。具体来说,假设中的所有元素都位于区间内。给定,定义一个线性变换g将区间映射到,其表达式如下:

随后对注意力分数进行如下调整:

如下图所示,校准方法(Quant-C,红色)有效减轻了极端值的影响,使调整后的注意分数分布相较于未经校准的量化方法(Quant,蓝色)更接近全精度(Exact)分布。

实验结果

作者将提出的量化方法分别应用在LLaVA和InternVL model上,测试了其在captioning,VQA,Video QA三个不同的任务上的性能。以captioning任务为例,下图展示了本文所提出的方法在cococaption benchmark下和其他方法如KIVI,VLCache的对比。

在不同比特数(8,4,2,1)下,本文提出的方法在大部分测试指标上都优于其他两种方法。例如对于llava-1.5-7b,本文的方法在8比特下达到最高的CIDEr 分数 1.105,与全精度持平,并在1比特下提升至1.109,超过了VLCache(1.053)。同样地,对于InternVL-2.5-26B,本文的方法在4比特和2比特下分别取得了最高的CIDEr分数1.32和1.313,均优于VLCache和KIVI。

Runtime分析

为了展示本文提出的量化方法对解码效率的影响,作者使用InternVL-2.5系列模型,将所提出的1比特量化方法与16比特基线进行了吞吐量评估(即每秒生成的token数)。作者考虑了两种视觉token长度的情况:n=3328和8192。作者将GPU最大内存从5GB变化到30GB,并在每种内存限制下,寻找能够容纳的最大batch size,测量解码阶段的吞吐量。

如下图展示,1比特量化方法在所有显存预算下始终优于基线方法。例如,当n=3329且使用80亿参数模型时,本文的方法在5GB显存下实现了126.582tokens/s的吞吐量(基线为11.628tokens/s),在30GB下提升至459.016tokens/s(基线为40.816tokens/s)。这意味着相比基线,本文方法的吞吐量提升约为9.88×到11.24×,充分展示了该方法在受限显存条件下显著提升解码速率。

总结

本文探讨了多模态大语言模型中视觉KV cache的压缩方法。简单地将量化应用到极低比特数常常会引发分布偏移,导致模型性能下降。为了解决这一问题,本文提出了一种新颖的校准策略,作用于softmax之前的注意力分数,有效缓解了量化带来的失真。此外,本文还引入了一种高效的通道维度后缩放技术以提高计算和存储效率。

作者在InternVL和LLaVA模型系列上,针对COCO Caption、MMBench-Video和DocVQA等基准任务进行了实验,结果验证了所提出方法的有效性。作者利用Triton实现了本文所提出的方法,runtime分析表明本文提出的方法相较于全精度模型有大约10倍的吞吐量提升。

论文标题:CalibQuant:1-Bit KV Cache Quantization for Multimodal LLMs 论文地址:https://arxiv.org/abs/2502.14882 代码地址:https://github.com/insuhan/ca...

一键三连「点赞」「转发」「小心心」

欢迎在评论区留下你的想法!

—  —

学术投稿请于工作日发邮件到:

mailto:ai@qbitai.com

标题注明【投稿】,告诉我们:

你是谁,从哪来,投稿内容‍

附上论文/项目主页链接,以及联系方式哦

我们会(尽量)及时回复你

🌟 点亮星标 🌟

科技前沿进展每日见


量子位
43 声望20k 粉丝

一家专注于人工智能与前沿科技领域的产业服务平台。