本文转载自雷锋网。如需转载,请在雷锋网官网申请授权。以NASA的推动开始的电子产品小型化成为了整个消费品行业。现在我们把贝多芬全集挂在衣领上,戴上耳机听。—NeildeGrasseTyson,天体物理学家和科学评论员[…]物联网设备。—VijayJanapaReddi,哈佛大学副教授嵌入式设备微型机器学习(TinyML)概述这是TinyML系列中的第一篇。这篇文章的目的是向读者介绍微型机器学习的思想及其未来的潜力。将在本系列的后续文章中深入讨论具体的应用程序、实现和教程。简介在过去的十年中,由于处理器速度的提高和大数据的出现,我们目睹了机器学习算法规模的指数级增长。最初,模型足够小,可以在使用中央处理器(CPU)中的一个或多个内核的本地机器上运行。不久之后,使用图形处理单元(GPU)的计算成为处理更大数据集的必要条件,并且由于引入了基于云的服务,例如SaaS平台(例如GoogleColaboratory)和IaaS(例如AmazonEC2Instances),它变得更容易实施。此时,算法仍然可以在单机上运行。最近,我们看到了专门的专用集成电路(ASIC)和张量处理单元(TPU)的开发,它们可以包含大约8个GPU的功能。这些设备增强了跨多个系统分布学习的能力,以试图构建更多更大的模型。最近,随着GPT-3算法(2020年5月发布)的发布,这一问题达到了顶点,该算法拥有惊人的1750亿个神经元网络架构——超过人脑中存在的神经元数量(约85个)亿)翻了一倍多。这比有史以来创建的下一个最大神经网络Turing-LG(于2020年2月发布,包含约175亿个参数)的神经元数量多10倍以上。据估计,该模型的训练成本约为1000万美元,消耗约3GWh的电力(大约是三个核电站一小时的发电量)。虽然GPT-3和Turing-LG的成绩值得称道,但当然也自然而然地引发了一些业内人士对人工智能行业日益增长的碳足迹的批评。然而,它也帮助激发了AI社区对更节能计算的兴趣。这些想法,例如更高效的算法、数据表示和计算,多年来一直是一个看似无关的领域的焦点:小规模机器学习。微型机器学习(tinyML)是机器学习和嵌入式物联网(IoT)设备的交叉点。该领域是一门新兴的工程学科,有可能彻底改变许多行业。tinyML的主要行业受益者在边缘计算和节能计算领域。TinyML源于物联网(IoT)的概念。传统的物联网概念是将数据从本地设备发送到云端进行处理。一些人对这个概念提出了某些担忧:隐私、延迟、存储和能源效率等。能源效率。传输数据(通过有线或无线)非常耗能,比机载计算(特别是乘法单元)耗能大约一个数量级。开发自己进行数据处理的物联网系统是最节能的方法。一段时间以来,人工智能先驱们一直在谈论这种“以数据为中心”的计算理念(相对于云模型的“以计算为中心”),现在我们开始看到它在发挥作用。隐私。传输数据可能会侵犯隐私。这些数据可能会被恶意行为者拦截,并且当存储在云等单一位置时,其安全性较低。这通过将数据主要保存在设备上并最大限度地减少通信来提高安全性和隐私性。贮存。对于许多物联网设备而言,它们捕获的数据毫无价值。想象一下,监控摄像头每天24小时记录建筑物的入口。在一天的大部分时间里,摄像机镜头是无用的,因为什么都没有发生。通过拥有一个只在必要时激活的更智能的系统,需要更低的存储容量并减少需要传输到云的数据量。延迟。对于标准的物联网设备,例如AmazonAlexa,这些设备将数据传输到云端进行处理,然后根据算法的输出返回响应。从这个意义上说,该设备只是通往云模型的便捷网关,就像它自己和亚马逊服务器之间的信鸽。这个设备很笨,完全依赖互联网速度来产生结果。如果你的网速很慢,那么亚马逊的Alexa也会。对于具有板载自动语音识别功能的智能物联网设备,由于减少(或不依赖)外部通信,延迟会减少。这些问题导致了边缘计算的发展,其中边缘设备(位于云端的“边缘”设备)在想法上执行处理活动。这些设备在内存、计算和功率方面受到高度资源限制,导致开发更高效的算法、数据结构和计算方法。这种改进也适用于更大的模型,可能使机器学习模型的效率提高一个数量级,而不会影响模型的准确性。例如,Microsoft开发的Bonsai算法可以小到2KB,但其性能甚至可以优于典型的40MBkNN算法,或4MB的神经网络。这个结果可能听起来不重要,但在尺寸仅为1/10000的模型上获得相同的精度是相当惊人的。这么小的模型可以在ArduinoUno上运行,它有2KB可用内存,简而言之,您现在可以在5美元的微控制器上构建这样的机器学习模型。我们正处于一个有趣的十字路口,机器学习在两种计算范式之间分叉:以计算为中心的计算和以数据为中心的计算。在以计算为中心的范式中,数据由数据中心中的实例存储和分析,而在以数据为中心的范式中,处理是在数据源本地完成的。虽然我们似乎正在迅速走向以计算为中心的范式的天花板,但以数据为中心的范式的工作才刚刚开始。在现代世界中,物联网设备和嵌入式机器学习模型正变得越来越普遍(预计到2020年底将有超过200亿台活跃设备)。其中许多你可能根本没有注意到。智能门铃、智能恒温器、当您说两个词时“唤醒”的智能手机,甚至只是拿起您的手机。本文的其余部分将更深入地关注tinyML的工作原理,以及当前和未来的应用程序。云中的层次结构(来源:eBizSolutions)在TinyML示例之前,设备执行各种操作需要复杂的电路。现在,机器学习越来越有可能将这种硬件“智能”抽象为软件,从而使嵌入式设备变得更简单、更轻便、更灵活。机器学习在嵌入式设备中的应用面临着相当大的挑战,但在这方面已经取得了很大进展。在微控制器上部署神经网络的主要挑战是低内存占用、有限的功率和有限的计算。也许TinyML最明显的例子是在智能手机中。这些设备始终在主动监听“唤醒词”,例如Android智能手机上的“HeyGoogle”或iPhone上的“HeySiri”。通过智能手机的主中央处理器(CPU)运行这些活动,现代iPhone的时钟频率为1.85GHz,只需几个小时即可耗尽电池电量。对于大多数人一天最多使用几次的东西来说,这种消耗水平是不可接受的。为了解决这个问题,开发人员创造了专用的低功耗硬件,能够由圆形CR2032“纽扣”电池等小型电池供电。这使得这些电路即使在CPU未运行时也能保持活动状态,基本上只要屏幕未点亮。这些电路可以消耗低至1毫瓦的功率,并且可以使用标准CR2032电池运行长达一年。它可能看起来不像,但这是一个大问题。能源是许多电子设备的限制因素。任何需要主电源的设备都被限制在有电线的地方,当十几个设备出现在同一个地方时,它很快就会不堪重负。市电效率低且价格昂贵。将电源电压(在美国约为120V)转换为典型电路电压范围(通常约为5V)会浪费大量能源。任何拥有笔记本电脑充电器的人在拔下插头时都可能知道这一点。在电压转换过程中,充电器内部变压器产生的热量在电压转换过程中被浪费掉了。即使是带电池的设备,电池寿命也很有限,需要经常对接。许多消费类设备的电池只能维持一个工作日的使用时间。TinyML设备可以使用硬币大小的电池持续运行一年,这意味着它们可以放置在远程环境中,并且仅在必要时进行通信以节省能源。唤醒词并不是我们在智能手机中看到的唯一无缝嵌入的TinyML。加速度计数据用于确定是否有人刚刚拿起电话,这会唤醒CPU并打开屏幕。显然,这些并不是TinyML的唯一可能应用。事实上,TinyML为企业和业余爱好者提供了许多令人兴奋的机会来生产更智能的物联网设备。在数据变得越来越重要的世界中,将机器学习资源分配到远程位置的内存受限设备的能力可能会给农业、天气预报或地震学等数据密集型行业带来巨大好处。毫无疑问,赋予边缘设备执行数据驱动处理的能力将带来工业流程的范式转变。例如,如果一种设备能够监测农作物并发出“求助”信息,将大大促进农作物生长,从而提高农作物产量。再举一个例子,智能门铃可能配备一个摄像头,可以使用面部识别来确定谁在场。这可以用于安全目的,甚至可以在有人在场时将门铃的摄像头传输到家中的电视,以便居民知道谁在门口。TinyML目前专注于两个主要领域:关键词发现。大多数人已经熟悉这个应用程序。“HeySiri”和“HeyGoogle”是关键字的示例(通常与“热词”或“唤醒词”同义使用)。此类设备持续收听来自麦克风的音频输入,并经过训练仅响应与学习到的关键字相对应的特定声音序列。与自动语音识别(ASR)应用程序相比,这些设备更简单,使用的资源也相应更少。某些设备(例如Google智能手机)利用级联架构来提供说话人身份验证以确保安全。视觉唤醒词。有一种类似于唤醒词的基于图像的方法称为视觉唤醒词。将这些词视为图像的二元分类,表示某物存在或不存在。例如,智能照明系统可能设计为在检测到有人在场时打开,在他们离开时关闭。同样,野生动物摄影师可以在特定动物出现时使用它拍照,或者在发现人时使用安全摄像头拍照。以下是TinyML当前机器学习用例的更广泛概述。TinyML的机器学习用例(来源图片:NXP)。TinyML是如何工作的?TinyML算法的工作方式与传统机器学习模型大致相同。通常,模型会在用户的计算机或云中定期进行训练。训练之后才是真正的tinyML工作的开始,这个过程通常被称为深度压缩。深度压缩过程示意图。资料来源:ArXiv。在训练模型蒸馏后,模型将以创建具有更紧凑表示的模型的方式进行更改。修剪和知识蒸馏是用于此目的的两种此类技术。知识蒸馏的基本思想是大型网络具有一定的稀疏性或冗余性。尽管大型网络具有较高的表示能力,但如果网络容量未饱和,则可以用具有较低表示能力(即较少的神经元)的较小网络来表示。欣顿等人。(2015)将教师模型中的嵌入信息称为“暗知识”以转移到学生模型。下图说明了知识蒸馏的过程。深度压缩过程的示意图。在这张图中,“老师”是一个经过训练的卷积神经网络模型。教师的任务是将自己的“知识”迁移到参数较少的卷积网络模型,即“学生”。这个过程被称为知识蒸馏,用于将相同的知识封装在一个较小的网络中,提供一种压缩网络的方法,以便它们可以在更多内存受限的设备上使用。资料来源:ArXiv。在此图中,“老师”是经过训练的神经网络模型。教师的任务是将其“知识”转移到参数较少的小型网络模型——“学生”。此过程用于将相同的知识封装在较小的网络中,提供一种压缩知识表示的方法,从而压缩神经网络的大小并使其可用于更多内存受限的设备。同样,剪枝也有助于使模型的表示更加紧凑。从广义上讲,修剪试图去除对输出预测几乎没有效用的神经元。这通常与小的神经权重相关,而大的权重由于它们在推理过程中更重要而被保留。然后在修剪后的架构上重新训练网络以微调输出。精简模型的知识表示的示意图量化被提炼出来,模型在训练后被量化为与嵌入式设备架构兼容的格式。为什么要量化呢?想象一个使用ATmega328P微控制器的ArduinoUno,它使用8位算法。要在Uno上运行模型,理想情况下模型权重必须存储为8位整数值(而许多台式机和笔记本电脑使用32位或64位浮点表示)。通过量化模型,权重的存储减少了4倍(从32位值量化到8位值),而对准确性的影响通常可以忽略不计(通常在1-3%左右)。8位编码期间量化误差的说明(然后用于重建32位浮点数)。(来源:TinyMLbook)在量化过程中,一些信息可能会由于量化错误而丢失(例如,浮点表示的值3.42在整数平台上可能被截断为3)。为了解决这个问题,还提出了量化感知(QA)训练作为替代方案。QA训练主要是约束网络在训练期间仅使用量化设备上可用的值(参见Tensorflow示例)。霍夫曼编码编码是一个可选步骤,有时通过以最有效的方式存储数据来进一步减小模型的大小:通常是通过著名的霍夫曼编码。编译一旦模型被量化和编码,它就会被转换成一种可以被某种形式的轻量级神经网络解释器解释的格式,其中最流行的可能是TFLite(大小约500KB)和TFLiteMicro(约20KB大小)。该模型然后被编译成C或C++代码(大多数微控制器使用的语言可以有效地使用内存)并通过解释器在设备上运行。TInyML应用程序的工作流程(来源:PeteWarden和DanielSitunayake的TinyML)tinyML的大部分技巧都在处理复杂的微控制器世界。TFLite和TFLiteMicro之所以这么小,是因为删除了所有不必要的功能。不幸的是,这包括调试和可视化等有用的功能。这意味着如果在部署期间出现问题,可能很难判断发生了什么。此外,虽然模型必须存储在设备上,但模型还必须能够进行推理。这意味着微控制器必须具有足够大的内存才能运行(1)它的操作系统和库,(2)神经网络解释器(例如TFLite),(3)存储的神经权重和神经架构,以及(4)推理过程中的中间结果。因此,在tinyML研究论文中,经常引用量化算法的内存使用峰值,以及内存使用、乘积单元数(MAC)、准确率等。为什么不在设备上训练呢?设备上训练引入了额外的复杂性。由于数值精度的降低,很难保证充分训练网络所需的精度水平。标准台式计算机上的自动微分方法近似精确到机器精度。计算精度为10^-16的导数令人难以置信,但利用8位值的自动微分会导致糟糕的结果。在反向传播过程中,这些导数被复合并最终用于更新神经网络参数。由于数值精度如此低,这种模型的准确性可能很差。也就是说,已经使用16位和8位浮点数训练了神经网络。第一篇研究降低深度学习中数值精度的论文是SuyogGupta及其同事在2015年发表的论文“DeepLearningwithLimitedNumericalPrecision”。这篇论文的结果很有趣,表明32位浮点表示可以减少到16位定点表示,而精度损失很小。然而,这只是使用随机舍入时的情况,因为平均而言,它会产生无偏差的结果。2018年,王乃刚和他的同事在论文《TrainingDeepNeuralNetworkswith8-bitFloatingPointNumbers》中使用8位浮点数训练了一个神经网络。由于需要在反向传播过程中保持梯度计算的保真度(使用自动微分可以实现机器精度),因此使用8位数字而不是推理来训练神经网络要实现起来要困难得多。它的计算效率如何?该模型还可以定制,以提高计算效率。广泛部署在移动设备上的模型架构,例如MobileNetV1和MobileNetV2就是很好的例子。这些本质上是卷积神经网络,可以重塑卷积运算以提高计算效率。这种更有效的卷积形式称为深度可分离卷积。还可以使用基于硬件的分析和神经网络架构搜索来优化架构的延迟,本文未涵盖这些内容。下一次AI革命在资源有限的设备上运行机器学习模型的能力为许多新的可能性打开了大门。开发更节能的标准机器学习将有助于减轻人们对数据科学对环境影响的担忧。此外,tinyML允许嵌入式设备拥有基于数据驱动算法的新型智能,可用于从预防性维护到检测森林中的鸟叫声的所有方面。虽然一些机器学习从业者无疑会继续增加他们模型的大小,但新的趋势是朝着内存、计算和能源效率更高的机器学习算法发展。TinyML仍处于起步阶段,该领域的专家很少。推荐有兴趣的读者看看参考文献中的一些论文,都是tinyML领域的一些重要论文。该领域发展迅速,未来几年将成为人工智能在工业领域新的重要应用。请密切关注该区域。
