问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

AWQ量化技术深度解析:如何优化设备端大语言模型的压缩与加速

创作时间:
作者:
@小白创作中心

AWQ量化技术深度解析:如何优化设备端大语言模型的压缩与加速

引用
CSDN
1.
https://blog.csdn.net/smartcat2010/article/details/142030399

AWQ(Activation-aware Weight Quantization)是一种针对设备端大语言模型(LLM)的压缩和加速技术。它通过关注激活值(activation)对权重(weight)量化误差的影响,提出了一种创新的量化方案。本文将深入解析AWQ的核心原理和实现细节。

动机

随着大语言模型(LLM)在设备端的应用越来越广泛,如何在保证模型性能的同时减少显存占用量成为了一个重要问题。传统的解决方案是使用INT4量化,但这种做法会带来较大的量化误差。AWQ技术通过关注激活值对权重量化误差的影响,提出了一种更有效的量化方案。

实现原理

AWQ的核心思想是:只量化权重矩阵W,存储为INT4格式;在计算时再将其反量化为FP16(或FP8)格式进行运算。这种方案既减少了存储空间,又避免了计算精度的大幅损失。

朴素量化方法

在传统的量化方法中,权重矩阵W中的每个元素都会被量化为INT4格式。然而,这种做法存在一个明显的问题:某些权重的量化误差会对最终结果产生更大的影响。具体来说,与激活值绝对值较大的通道相乘的权重行,其量化误差对最终结果的影响更大。

研究发现,W矩阵中只有1%的权重对量化误差的影响最大,这些权重主要集中在与激活值绝对值较大的通道相乘的行上。

AWQ改进方案

为了解决上述问题,AWQ提出了一种改进方案:对激活值绝对值较大的通道所对应的W矩阵行进行特殊处理。具体来说,这些重要的权重行不会被量化,而其他权重行则会被量化为INT4格式。

然而,这种混合精度计算方案在GPU上的执行效率较低。因此,AWQ进一步提出了一种折中的方案:对整个W矩阵进行量化,但对重要的通道进行scale放大。scale的大小与通道的重要性成正比,scale越大,该通道的量化误差就越小。

原理详解

在朴素的量化方法中,Round操作带来的量化误差绝对值在[0, 0.5]之间,且呈均匀分布,均值为0.25。如果将w乘以一个大于1的scale s,那么在Round操作保持在0.25的情况下,w的误差可以减少s倍。

假设对1%的W进行s倍增大,且s不是很大时,整个矩阵的scale factor △不会发生大的变化。这种做法可以在保持整体scale相对稳定的同时,显著减小重要权重的量化误差。

具体实现细节

  • scale因子的确定:对于Activation矩阵X的每一列,计算所有元素绝对值的平均值,然后取a次方(a是一个在(0,1)之间通过网格搜索得到的最优值)。将该值与其他列的平均值a次方进行归一化,得到该列的scale因子s。这样,X中绝对值较大的列所对应的W中的行就会获得较大的scale。

  • group-size:采用分块量化的方式,将X的列和W的行分成多个group,每个group内部进行量化。这种做法可以进一步减小量化误差。

总结

AWQ通过关注激活值对权重量化误差的影响,提出了一种创新的量化方案。这种方案在保证模型性能的同时,显著减少了显存占用量,为设备端大语言模型的部署提供了新的思路。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号