2022年2月24日星期二上午08:47时 | 发布人:齐拉格·帕特尔
在本帖中提及的Qualcomm产品均由Qualcomm Technologies公司和/或其子公司提供。
在探讨AIMET的训练后量化方法时,我们讨论了AIMET中的跨层均衡(CLE)、偏差修正和AdaRound。利用该类方法,可以将神经网络模型的权重和激活转化为较低的位宽表征,从而缩小模型的尺寸。通过这种方式,开发人员可以针对所连接的智能边缘对其模型进行优化,从而确保该等模型具有速度快、体积小、功率高效的特点。
https://arxiv.org/abs/2201.08442http://下载:白皮书
所披露的信息基于本公司Qualcomm人工智能研究团队最新提供的一份白皮书《利用人工智能模型效率工具包(AIMET)进行神经网络量化》,该白皮书提供了有关AIMET优化的深度具体内容。
该白皮书还提到,仅依靠训练后量化可能不足以克服某些模型中低位宽量化所导致的误差。与32位浮点值(FP32)相比,如果使用低精度整数(例如,8位)导致性能大幅下降,则开发人员可以利用AIMET的量化感知训练(QAT)功能。
现在让我们详细了解一下AIMET的量化感知训练功能。
量化模拟与量化感知训练
要理解量化感知训练,首先要理解AIMET的一个基本特征:量化模拟。正如白皮书第3章所述,量化模拟是一种通过尝试不同量化选项偏离目标(例如:在对模型进行训练的开发设备上)对某一种模型的运行时间-目标推理性能进行测试的方法。
AIMET可以将量化器节点(又名模拟(sim)选项)插入到神经网络中,以进行量化模拟,从而形成了量化模拟模型。通过在神经网络中插入量化器节点(又名仿真(sim) ops)来进行量化仿真,从而创建量化仿真模型。该等量化模拟选项模拟模型再训练/微调过程中的量化噪声,通常会产生比训练后量化更好的解决方案,因为模型参数可以适应防止量化噪声。
AIMET同样支持具有范围学习功能的量化感知训练,这意味着除了自适应模型参数外,也可以将量化阈值作为微调的一部分进行学习。
下文附图1显示了AIMET量化感知训练功能的工作流程:
附图1 – 包含AIMET量化感知训练功能的工作流程。
指定一个预训练的32位浮点值模型,其工作流程包括以下内容:
- 可以有选择地将训练后量化方法(例如:跨层均衡)应用于32位浮点值模型。采用训练后量化技术,可以为量化感知训练的微调提供更好的初始化点。
- AIMET将量化模拟选项插入到模型图中,从而创建出量化模拟模型。用户同样可以提供额外的配置(例如:量化方案、层融合规则),将运行时间的知识嵌入到优化过程中。
- 然后,利用用户的原始训练管道和训练数据集对模型行微调。
- 最后,可以将经过优化的模型连同所推荐量化编码的JSON文件一起返回。可以将此连同模型一起传送到Qualcomm神经处理软件开发工具包,以产生针对Snapdragon移动平台所优化的最终数据链路控制模型。
虽然模型微调可能会令人畏缩,但是量化感知训练可以在10到20个型样内达到良好的准确度(而全模式训练可能需要数百个型样)。如要利用量化感知训练实现更好/更快的收敛,则应该按照上述建议实施良好的初始化。可以按照白皮书中的指导方针选择超参数。
AIMET API
AIMET提供了一个高等级量化感知训练应用程序界面,可以利用量化模拟选项创建量化模拟模型,该等量化模拟选项在此处记录,并在白皮书ba中提供的以下代码示例中显示:
该示例创建了一个PyTorch模型,然后利用该模型对AIMET量化模拟模型类的相应模拟模型进行实例化。该类别采用compute_encodings()方法,然后对模拟模型进行量化。然后,通过用户培训管道提供(利用量化感知培训对模型进行微调)的训练trainer_function() – 一种用户定义功能 – 对模拟模型进行训练。最后, export()方法将输出经过量化的模拟模型以及量化参数编码。
量化感知训练结果
该白皮书显示了AIMET量化感知训练功能某些令人印象深刻的结果。附表1将32位浮点值版本的两种基线模型(MobileNetV2和ResNet50)与利用AIMET中的训练后量化方法和训练感知训练功能予以量化的模型进行了比较:
附表1 - AIMET量化感知训练(最高准确度)
如要了解更多信息,请务必查看此处的白皮书,以及以下资源:
- 为高效推理量化深度卷积网络:一篇白皮书:涵盖量化的基本原理,并涵盖在Qualcomm高通数字信号处理器上的模型性能指标。
- 神经网络量化白皮书:提供了训练后量化和量化感知训练的深入背景信息。
- QDN上的人工智能模型效率工具箱页面:登陆页面,以查看了解和使用AIMET所需要的所有资源的链接。
- 设备边缘的人工智能:开发人员指南:一本为了帮助您起步而在设备边缘和工具上进行人工智能处理的电子书。
- AIMET GitHub页面:AIMET是一个开源项目,可用于创建有关神经网络模型的高级量化和压缩技术。
Snapdragon和Qualcomm审计处理软件开发工具包是 Qualcomm Technologies, Inc.和/或其子公司的产品。Qualcomm人工智能研究是Qualcomm Technologies, Inc.的一项倡议。AIMET是Qualcomm Innovation Center, Inc.的产品。
