基本概念

AMCT基于TensorFlow框架运作,实现了神经网络模型中数据与权重低比特量化、稀疏、张量分解、模型部署优化(主要为算子融合)的功能,该工具优点如下:

AMCT当前使用的压缩方法主要包括:量化、稀疏、组合压缩、近似校准和张量分解,量化过程中会实现模型部署优化(主要为算子融合)功能。

量化

量化是指对模型的权重(weight)和数据(activation)进行低比特处理,让最终生成的网络模型更加轻量化,从而达到节省网络模型存储空间、降低传输时延、提高计算效率,达到性能提升与优化的目标。

AMCT将量化和模型转换分开,实现对模型中可量化层的独立量化,并将量化后的模型存为pb文件;其中量化后的仿真模型可以在CPU或者GPU上运行,完成精度仿真;量化后的部署模型可以部署在昇腾AI处理器上运行,达到提升推理性能的目的。经过AMCT量化后的TensorFlow模型,量化后的精度仿真模型和部署模型合二为一。

当前该工具仅支持对FP32/FP16数据类型的网络模型进行量化,以量化到INT8数据类型为例,其运行原理如下图所示。该特性详细介绍请参见量化

图1 量化运行原理

模型部署优化

主要为算子融合功能:是指通过数学等价,将模型中的多个算子运算融合单算子运算,以减少实际前向过程中的运算量,如将卷积层和BN层融合为一个卷积层。

其运行原理如下图所示。

图2 模型部署优化原理

稀疏

稀疏是通过结构剪枝的方式,对模型中的部分算子实现权重的稀疏化,从而得到一个参数量更小、计算量更小的网络模型。AMCT目前有两种稀疏方式:通道稀疏和4选2结构化稀疏。每次只能使能其中一种稀疏方式,即对于同一层可压缩算子,通道稀疏和4选2结构化稀疏不能同时配置。

通道稀疏与4选2结构化稀疏相比,稀疏颗粒度更大,对模型的精度影响也越大,但是能够获取到的性能收益也越大,用户可以根据实际情况选择一种稀疏方式。

组合压缩

组合压缩是结合了稀疏量化的特性,根据配置文件先进行稀疏,然后进行量化;在稀疏时根据相应算法插入稀疏算子,然后量化时,对稀疏后的模型插入数据和权重的量化层和SearchN的层,生成组合压缩模型,以期望得到更高的性能收益。生成组合压缩模型后,对模型进行重训练,保存为既可以进行精度仿真又可以部署的量化模型。

张量分解

深度学习运算,尤其是CV(计算机视觉)类任务运算,包含大量的卷积运算,而张量分解通过分解卷积核的张量,可以将一个大卷积核分解为两个小卷积核的连乘,即将卷积核分解为低秩的张量,从而降低存储空间和计算量,降低推理开销。

以1个64*64*3*3的卷积分解为32*64*3*1和64*32*1*3的级联卷积为例,可以减少1 - (32*64*3*1 + 64*32*1*3) / 64*64*3*3 = 66.7%的计算量,在计算结果近似的情况下带来更具性价比的性能收益。张量分解运行原理如下图所示。该特性详细介绍请参见张量分解

图5 张量分解运行原理