人工智能正迅速从边缘设备向云端扩展。TinyML 是一种在大量物联网设备的微控制器上实现的人工智能技术,预计将在未来几年内,成为工业领域的重要应用。由于边缘设备通常受到计算资源和电池电量的限制,因此对功耗极为敏感。在这些设备上实现人工智能模型面临着新的挑战,同时也带来了新的应用机会。本文为 TinyML 系列的第一篇文章,旨在介绍 TinyML 的概念、技术及其未来潜力。
由 NASA 推动的小型化趋势已经席卷整个消费电子行业。现今,一根铅笔大小的设备中便可以存储所有贝多芬的作品,并通过耳机进行聆听。——天体物理学家、科学评论员 Neil deGrasse Tyson
超低功耗嵌入式设备的普及,以及诸如 TensorFlow Lite 等嵌入式机器学习框架的推出,表明人工智能驱动的物联网设备将实现大规模应用。——哈佛大学副教授 Vijay Janapa Reddi
图 1 嵌入设备上的 TinyML 概览图
模型的大小并不总是与性能成正比。
本文是 TinyML 系列的第一篇,主要向读者介绍 TinyML 的概念和未来的发展潜力。后续文章将深入探讨一些具体应用、实现方式和实践教程。
引言
过去十年,随着处理器速度的提高和大数据的出现,机器学习算法的规模呈现出指数级的增长。最初,这些模型相对较小,运行于本地计算机中,依靠 CPU 的一个或多个核心进行计算。
随后,GPU 计算的引入使得处理更大规模数据集成为可能,基于云的服务如 Google Colaboratory 和 Amazon EC2 实例等也让 GPU 技术更加普及。同时,算法仍然能够在单一计算机上完成运行。
最近,专用的 ASIC 和 TPU 提供了相当于约 8 个 GPU 的处理能力。这些设备的发展提升了将学习算法分布到多个系统的能力,从而满足了日益增长的模型需求。
2020 年发布的 GPT-3 算法,将模型的规模推向了极限。其网络架构中包含了惊人的 1750 亿个神经元,超过了人脑约 850 亿个神经元的两倍,且是 TuRing-NLG 神经元数量的十倍以上。TuRing-NLG 于 2020 年发布,是历史上第二大神经网络,包含约 175 亿个参数。有人估算,GPT-3 的训练成本约为 1000 万美元,使用的电力相当于三个核电站一小时的输出。
尽管 GPT-3 和 TuRing-NLG 的成就令人瞩目,但它们也引发了对人工智能行业日益增长的碳足迹的批评。与此同时,这些成就刺激了对更节能计算的关注。近年来,更高效的算法、数据表示和计算理念正在成为研究的重点。
TinyML 的主要受益者是边缘计算和节能计算领域。TinyML 源于物联网(IoT)的概念,传统的物联网做法是将数据从本地设备发送到云端进行处理。然而,这种方式在隐私、延迟、存储和能效等方面引发了诸多疑虑。
在能源效率方面,无论是有线还是无线的数据传输都非常消耗能量,大约比本地计算的乘积累加运算单元(MAC)高出一个数量级。最节能的做法是开发具备本地数据处理能力的物联网系统。与以计算为中心的云模型相比,以数据为中心的计算思路已得到一些人工智能先驱的探讨并付诸实践。隐私方面,数据传输存在被恶意行为者拦截的风险,并且在云端存储时数据的安全性也会降低。通过将数据保留在设备上,可以最大程度减少通信需求,从而提高安全性和隐私性。存储方面,许多物联网设备采集的大部分数据往往是无用的。例如,一台全天候录制建筑物入口的安防摄像机,在大多数时间内并未发挥作用。采用更智能的系统,仅在必要时激活可降低存储需求,进而减少传输到云端的数据量。延迟方面,许多物联网设备需将数据发送到云端处理,响应速度完全依赖于互联网性能。如果网速慢,设备的响应时间也会变长。而自带语音识别功能的智能物联网设备通过降低或消除对外部通信的依赖,从而显著减少延迟。
上述问题推动了边缘计算的发展,其理念是在云边缘的设备上实现数据处理。这些边缘设备在内存、计算和功能方面都受到自身资源的高度限制,因此需要研发更高效的算法、数据结构和计算方法。
这些改进同样适用于大规模模型,实现机器学习模型效率提升数个数量级,而不降低模型的准确性。例如,微软开发的 BonsAI 算法大小仅为 2 KB,但其性能优于通常为 40 MB 的 kNN 算法或 4 MB 的神经网络。尽管这一结果看似微不足道,但在一个缩小一万倍的模型上实现相同的准确性,确实令人印象深刻。这种小型模型可以在 2 KB 内存的 Arduino Uno 上运行。简单来说,现在可以在售价仅 5 美元的微控制器上构建这样的机器学习模型。
机器学习正处于一个交叉路口,面临两种计算范式的并进:以计算为中心的计算和以数据为中心的计算。在以计算为中心的计算范式中,数据存储和分析发生在数据中心的实例上;而在以数据为中心的计算范式中,处理则在数据的原始位置进行。尽管目前以计算为中心的计算范式似乎快要达到上限,但以数据为中心的计算范式仍处于起步阶段。
如今,物联网设备和嵌入式机器学习模型日渐普及。预计到 2020 年底,将有超过 200 亿台活跃设备。许多设备如智能门铃、智能恒温器以及可以通过语音唤醒的智能手机,可能并未引起人们的注意。接下来的部分将深入探讨 TinyML 的工作原理及其当前与未来的应用情景。
图 2 云的层级结构图。
TinyML 示例
过去,设备的各种操作必须依赖复杂的集成电路,而如今,机器学习的硬件智能逐渐转化为软件,使嵌入式设备变得更加简单、轻量和灵活。
在嵌入式设备上实现机器学习面临着巨大的挑战,但该领域也取得了显著进展。将神经网络部署在微控制器上的关键挑战在于低内存占用、功耗限制和计算能力限制。
智能手机是 TinyML 应用的典型例子。手机持续处于主动监听唤醒词的状态,例如 Android 手机的“你好,谷歌”和 iPhone 的“你好,Siri”。如果通过智能手机的 CPU 运行语音唤醒服务,电池电量将迅速耗尽,这种耗电量显然不可接受,因为大多数人每天只使用几次语音唤醒服务。
为了解决这一问题,开发者们创造了可以用小型电池供电的专用低功耗硬件,即使 CPU 未运行,集成电路也能保持活跃状态。
这些集成电路的功耗仅为 1mW,使用标准的 CR2032 电池时,可以持续供电长达一年。
虽然有些人认为这并不算什么,但这确实是一个重要的进步。许多电子设备的瓶颈在于能源。任何依赖市电的设备,其使用都受到电力布线位置的限制。如果在同一位置部署多台设备,电源可能很快就会超负荷。市电的使用效率不高且成本昂贵,电压转换过程中会浪费大量能量。笔记本电脑用户在拔掉充电器时对此深有体会,充电器内的变压器产生的热量正是电压转换过程中浪费的能量。
即使设备自带电池,续航时间也是有限的,频繁充电也是一大问题。许多消费电子设备的电池设计上只能维持一整天的使用。而一些 TinyML 设备则可以使用硬币大小的电池持续运行一年,这意味着可以将这些设备部署在一些偏远环境中,仅在必要时进行通信,以节省电能。
在智能手机中,唤醒词服务并不是唯一嵌入的 TinyML 应用。加速度计数据可以用来判断用户是否刚刚拿起手机,从而唤醒 CPU 并点亮屏幕。
显然,TinyML 的应用远不止于此。实际上,TinyML 为产品开发者和企业提供了丰富的应用机会,可以实现更智能的物联网设备。在当前数据日益重要的背景下,将机器学习资源分配到远程内存受限的设备上,为农业、天气预报和地震等数据密集型行业提供了巨大机遇。
毫无疑问,赋予边缘设备执行数据驱动处理的能力,将彻底改变工业过程中的计算范式。举个例子,如果能够监测农作物并检测土壤湿度、特定气体或特定气候条件,将极大促进作物的生长并提高产量。
另一个例子是,在智能门铃中安装摄像机,使用面部识别技术识别来访者。这将增强安全性,甚至可以在有人到访时将门铃摄像头的画面传输到室内电视屏幕,方便主人查看门口的访客情况。
目前,TinyML 主要集中在两个应用领域:
关键字识别。大多数人对这一应用非常熟悉,例如“你好,Siri”和“你好,Google”等关键字,通常被称为热词或唤醒词。设备会持续监听来自麦克风的音频输入,训练以仅对与所学关键字相匹配的特定声音序列做出响应。这类设备比自动语音识别更为简单,使用的资源也更少。Google 智能手机等设备还采用级联架构实现扬声器验证,以确保安全性。
视觉唤醒词。视觉唤醒词通过图像替代传统的唤醒词功能,进行存在与否的二分类判断。例如,设计一个智能照明系统,当检测到有人存在时启动灯光,并在离开后关闭灯光。同样,野生动物摄影师可以在特定动物出现时启动拍摄,安防摄像机也可以在检测到人活动时启动拍摄。
[[[IMG_n]]]
