---
title: 学习向导
description: "本节给出AMCT（Ascend Model Compression Toolkit，简称AMCT）的概念以及优势、文档的使用对象，并给出不同框架下AMCT的差异，用户根据场景选择不同框架进行模型压缩。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/amct/atlasamct_16_0001.html
sourcePath: /source/zh/canncommercial/900/devaids/amct/atlasamct_16_0001.html
indexId: f7da98fbb519791109086dc0dabc253af21bdfc959d89e35052d979f398a3e9565
---
# 学习向导

本节给出AMCT（Ascend Model Compression Toolkit，简称AMCT）的概念以及优势、文档的使用对象，并给出不同框架下AMCT的差异，用户根据场景选择不同框架进行模型压缩。

AMCT是一个针对昇腾芯片亲和的深度学习模型压缩工具包，提供量化、张量分解等多种模型压缩特性，压缩后模型体积变小，部署到AI处理器上后可使能低比特运算，提高计算效率，达到性能提升的目标。

AMCT基于开源框架运作，实现了神经网络模型中数据与权重低比特量化、张量分解、模型部署优化（主要为算子融合）的功能，该工具优点如下：

- 使用方便，基于用户原有的框架环境，安装工具包即可。
- 接口简单，在用户基于开源框架的推理脚本基础上，调用API即可完成模型压缩，压缩后的模型支持在CPU和GPU运行。
- 与硬件配套，生成的压缩模型经过ATC工具转换后可在AI处理器上推理。
- 量化可配置，用户可自行修改量化配置文件，调整压缩策略，获取较优的压缩结果。

AMCT当前使用的压缩方法主要包括量化和张量分解，量化过程中可以实现模型部署优化（主要为算子融合）。

#### 各种压缩方式优缺点比较


**表1 压缩方式比较**

| 压缩方式 | 压缩方式 | 优点 | 缺点 | 支持框架 | 产品支持情况 |
| --- | --- | --- | --- | --- | --- |
| 量化 | 训练后量化 | 不需要重训练模型。 只需少量校准数据。 | 依赖校准数据集分布情况，如果校准数据集与验证数据集分布差异较大，会导致量化结果差；没有对权重进行重训练，量化后模型精度掉点较大。 | Caffe TensorFlow PyTorch ONNX TensorFlow,Ascend | Atlas 推理系列产品 Atlas 训练系列产品 Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |
| 量化 | 量化感知训练 | 需要重新训练模型。 精度损失小。 | 训练过程中进行的量化，过程比较耗时。 量化过程中需要的数据会更多，通常是完整训练数据集。 | Caffe TensorFlow PyTorch | Atlas 推理系列产品 Atlas 训练系列产品 Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |
| 稀疏 | 通道稀疏 | 稀疏颗粒度更大，能够获取到更大的性能收益。 稀疏率可配置。 | 改变权重的形状，会影响上层或下层的算子。 稀疏后需要进行重训练，过程比较耗时。 对模型的精度影响大。 | TensorFlow PyTorch | Atlas 推理系列产品 Atlas 训练系列产品 Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |
| 稀疏 | 4选2结构化稀疏 | 稀疏的粒度较小，可以保留较多重要信息，具有细粒度稀疏的精度优势。 | 受硬件限制，只在部分芯片支持。 稀疏后需要进行重训练，过程比较耗时。 稀疏率固定为50%。 | TensorFlow PyTorch | Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 不支持该特性。 |
| 组合压缩 | \- | 可以同时对模型进行量化和稀疏，得到更高的压缩率。 | 涉及重训练，过程比较耗时；同步进行了量化和稀疏，对模型精度影响大。 | TensorFlow PyTorch | Atlas 推理系列产品 Atlas 训练系列产品 Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |
| 张量分解 | \- | 将卷积核分解为低秩张量，降低存储空间和计算量 | \- | Caffe TensorFlow PyTorch | Atlas 推理系列产品 Atlas 训练系列产品 Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |
| 量化数据均衡预处理 | \- | 降低activation离群值对于量化后模型精度的影响。 | \- | TensorFlow PyTorch ONNX | Atlas 推理系列产品 Atlas 训练系列产品 Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |
| 逐层蒸馏 | \- | 在量化的基础上可以对权重进行微调，在保障较高精度的同时，对比重训练有更短的执行时长。 | \- | PyTorch | Atlas 推理系列产品 Atlas 训练系列产品 Atlas 200I/500 A2 推理产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |
| KV Cache量化 | \- | 不需要对模型进行重训练；只需要少量校准数据 | 只对节点的输出进行量化，不会提升模型运行效率。 | PyTorch | Atlas 推理系列产品 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |


#### AMCT各框架差异

| 手册 | 介绍 |
| --- | --- |
| AMCT（PyTorch） | 针对PyTorch框架模型进行的压缩，需要搭建PyTorch环境，搭建完成后安装AMCT工具。 |
| AMCT（ONNX） | 针对ONNX模型进行的压缩，需要搭建ONNX Runtime环境，搭建完成后安装AMCT工具。 |
| AMCT（TensorFlow） | 针对TensorFlow框架模型进行的压缩，需要搭建TensorFlow环境，搭建完成后安装AMCT工具。 |
| AMCT（Caffe） | 针对Caffe框架模型进行的压缩，需要搭建Caffe环境，搭建完成后安装AMCT工具。 如下产品不支持Caffe框架： Atlas A2 训练系列产品 / Atlas A2 推理系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 Atlas 350 加速卡 |
| AMCT（TensorFlow,Ascend） | 需要搭建TensorFlow环境，并借助带有NPU设备的在线推理环境；搭建完成后安装AMCT工具。 |


#### 使用对象

本文档用于指导开发者如何使用AMCT工具进行模型压缩，通过本文档您可以达成以下目标：

- 了解AMCT不同的压缩方法。
- 能够基于文档中提供的方法，完成不同模型的压缩。
- 掌握常用的压缩方法：量化。

熟悉Linux基本命令、具备Python语言程序开发能力，对机器学习、深度学习有一定了解的人员，可以更好地理解本文档。
