简介
本章节详细介绍AMCT量化场景,以及每个场景下的功能。
量化分类
量化根据是否需要重训练,分为训练后量化(Post-Training Quantization,简称PTQ)和量化感知训练(Quantization-Aware Training,简称QAT),概念解释请参见量化。
相关概念
量化过程中使用的相关术语解释如下:
术语 |
解释 |
---|---|
数据量化和权重量化 |
训练后量化和量化感知训练,根据量化对象不同,又分为数据(activation)量化和权重(weight)量化。 当前昇腾AI处理器支持数据(Activation)做对称/非对称量化,权重(weights)仅支持做对称量化(量化根据量化后数据中心点是否为0可以分为对称量化、非对称量化,详细的量化算法原理请参见量化算法原理)。
|
量化位宽 |
量化根据量化后低比特位宽大小分为常见的INT8、INT4、INT16,Binary量化等,AMCT支持INT8、INT4和INT16量化方式。
其中:
|
测试数据集 |
数据集的子集,用于最终测试模型的效果。 |
校准 |
训练后量化场景中,做前向推理获取数据量化因子的过程。 |
校准数据集 |
训练后量化场景中,做前向推理使用的数据集。该数据集的分布代表着所有数据集的分布,获取校准集时应该具有代表性,推荐使用测试集的子集作为校准数据集。如果数据集不是模型匹配的数据集或者代表性不够,则根据校准集计算得到的量化因子,在全数据集上表现较差,量化损失大,量化后精度低。 |
训练数据集 |
数据集的子集,基于用户训练网络中的数据集,用于对模型进行训练。 |
量化因子 |
将浮点数量化为整数的参数,包括缩放因子(Scale),偏移量(Offset)。 将浮点数量化为整数(以INT8为例)的公式如下: |
Scale |
量化因子,浮点数的缩放因子,该参数又分为:
|
Offset |
量化因子,偏移量,该参数又分为:
|
量化敏感度 |
模型在不同数据精度下,计算结果是有差异的,正常情况下,数据精度越高计算越准确,网络模型的推理结果越准确,而使用量化方法降低网络模型或者某层的数据精度后,会影响模型推理的精度。为了评估这种影响,引入量化敏感度的概念。 量化敏感度用于评价网络模型或者可量化层受量化影响大小。通过比较网络的输出或者某层的输出在量化前后的差异来计算量化敏感度,常见的指标有MSE(Mean Square Error,均方误差),余弦相似度等。 |
比特复杂度 |
对模型中的某层来说,浮点计算量为Flops。而比特复杂度(bitops)则综合了浮点计算量和数据精度,描述在不同的数据精度下(比如,FP32/FP16/INT8/INT4),计算资源存在的差异。 具体计算方法如下,其中Flops为浮点计算量,act_bit为数据的数据精度,wts_bit为权重的数据精度。 |