回答要点:
定义:将模型中高精度浮点数(如FP32)的权重和激活值,转换为低精度整数(如INT8)的过程。
工作原理(对称量化):
确定范围:找到Tensor(权重或激活值)的绝对最大值 |max|。
计算缩放因子:scale = |max| / (2^(b-1)-1), 对于INT8,分母是127。
量化:将FP32值除以scale,然后四舍五入到最近的整数:q = round(fp / scale)。
反量化:在计算时,将整数值转换回近似的FP32值:fp" = q * scale。
回答要点:
训练后量化:
过程:在模型训练完成后,直接对权重进行量化。对激活值的量化可能需要一个校准集来确定动态范围。
优点:简单、快速,无需重新训练。
缺点:精度损失通常较大,尤其是当模型权重或激活值分布不均匀时。
场景:作为部署前的快速优化步骤,对精度要求不极致的场景。
量化感知训练:
过程:在模型训练(或微调)过程中,模拟量化的效果。前向传播使用模拟的量化值,反向传播则通过直通估计器来更新高精度的权重。
优点:模型在训练时就“学会”了适应低精度表示,精度损失非常小,甚至可忽略。
缺点:需要额外的训练时间和计算资源。
场景:对精度要求严苛的工业级部署。