AI 模型效率工具包用户指南
概述
AI 模型效率工具包 (AIMET) 是一个软件工具包,使用户能够压缩和量化模型。
AIMET 提供了旨在用于训练模型的优化,因此可以进一步训练(也称为微调)生成的压缩和/或量化模型,以恢复任何精度损失。 AIMET 目前支持 TensorFlow 和 PyTorch 模型。
上图显示了使用 AIMET 时工作流的高级视图。 用户将从 TensorFlow 或 PyTorch 训练框架中的训练模型开始。 这个经过训练的模型使用 API 传递给 AIMET,以进行压缩和量化,我们将详细介绍。 AIMET 返回模型的压缩/量化版本,用户可以对其进行微调(或进一步训练少量时期)以恢复丢失的准确性。 然后,用户可以通过 ONNX 导出到目标运行时,如 Qualcomm® 神经处理 SDK。
特点
AIMET 支持两种类型的功能
模型压缩:AIMET 支持多种模型压缩技术,允许用户采用经过训练的模型并去除冗余,从而生成更小的模型,在目标上运行得更快。
模型量化:AIMET 可以为给定的训练模型模拟量化硬件的行为。 这允许用户在这个模拟的量化硬件上微调模型。 AIMET 还提供训练后量化技术,使模型更适合量化。
AIMET模型压缩
概述
AIMET 提供了一个模型压缩库,可用于以最小的精度下降降低模型的 MAC 和内存成本。 AIMET 支持各种压缩方案,如权重 SVD、空间 SVD 和通道修剪。
用例
AIMET 允许用户采用经过训练的模型并将其压缩到所需的压缩率,然后可以进一步微调并导出到目标。 AIMET 中的所有压缩方案都使用两步过程 - 压缩比选择,然后是模型压缩。
以下小节更详细地解释了这些步骤。
压缩比选择
贪婪压缩率选择:在此阶段,分析原始模型的各个层以确定每层的最佳压缩率。 目前 AIMET 支持贪婪压缩比选择方法。
手动压缩率选择:作为 AIMET 自动选择每层最佳压缩率的替代方法,用户可以选择手动指定每层压缩率。 建议的程序是首先使用贪婪压缩比选择方法来获得一组标称的压缩比。 然后以此为起点手动更改一层或多层的压缩比。
为了可视化压缩工具的各种用法,我们可以使用:
可视化
模型压缩
在此阶段,AIMET 将应用每层的压缩率来创建压缩模型。 目前,AIMET 支持以下模型压缩算法。
- 权重SVD
- 空间SVD
- 通道修剪
获得更好压缩结果的可选技术
AIMET 支持以下技术,可以选择使用这些技术以获得更好的压缩结果
- Rank Rounding
- 每层微调
Rank Rounding
通常,像嵌入式 ML 加速器这样的 ML 运行时软件,会更喜欢 Conv2d 或 FC 等层的维度具有一定的多样性。匹配预期的维度大小将导致该层的最佳运行时间。 AIMET 技术,如权重/空间 SVD 或通道修剪,尝试分解层或减少层 - 特别是在输出通道和输入通道方面。 AIMET 中的Rank Rounding功能将尝试减少层数以匹配用户提供的多样性。默认情况下,此功能处于禁用状态。目前,AIMET 允许用户为整个模型指定多重因子,而不是在每层基础上。
用户可以利用此功能生成更优化的模型,以便在嵌入式目标上运行。
每层微调
给定用户模型和所需的压缩比,用户有时可能会注意到在压缩之后但在微调之前准确度急剧下降。一种可能有助于对此类场景进行整体压缩的技术是使用称为每层微调的功能。选择此功能后,AIMET 会在压缩选定进行压缩的每一层后调用用户提供的微调功能。这是在上图中的模型压缩阶段完成的。
注意:用户负责选择合适的学习率和其他训练参数进行微调。使用此功能可能需要用户仔细选择要在微调期间使用的学习率和学习率衰减参数。