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