利用AIMET进行神经网络优化
发表于 2021-10-11 13:37:34

为了移动设备、物联网和其他嵌入式设备的边缘高效运行神经网络,开发人员努力优化机器学习ML模型的尺寸和复杂程度,同时利用硬件加速进行推理。对于类型设备,电池寿命和热控制必不可少,而且通常是以每瓦为基础衡量性能。优化的机器学习模型可以减少计算、内存流量、延迟和存储需求,同时更有效地利用硬件,从而有助于实现该类目标。

篇博客帖子中,我们将详细介绍机器学习模型优化技术,以及如何利用Qualcomm Technologies和Qualcomm Innovation Center提供的解决方案帮助开发人员实施该类技术

最先进的模型优化

虽然开发人员在模型的设计方面投入了大量的精力,但他们也可以使用以下优化技术减少模型的尺寸和复杂程度:

•量化减少用于表示模型权重和激活的比特数例如,将权重从32位浮点值减少到8位整数

•压缩删除对预测只有很少或没有影响的冗余参数或计算。

成功使用该类优化技术的关键在于能够没有显著影响模型预测性能的情况下实施该类优化技术。在实践中,通过需要以人工方式、通过大量的试验和错误才得以实现。一般情况下,会涉及到对模型优化的迭代,模型预测和运行时性能的预测,然后重复这一过程,将结果与过去的测试进行比较。

鉴于其在移动设备领域的重要性,机器学习模型优化是我们继续进行广泛研究的一个领域。传统上,我们通过会议论文和研讨会等方式分享我们所获得的突破,但对于该类优化技术,我们决定通过发布人工智能模型效率工具包(AIMET)的方式提高其可用性。AIMT为经过训练的神经网络模型提供了一套先进的模型压缩和量化技术。

AIMT支持多种功能,例如自适应舍入(AdaRound)和通道删减,而结果则不言而喻。例如,AIMT无数据量化(DFQ)算法将32位权值量化为8位,精度损失可以忽略不计。而AIMTAdaRound为8位和4位模型提供了最先进的训练后量化,精度非常接近原始FP32的性能。AIMT空间SVD +通道删减则是另一个令人印象深刻的例子,因为它将MAC(倍数累积)减少了50%,同时将精度保持在原始未压缩模型的1%以内。   

2020年5月,本公司的Qualcomm创新中心(QuIC)设立了开源AIMT,从而可以与其他机器学习研究人员合作,以持续改进有益于机器学习社区的模型效率技术。

附图1显示了AIMT如何适应典型机器学期模型优化流程:

 

附图1  机器学期模型优化流程中的AIMT概况

开发人员可以利用AIMT将其先进的模型压缩和量化算法整合到PyTorch和TensorFlow模型构建流程中,以实现训练后的自动优化,以及在需要时进行模型微调。该类算法的自动化有助于消除工优化神经网络的需求,因为人工优化神经网络耗时、容易出错,而且很难重复。

AIMT与Snapdragon

Snapdragon® 移动平台驱动的设备构建机器学习解决方案的开发人员通常使用Qualcomm® 神经处理软件开发工具包。该软件开发工具包提供了一个工作流程,将各种模型(例如:导出的TensorFlow模型)转换为本公司的DLC格式,以便在片上系统的Qualcomm® 人工智能引擎上进行优化执行。

开发人员可以整合AIMT,以便在模型构建流程中更早地进行优化,从而可以在转换为DLC之前评估模型优化情况。这样做有助于减少部署期间的迭代。还可以确保开发人员能够尝试AIMT提供的丰富算法集合。

用户可以按照AIMT用户指南中的AIMET模型压缩主题中的说明,利用AIMT进行模型压缩。AIMT的空间奇异值分解SVD和通道删减(CP技术可以根据用户配置的压缩比对模型进行压缩。

量化工作流程

在将模型导出到目标Snapdragon硬件之前,可以使用AIMT对模型进行优化,以实现量化精度,如附图2所示:

 

附图2  AIMT量化工作流程

以下为该工作流程的主要步骤

1. 利用PyTorch或TensorFlow对模型进行训练,并使用标准的32位浮点数(FP32)权重。

2. 用户使用AIMT内置的训练后量化技术对模型进行量化优化。训练后技术,例如跨层均衡(CLE)和AdaRound等,可以在不需要标记数据的情况下使用,并且可以在不需要模型微调的情况下为多个模型提供良好的性能,从而避免了超参数调整和训练的时间和精力。使用量化仿真,AIMT可以评估模型的准确性,提供了在对目标运行量化推理时所预期的性能估计。

3. 用户(可以选择)使用AIMT的量化感知训练功能对模型进行微调,通过模拟量化噪声并调整模型参数的方式消除该噪声,从而进一步提高量化性能。

4. 优化后的模型作为标准的FP32 TensorFlow或PyTorch/ONNX模型导出,同时导出一个包含推荐量化编码的JSON文件。

5. 将第4步的输出量输送到Qualcomm神经处理软件开发工具包的模型转换工具中。该项操作使用由AIMT生成的量化编码将模型转换为Qualcomm Technologies的DLC格式,以便在片上系统的Qualcomm人工智能引擎上实现最佳执行。

6. 转换后的(DLC)模型部署在目标硬件上。

总结

AIMET 允许开发人员利用尖端的神经网络优化来提高模型的运行时性能,而不会牺牲太多的准确性。 其丰富的最先进优化算法集合消除了开发人员手动优化的需要,并且由于算法的开源特性,后续会持续不断地改进。

要加快使用 AIMET 进行量化的速度,请查看 AIMET GitHub 页面以及 Model Zoo for AI Model Efficiency Toolkit。 AIMET Model Zoo 包含一组流行的神经网络和脚本,可帮助开发人员使用 AIMET 量化模型并比较结果。

有关 AIMET 的其他信息,请务必查看以下资源:

QuIC AIMET overview page - 包括概述、视频以及指向 AIMET 用户指南和 API 文档的链接

通过 AI 模型效率实现大规模智能 ——包含 AIMET 概述的演示文稿

开源 AI 模型效率工具包 

AIMET Model Zoo:高精度量化 AI 模型现已可用 

我们还有许多博客讨论 Qualcomm 神经处理 SDK 和 ML 建模:

具有开发人员就绪软件堆栈的设备端 AI 探索不同类型的神经网络 AI 机器学习算法——神经网络的工作原理 

从训练到推理:深入了解 TensorFlow 

CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
微博关注
【免责声明:CSDN本栏目发布信息,目的在于传播更多信息,丰富网络文化,稿件仅代表作者个人观点,与CSDN无关。其原创性以及文中陈述文字和文字内容未经本网证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本网不做任何保证或者承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件有任何怀疑或质疑,请立即与CSDN联系,我们将迅速给您回应并做处理。】