MambaQuant:首个精度近乎无损的Mamba模型量化方案

数据派THU介绍了一种针对Mamba模型的全新量化方案——MambaQuant,通过独特的旋转和方差对齐方法,实现了近乎无损的量化精度,为Mamba模型的部署带来了福音。

原文标题:ICLR 2025 | 精度近乎无损!首个Mamba系列模型量化方案MambaQuant

原文作者:数据派THU

冷月清谈:

本文介绍了一种名为MambaQuant的后训练量化(PTQ)框架,专门针对Mamba模型家族的量化问题。该方案创新性地结合Hadamard矩阵与Karhunen-Loève变换(KLT)矩阵,生成能自适应不同通道数据分布的旋转矩阵,实现方差对齐,使量化前的数据分布更均匀,提升量化精度。同时,引入平滑参数预处理数据,进一步平衡通道间方差,且这些参数能灵活融入模型权重,避免额外存储开销。实验结果表明,MambaQuant在多种视觉任务上均表现出卓越的量化性能,尤其在8位和4位量化下,精度损失极小,显著优于现有量化方法。

怜星夜思:

1、MambaQuant利用KLT增强的旋转方法对齐方差,从而提高量化精度,这个思路在其他模型量化中是否适用?如果适用,需要做哪些调整?
2、MambaQuant 提到异常值会被 Mamba 模型中独特的并行扫描(Parallel Scan, PScan)操作进一步放大,为什么PScan会导致这个问题?除了MambaQuant的方案,还有什么其他思路可以缓解PScan带来的量化问题?
3、MambaQuant 通过实验证明了其在视觉任务上的有效性,那么在其他领域,例如NLP中,MambaQuant是否同样适用?如果适用,是否需要针对NLP任务进行调整?

原文内容

来源:学姐带你玩AI
本文共1500字,建议阅读5分钟
本文提出了一种名为MambaQuant的后训练量化(PTQ)框架,专门针对 Mamba 模型家族的量化问题。

论文题目:
MambaQuant: Quantizing the Mamba Family with Variance Aligned Rotation Methods
论文地址:https://arxiv.org/pdf/2501.13484


图片

创新点


  • 作者首次系统分析了 Mamba 模型在量化过程中面临的独特挑战,在门控投影(gate projection)、输出投影(output projection)和矩阵乘法(matmul)层中存在显著的异常值。针对上述问题,作者提出了首个专门针对 Mamba 模型的后训练量化(PTQ)框架 MambaQuant,解决了现有量化方法(如 Hadamard 变换)在 Mamba 模型上效果不佳的问题。
  • 本文通过将 Hadamard 矩阵与 Karhunen-Loève 变换(KLT)矩阵相结合,生成的旋转矩阵能够适应不同通道的数据分布,从而实现方差对齐。在离线模式中,KLT 增强的旋转方法能够有效平衡不同通道的方差,使得量化前的数据分布更加均匀,从而提高量化精度。
  • 本文通过引入平滑参数,对数据进行预处理,使通道间的方差更加均匀。这些平滑参数可以灵活地融入 Mamba 模型的权重中,避免了额外的存储开销。


方法


本文提出了一种名为MambaQuant的后训练量化(PTQ)框架,专门针对 Mamba 模型家族的量化问题。其核心方法是通过KLT 增强的旋转方法和Smooth-Fused 旋转方法来解决 Mamba 模型量化中的关键挑战。KLT 增强的旋转方法通过将 Hadamard 矩阵与 Karhunen-Loève 变换(KLT)矩阵相结合,生成能够适应不同通道分布的旋转矩阵,从而实现方差对齐,使量化前的数据分布更加均匀。Smooth-Fused 旋转方法则通过在 Hadamard 变换之前引入平滑技术,进一步优化通道方差的对齐,并将平滑参数融入模型权重中,避免额外的存储开销。这两种方法共同作用,使得 Mamba 模型在量化后能够保持较高的精度。

Mamba量化中硬层的可视化分布


本图展示了 Mamba 模型中一些难以量化的层的权重和激活值的分布情况。这些层在量化过程中面临显著的挑战,主要原因是它们的数据分布具有显著的异常值(outliers),并且这些异常值会被 Mamba 模型中独特的并行扫描(Parallel Scan, PScan)操作进一步放大。




Mamba 架构


本图展示了 Mamba 模型中不同层在应用不同旋转方法前后的最大值和方差分布情况。这些分布的变化反映了不同量化方法对数据分布的影响,以及 MambaQuant 方法在优化数据分布方面的优势。总体而言,通过对比不同旋转方法的效果,清晰地展示了 MambaQuant 方法在解决 Mamba 模型量化过程中数据分布不均匀问题方面的优势。KLT 增强旋转和平滑融合旋转都能有效地对齐不同通道的方差,使得量化后的数据分布更加均匀,从而提高了量化精度。


利用KLT增强旋转的离线变换设计


本图展示了 MambaQuant 框架中用于离线变换的 KLT 增强旋转(KLT-Enhanced rotation)的设计。这一部分是 MambaQuant 方法的核心内容之一,旨在通过改进传统的 Hadamard 旋转,解决 Mamba 模型在量化过程中面临的方差不一致问题。


实验结果



本表展示了 MambaQuant 在不同视觉任务上的量化性能对比结果。表中列出了多种量化方法(包括 RTN、GPTQ+RTN、SmoothQuant、QuaRot 和 MambaQuant 提出的方法)在不同 Mamba 模型变体(如 Vim-T、Vim-S、Mamba-2d、Mamba-3d 等)上的性能表现,主要关注的是量化精度(accuracy)的损失情况。此外,表中还展示了在不同模型和数据集上的平均性能,进一步证明了 MambaQuant 方法的鲁棒性和有效性。总体而言,Table 1 通过对比不同量化方法在多种 Mamba 模型上的性能,清晰地展示了 MambaQuant 方法的优势,表明其能够在量化权重和激活时保持极高的精度,尤其是在 8 位量化(W8A8)和 4 位量化(W4A8)配置下,显著优于现有的量化方法,是一种非常实用且有效的量化解决方案。

编辑:王菁



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

MambaQuant 在视觉任务上表现很好,是因为它解决了视觉数据中通道方差不一致的问题。NLP 数据也存在类似的问题,比如有些词向量的模长特别大,有些词向量又很小。所以,我觉得 MambaQuant 的思路在 NLP 领域也应该适用。

具体的调整,可能需要针对 NLP 任务的特点来做。比如,是不是可以考虑对词向量进行归一化,让它们的模长都差不多?或者,可以尝试一些其他的量化方法,看看哪种方法更适合 NLP 数据。

这是一个很好的问题!MambaQuant 的核心思想是解决量化过程中数据分布不均匀的问题,而这个问题在 NLP 任务中同样存在。例如,词嵌入向量的分布可能存在长尾效应,某些词的词频很高,而另一些词的词频很低。

因此,我认为 MambaQuant 在 NLP 领域是适用的。但是,为了取得更好的效果,可能需要针对 NLP 任务进行一些调整:

1. 分词:不同的分词方法可能会影响词频分布。需要选择合适的分词方法,使词频分布更加均匀。
2. 词嵌入:可以使用一些特殊的词嵌入方法,例如 GloVe 或者 FastText,这些方法可以学习到更加鲁棒的词嵌入向量。
3. 后处理:可以对量化后的词嵌入向量进行一些后处理,例如 L2 正则化,使词嵌入向量的模长更加一致。

这个问题问到了关键!PScan 是一种循环扫描操作,异常值在循环中会被累积和传递,从而导致放大效应。可以从以下几个方面考虑:

1. 数值稳定性:PScan 本身对数值精度比较敏感。可以考虑改进 PScan 的实现,提高数值稳定性,例如使用更高精度的数据类型或者采用一些数值稳定的算法。
2. 异常值抑制:在 PScan 之前,对数据进行预处理,抑制异常值。例如,可以使用 clipping 或者 normalization 等方法。
3. 量化感知训练:将量化过程引入到训练过程中,让模型学习适应量化带来的误差。这样可以有效地缓解量化带来的精度损失。

总的来说,缓解 PScan 带来的量化问题需要从多个方面入手,包括改进 PScan 本身、预处理数据和量化感知训练等。

从理论上讲,KLT 的核心思想就是对数据进行解耦和方差归一化,这在信号处理领域是很常见的预处理手段。因此,将 KLT 增强的旋转方法应用到其他模型量化中是具备可行性的。但是,具体实施起来需要考虑以下几个方面:

1. 计算成本:KLT 的计算复杂度较高,对于大规模模型来说,计算成本可能会成为瓶颈。需要权衡收益和成本,选择合适的近似算法或优化方法。
2. 适用性:KLT 方法对于数据分布具有一定的假设,如果数据分布与假设不符,效果可能会受到影响。需要根据具体模型的数据分布情况,选择合适的变换方法。
3. 可微性:如果需要在训练过程中进行量化,需要保证 KLT 变换是可微的,或者使用可微的近似方法。

总的来说,KLT 增强的旋转方法提供了一种有效的方差对齐思路,可以借鉴到其他模型的量化中。但是,需要结合具体模型和任务的特点,进行调整和优化。

PScan 可以理解为一种特殊的循环神经网络,它本质上是递归地处理序列数据。这种递归结构对异常值非常敏感,因为异常值会像滚雪球一样,在每个时间步被累积和放大,最终导致输出结果出现偏差,所以量化后,这种偏差也会被放大。

除了 MambaQuant 的方案,还可以考虑以下思路:

1. 梯度裁剪:在训练过程中,限制 PScan 层的梯度范围,防止梯度爆炸,从而抑制异常值的产生。
2. 正则化:在损失函数中加入正则化项,惩罚 PScan 层的权重,防止模型过度拟合训练数据中的异常值。
3. 知识蒸馏:使用一个高精度的 Mamba 模型作为教师模型,指导一个低精度的 Mamba 模型进行训练。这样可以使低精度模型学习到教师模型的知识,从而提高其鲁棒性。

我猜想是因为 PScan 是一种序列操作,异常值在一遍遍扫描的过程中会被逐渐放大。就像复利一样,一开始可能只是一个小错误,但经过多次迭代,就会变成很大的偏差。

其他的思路,我觉得可以试试梯度裁剪,限制一下 PScan 层的梯度,或者在损失函数里加一些惩罚项,让模型不要太依赖那些异常值。

我不太懂量化,但是感觉这个思路有点像图像处理里的直方图均衡化,都是为了让数据分布更均匀,方便后续处理。所以,如果其他模型也存在类似的数据分布不均问题,应该也可以借鉴这个思路吧?比如,是不是可以先看看模型里哪些层的激活值分布比较奇怪,然后针对性地做一些类似的调整?

这个问题很有意思!我觉得KLT增强旋转的思想在其他模型量化中原则上是适用的,核心在于找到模型中数据分布不均匀的关键层。可以借鉴MambaQuant的思路,先分析模型各层的数据分布,识别出存在显著异常值或方差不一致的层,再针对这些层设计特定的旋转方法。调整方面,可能需要根据不同模型的架构特点和数据分布特性,选择不同的旋转矩阵或者调整平滑参数。例如,对于Transformer模型,可以考虑在Attention层或FFN层应用类似的方差对齐策略。

我觉得有潜力,但需要调整。Mamba 和 Transformer 在处理序列数据的方式上有所不同,Mamba 依赖状态空间模型,而 Transformer 依赖注意力机制。NLP 任务中, attention 的权重分布也可能存在不均匀的情况,这可能影响量化效果。因此,如果将 MambaQuant 应用于 NLP,需要针对 NLP 任务的特点进行调整, 例如:

1. 词嵌入:词嵌入的量化可能会对模型性能产生较大影响。需要仔细选择量化方法和参数,保证词嵌入的质量。
2. Attention 层:如果模型中包含 Attention 层,需要对 Attention 层的量化进行特殊处理。
3. 评估指标:NLP 任务的评估指标与视觉任务不同。需要选择合适的评估指标来评估量化模型的性能。

总的来说,MambaQuant 在 NLP 领域具有一定的潜力,但是需要进行适当的调整和优化。