AWQ量化(Activation-aware Weight Quantization)

论文:

AWQ: Activation-aware Weight Quantization for On-Device LLM Compression and Acceleration

中文解读:

深入理解AWQ量化技术 - 知乎 (zhihu.com)

动机:端侧设备用LLM,为了减少显存占用量,所以要用INT4量化;

实现:只量化W矩阵,存储INT4计算的时候再反量化为FP16(TensorRT-LLM反量化为FP8),进行计算;

原理:1. 哪些w的量化误差,会导致最终误差较大?答:和这些w相乘的那些activation,绝对值大的;所以,选取activation矩阵中,绝对值较大的channels,和这些相乘的w行;2. 怎么缩小这些行的量化误差?答:量化误差,是由round取整带来的,只要把w先扩大一些,再进行

### AWQ量化技术概述 AWQActivation-aware Weight Quantization)是一种针对大规模语言模型压缩和加速的技术。该技术通过引入激活感知权重量化的方式,在减少模型参数存储需求的同时保持较高的推理性能[^1]。 #### 核心原理 AWQ的核心在于其利用了激活函数的分布特性来优化权重的量化过程。具体来说,它通过对每一层网络中的权重应用不同的量化尺度因子(scale factor),从而更好地适应不同层次神经元的特点。这种方法不仅减少了计算复杂度,还显著降低了内存占用率。 #### 实现方法详解 以下是AWQ的主要实现步骤: 1. **初始化Scale与Clip Coefficient** 首先定义每层权重矩阵对应的scale以及clip coefficient初始值。这些超参决定了如何将浮点数映射到整数值上。 2. **Heuristic Search Algorithm** 使用启发式算法自动调整上述两个重要参数直到达到最优解为止。此过程中会考虑目标精度损失最小化原则作为评价标准之一。 3. **Post-training Quantization Process** 对已经预训练完成的大规模语言模型执行post-training quantization操作, 即不改变原有架构仅修改内部表示形式为低比特位宽版本. 4. **Fine-tuning Optional Step (可选)** 如果希望进一步提升经过AWQ处理后的模型表现,则可以加入少量微调环节以弥补可能存在的轻微质量下降情况. ```python import torch.nn as nn class ActivationAwareQuantizer(nn.Module): def __init__(self, bit_width=8): super(ActivationAwareQuantizer, self).__init__() self.bit_width = bit_width def forward(self, weight_tensor): max_val = torch.max(torch.abs(weight_tensor)) scale_factor = max_val / ((2**(self.bit_width - 1)) - 1) # Apply clipping to avoid overflow during integer conversion. clipped_weights = torch.clamp(weight_tensor/scale_factor, min=-((2**(self.bit_width - 1))),max=((2**(self.bit_width - 1))-1)) # Convert weights into integers by rounding them off appropriately. int_weights = torch.round(clipped_weights).type(torch.int8) return int_weights * scale_factor ``` 以上代码片段展示了简化版的activation-aware weight quantization逻辑。 #### 性能对比分析 相较于其他传统量化方案如uniform scaling method或者min-max based approach而言,AWQ能够更精准地捕捉住实际运行环境中输入数据的真实统计特征因此具备更强泛化能力; 同时由于采用了专门设计用于LLMs场景下的特殊策略使得最终得到的结果无论是在速度还是能耗方面都占据一定优势位置. 然而值得注意的是尽管目前存在一些改进方向比如Omniquant提出基于学习机制获取更加精确scales/coefficients组合方式但就现阶段实验结论显示两者间差距尚不足以完全取代前者地位[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值