AI模型效率工具包 (AIMET)
AIMET 是一个库,为经过训练的神经网络模型提供高级量化和压缩技术。 它提供的功能已被证明能够在深度学习神经网络模型的运行时性能、计算和内存需求更低的情况下,几乎不影响任务准确性。
AIMET设计旨在与PyTorch、TensorFlow和ONNX模型配合使用。
我们还托管了AIMET模型动物园 - 一些优化用于8位推理的流行神经网络模型的集合。 我们还提供了使用AIMET量化浮点模型的配方。
目录
快速安装
AIMET PyTorch GPU PyPI软件包可用于符合以下要求的环境:
- 64位英特尔x86兼容处理器
- Linux Ubuntu 22.04 LTS [Python 3.10] 或 Linux Ubuntu 20.04 LTS [Python 3.8]
- Torch 1.13+cu117
安装
apt-get install liblapacke
python3 -m pip install aimet-torch
要安装其他AIMET变体和版本,请按照以下任一链接进行安装说明:
为什么选择AIMET?
- 支持高级量化技术:使用整型时的推理远比使用浮点数时快。例如,在Qualcomm Hexagon DSP上,模型运行速度比在Qualcomm Kyro CPU上快5至15倍。此外,8位精度模型的占用空间比32位精度模型小4倍。然而,在量化机器学习模型时保持模型准确性往往具有挑战性。AIMET通过使用无数据量化等新技术解决了这个问题,提供了在多个流行模型上实现最先进的INT8结果。
- 支持高级模型压缩技术 使模型在推理时运行更快,并需要更少的内存
- AIMET设计旨在自动优化神经网络,避免了耗时而乏味的手动调整。AIMET还提供了用户友好的API,允许用户直接从其TensorFlow或PyTorch管道中进行调用。
请访问GitHub上的AIMET页面了解更多详情。
支持的功能
量化
- 跨层均衡:均衡权重张量以减少通道间的振幅变化
- 偏差校正:纠正由于量化引入的层输出的偏移
- 自适应舍入:在无标签数据下找到最优舍入
- 量化仿真:模拟量化推理精度
- 量化感知训练:使用量化仿真进一步训练模型以提高精度
模型压缩
- 空间SVD:张量分解技术将大层分割成两个较小的层
- 通道剪枝:从层中删除冗余的输入通道并重建层权重
- 按层选择压缩比:自动选择模型中每层压缩的程度
可视化
- 权重范围:可视化查看模型是否适用于应用跨层均衡技术。以及应用技术后的效果
- 按层压缩敏感度:可视化反馈模型中任何特定层对压缩的敏感度
最新动态
一些最近添加的功能包括
- 自适应舍入(AdaRound):在无标签数据下找到最优舍入
- 支持循环模型(包括RNN、LSTM和GRU)的量化感知训练(QAT)
结果
AIMET可以将现有的32位浮点模型量化到8位定点模型,而不会牺牲太多精度,也无需对模型进行微调。
数据无关量化(DFQ)
将DFQ应用于诸如MobileNet-v2和ResNet-50等多个流行网络,使用自动化方法无需任何训练数据,将精度降低到8位量化的损失小于0.9%。
模型 | FP32 | INT8仿真 |
---|---|---|
MobileNet v2 (top1) | 71.72% | 71.08% |
ResNet 50 (top1) | 76.05% | 75.45% |
DeepLab v3 (mIOU) | 72.65% | 71.91% |
AdaRound(自适应舍入)
ADAS对象检测
对于这个具有挑战性的量化到8位精度的ADAS对象检测模型,AdaRound可以将精度恢复到距FP32精度1%以内。
配置 | mAP - 平均精度 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FP32 | 82.20% | ||||||||||||||
最近舍入(INT8权重,INT8激活) | 49.85% | ||||||||||||||
AdaRound(INT8权重,INT8激活) | 81.21% |
DeepLabv3语义分割
对于某些模型,如DeepLabv3语义分割模型,AdaRound甚至可以将模型权重量化到4位精度而不显著降低精度。
配置 | mIOU - 平均交并比 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FP32 | 72.94% | ||||||||||||||
最近舍入(INT4权重,INT8激活) | 6.09% | ||||||||||||||
AdaRound(INT4权重,INT8激活) | 70.86% |
循环模型的量化
AIMET支持循环模型(RNN、LSTM、GRU)的量化仿真和量化感知训练(QAT)。 使用AIMET中的QAT功能,可以将一款使用双向LSTM的DeepSpeech2模型量化到8位精度,而精度几乎没有下降。
DeepSpeech2 (使用双向LSTM) | 词错误率 |
---|---|
FP32 | 9.92% |
INT8 | 10.22% |
模型压缩
AIMET还可以显著压缩模型。对于流行模型,如Resnet-50和Resnet-18,使用空间SVD加通道剪枝压缩50%的MAC(乘加运算)减少量,同时保留原始未压缩模型约1%的准确度。
模型 | 未压缩模型 | 50%压缩模型 |
---|---|---|
ResNet18 (top1) | 69.76% | 68.56% |
ResNet 50 (top1) | 76.05% | 75.75% |
资源
贡献
感谢您对AIMET感兴趣!请阅读我们的贡献页面以了解更多关于贡献功能或修复bug的信息。我们期待您的参与!
团队
AIMET旨在成为由Qualcomm创新中心维护的社区驱动项目。
许可
AIMET根据BSD 3条款“新”或“修订”许可证授权。有关详细信息,请查看LICENSE。