摘要

低比特量化是降低大语言模型推理成本和资源需求的重要手段。随着部署场景对显存占用、带宽压力和计算效率提出更高要求,量化研究正逐渐从 8-bit 进一步推进到 4-bit。HiFloat4(HiF4)是昇腾自研的一种 4-bit 数值格式,通过三级缩放机制显著扩展了低精度数值的动态范围,使其更适配大模型权重和激活中常见的动态范围分布。

将高精度权重直接转化为 4 比特格式通常会带来量化误差。因此,量化校准成为进一步提升低精度模型性能的关键环节。现有校准方法大多围绕 INT4 等整数格式进行设计和验证,对于 HiF4 这类分层块浮点格式(Block Floating-Point, BFP)并不适用。

因此,我们围绕 HiF4 格式对量化校准算法进行了系统探索,重点研究了三种方法:HiGPTQ、HiAutoRound 和 HiFlatQuant。它们分别借鉴GPTQ、AutoRound 和 FlatQuant 的核心思想,并针对 HiF4 的多级缩放结构进行适配,以进一步提升 HiF4 量化模型的推理精度。

实验结果表明,相比于 HiF4 直转,上述三种校准方法均能带来稳定的精度提升。在多个模型和下游任务上,校准后的 HiF4 模型与直转相比分别提升 0.39, 0.18 和 0.27 个点,与 BF16 基线之间的差距仅在 1% 以内,并整体优于同为 4 比特量化的 NVFP4 格式。

一:HiFloat4 (HiF4) 格式

HiF4 是昇腾自研的 4-bit 块浮点数据表示格式,其核心特点为采用以64个数为一组的三层缩放(scaling)机制。第一级缩放因子(scale)使用 FP8 格式进行表示,其中 6 比特用于指数部分,2 比特用于尾数部分,即 E6M2。第二级和第三级缩放因子用 E1 表示,提供组内更精细的缩放。组内的每一个元素采用 4 比特的 S1P2 格式。一般而言,SXPY 表示一种定点数格式,其中 S 表示符号位,X 表示整数部分的位数,P 表示小数点,Y 表示小数部分的位数。因此,S1P2 表示该格式由 1 个符号位、1 个整数位和 2 个小数位组成。对于 S1P2 而言,其可表示的非零幅值范围为 ±0.25 到 ±1.75;当整数位和小数位均为 0 时,该元素表示为 0。

 

如图1所示,一个 HiF4 单元包含64个元素。在三层缩放机制中,每 4 个元素共享一个三级阶码,因此一个 HiF4 单元有 16 个三级阶码(E1_16));每两个第三级分组进一步共享一个二级阶码,因此共有 8 个二级阶码 (E1_8)。第一级缩放因子则作用于整个HiF4 单元,因此共有1个一级阶码(E6M2)。整体来看,一个 HiF4 的所有缩放元数据共占用 1x8+8x1+16x1=32 比特,因此对应的元数据开销为每个元素 32/64=0.5 比特。其中的每一个元素可以通过以下公式得出:

 

第一级缩放因子决定整个HiF4单元的整体动态范围,第二级和第三级微指数则在块内部进一步提供细粒度的二次幂缩放。通过这种层次化设计,HiF4 能够在较低元数据开销下,为块内不同局部区域提供不同的缩放尺度,从而缓解单一共享缩放因子难以适配宽动态范围数据分布的问题。

二:GPTQ, AutoRound, FlatQuant的核心思想

模型量化通常可以分为两类:量化感知训练(Quantization-Aware Training, QAT)和训练后量化(Post-Training Quantization, PTQ)。量化感知训练是在模型训练过程中考虑量化的影响,使模型能够在训练阶段就逐渐适应低精度表示带来的数值误差。相比之下,训练后量化则是在不重新训练模型的情况下,直接对已有的高精度模型进行量化。尽管量化感知训练通常能够取得更好的精度表现,但它依赖重新训练,需要大量训练数据和计算资源。因此,在大规模模型部署场景下,训练后量化往往是一种更加实用和便捷的方案。本章节简要介绍已有的三种训练后量化校准方法,其核心思想可为基于 HiF4 格式的量化校准提供思路。

2.1 GPTQ

GPTQ 将量化目标定义为保证线性层量化前后的输出一致性,并利用校准数据构造近似 Hessian 矩阵,以刻画不同权重维度对输出误差的影响。在量化过程中,GPTQ 按列依次量化权重,并根据 Hessian 逆矩阵将当前量化误差补偿到后续未量化的权重列中,从而有效降低累积量化误差。

 

如图 2 所示,左侧矩阵为 Hessian 逆矩阵的 Cholesky 分解结果,右侧矩阵为需要被量化的参数矩阵。GPTQ 先将参数矩阵划分为一系列块(block),并在每个块内按列依次进行量化。对于当前正在被量化的列(图中白色部分),GPTQ 首先将其量化为目标低比特格式,并计算量化前后产生的误差。随后,该误差会根据 Hessian 逆矩阵中的相关系数传播到当前块中尚未量化的后续列(图中深紫色部分),对这些列的权重进行补偿更新。通过这种方式,前一列量化引入的误差可以在后续列中被部分吸收,从而降低块内累积误差。

当一个块内的所有列完成量化后,GPTQ 会进一步将该块产生的整体误差更新到后续尚未处理的块中(图中浅紫色部分)。随后,算法继续处理下一个块,直到整个参数矩阵全部完成量化。整体来看,GPTQ 的核心思想是在逐列量化的过程中结合二阶信息进行误差补偿,使量化后的权重矩阵在校准数据上的层输出尽可能接近原始高精度模型,从而减小低比特量化带来的精度损失。

2.2 AutoRound

与 GPTQ 基于 Hessian 逆矩阵进行误差补偿不同,AutoRound 主要从舍入优化的角度改进量化过程。传统量化通常采用最近邻舍入(rounding-to-nearest, RTN),即直接将高精度权重映射到最近的低精度数值点。然而,在低比特量化场景下,简单的最近邻舍入不一定能够带来最优的量化效果,AutoRound 因此引入可学习的参数来优化舍入过程。

AutoRound 主要面向整型低比特量化,比如 INT4,其目标是将原始高精度权重映射到 2bit 个离散数值上。在量化过程中,通常需要先根据权重的大小确定缩放因子,从而定义可表示的数值范围。在此基础上,AutoRound 对传统量化过程进行了扩展。一方面,它在缩放因子的计算中引入可学习参数 α 和 β,用于调整权重的量化表示范围,如公式(2)所示;另一方面,它引入舍入矩阵 V,用于控制每个权重元素的舍入方向,如公式(3)所示。

 

 

在学习目标上,AutoRound 采用重构损失,即最小化量化层输出与原始高精度层输出之间的差异,其优化目标可表示为公式(4)。通过联合优化 α、β 和 V,AutoRound 能够在校准数据上减小量化前后层输出的重构误差,从而获得比固定最近邻舍入更优的量化结果。

 

在优化方法上,AutoRound 采用 SignSGD 优化器对可学习参数进行更新,其参数更新方式如公式(5)所示。与普通梯度下降使用梯度数值大小不同,SignSGD 只利用梯度的符号来决定参数更新方向,这样带来的好处是更新过程更加平稳。

 

2.3 FlatQuant

与上述两种方法不同,FlatQuant 通过引入可学习的变换矩阵,对权重和激活中的极值进行“摊平”,使二者的数值分布更加平缓,从而降低量化难度。如图 3 所示,在量化前,FlatQuant 分别对激活矩阵 X 和权重矩阵 W 进行等价变换。对于线性层输出Y=XWT,通过引入一个可逆变换矩阵 P,将其改写为 Y=XWT=(XP)(P-1WT)。

 

在大语言模型中,隐藏维度通常很高,如果直接学习完整的变换矩阵 P (维度为 nxn),其参数量和计算开销都会非常大。为降低这一开销,FlatQuant 对变换矩阵 P 进行结构化分解,将其表示为两个较小矩阵 P1, P2 的 Kronecker 积,其中 P1 维度为 n1xn1, P2 维度为 n2xn2,并且 n=n1xn2。可学习的参数量从原来的 n 的平方变成 n1 的平方加 n2 的平方。根据公式(6)可以得知,在最优Kronecker分解条件下,分解后的参数量仅为原来的 n/2,可以显著降低内存需求和推理速度。

 

除了学习变换矩阵之外,FlatQuant 还进一步引入了逐通道缩放和可学习裁剪阈值,以增强对极值的处理能力。首先,为了更灵活地平衡权重和激活中的离群值,FlatQuant 在变换之前加入一个可学习的逐通道缩放向量 c。该缩放向量通过在激活和权重之间重新分配数值尺度,降低单侧极值对量化范围的影响。由于这一缩放可以与前一层的归一化层或线性层进行合并,因此不会在实际推理阶段引入额外计算开销。同时,FlatQuant 还为每个线性层引入可学习的权重裁剪阈值和激活裁剪阈值,用于进一步抑制变换后可能残留的极值。

对于学习目标,FlatQuant同样采用重构损失,使变换后的激活和权重在量化后,仍然能够尽可能重构原始高精度输出,如公式(7)所示。其中 theta 为可学习的参数,包括变换矩阵,缩放向量,以及裁剪阈值,min 里的第一项为原始高精度层输出,第二项为量化后的层输出。

 

三:基于HiF4的量化校准方案

3.1 HiGPTQ

由于 GPTQ 采用逐列方式对权重进行量化,因此其原始方法并不直接适用于 HiF4 格式。HiF4 采用层次化的块浮点(Hierarchical Block Floating Point, BFP)结构,在一个包含 64 个元素的HiF4单元中,一级阶码由整个 64 元素块共享,二级阶码由每 8 个元素共享,三级阶码由每 4 个元素共享。在这种结构下,如果仍然按照 GPTQ 的逐列方式独立处理权重,则无法充分利用 HiF4 内部的层次化缩放关系。

为了解决这一问题,我们提出了 HiGPTQ,一种面向 BFP 类数据格式设计的校准方法。该方法针对 HiF4 的层次化分组结构进行适配,使量化过程能够在更合适的粒度上处理权重,从而更有效地优化层次化缩放元数据与量化元素之间的关系。

首先,blocksize 必须是64或64的倍数,按照每64个数进行分组(groupsize=64),即每一个组(group)对应一个 HiF4 单元。我们假设这64个数对应的阶码的表示形式如下:

● 1个一级阶码:1-0

● 8个二级阶码:2-(0-7)

● 16个三级阶码:3-(0-15)

在一个组内,HiGPTQ可以有三种实现方案,对应三种不同的阶码固定范围:

● 方案一:每次同时量化64列数据。同时统计和固定一、二、三级阶码,量化后更新block内剩余伪量化权重

● 方案二:每次同时量化8列数据。首先统计并固定一级阶码(1-0),量化8列后更新剩余block剩余伪量化权重。经过误差更新后,每8列数据量化计算前统计并固定二级(2-0)和三级阶码(3-0和3-1), group内部循环计算8次。

● 方案三:每次同时量化4列数据。首先统计并固定一级阶码(1-0),然后统计当前量化数据对应的二级阶码并固定(2-0),对第一组4列数据进行量化(固定3-0),误差更新后,第二组4列数据重新统计三级阶码(3-1)然后进行量化。

 

3.2 HiAutoRound

AutoRound 主要针对整型表示形式,例如 INT4,其可学习的舍入调整机制用于将全精度数值映射到离散的线性的整型表示。然而,这一建模方式并不适用于 HiF4,因为HiF4 采用的块浮点格式使其数值表示和舍入过程与整形量化存在本质差异。因此,我们提出 HiAutoRound,一种面向 BFP 数据格式特点设计的校准方法。该方法将可学习参数引入 HiF4 的量化过程中,使其能够更充分地利用 HiF4 的层次化结构特征,从而提升量化校准效果。

具体而言,HiAutoRound引入两组可学习参数,K 和 M,分别用于对指数部分和尾数部分进行补偿。对于指数补偿,参数 K 被加到第三级阶码上。由于一个HiF4单元有16个三级阶码,K 的个数为16。补偿后的指数可表示为:E'=E+RZ(K)。

对于尾数补偿 M ,考虑到 K 带来的影响(由于阶码补偿项本身具有阶梯性,按照公式仅能取整数,在阶梯附近数值突变巨大。𝐾增长的同时会导致尾数补偿项 𝑀 翻倍,失去数值连续性),我们首先对 M 进行位移操作,即 M'=M >> RZ(K),以此来保证数值的连续性,再把 M' 补偿到尾数上。

具体的量化校准流程如图5所示。首先,对阶码补偿参数和尾数补偿参数进行初始化。在每一次迭代中,原始权重首先根据当前的阶码补偿和尾数补偿被量化为 HiF4 格式。随后,量化后的 HiF4 权重被反量化为可用于计算的近似权重,并输入到对应的线性层中,以获得量化后的层输出。该输出会与原始全精度权重下的层输出进行比较,并计算二者之间的均方误差(MSE loss)。最后,以该损失作为优化目标,通过梯度下降算法更新阶码补偿和尾数补偿参数。经过多轮迭代后,补偿参数逐渐收敛,使 HiF4 量化后的权重能够更好地近似原始权重的层输出,从而降低量化误差。

 

3.3 HiFlatQuant

在 FlatQuant 中,可学习激活裁剪和可学习权重裁剪起着重要作用。这是因为 INT4 等基于整数表示的低比特量化格式通常具有有限的线性表示范围,难以有效覆盖大语言模型权重或激活中存在的显著离群值。因此,在量化之前需要通过自适应裁剪对极端数值进行截断或抑制,以降低离群值对量化精度的影响。然而,引入这些额外的参数也会带来更高计算复杂度和降低校准效率。

相比之下,HiF4 具有更大的非线性动态表示范围,能够更贴合大语言模型权重分布中的尺度变化和离群现象。因此,在基于 HiF4 的校准过程中,通常不需要额外学习激活裁剪和权重裁剪就可以达到很好的效果,这样可以在保持数值表示能力的同时,减少校准阶段的参数数量与计算复杂度,从而提升量化流程的效率。

HiFlatQuant 的具体量化过程如图6所示。首先初始化可学习参数,然后对原始权重和激活矩阵进行缩放,并根据公式(8)进行仿射变换。变换后的权重和激活进行量化反量化后计算层输出。该输出与原始全精度权重下的层输出进行比较,并计算二者之间的均方误差(MSE loss)。最后,以该损失作为优化目标,通过梯度下降更新可学习参数, 包括仿射变换矩阵 P1, P2 和逐通道缩放因子 c。

 

 

四:实验与讨论

4.1 实验结果

为了评估量化后的模型精度,我们选取了一系列在大语言模型评测中广泛使用的基准数据集,包括 ARC-Challenge、ARC-Easy、BoolQ、HellaSwag、Lambada-OpenAI、PIQA 和 WinoGrande。这些基准任务覆盖了多种典型的语言理解与常识推理能力评估场景,可以较为全面地衡量量化方法对模型精度的影响。

实验结果如表1和表2所示,表1展示了具体的精度结果,表2展示了在所有模型和数据集上平均的精度结果。在3个模型和7个数据集上,HiGPTQ,HiAutoRound 和 HiFlatQuant 均有明显收益:相较于 HiF4 直转,三个方法分别提升 0.39,0.18 和 0.27 个点。校准后的 HiF4 模型相比 BF16 掉点不到 1%,且精度明显高于同为4比特量化的 NVFP4 (掉点1.57)和 NVFP4 + per-tensor scaling (PTS) (掉点1.51) 格式。

 

 

4.2 方法对比分析

本文提出的三种校准方法虽然都能提高量化精度,但它们在校准机制,优化策略,量化对象和推理开销等方面略有不同。表3总结了三种方法在四个维度上的关联与不同之处。

HiGPTQ

HiAutoRound

HiFlatQuant

校准机制

基于 Hessian 逆矩阵补偿量化误差

学习阶码补偿和尾数补偿

学习等价变换以平滑异常值

优化策略

二阶近似误差补偿

梯度下降

梯度下降

量化对象

权重

权重

权重和激活

推理开销

无额外开销

无额外开销

取决于变换是否可可融合进相邻层

校准机制方面,HiGPTQ 利用 Hessian 逆矩阵中的二阶信息,将已量化部分产生的误差传播并补偿到尚未量化的权重中,从而降低量化误差的累积。HiAutoRound 则在量化过程用于中引入可学习的偏移参数,调节第三级阶码和独立尾数,以提高量化后数值的重构精度。HiFlatQuant 主要针对权重和激活中的异常值问题,通过学习等价变换对其分布进行平滑,使张量在量化前更适合低比特表示,从而降低低比特量化难度。

优化策略方面,HiGPTQ 利用 Hessian 逆矩阵信息对量化误差进行解析式补偿,通过更新后续未量化权重来降低误差累积,因此不依赖梯度训练。相比之下,HiAutoRound 和 HiFlatQuant 均引入可学习参数,并通过梯度下降进行校准优化。两者通常采用重构类损失,最小化高精度模型与量化模型输出之间的差异。因此,HiGPTQ 可视为一种二阶误差补偿方法,而 HiAutoRound 和 HiFlatQuant 属于基于学习的校准方法。

量化对象方面,HiGPTQ 和 HiAutoRound 主要针对模型权重进行量化,尤其是模型中的线性层权重,因此属于 Weight-Only Quantization。相比之下,HiFlatQuant 属于 Weight-Activation Quantization,需要同时处理权重和激活。这是因为 HiFlatQuant 通过学习等价矩阵变换来平滑异常值,为了维持输出等价性,该变换(P和P-1)需要分别作用于激活和权重矩阵。

推理开销方面,HiGPTQ 和 HiAutoRound 仅对模型权重进行量化,量化后的权重可直接保存并用于推理,因此不会引入额外推理开销。相比之下,HiFlatQuant 需要对权重和激活施加额外变换,其推理开销取决于这些变换能否被折叠或融合到已有计算中。若权重侧变换可提前合并到存储权重中,则主要开销来自激活侧变换;若进一步采用高效的变换折叠或算子融合,额外开销可以被降低。

五:总结

本文提出了三种基于 HiF4 格式的大模型量化校准算法,即 HiGPTQ、HiAutoRound 和 HiFlatQuant。三种方法分别将现有量化校准思想适配到 HiF4 的分层块浮点结构中。具体而言,HiGPTQ 利用二阶信息补偿量化误差;HiAutoRound 通过引入可学习补偿参数,自适应调整阶码和尾数分量;HiFlatQuant 则通过学习等价变换矩阵,在量化前平滑权重和激活中的异常值。实验结果表明,与 HiF4 直转相比,三种校准方法均能显著 HiF4 的量化精度,并且校准后的 HiF4 模型与 BF16 高精度基线之间的性能差距仅为 1% 以内,模型精度优于同为4比特的 NVFP4 格式。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐