在NASA的推动下,电子产品的小型化成为一个完整的消费品行业。现在我们可以把贝多芬的全部作品放在翻领针上用耳机听。

--天体物理学家兼科学评论员尼尔·德格拉斯·泰森(Neil deGrasse Tyson)

超低功耗嵌入式设备的普遍存在,再加上诸如针对微控制器的TensorFlow Lite的嵌入式机器学习框架的引入,将使AI驱动的IoT设备大规模普及。

--哈佛大学副教授Vijay Janapa Reddi


嵌入式设备的微型机器学习(TinyML)

本文的目的是向读者介绍小型机器学习的概念及其未来潜力。在本系列的后续文章中,将对特定的应用程序,实现和教程进行深入讨论。

介绍

在过去的十年中,我们见证了由于处理器速度的提高和大数据的出现,机器学习算法的规模呈指数增长。最初,模型足够小,可以使用中央处理器(CPU)中的一个或多个内核在本地计算机上运行。

此后不久,由于引入了基于云的服务(例如SaaS平台(例如Google Colaboratory)和IaaS(例如Amazon EC2实例)),使用图形处理单元(GPU)的计算对于处理更大的数据集变得十分必要,并且变得更加容易获得。此时,算法仍可以在单台计算机上运行。

最近,我们已经看到了专用的专用集成电路(ASIC)张量处理单元(TPU)的开发,该模块可以封装约8个GPU的功能。这些设备已经增强了在多个系统之间分布学习的能力,以尝试发展越来越大的模型。

最近,随着GPT-3算法的发布(2020年5月发布)而达到了顶峰,该算法的网络体系结构包含了惊人的1750亿个神经元,是人脑中神经元数量的两倍(约850亿)。这是有史以来创建的第二大神经网络Turing-NLG(于2020年2月发布,包含约175亿个参数)的神经元数量的10倍以上。一些估计称,该模型的培训成本约为1000万美元,并使用了约3 GWh的电力(大约三个小时的一小时核电站的输出)。

尽管GPT-3和Turing-NLG的成就值得称赞,但自然而然地,这引起了业内一些人士对AI行业日益增长的碳足迹的批评。但是,它也有助于激发AI界对更节能计算的兴趣。这样的想法,例如更高效的算法,数据表示和计算,一直是看似无关的领域的关注重点:微型机器学习。

微型机器学习(tinyML)是机器学习与嵌入式物联网(IoT)设备的交叉点。该领域是一门新兴的工程学科,具有革新许多行业的潜力。

tinyML的主要行业受益者是边缘计算和节能计算。TinyML源自物联网(IoT)的概念。物联网的传统思想是将数据从本地设备发送到云进行处理。一些人对此概念提出了某些担忧:隐私、延迟、存储和能源效率等等。

能源效率。(通过有线或无线方式)传输数据非常耗能,比机载计算(具体而言,乘累加单位)要高大约一个数量级。开发可以执行自己的数据处理的物联网系统是最节能的方法。人工智能的先驱们已经讨论了"以数据为中心"的计算思想(与云模型的"以计算为中心"相对),现在我们开始看到它正在发挥作用。

隐私。传输数据可能会侵犯隐私。此类数据可能被恶意行为者拦截,并且当存储在单个位置(例如云)中时,其固有的安全性降低。通过将数据主要保留在设备上并最大程度地减少通信,这可以提高安全性和隐私性。

存储。对于许多物联网设备而言,它们获取的数据毫无用处。想象一下一个安全摄像机每天24小时记录着建筑物的入口。在一天的大部分时间里,相机镜头没有任何用处,因为什么也没发生。通过拥有仅在必要时才激活的更智能的系统,就需要较低的存储容量,并减少了传输到云所需的数据量。

潜伏。对于标准IoT设备(例如Amazon Alexa),这些设备将数据传输到云中进行处理,然后根据算法的输出返回响应。从这个意义上讲,该设备只是通向云模型的便捷网关,就像您自己和亚马逊服务器之间的信鸽。该设备非常笨拙,完全取决于互联网的速度才能产生结果。如果您的网速较慢,Amazon Alexa也会变慢。对于具有机载自动语音识别功能的智能IoT设备,由于减少了对外部通信的依赖(如果不是这样),因此可以减少延迟。

这些问题导致了边缘计算的发展,即在边缘设备(位于云"边缘"的设备)上执行处理活动的想法。这些设备在内存,计算和功能方面都受到资源的高度限制,从而导致了更高效的算法,数据结构和计算方法的发展。

此类改进也适用于较大的模型,这可能导致机器学习模型的效率提高几个数量级,而不会影响模型的准确性。

例如,Microsoft开发的算法可以小到2 KB,但比典型的40 MB kNN算法或4 MB神经网络具有更好的性能。这个结果听起来可能并不重要,但是在尺寸的1/10万分之一的模型上,相同的精度令人印象深刻。如此小的模型可以在具有2 KB RAM的Arduino Uno上运行,总之,你现在可以在5美元的微控制器上构建这样的机器学习模型。

我们正处于一个有趣的十字路口,机器学习在两个计算范式之间分叉:以计算为中心的计算和以数据为中心的计算。在以计算为中心的范例中,数据是通过数据中心中的实例进行存储和分析的,而在以数据为中心的范例中,处理是在数据的原始位置进行的。尽管我们似乎正在迅速迈向以计算为中心的范例的上限,但是以数据为中心的范例的工作才刚刚开始。

物联网设备和嵌入式机器学习模型在现代世界中变得越来越普遍(到2020年底,预计将有200亿以上的活动设备)。其中许多你甚至可能都没有注意到。智能门铃、智能恒温器、智能手机,只要你说几句话,甚至只是拿起电话,都可以"唤醒"。本文的其余部分将更深入地关注tinyML的工作方式以及当前和将来的应用程序。


云的层次结构

TinyML的例子

以前,复杂的电路是设备执行各种动作所必需的。现在,机器学习使将这种硬件"智能"抽象为软件变得越来越可能,从而使嵌入式设备变得更加简单,轻巧和灵活。

嵌入式设备的机器学习所面临的挑战是巨大的,但是在这一领域已经取得了巨大的进步。在微控制器上部署神经网络的关键挑战是低内存占用,有限的功率和有限的计算。

TinyML最明显的例子也许是在智能手机中。这些设备会永久地积极聆听"唤醒词"

例如Android智能手机的" Hey Google"或iPhone的" Hey Siri"。通过智能手机的主中央处理器(CPU)运行这些活动,现代iPhone的主中央处理器(CPU)为1.85 GHz,将在短短几个小时内耗尽电池。对于大多数人每天最多使用几次的这种程度的降级是不可接受的。

为了解决这个问题,开发人员创建了专用的低功耗硬件,该硬件可以用小电池(例如,环形CR2032"硬币"电池)供电。这些功能使电路即使在CPU未运行时(基本上在屏幕不亮时)也保持活动状态。

这些电路消耗的功率仅为1 mW,使用标准CR2032电池可供电长达一年。

看起来好像不对,但这很重要。能量是许多电子设备的限制因素。任何需要主电源的设备都限于带有布线的位置,当同一位置有十几个设备时,这些位置很快就会变得不堪重负。市电也效率低下且价格昂贵。将电源电压(在美国大约为120 V)转换为典型的电路电压范围(通常约为5 V)会浪费大量能量。拥有笔记本电脑充电器的任何人在拔出充电器时都可能知道这一点。充电器内部变压器产生的热量在电压转换过程中被浪费掉了能量。

即使是带电池的设备,电池寿命也有限,因此需要频繁对接。许多消费类设备的设计使电池可持续使用一个工作日。TinyML设备可以使用硬币大小的电池继续运行一年,这意味着它们可以放置在偏远的环境中,仅在必要时进行通信以节省能源。

唤醒词并不是我们看到的无缝嵌入在智能手机中的唯一TinyML。加速度计数据用于确定是否有人刚拿起电话,这会唤醒CPU并打开屏幕。

显然,这些并不是TinyML的唯一可能应用。实际上,TinyML为企业和业余爱好者提供了许多令人兴奋的机会,以生产更智能的IoT设备。在当今世界,数据变得越来越重要的情况下,将机器学习资源分配到偏远地区受内存限制的设备的能力可能会给农业,天气预报或地震等数据密集型行业带来巨大好处。

毫无疑问,赋予边缘设备执行数据驱动的处理能力的能力将为工业过程带来范式转变。举例来说,能够监测农作物并在检测到诸如土壤湿度,特定气体(例如苹果成熟时会散发出乙烷)等特征或特定大气条件(例如大风,低温或高湿度),将大大促进作物生长并因此提高作物产量。

作为另一个示例,智能门铃可能装有摄像头,该摄像头可以使用面部识别来确定谁在场。这可以用于安全目的,甚至可以用于当有人在场时将门铃的摄像头馈送到房屋中的电视,以便居民知道谁在门口。

目前,tinyML的两个主要重点领域是:

  • 关键字发现。大多数人已经熟悉此应用程序。" Hey Siri"和" Hey Google"是关键字的示例(通常与" hotword"或" wake word"同义使用)。这样的设备连续收听来自麦克风的音频输入,并且被训练为仅响应特定的声音序列,这些特定的声音序列与学习的关键字相对应。这些设备比自动语音识别(ASR)应用程序更简单,并且相应地使用了更少的资源。某些设备(例如Google智能手机)利用来提供扬声器验证以确保安全性。
  • 视觉唤醒词。唤醒词有一个基于图像的类似物,称为视觉唤醒词。将它们视为图像的二进制分类,以表示存在或不存在。例如,可以设计智能照明系统,使得其在检测到人的存在时启动,并在他们离开时关闭。同样,当存在特定的动物时,野生动物摄影师可以使用它来拍照,而当他们发现有人时,可以使用安全摄像机拍摄照片。

下面显示了TinyML当前机器学习用例的更广泛概述。


TinyML的机器学习用例

TinyML如何工作

TinyML算法的工作方式与传统机器学习模型几乎相同。通常,通常在用户计算机或云中对模型进行训练。后期训练是真正的tinyML工作开始的地方,在此过程中通常称为深度压缩。


深度学习模型压缩流程图

模型蒸馏

训练后,然后以创建具有更紧凑表示形式的模型的方式更改模型。修剪和知识蒸馏是用于此目的的两种此类技术。

知识提炼的基础思想是,较大的网络内部具有稀疏性或冗余性。虽然大型网络具有较高的表示能力,但如果网络容量未达到饱和,则可以在具有较低表示能力的较小网络(即较少的神经元)中进行表示。Hinton等,2015将教师模型中嵌入的信息称为"黑暗知识",转移给学生模型。

下图说明了知识提炼的过程。

深度压缩过程图。在此图中,"老师"是经过训练的卷积神经网络模型。教师的任务是将其"知识"转移到参数较少的较小卷积网络模型中,即"学生"。此过程称为知识提取,用于将相同的知识包含在较小的网络中,从而提供了一种压缩网络的方式,以便可以将其用于更多受内存限制的设备上。

在此图中,"老师"是训练有素的神经网络模型。教师的任务是将其"知识"转移到参数较少的较小的网络模型中,即"学生"。此过程用于将相同的知识包含在较小的网络中,从而提供一种压缩知识表示的方式,从而压缩神经网络的大小,以便可以将其用于更多受内存限制的设备。

同样,修剪可以帮助使模型的表示更加紧凑。广义上讲,修剪尝试删除对输出预测几乎没有用的神经元。这通常与较小的神经权重相关联,而由于在推理过程中它们的重要性较高,因此会保留较大的权重。然后在修剪后的体系结构上对网络进行再培训,以微调输出。


用于提取模型的知识表示形式的修剪

量化

蒸馏后,然后将模型量化后训练成与嵌入式设备的体系结构兼容的格式。

为什么需要量化?想象一下使用ATmega328P微控制器的Arduino Uno,该微控制器使用8位算术。要在Uno上运行模型,理想情况下,模型权重必须存储为8位整数值(而许多台式机和笔记本电脑使用32位或64位浮点表示法)。通过对模型进行量化,权重的存储大小将减少4倍(对于从32位到8位值的量化),准确性通常受到的影响可以忽略不计(通常约为1-3%)。


8位编码期间的量化误差插图(然后用于重建32位浮点数)

由于某些信息可能会在量化过程中丢失(例如,在基于整数的平台上,浮点表示形式的值为3.42可能会被截断为3)。为了解决这个问题,还提出了量化感知(QA)培训作为替代方案。QA训练从本质上将训练期间的网络限制为仅使用量化设备上可用的值。

霍夫曼编码

编码是一个可选步骤,有时会通过最大有效地存储数据(通常通过著名的来进一步减小模型大小。

汇编

对模型进行量化和编码后,将其转换为可由某种形式的轻型神经网络解释器解释的格式,其中最受欢迎的可能是(〜500 KB大小)和(〜大小为20 KB)。然后将模型编译为C或C ++代码(大多数微控制器使用的语言以有效利用内存),并由解释器在设备上运行。


TInyML应用程序的工作流程

tinyML的大多数技能来自处理微控制器的复杂世界。TF Lite和TF Lite Micro非常小,因为已删除了所有不必要的功能。不幸的是,这包括有用的功能,例如调试和可视化。这意味着,如果在部署过程中出现错误,可能很难分辨正在发生什么。

另外,尽管模型必须存储在设备上,但模型还必须能够执行推理。这意味着微控制器必须具有足够大的内存以使其能够运行(1)其操作系统和库,(2)神经网络解释器(例如TF Lite),(3)存储的神经权重和神经体系结构,以及(4)推理过程中的中间结果。因此,tinyML研究论文中经常引用量化算法的峰值内存使用量,以及内存使用量,乘法累加单位(MAC)的数量,准确性等。

为什么不在设备上训练?

在设备上进行训练会带来更多的并发症。由于数值精度降低,要保证足够的网络训练所需的精度水平变得极为困难。标准台式计算机上的自动区分方法对于机器精度大约是准确的。以10 ^ -16的精度计算导数是令人难以置信的,但是对8位值使用自动微分将导致较差的结果。在反向传播过程中,这些导数会复合并最终用于更新神经参数。在如此低的数值精度下,这种模型的精度可能很差。

话虽如此,神经网络已经使用16位和8位浮点数进行了训练。

Suyog Gupta及其同事在2015年发表的第一篇有关降低深度学习中的数值精度的论文是""。本文的结果很有趣,表明32位浮点表示形式可以减少为16位定点表示形式,而精度几乎没有降低。但是,这是使用的唯一情况, 因为平均而言,它会产生无偏结果。

在2018年,Naigang Wang及其同事在其论文"使用8位浮点数"中使用8位浮点数训练了神经网络。由于需要在反向传播期间保持梯度计算的保真度(在使用自动微分时能够实现机器精度),因此使用8位数字而不是推理来训练神经网络要实现的挑战明显更大。

计算效率如何?

还可以对模型进行定制,以使它们的计算效率更高。在移动设备(例如MobileNetV1和MobileNetV2)上广泛部署的模型体系结构就是很好的例子。这些本质上是卷积神经网络,已经重塑了卷积运算以使其具有更高的计算效率。这种更有效的卷积形式称为深度可分离卷积。还可以使用和来针对延迟优化。

下一次AI革命

在资源受限的设备上运行机器学习模型的能力为许多新的可能性打开了大门。发展可能有助于使标准机器学习更加节能,这将有助于消除对数据科学对环境影响的担忧。此外,tinyML允许嵌入式设备具有基于数据驱动算法的新智能,该智能可用于从预防性维护到检测森林中的鸟声的任何事物。

尽管某些机器学习从业者无疑将继续扩大模型的规模,但一种新的趋势正在朝着内存,计算和能源效率更高的机器学习算法发展。TinyML仍处于起步阶段,有关该主题的专家很少。这个空间正在快速增长,并将在未来几年内成为人工智能在工业中的新的重要应用。

【编辑推荐】

  1. SpringBoot的设计理念和目标、整体架构你有深入了解吗
  2. 在外国人眼中,阿里云跻身全球第三的秘诀居然是这些......
  3. 关于大数据时代的社会治理之道,听听专家怎么说
  4. 微软将为Windows 10设备带来Windows 10X的设置体验
  5. 李开复对话彭特兰:AI不是单打独斗,应避免AI冷战

更大的模型并不总是更好的模型,微型机器学习将是未来的方向相关推荐

  1. 【小f的刷题笔记】(JS)单调栈 - 下一个更大元素 LeetCode496 下一个更大元素的下标 LeetCode739 循环数组中下一个更大元素 LeetCode503

    [单调栈] 单调栈:顾名思义,就是这个栈是单调的,后面也会运用这一点 模版: var nextGreater = function (nums) {let n = nums.lengthlet res ...

  2. 为什么小批量会可以使模型获得更大的泛化

    来源:Deephub Imba 本文约2000字,建议阅读5分钟 本文为你介绍了如批量大小在机器学习中的重要性. 批大小是机器学习中重要的超参数之一.这个超参数定义了在更新内部模型参数之前要处理的样本 ...

  3. Science:把这个人类特有基因转入猴子后,它们的大脑更大更强了,但科学家没敢让它出生...

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.高颜值在线绘图和分析.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流 ...

  4. 马斯克称下一代超级工厂占地可能没必要更大 但可能更先进

    据国外媒体报道,随着实力的增强和发展的需要,电动汽车厂商特斯拉的超级工厂也越来越多,规模也越来越大,从上海超级工厂到柏林超级工厂,再到得克萨斯州超级工厂,工厂占地面积是前一座超级工厂的3倍多,去年7月 ...

  5. 二维彩虹和你一起看见更大的世界

    遇见有趣的灵魂: 看见更大的世界: 走更远的路. --二维彩虹 画廊里静谧的走廊,你听见山呼海啸纷至沓来: 装满南方阳光的明信片里,你听见笑声和可乐撞击冰块的声音: 告白的礼物里,是美好的回忆和值得期 ...

  6. 想凭勤奋逆风翻盘?如今靠运气才有更大赢面

    我们从小到大接受的教育和训练,多是强调学而优则仕,以及吃苦耐劳:而我们也一直以此来教育下一代人. 蓦然回首,才突然发现,这个世界好像并非如此. 优秀的简历都是类似的,名校学霸好专业,还有海外的学习和实 ...

  7. 【拆解】Apple Watch Series 6 ,电池更大、陶瓷和蓝宝石外壳更薄,更强硬,更耐磨!...

    国外知名拆解机构iFixit 对今年新发布的 Apple Watch  Series 6,并分享了详尽拆解,今天和大家一起观摩一下. Apple Watch Series 6 与 Series 5 对 ...

  8. android大屏适配_大屏开创者三星Note系列,也要被更大屏的折叠屏手机取代了

    临近年关,各个手机厂商们的旗舰产品也都发布的差不多了,发布会数量也在逐渐减少,紧随而来的就是一年一度的手机曝光大赛了,关于明年旗舰产品的信息也开始逐渐浮出水面. 其中一条关于三星旗舰的曝光信息则比较特 ...

  9. Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力...

    AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中.AlexNet主要使用到的新技术点如下. (1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过 ...

  10. Swin Transformer 升级,Swin V2:向更大容量、更高分辨率的更大模型迈进

    作者丨happy 编辑丨极市平台 本文原创首发于极市平台公众号,转载请获得授权并标明出处 论文链接:https://arxiv.org/pdf/2111.09833.pdf 代码链接:https:// ...

最新文章

  1. Visual Studio 2008 使用小技巧
  2. ubuntu18.04换清华源
  3. Python面向对象中反射和双下的正确用法
  4. openjdk platform binary是什么进程_基于pytest实现appium多进程兼容性测试
  5. 开源与自由 | 商业自由:从边缘到核心贡献
  6. JPA学习笔记---JPA实体Bean的建立+配置文件+junit测试+自动生成(对应实体Bean的)数据库表+插入数据
  7. Java-虚拟机-常量池的表现方式
  8. 【转】 测试人员的职业规划 --整理标注
  9. 2019年6月全国程序员工资统计--两个月岗位减少11%,互联网寒冬来了
  10. 网络间谍:你的共享文件夹网络监视器
  11. dedecms中[field:imglink/]图片大小问题解决办法
  12. CorelDRAW VBA - 读取XML文件,根据内容批量创建图形
  13. 这些电脑小技巧可以让你在朋友圈很时髦!
  14. message broker
  15. 人大金仓KingbaseES大小写敏感性专题
  16. win10解决你当前无权访问该文件夹,拒绝你访问该文件夹
  17. position详解
  18. 怎么用手机里的计算机玩游戏,黑鲨手机怎么玩电脑上游戏
  19. js点击元素之外的地方隐藏该元素
  20. ubuntu16.04安装intel集显驱动过程问题总结

热门文章

  1. 一个全网最详细 Python 教程,不信你来学一学!
  2. 装完nvme固态经常蓝屏_NVMe固态硬盘安装Win7蓝屏0x0000007B快速解决方法
  3. 计算机中计算器怎么算log,log换算(log计算器在线)
  4. QQ浏览器 不支持html5,浏览器常见问题_浏览器高级功能_浏览器在线帮助-QQ浏览器官网...
  5. 常用输出设备——打印机、显示器与显示卡、声音和力反馈
  6. Monte-Carlo(蒙特卡罗)算法
  7. 【新浪云共享型MYSQL】Navicat连接新浪云共享型MYSQL附JAVA/PHP配置文件)
  8. conan入门(二十六):使用make编译erpc/erpcgen(makefile)
  9. 2020-12-3background-color对div元素不起作用
  10. 加油站(贪心)【LeetCode】