模型量化能显著减小内存,但选择合适的量化粒度(Quantization Granularity)对保持精度不劣化非常关键。常用量化粒度介绍如下。
Per-Tensor Quantization
Per-Tensor或者Per-Layer量化,即整个tensor共用一个量化参数。由于权重参数值范围沿着channel变化,这会出现精度下降问题。
Per-Channel Quantization
Per-Channel量化是对每个channel更精细的量化。由于CNN模型权重沿着channel变化,Per-channel量化很有效果。
Per-channel量化实际是对每个输出channel(等价于对每个卷积核)量化。
可参考: 神经网络量化--per-channel量化 深度学习-理解卷积神经网络中的通道
Sub-channel-wise Quantization
通道组量化即把通道分成组,相比传统per-channel量化,可以获得更精细控制。代价是额外计算(单个通道乘scale参数)。
Groupwise Quantization
分组量化可以减小单个layer的权重参数分布引入的误差。
Per-Token量化
T 表示X的token维度
Ci 表示X的输入通道维度