本发明涉及模型权重激活量化方法领域,具体是一种基于异常值的大模型训练后权重激活量化方法。
背景技术:
1、gpt-4和llama等大规模模型在自然语言处理领域实现了显著的技术突破,其模型参数量从过去的15亿增长至数千亿级别。参数的大幅增加极大地增强了模型处理复杂任务的能力,然而,巨大的计算资源和通信成本需求却成为了其在现实世界应用中实际部署的障碍。
2、大模型推理生成场景中,训练后的大模型产生的数据中,占据显存的为该大模型的参数(即权重),激活值为该大模型做推理生成时所产生的中间计算结果(即激活值)。由于激活值占据的显存随着模型输入长度增加,所以很多场景中,激活值占的显存和权重占显存一样。所以为了减少大模型推理生成时的显存占用,因此需要进行权重激活量化。
3、在大模型压缩技术中,量化方法被证明是减轻计算和存储负担的有效手段。模型量化分为两大类型:训练感知量化(qat)与训练后量化(ptq)。虽然qat在准确性方面比ptq更具优势,但其在训练期间的高成本让人望而却步,因此,ptq成为了更受青睐的量化策略。ptq分为权重量化和权重激活量化两种策略。尽管单纯的权重量化能够降至4比特甚至更低的位宽,但其效果欠佳,且无法在推理时降低内存消耗。为此,如何改进权重激活量化方案成为了降低大模型部署时内存开销、提升推理效率的关键。
4、当前权重激活量化的主要挑战在于round()函数和clamp()函数导致的误差。针对此问题,研究集中于通过减少推理过程中的离群值来降低误差。主流方法分为两类:一类是基于数学等式变换,如smoothquant、ominiquant、outlier suppression+等方案,它们的核心是在不损失模型精度的前提下,通过数学等效变换简化模型的量化过程,从而平滑化激活值中的离群点,减少对量化范围的拉伸,确保绝大多数值保持有效的量化位数;另一类是基于离群值重划分通道的量化方法,如rptq、qllm等,这些方法通过识别并处理不同通道中激活值范围的显著差异来优化量化过程,使得数值范围相近的通道可以进行分组量化,或对含有离群值的通道进行有效的重新划分,从而显著降低因离群值引起的量化误差,进一步细化并优化了模型的量化策略。
5、现普遍采用的基于数学等式变换和离群值重划分通道的权重激活量化方法,尽管在理论上对于大模型的计算和存储效率提出了潜在的优化方向,但实际在端侧模型部署时未能满足高精度和低时延需求。具体而言,基于数学等式变换的量化方法虽然将量化的难点从激活值转移到了权重,但这种方法没有充分考虑到权重中的显著性差异,从而在权重的量化过程中引入了额外的误差,影响了模型的整体精度。此外,基于离群值重划分通道的方法虽然试图通过通道重排序来更有效地处理离群值,但由于使用的方法时间复杂度较高,增加了时延。因此,现有的权重激活量化策略在实际大模型端侧部署中效果欠佳,迫切需要开发一种新型权重激活量化策略。
技术实现思路
1、本发明提供了一种基于异常值大模型训练后权重激活量化方法,以解决现有的权重激活量化方案精度损失严重和延迟高的问题,实现减轻计算和存储负担同时保持高精度以及低延时。
2、为了达到上述目的,本发明所采用的技术方案为:
3、基于异常值的大模型训练后权重激活量化方法,首先进行权重量化,权重量化包括以下步骤:
4、步骤1、激活异常值平滑,过程如下:
5、将校准数据集输入至训练后的大模型进行推理,推理过程中收集大模型中每层的激活异常值即激活最大值,以及大模型中每个线性层的权重最大值;
6、基于每层的激活最大值、每个线性层的权重最大值计算平滑缩放因子,然后根据平滑缩放因子对训练后的大模型中每个线性层的权重进行平滑调整,得到线性层权重平滑调整后的大模型;
7、步骤2、减轻激活平滑对权重量化的影响,过程如下:
8、再次将校准数据集输入至步骤1得到的线性层权重平滑调整后的大模型进行推理,推理过程中收集大模型中每层的激活最大值、激活最小值和激活平均值;
9、基于激活最大值、激活最小值和激活平均值计算得到每层的权重调整缩放因子,然后基于权重调整缩放因子进一步调整步骤1得到的大模型中每层的权重,得到每层权重调整后的大模型;
10、步骤3、遍历步骤2得到的每层权重调整后的大模型的所有命名模块,收集每个模块各层中权重最大一者的权重值作为该模块的权重最大值、权重最小一者的权重值作为该模块的权重最小值,基于每个模块的权重最大值、权重最小值计算得到对应模块的权重量化缩放因子;然后基于每个模块的权重量化缩放因子,对该模块中各层的权重分别进行量化,得到每个模块中各层量化后的权重值,并将量化后的权重值保存为整型8位数据类型的数据;
11、然后,进行激活值量化,激活值量化过程如下:
12、基于所述权重量化缩放因子,对训练后的大模型中每个模块各层量化后的权重值进行反量化,得到每个模块各层整型8位数据类型的权重值;
13、并且,向训练后的大模型输入校准数据集进行推理,得到大模型中各个线性层的输入张量即激活值中最大一者作为激活最大值、第二大者作为激活第二大值;基于激活最大值和激活第二大值,分别计算离群值减轻缩放因子和量化时缩放因子;然后,基于离群值减轻缩放因子和量化时缩放因子对每个线性层的激活值进行量化得到激活量化值,并将激活量化值存储为整型8位数据类型的数据;由此完成激活值的量化。
14、进一步的,权重量化的步骤2中,使用贪心算法基于激活最大值、激活最小值和激活平均值计算得到每层的权重调整缩放因子。
15、进一步的,激活值量化过程中,采用topk算法得到激活最大值和激活第二大值。
16、进一步的,对于具有自注意力机制的softmax层,激活值量化过程还包括:
17、将训练后的大模型中每个线性层整型8位数据类型的激活量化值,分别与对应的整型8位数据类型的权重值进行矩阵乘法运算得到整型8位数据类型的结果,将乘法计算结果反量化为浮点型16位数据类型,由此完成激活值量化。
18、基于激活通道中最大值与次大值之间存在显著差异的观察,本发明结合权重和激活的数学等式变换,提出了一种无损量化与低延迟执行的策略。此权重激活策略在离线量化权重过程中考虑了显著权重,从而减少了平滑激活异常值对显著权重的影响。在模型推理过程中,本策略根据激活通道的分布特征优化了激活值的量化过程,降低了异常值的量化误差。该策略实现了大规模模型推理时的有效量化,显著降低了运行大模型所需的内存,提高了运行速度,增加了大模型在边缘设备上部署的可行性。
1.基于异常值的大模型训练后权重激活量化方法,其特征在于,首先进行权重量化,权重量化包括以下步骤:
2.根据权利要求1所述的基于异常值的大模型训练后权重激活量化方法,其特征在于,权重量化的步骤2中,使用贪心算法基于激活最大值、激活最小值和激活平均值计算得到每层的权重调整缩放因子。
3.根据权利要求1所述的基于异常值的大模型训练后权重激活量化方法,其特征在于,激活值量化过程中,采用topk算法得到激活最大值和激活第二大值。
4.根据权利要求1所述的基于异常值的大模型训练后权重激活量化方法,其特征在于,对于具有自注意力机制的softmax层,激活值量化过程还包括: