20241220
这是一篇 23 年的论文了,主要看的点也就是Duquant 中类似的旋转矩阵,以及可学习的权重矩阵,也就是 LWC.
Qmniquant 使用了 可学习的权重和可学习的等价交换
LET 策略,可微的平滑策略
之前的工作是直接把量化的阈值设置为可学习的,而 Omniquant 的工作是使用两个参数间接地来来确定上界和下界。得益于块级量化误差(block-wise)最小化的加入,我们的 LET 能够以可微的方式确定最优等效参数。
实验过程略。
也可以参考:OmniQuant-目前最优的LLM PTQ量化算法 - 知乎 (zhihu.com)
解决了一个什么问题
为了达到这个目标,OmniQuant 采用了一个 Block-wise 量化误差最小化框架。同时,OmniQuant 设计了两种新颖的策略来增加可学习的量化参数,包括可学习的权重裁剪(Learnable Weight Clipping,LWC),以减轻量化权重的难度,以及一个可学习的等价转换(Learnable Equivalent Transformation, LET),进一步将量化的挑战从激活值转移到权重。
可以理解为更加具体而不是先验知识的 smoothquant 策略,尤其是在权重 - 激活量化的体现上。使用 LWC 和 LET 都是先设计了一个可以调整(学习)的参数,然后通过梯度下降的方式寻求一个合适的解,从而比起 smoothquant 等 baseline 而言,提升了量化的准确度。
但是我很疑惑的是,PTQ 是怎么把学习到的参数回馈的?可学习的,除了体现在参数上,还体现在哪里?
文章使用的第一点,使用 Block-wise
的量化误差最小化框架,用可微分的方式优化其他的 LWC 和 LET 参数;
其中编辑的方式是:
Baseline 有AWQ、GPTQ和Smoothquant等。
续 -20241220
使用了了可微的优化公式用于优化可学习的参数,如何在 PTQ 的环境下优化的;一个新的 pipeline
是从校准集 (calibration) 中进行训练的,然后用于大模型量化;在校准集中进行参数的学习,然后直接用于模型的量化
量化过程的伪代码如下: