下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

简介

量化方式

AMCT支持命令行方式和Python API接口方式量化原始网络模型,命令行方式相比Python API接口方式有以下优点:

表1 量化方式比较

命令行方式

Python API接口方式

量化准备动作简单,只需准备模型和模型匹配的数据集即可。

需要了解Python语法和量化流程。

量化过程简单,只涉及参数选择,无需对量化脚本进行适配。

需要适配修改量化脚本。

当前仅支持训练后量化中的均匀量化。

支持量化的所有功能。

命令行方式中的均匀量化示例请参见快速入门,Python API接口方式请参见训练后量化

量化分类

量化根据是否需要重训练,分为训练后量化(Post-Training Quantization,简称PTQ)和量化感知训练(Quantization-Aware Training,简称QAT),概念解释请参见量化

相关概念

量化过程中使用的相关术语解释如下:

表2 量化过程中的相关概念

术语

解释

数据量化和权重量化

训练后量化和量化感知训练,根据量化对象不同,又分为数据(activation)量化和权重(weight)量化。

当前昇腾AI处理器支持数据(activation)做对称/非对称量化,权重(weights)仅支持做对称量化(量化根据量化后数据中心点是否为0可以分为对称量化、非对称量化,详细的量化算法原理请参见量化算法原理)。

  • 数据(activation)量化

    数据量化是指根据数据的数值分布情况,将输入的数据(activation)处理到低比特。每一层的数据分布是未知且巨大的,只能在前向过程(推理或者训练)中确定,因此数据量化是基于推理或者训练过程的。

    • 训练后量化场景:通过在线量化的方式,修改用户推理模型,在待量化层位置插入旁路量化节点,采集待量化层输入数据,然后校准得到数据量化因子scale、offset。在推理时一般使用少量数据集,代表所有数据集的分布,简单快速。
    • 量化感知训练场景:对数据量化因子scale/offset的训练过程,正向的过程采用scale/offset对数据进行量化;反向的过程则根据反向梯度去计算更新数据量化因子scale/offset。
  • 权重(weight)量化

    权重量化是指根据权重的数值分布情况,将权重处理到低比特。

    • 训练后量化场景:通过离线量化的方式,直接从用户推理模型中读取权重数据,然后调用量化算法对权重进行量化,并将量化后数据写回到模型当中,并参与数据量化。
    • 量化感知训练场景:采用训练weights的方案,正向的过程中对原始浮点权重进行量化,然后计算得到量化的权重参与前向推理计算;反向的过程中将接收到的梯度用于更新原始浮点权重。

测试数据集

数据集的子集,用于最终测试模型的效果。

校准

训练后量化场景中,做前向推理获取数据量化因子的过程。

校准数据集

训练后量化场景中,做前向推理使用的数据集。该数据集的分布代表着所有数据集的分布,获取校准集时应该具有代表性,推荐使用测试集的子集作为校准数据集。如果数据集不是模型匹配的数据集或者代表性不够,则根据校准集计算得到的量化因子,在全数据集上表现较差,量化损失大,量化后精度低。

训练数据集

数据集的子集,基于用户训练网络中的数据集,用于对模型进行训练。

量化因子

将浮点数量化为整数的参数,包括缩放因子(Scale),偏移量(Offset)。

将浮点数量化为整数(以INT8为例)的公式如下:

Scale

量化因子,浮点数的缩放因子,该参数又分为:

  • scale_d:数据量化scale因子,仅支持对数据进行统一量化。
  • scale_w:权重量化scale因子,支持标量(对当前层的权重进行统一量化),向量(对当前层的权重按channel_wise方式进行量化)两种模式。关于参数的更多说明请参见record记录文件

Offset

量化因子,偏移量,该参数又分为:

  • offset_d:数据量化offset因子,仅支持对数据进行统一量化。
  • offset_w:权重量化offset因子,同scale_w一样支持标量和向量两种模式,且需要同scale_w维度一致。关于参数的更多说明请参见record记录文件
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词