昇腾AI处理器支持多种数据精度,当前支持的有FP16、INT8、INT4。正常情况下,数据精度越高,计算越准确,模型的计算准确度越高;但同时硬件资源消耗也越多,性能也越低。为了平衡性能和准确度,可以选择对模型做混合精度处理,即同一个模型中同时存在多种数据精度(FP16、INT8、INT4)或其中的一部分。
当前量化感知训练支持对不同的层做不同精度的量化处理,INT4量化与INT8量化相比,可以提升性能,但精度损失下降多,需要通过手动回退若干层精度才能达标,而对于某一层,如何选择数据精度(即配置中的dst_type,详情请参见量化感知训练简易配置文件)是比较困难的,手动尝试的配置需要进行重训练,耗费时间多。针对上述问题,引入自动混合精度搜索特性,对于量化感知训练场景下用户手动调优难的问题,给出一组较优解,平衡精度和性能,缩短调优时间:基于训练后量化来获取可量化层对数据精度的敏感度,使用每一层的计算量来估计性能,综合上面两个因素,搜索最佳的混合精度配置,生成一个用于量化感知训练的简易配置文件,可进行后续的量化感知训练。
自动混合精度搜索实现流程如图1所示,由于自动混合精度搜索功能中包括训练后量化和量化感知训练,因此支持的层以及规格为训练后量化和量化感知训练所支持的层以及规格。
各流程简要说明如下:
典型的压缩率:整网int8量化=4,整网int4量化=16,混合精度配置可以为1~16之间的一个浮点数。