大模型量化技术是一种用于减少大模型存储和计算需求的重要方法,以下是其具体介绍:
量化是将模型参数的精度从高位宽降低到低位宽的过程,旨在以较少的位数表示浮点数据,从而减少模型尺寸和内存消耗,并在一些低精度运算较快的处理器上提高推理速度,通常将 float32 等格式的浮点型权重近似为 int8 等有限多个离散值1。
量化形式
线性量化:假设 表示量化前的浮点数,量化后的整数 可以表示为,其中和分别表示取整和截断操作,和是量化后的最小值和最大值, 是数据量化的间隔, 是表示数据偏移的偏置,为 0 的量化被称为对称量化,不为 0 的量化称为非对称量化。
非线性量化:实际的深度神经网络的权重和激活值通常是不均匀的,理论上使用非线性量化导致的精度损失更小,但在实际推理中非线性量化的计算复杂度较高,通常使用线性量化。
量化方法分类
逐层量化:以一层网络为量化单位,每层网络一组量化参数,是最简单、范围最大的粒度。
逐通道量化:以一层网络的每个量化通道为单位,每个通道单独使用一组量化参数,量化粒度更细,能获得更高的量化精度,但计算更复杂。
量化阶段分类
量化感知训练:在模型训练过程中加入伪量化算子,通过训练时统计输入输出的数据范围提升量化后模型的精度,适用于对模型精度要求较高的场景。
量化感知微调:在微调过程中对大模型进行量化,主要目标是确保经过微调的大模型在量化为较低位宽后仍保持性能,在模型压缩和保持性能之间取得平衡。
训练后量化:在大模型训练完成后对其参数进行量化,只需要少量校准数据,适用于追求高易用性和缺乏训练资源的场景,但可能会在量化过程中引入一定程度的精度损失。
