升腾CANN量化是通过AMCT工具进行模型压缩,实现对模型权重和数据的低比特化处理(int8)。量化流程主要包含训练后量化和量化感知训练,其中训练后量化不依赖硬件环境,通常使用普通CPU运行,完成后生成量化模型,用于后续推理。
量化过程包括权重和数据从float32转换为int8。并非所有算子都会进行量化,如非线性算子如激活算子一般不进行量化。网络中会插入dequant算子与quant算子成对出现。量化的运行原理可通过下图展示,主要涉及二值化、线性量化和对数量化等算法。
线性量化又分为对称量化和非对称量化。CANN量化算法采用线性量化方式,并对对称和非对称量化进行了归一化处理。对称量化允许正负数范围在相同尺度内量化,非对称量化则允许正负数使用不同尺度量化。归一化方法通过变换非对称量化公式,使量化后的数据格式统一为int8,确保数据格式一致,便于后续处理。
在CANN中,量化可通过公式表示,其中scale为缩放因子,offset为偏移量。经过对称和非对称量化归一化处理后,量化数据统一为int8格式,便于数据处理和存储。CANN量化方法通过简单的数据变换,实现量化数据与对称量化算法的格式统一,简化了数据处理流程。
总结,升腾CANN量化通过AMCT工具实现模型压缩,通过训练后量化处理,优化模型性能。量化流程涉及多种算法,如线性量化和归一化方法,确保数据格式一致,提高模型推理效率。通过理解量化原理和方法,可以更好地应用升腾CANN量化技术,提升模型性能。