译者 | 朱先忠
审校 | 梁策 孙淑娟
深度学习模型最初的成功归功于拥有大量内存和GPU集群的大型服务器。深度学习的前景催生了一个为深度神经网络提供云计算服务的行业。因此,在几乎无限的云资源上运行的大型神经网络变得非常流行,这对于具有充足预算的科技公司尤其如此。
但与此同时,近年来也出现了另一种相反的趋势,即为边缘设备创建机器学习模型。这些被称为微型机器学习(TinyML)的模型适用于内存和处理能力有限、互联网连接不存在或有限的设备。
IBM和麻省理工学院(MIT)联合开展的一项最新研究工作解决了卷积神经网络(CNN)的峰值内存瓶颈问题。这是一种深度学习体系结构,对计算机视觉应用尤其重要。在NeurIPS 2021会议上提交的一篇论文中详细介绍了称为一种McUnETV2的模型,该模型能够在低内存和低功耗微控制器上运行卷积神经网络(CNN)。
虽然云端深度学习非常成功,但并不适用于所有情况。事实上,许多应用程序往往都需要在硬件设备上直接完成推理任务。例如,在一些如无人机救援这样的任务环境中,互联网连接是无法保证的。在医疗保健等其他领域,隐私要求和法规约束等也使得将数据发送到云端进行处理变得非常困难。对于需要实时机器语言推断的应用程序来说,往返云计算所造成的延迟更是令人望而却步。
上述所有必需满足的条件使得机器学习设备在科学上和商业上都具有吸引力。例如,iPhone手机现在就有不少运行面部识别和语音识别的应用程序,安卓手机也可以直接运行翻译软件。此外,Apple Watch已经可以使用机器学习算法来检测运动和ECG模式(注:ECG即心电图一词electrocardiogram的缩写,又称EKG,是一种测试实验,用于记录引发心跳的电信号序列的时间节点和强度。通过分析ECG图像,医生可以更好地诊断心率是否正常和心脏功能是否存在问题)。
上述这些设备上的ML模型在一定程度上是由支持神经网络紧凑、计算和存储效率更高的技术进步而实现的。同时由于硬件技术的进步,这样的ML模型在移动设置上的实现也成为可能。现在,我们的智能手机和可穿戴设备比30年前的高性能服务器拥有更多的计算能力,有些甚至配置专门的协处理器来实现机器语言推理。
TinyML将边缘AI向前推进了一步,使得在微控制器(MCU)上运行深度学习模型成为可能,尽管微控制器比我们口袋里和手腕上携带的小型计算机还要受限于资源。
另一方面,微控制器价格低廉,平均售价不到0.50美元,它们几乎无处不在,可以嵌入到从消费行业到工业设备的各个方面。同时,它们没有通用计算设备中的资源,而且大多数都没有操作系统。微控制器的CPU很小,只有几百KB的低功耗内存(SRAM)和几兆字节的存储空间,而且没有任何网络设备。它们大多没有主电源,多年来都是必须使用纽扣电池。因此,在MCU上安装深度学习模型可能为许多应用开辟新的道路。
卷积神经网络(CNN)的架构
为了将深度神经网络缩小到适合小型内存计算设备的大小,人们已经进行了多次努力。然而,这些努力大多集中在减少深度学习模型中的参数个数方面。例如,“剪枝”便是一种流行的优化算法,它通过删除模型输出中不重要的参数来缩小神经网络。
剪枝方法的问题在于它们不能解决神经网络的内存瓶颈。深度学习库的标准实现需要将整个网络层和激活层映射加载到内存中。不幸的是,经典的优化方法不会对神经网络的早期计算层做出任何重大改变,尤其是在卷积神经网络中。
这会导致网络不同层的大小不平衡,并导致“内存峰值”问题:即使网络在修剪后变得更轻量级,运行它的设备也必须拥有与最大层相同的内存。例如,在流行的TinyML模型MobileNetV2中,早期层计算达到的内存峰值约为1.4兆字节,而后期层的内存占用非常小。要运行该模型,设备将需要与模型峰值相同的内存。由于大多数MCU的内存不超过几百KB,所以它们无法运行MobileNetV2的现成版本。
MobileNetV2是一种针对边缘设备进行优化的神经网络,但它的内存峰值约为1.4兆字节,这使得许多微控制器无法访问它。
另一种优化神经网络的方法是减小模型的输入大小。较小的输入图像需要较小的CNN即可执行预测任务。然而,减少输入大小本身就存在挑战,并不是对所有计算机视觉任务都有效。例如,对象检测深度学习模型对图像大小非常敏感,当输入分辨率降低时,其性能会迅速下降。
由上图易知,图像分类ML模型(橙色线)比目标检测模型(蓝色线)更容易降低分辨率。
为了解决卷积神经网络的内存瓶颈问题,研究人员创建了一个名为MCUNetV2的深度学习体系结构,可以将其内存带宽调整到微控制器的极限。MCUNetV2是在同一科研小组之前的成果基础上开发的,该工作已被NeurIPS 2020大会接受并成功提交。
MCUNetV2背后的主要思想是“基于补丁的推理”,这是一种在不降低CNN准确性的情况下减少其内存占用的技术。MCUNetV2没有将整个神经网络层加载到内存中,而是在任何给定时间加载并计算该层的较小区域或“补丁”。然后,它逐块迭代整个层并组合这些值,直到计算整个层的激活部分。
图中左侧是经典深度学习系统计算一整层的情形,而右侧给出的是MCUNetV2一次计算一个补丁,从而减少DL推理的内存需求。
由于MCUNetV2一次只需要存储一片神经元,因此它在不降低模型分辨率或参数的情况下大幅降低内存峰值。研究人员的实验表明,MCUNetV2可以将内存峰值降低至八分之一。
MCUNetV2能够将深度学习模型的内存峰值降低至八分之一
基于补丁的推理在节省内存的同时也带来了计算开销的权衡问题。麻省理工学院(MIT)和IBM的研究人员发现,在不同的体系结构中整体网络计算可能会增加10-17%,这显然不适用于低功耗的微控制器。
为了克服这个限制,研究人员重新分配了神经网络不同区块的“感受野”(注:在CNN中,第n层特征图中一个像素对应作为第1层的输入图像的像素数,即为该层的感受野“receptive field”,简称“RF”)。在CNN中,感受野是在任何时刻可被处理的图像区域。更大的感受野需要更大的补丁和补丁之间的重叠。当然,这就会产生更高的计算开销。通过缩小网络初始块的感受野并扩大后期的感受野,研究人员能够将计算开销减少三分之二以上。
感受野的重新分配有助于将MCUNetV2的计算开销减少三分之二以上
最后,研究人员观察到,MCUNetV2的调整在很大程度上取决于ML模型架构、应用程序以及目标设备的内存和存储容量。为了避免手动调整每个设备和应用程序的深度学习模型,研究人员使用了“神经算法搜索”,这是一个使用机器学习自动优化神经网络结构和推理调度的过程。
研究人员在几个内存容量较小的微控制器模型上测试了不同应用中的深度学习架构。结果表明,MCUNetV2优于其他TinyML技术,能够以较小的内存需求和较低的延迟实现在图像分类和目标检测方面达到更高的精度。
如下图所示,研究人员正在使用实时人物检测、视觉唤醒词和人脸/口罩检测等方式使用MCUNetV2。
译者注:此处展示的仅是youtube.com网站上展示的使用MCUNetV2的视频中的一幅截图。
在2018年一篇题为《机器学习程序的未来为何如此微小》(Why the Future of Machine Learning is Tiny)的文章中,软件工程师皮特·沃登(Pete Warden)认为,MCU上的机器学习极其重要。沃登写道:“我相信机器学习可以在小型、低功耗芯片上运行,这种结合将解决我们目前无法解决的大量问题。”
由于传感器和CPU的进步,我们从世界各地获取数据的能力大大增强。但我们通过机器学习模型处理和使用这些数据的能力却受到网络连接和云服务器访问的限制。正如沃登所说,处理器和传感器比蓝牙和WiFi等无线电发射机更节能。
沃登写道:“移动数据的物理过程似乎需要大量的能量。一次操作所需的能量与发送比特的距离成正比似乎是一条规则。CPU和传感器发送仅需要几个毫米发送比特数且价格便宜,而无线电发送的代价则需要几米甚至更大距离才发送几比特数据,而且价格昂贵……很明显,一个有巨大潜力的市场正等待着用正确的技术来开辟。我们需要一种能在廉价微控制器上工作的设备,它使用的能源非常少,依赖于计算而不是无线电,它能把我们所有浪费的传感器数据变成有用的数据。这就是机器学习,特别是深度学习将要填补的空白。”
由于MCUNetV2和TinyML在其他方面也取得了进步,沃登的预测很快会变成现实。在未来的几年里,我们可以期待TinyML能够进入到家庭、办公室、医院、工厂、农场、道路、桥梁等的数十亿微控制器中,从而有望实现以前根本不可能实现的应用。
原文链接:https://thenextweb.com/news/tinyml-deep-learning-microcontrollers-syndication
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。早期专注各种微软技术(编著成ASP.NET AJX、Cocos 2d-X相关三本技术图书),近十多年投身于开源世界(熟悉流行全栈Web开发技术),了解基于OneNet/AliOS+Arduino/ESP32/树莓派等物联网开发技术与Scala+Hadoop+Spark+Flink等大数据开发技术。
以上是微型机器学习有望把深度学习嵌入微处理器的详细内容。更多信息请关注PHP中文网其他相关文章!