首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

人工智能 | Arm白皮书《Machine Learning on Arm Cortex-M Microcontrollers》

Machine Learning on Arm Cortex-M Microcontrollers

Naveen Suda, Staff EngineerDanny Loh, Director of ML Algorithms

由于延迟、功耗、成本、网络带宽、可靠性、隐私和安全等方面的考虑因素,机器学习(ML)算法正在走向物联网边缘。因此,人们对开发神经网络(NN)解决方案将其部署在低功耗边缘设备上的越来越感兴趣,如Arm Cortex-M微控制器系统。为了实现这一目标,我们推出了CMSIS-NN,这是一个优化的软件内核开源库,可以最大限度地提高Cortex-M内核上的神经网络性能,同时最大限度地减少内存占用。我们进一步提出了神经网络架构探索的方法,以CIFAR-10数据集上的图像分类为例,开发适合这种资源受限设备的模型。

I. 简介

在过去的几年里,连接设备或物联网(IoT)迅速激增,预计到2035年各细分市场将达到1万亿。这些物联网边缘设备通常包括收集数据的各种传感器,如音频、视频、温度、湿度、GPS位置和加速度等。通常情况下,从传感器收集的大多数数据都由云端的分析工具进行处理,以实现广泛的应用,如工业监控和控制、家庭自动化和医疗保健。然而,随着物联网节点数量的增加,这给网络带宽带来了相当大的负担,并增加了物联网应用的延迟。此外,对云计算的依赖使得在网络连接有限或不可靠的地区部署物联网应用面临挑战。这个问题的解决方案之一就是在数据源头,即物联网边缘节点,执行边缘计算,从而减少延迟并节省数据通信的能耗。

基于神经网络(NN)的解决方案已在许多复杂的机器学习应用中达到了人类水平,如图像分类、语音识别和自然语言处理。由于计算复杂性和资源需求,神经网络(NN)的执行主要限于高性能服务器CPU或专用硬件(如GPU或加速器)上的云计算,这增加了物联网应用的延迟。就在数据源头进行分类,通常是小型微控制器,可以降低物联网边缘和云端之间数据通信的整体延迟和能源消耗。然而,在微控制器上部署神经网络(NN)面临如下下挑战:

有限的内存占用:典型的微控制器系统只有10到100KB字节的可用内存。整个神经网络模型,包括输入/输出、权重和激活,必须适配并在这么小的内存预算内运行。

有限的计算资源:许多分类任务总是存在实时性要求,这限制了每个神经网络推理的总操作数。

这些挑战可以从设备和算法的角度来解决。一方面,我们可以通过优化底层计算内核来提高微控制器的机器学习能力,在执行神经网络工作时获得更好的性能和更小的内存占用。这可以使微控制器处理更大、更复杂的神经网络。另一方面,通过对神经网络结构探索,针对目标硬件平台来设计和优化神经网络。这可以在固定的内存和计算预算下提高神经网络的质量(即准确度)。

在本文中,我们在第二部分中介绍了CMSIS-NN。CMSIS-NN是一组高效的神经网络内核,旨在最大限度地提高面向物联网边缘设备的Arm Cortex-M微控制器内核上的神经网络的性能并最大限度地减少内存占用。基于CMSIS-NN内核的神经网络推理运行时/吞吐量提高了4.6倍,能效提高了4.9倍。在第三部分中,我们以CIFAR-10数据集上的图像分类应用为例,我们介绍了针对微控制器的存储/计算受限搜索神经网络架构的技术。

II. CMSIS-NN

CMSIS-NN神经网络内核的概述,如图1所示。内核代码由两部分组成:NNFunctions和NNSupportFunctions。NNFunction包括实现流行的神经网络层类型的函数,如卷积、深度可分离卷积、全连接(即内积)、池化和激活。应用程序代码可以使用这些函数来实现神经网络推理应用。内核API有意保持简单,这样它们可以很容易重新用到任意机器学习框架,如TensorFlow、Caffe或PyTorch。NNSupportFunctions包括实用工具函数,如在 NNFunctions 中使用的数据转换和激活函数表。应用程序代码还可以使用这些函数来构建更复杂的神经网络模块,例如长短期记忆 (LSTM) 或门控循环单位 (GRU) 单元。

对于一些内核,例如全连接和卷积,实现了不同版本的内核函数。我们提供了一个基本版本,对于任何层的参数都可以 "按原样 "工作。我们还实现了其他版本,其中包括进一步的优化技术,要么是转换输入,要么是对层参数有一些限制。

A.定点量化

研究表明,即使在低精度定点表示的情况下,神经网络也能很好地工作。定点量化有助于避免代价高的浮点计算,并减少用于存储权重和激活的内存占用,这对于资源受限的平台至关重要。尽管不同网络或网络层的精度要求可能有所不同, 但CPU难以处理位宽不同的数据类型。在这项工作中,我们开发了同时支持8位和16位数据的内核。

内核采用与CMSIS-DSP中使用的相同数据类型格式,如q7_t为int8,q15_t为int16,q31_t为int32。量化是在假设具有二次幂缩放的定点格式的情况下执行的。量化格式表示为Qm.n,表示的值是 A×2n,A是整数值,n是Qm.n的一部分,表示数字小数部分的位数,即表示小数点的位置。我们将偏差和输出的缩放因子作为参数传递给内核,由于二次幂缩放,缩放通过位移位操作实现。

在神经网络的计算过程中,不同数据的定点表示可能不同,如输入、权重、偏置和输出。两个输入参数bias_shift和out_shift用于调整不同数据的计算缩放比例。下面的公式用于计算偏移值:

bias_shift = ninput + nweight − nbias    (1)

out_shift = ninput + nweight − noutput  (2)

其中,ninput、nweight、nbias和noutput分别是输入、权重、偏置和输出的小数位数。

B.软件内核优化

在本节中,我们将重点介绍CMSIS-NN中为提高性能和减少内存占用而实现的一些优化。

1) 矩阵乘法:矩阵乘法是神经网络中最重要的计算核心。本文是基于CMSIS-DSP中的mat_mult内核实现。与CMSIS实现类似,矩阵乘法核心是用2×2个内核实现,如Fig 2所示。这样可以重用一些数据并节省加载指令的总数。使用q31_t数据类型进行累加,并且两个操作数都是q15_t数据类型。我们用相应的偏置值初始化累加器。使用专用SIMD MAC指令SMLAD计算。

2) 卷积:卷积层通过计算滤波权重和输入特征图中小的感受野(receptive field )之间的点积来提取新的特征图。通常,基于CPU的卷积实现被分解为输入重排和扩展(即im2col,图像到列)以及矩阵乘法运算。im2col是将类似图像的输入转换为表示每个卷积滤波器所需数据列的过程。im2col的一个示例如图3所示。

im2col的主要挑战之一是增加内存占用,因为输入图像中的像素会在im2col输出矩阵中重复出现。为了缓解内存占用问题,同时保留im2col的性能优势,我们为卷积内核实现了部分im2col。内核一次只扩展2列,足以从矩阵乘法内核中获得最大的性能提升,同时降内存开销降至最低。图像数据格式也会影响卷积的性能,尤其是im2col的效率。最常见的两种图像数据格式是通道-宽度-高度(Channel-Width-Height,CHW)和高度-宽度-通道(Height-Width-Channel,HWC),前者通道在后,后者通道在前。维度顺序与数据步长相同。在HWC格式中,通道上的数据以步长1存储,宽度上的数据以通道数的步长存储,高度上的数据以(通道数×图像宽度)的步长存储。

只要权重和图像的维度顺序相同,数据布局就不会对矩阵乘法运算产生影响。im2col 运算仅在宽度和高度维度上进行。HWC式的布局可实现有效的数据移动,因为每个像素(即在相同的x,y位置)的数据是连续存储的,并且可以使用SIMD指令进行高效地复制。为了验证这一点,我们实现了CHW和HWC版本,并比较了在Arm Cortex-M7上的运行时间。结果如图4所示,我们将HWC输入固定为16x16x16,并扫描输出通道数。当输出通道值为零时,表示软件只执行im2col,而不执行矩阵乘法运算。与CHW布局相比,HWC具有相同的矩阵乘法性能,但im2col的运行时间更短。因此,我们用HWC数据布局实现卷积核。

C. CMSIS-NN结果

我们在CIFAR-10数据集上训练的CNN上测试了CMSIS-NN内核,CIFAR-10数据集由60000张32x32彩色图像组成,分为10个输出类。网络拓扑结构基于Caffe中提供的内置示例,有三个卷积层和一个全连接层。所有层的权重和激活数据都量化为q7_t格式。STMicroelectronics NUCLEO-F746ZG Mbed板卡上测量了运行时间,该板子基于Arm Cortex-M7内核以216MHz频率工作。

整个图像分类大约需要99.1ms/图像(相当于每秒10.1张图像)。运行该网络的CPU计算吞吐量约为每秒249 MOPS。预量化网络在CIFAR-10测试集上的准确率为80.3%。运行在Arm Cortex-M7内核上的8位量化网络达到了79.9%的准确率。CMSIS-NN内核的最大内存占用约为133KB,卷积用节省内存的部分im2col实现,然后是矩阵乘法。如果不使用部分im2col,内存占用将达到~332 KB,神经网络将无法适应这个电路板。为量化CMSIS-NN内核相对于现有解决方案的优势,我们还使用1D卷积函数(CMSIS-DSP的arm_conv)、Caffe-like pooling和ReLU实现了一个基线版本。针对CNN应用,Table I总结了基线函数和CMSIS-NN内核的比较结果。CMSIS-NN内核在运行时间和吞吐量上比基线函数的性能提高了2.6倍到5.4倍。能效的提高也与吞吐量的提高相一致。

III. 硬件限制的NN模型

在本节中,我们以图像分类应用程序为例,强调部署应用程序的硬件平台(即微控制器)选择正确的神经网络架构的重要性。为了做到这一点,我们需要了解微控制器的硬件限制。微控制器通常由处理器内核、主存储器SRAM和用于存储代码和数据的嵌入式Flash组成。Table-II 显示了一些市场上基于Arm Cortex-M内核的微控制器开发板,它们具有不同计算性能和存储容量。

微控制器系统中的存储总量限制了可在该系统上运行NN模型的大小。除了存储容量限制之外,神经网络的大量计算需求对在微控制器上运行神经网络造成另一个关键限制,因为微控制器通常低频运行以实现功耗。因此,必须选择神经网络架构来适配要部署神经网络模型的硬件存储和计算的限制。为评估神经网络在不同硬件限制情况下的准确性,我们选择了三种不同大小的系统配置,并得出每种配置的神经网络要求,如Table-III所示。在此,我们假设每秒进行10个图像分类推理(即10fps),得出神经网络的要求。

A. 用于图像分类的NN架构

1)卷积神经网络(CNN):CNN是计算机视觉应用中最流行的神经网络架构。CNN由多个卷积层组成,中间穿插着归一化、池化和非线性激活层。卷积层将输入图像分解为不同的特征图,从低级特征,如初始层中的边缘、直线、曲线,到后面层的高级/抽象特征。最先进的CNN由100-1000个卷积层组成,最终提取的特征通过完连接的分类层分类到输出类。卷积计算是CNN中最关键的操作,而且非常耗时,90%以上的时间花在卷积层上。

2)最新的高效神经网络架构:为降低神经网络的计算复杂度,提出了深度可分离卷积层作为标准卷积运算的有效替代方案。通过用2-D深度卷积替代3-D卷积,然后再1-D逐点卷积,提出了一个称为MobileNets的高效神经网络,称为MobileNets。ShuffleNets 利用对洗牌通道的深度卷积和分组 1x1 卷积来提高紧凑模型的准确性。MobileNets-V2通过添加快捷连接进一步提高了效率,这有助于深度网络的收敛。总的来说,已经提出了许多有效的神经网络架构,在开发特定于我们硬件预算的神经网络模型时可以利用这些架构。这有助于深度网络的融合。总之,目前已提出了许多高效的神经网络架构,在针对我们的硬件预算开发特定的神经网络模型时,可以利用这些神经网络架构。

B. 硬件限制的NN模型搜索

我们使用的MobileNet架构快捷连接,类似于ResNet模型中的快捷连接,来进行硬件限制的神经模型搜索。将层数、每层特征数、卷积滤波器的维度数、步长用作搜索的超参数。训练这些超参数的所有组合既耗时又不实际。因此,我们反复进行超参数的穷举搜索,计算模型的存储/计算需求,只训练那些符合硬件预算的模型。然后,从先前的模型库中选择超参数,缩小搜索空间,继续下一次模型搜索迭代。Fig. 5 显示了超参数搜索的一个示例,它显示了每个模型的准确性、操作次数和参数。经过几次迭代后,硬件预算内具有最高精度的模型如Table IV 所示。需要注意的是,由于这并不是对所有超参数的穷举式搜索,在我们硬件限制范围内,搜索空间探索过程中,可能会有一些精度更高的神经网络模型没有获取到。

结果表明,对于不同的硬件预算,模型可伸缩性好,精度在不同水平达到饱和。例如,对于200KB、20MOPS的存储/计算预算,模型精度在~85%左右饱和,并受硬件计算性能的限制。了解神经网络精度是否受计算资源或存储资源的限制, 对于硬件平台选择中的不同权衡提供了关键见解。

IV. 结论

机器学习算法已被证明可以完成一些复杂的认知任务,达到了人类的水平。这些算法正在慢慢向物联网边缘转移,新的高效神经网络架构和优化的神经网络软件使得神经网络能够在边缘设备上高效运行。我们以图像分类为例,介绍了在一组存储/计算受限的典型微控制器设备中进行神经网络模型搜索的技术。此外,我们介绍了用于优化CMSIS-NN中神经网络内核的方法,以最小的内存占用最大限度地提高在Cortex-M内核上神经网络的性能。CMSIS-NN 库可以从下面的地址获得:https://github.com/ARM-software/CMSIS_5 。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OSZvGpqu2_f89Vlfyc0SKvaQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券