当前位置: 首页 > 科技观察

微型机器学习有望在微处理器中嵌入深度学习_0

时间:2023-03-21 16:49:12 科技观察

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