学习向导
本节给出AMCT(Ascend Model Compression Toolkit,简称AMCT)的概念以及优势、文档的使用对象,并给出不同框架下AMCT的差异,用户根据场景选择不同框架进行模型压缩。
AMCT是一个针对昇腾芯片亲和的深度学习模型压缩工具包,提供量化、张量分解等多种模型压缩特性,压缩后模型体积变小,部署到昇腾AI处理器上后可使能低比特运算,提高计算效率,达到性能提升的目标。
AMCT基于开源框架运作,实现了神经网络模型中数据与权重低比特量化、张量分解、模型部署优化(主要为算子融合)的功能,该工具优点如下:
- 使用方便,基于用户原有的框架环境,安装工具包即可。
 - 接口简单,在用户基于开源框架的推理脚本基础上,调用API即可完成模型压缩,压缩后的模型支持在CPU和GPU运行。
 - 与硬件配套,生成的压缩模型经过ATC工具转换后可在昇腾AI处理器上实现8比特推理。
 - 量化可配置,用户可自行修改量化配置文件,调整压缩策略,获取较优的压缩结果。
 
AMCT当前使用的压缩方法主要包括量化和张量分解,量化过程中可以实现模型部署优化(主要为算子融合)。
各种压缩方式优缺点比较
压缩方式  | 
优点  | 
缺点  | 
支持框架  | 
支持产品型号  | 
|
|---|---|---|---|---|---|
量化  | 
训练后量化  | 
  | 
依赖校准数据集分布情况,如果校准数据集与验证数据集分布差异较大,会导致量化结果差;没有对权重进行重训练,量化后模型精度掉点较大。  | 
  | 
|
量化感知训练  | 
  | 
  | 
  | 
||
稀疏  | 
通道稀疏  | 
  | 
  | 
  | 
|
4选2结构化稀疏  | 
稀疏的粒度较小,可以保留较多重要信息,具有细粒度稀疏的精度优势。  | 
  | 
  | 
不支持该特性。  | 
|
组合压缩  | 
-  | 
可以同时对模型进行量化和稀疏,得到更高的压缩率。  | 
涉及重训练,过程比较耗时;同步进行了量化和稀疏,对模型精度影响大。  | 
  | 
|
张量分解  | 
-  | 
将卷积核分解为低秩张量,降低存储空间和计算量  | 
-  | 
  | 
|
自动混合精度搜索  | 
-  | 
解决用户手动调优困难,自动对每一层计算精度配置给出较优解。  | 
-  | 
  | 
|
量化数据均衡预处理  | 
-  | 
降低activation离群值对于量化后模型精度的影响。  | 
-  | 
  | 
|
逐层蒸馏  | 
-  | 
在量化的基础上可以对权重进行微调,在保障较高精度的同时,对比重训练有更短的执行时长。  | 
-  | 
PyTorch  | 
|
KV Cache量化  | 
-  | 
不需要对模型进行重训练;只需要少量校准数据  | 
只对节点的输出进行量化,不会提升模型运行效率。  | 
PyTorch  | 
|
AMCT各框架差异
手册  | 
介绍  | 
|---|---|
针对PyTorch框架模型进行的压缩,需要搭建PyTorch环境,搭建完成后安装AMCT工具。  | 
|
针对ONNX模型进行的压缩,需要搭建ONNX Runtime环境,搭建完成后安装AMCT工具。  | 
|
针对TensorFlow框架模型进行的压缩,需要搭建TensorFlow环境,搭建完成后安装AMCT工具。  | 
|
针对Caffe框架模型进行的压缩,需要搭建Caffe环境,搭建完成后安装AMCT工具。 如下产品型号不支持Caffe框架:  | 
|
需要搭建TensorFlow环境,并借助带有NPU设备的在线推理环境;搭建完成后安装AMCT工具。  | 
使用对象
本文档用于指导开发者如何使用AMCT工具进行模型压缩,通过本文档您可以达成以下目标:
- 了解AMCT不同的压缩方法。
 - 能够基于文档中提供的方法,完成不同模型的压缩。
 - 掌握常用的压缩方法:量化。
 
熟悉Linux基本命令、具备Python语言程序开发能力,对机器学习、深度学习有一定了解的人员,可以更好地理解本文档。