就在几年前,人们普遍认为,机器学习(ML)甚至深度学习(DL)只能通过由网关、边缘服务器或数据中心执行的边缘训练和推理,在高端硬件上完成。这种想法在当时不无道理,因为在云端和边缘之间分配计算资源的趋势尚处于早期发展阶段。但如今,得益于业界和学术界的艰苦研发和不懈努力,情况已然发生了翻天覆地的变化。
处理器不必提供每秒数万亿次操作(TOPS),也能执行机器学习(ML)。越来越多的用例证明,只要使用最新的微控制器(部分带有嵌入式 ML 加速器),就能在边缘设备上开展机器学习。
只需极低的成本和极低的功耗,这些设备就能出色地完成 ML,仅在绝对必要时才连接到云。简而言之,内置 ML 加速器的微控制器代表着物联网发展的下一阶段:在生产数据的源头,例如麦克风、摄像头和监控其他环境条件的传感器中引入智能计算,并使物联网应用受益。
边缘有多深?
目前普遍认为边缘是物联网网络的最远点,但通常指先进的网关或边缘服务器。不过,这并不是边缘的尽头。真正的尽头是邻近用户的传感器。所以,合乎逻辑的做法是将尽可能多的分析能力安排在邻近用户的位置,而这也正是微处理器所擅长的。
不同宽度乘数下的多个 MobileNet V1 模型。图中可见,宽度乘数对参数的数量、计算结果和精度都有显著影响。但是,如果只是将宽度乘数从 1.0 改为 0.75,TOP-1 精度并无太大变化,参数的数量和算力需求却明显不同。
可以说,单板计算机也能用于边缘处理,因为它们具有出色的性能,其集群可媲美一台小型超级计算机。但问题是尺寸依然过大,而且对于大规模应用所需的成百上千次部署而言,成本过于高昂。它们还需要连接外部直流电源,在某些情况下可能超出可用范围;相比之下,MCU 的功耗只有几毫瓦,并且可以使用纽扣电池或一些太阳能电池来供电。
毫无意外,用于在边缘执行 ML 的微控制器成为了十分热门的研发领域。甚至还有专有名称——TinyML。TinyML 的目标就是允许在资源受限的小型低功耗设备(尤其是微控制器),而不是在更大的平台或云端上执行模型推理,甚至最终能实现模型训练。这就需要缩小神经网络模型的尺寸,以容纳这些设备中相对较少的算力、存储空间和带宽资源,同时不会严重降低功能性和精度。
这些方案对资源进行了优化,使设备可以采集充足的传感器数据并发挥恰当作用,同时微调精度并降低资源要求。因此,虽然数据可能仍被发送到云端(或者可能是先发送到边缘网关,然后再发送到云端),但数量少得多,因为相当大一部分的分析已经完成。
现实中,一个十分常见的 TinyML 用例就是基于摄像头的对象检测系统,尽管能够捕获高分辨率图像,但由于存储空间有限,只能降低图像分辨率。可是,如果摄像头内置了数据分析功能,则只会捕获所需的对象而非整个场景,而且因为相关的图像区域更小,能保留高分辨率图像。这种功能通常只见于更大型、性能更强大的设备,但是 TinyML 技术使得微控制器也能实现。
小巧却不简单!
尽管 TinyML 还只是相对较新的一种范式,但已经表现出了不容小觑的推理能力(即便使用的是相对温和的微控制器)和训练(在性能更强大的微控制器上)成效,且精度损耗控制在最低限度。最近的示例包括:语音和面部识别、语音命令和自然语言处理,甚至同时运行多个复杂的视觉算法。
实际说来,这意味着一台装载 500MHz Arm Cortex-M7 内核的微控制器,花费不超过 2 美元,内存容量从 28 Kb 到 128 KB 不等,却能提供强大的性能,使传感器实现真正智能。例如,恩智浦的 i.MX RT 跨界 MCU 就使用运行 TensorFlow Lite 运行时引擎的小型 ML 模型实现了此种性能。以基本对象识别为例,通常在 200ms 内即可完成,而且精度接近 95%。
即使在这个价格和性能水平上,这些微处理器配备了多个安全功能(包括 AES-128),并支持多个外部存储器类型、以太网、USB 和 SPI,同时还包含或支持多种类型的传感器以及蓝牙、Wi-Fi、SPDIF 和 I2C 音频接口。价格稍高一些的设备则是通常搭载 1GHz Arm Cortex-M7、400MHz Cortex-M4、2 Mbytes RAM 和图形加速。采用 3.3 VDC 电源供电时,功耗一般远低于单板计算机。
TOPS 有意义吗?
会使用单一指标来评判性能的不仅是消费者;设计者和市场营销部门也一直如此,因为作为一项主要规格,它可以轻松地区分设备。一个经典示例就是 CPU,多年来人们一直通过时钟速率来评判性能;幸运的是,现在的设计者和消费者已不再如此。只用一个指标评定 CPU 性能就像是按照发动机的峰值转速来评估汽车性能。尽管峰值转速有一定参考意义,但几乎无法体现发动机的强劲或汽车的驾驶性能,这些特性取决于许多其他因素。
遗憾的是,同样的尴尬也发生在以每秒数十亿次或上万亿次操作来界定的神经网络加速器(包括高性能 MPU 或微控制器中的加速器),原因一样,简单的数字好记。在实践中,单独的 GOPS 和 TOPS 只是相对无意义的指标,代表的是实验室而非实际操作环境中的一次测量结果(毫无疑问是最好的结果)。例如,TOPS 没有考虑内存带宽的限制、所需要的 CPU 开支、预处理和后处理以及其他因素。如果将所有这些和其他因素都一并考虑在内,例如在实际操作中应用于特定电路板时,系统级别的性能或许只能达到数据表上 TOPS 值的 50%或 60%。
所有这些数字都是硬件中的计算单元乘以对应的时钟速率所得到的数值,而不是需要运行时数据已经就绪的频率。如果数据一直即时可用,也不存在功耗问题和内存限制,并且算法能无缝映射到硬件,则这种统计方式更有参考价值。然而,现实中并没有这样理想的环境。
当应用于微控制器中的 ML 加速器时,该指标更没有价值。这些小型设备的 GOPS 值通常在 1-3 之间,但仍然能够提供许多 ML 应用中所需要的推理功能。这些设备也依赖专为低功耗 ML 应用而设计的 Arm Cortex 处理器。除了支持整数和浮点运算以及微控制器中的许多其他功能之外,TOPS 或其他任何单一指标明显无法充分定义性能,无论是单独使用还是在系统中都是如此。
边缘计算的未来
随着物联网领域进一步发展,在边缘执行尽可能多的处理,逐渐出现一种需求,即在直接位于或附着于传感器上的微控制器上执行推理。也就是说,微处理器中应用处理器和神经网络加速器的发展速度十分迅猛,更完善的解决方案也层出不穷。总体趋势是将更多以人工智能为中心的功能(例如神经网络处理)与应用处理器一起整合到微处理器中,同时避免功耗或尺寸显著增加。
如今,可以先在功能更强大的 CPU 或 GPU 上训练模型,然后在使用推理引擎(例如 TensorFlow Lite)的微控制器上实施,从而减小尺寸以满足微控制器的资源要求。可轻松扩展,以适应更高的 ML 要求。相信不久之后,推理和训练就能在这些设备上同时执行,让微控制器的竞争力直追更大、更昂贵的计算解决方案。