就在几年前,人们还认为机器学习(ML),甚至深度学习(DL)都只能在高性能硬件上执行;而训练和边缘端的推理只能在网关、边缘服务器或数据中心进行。这种想法在当时确是合理的,因为那时在云端和边缘之间分配计算资源的趋势还处于早期阶段。但是,随着企业和学术界不断深入的研究与开发,情况已经发生了巨大变化。
现在,机器学习不再需要每秒执行数万亿次操作(TOPS)的处理器。很多情况下,最新的微控制器(有些配置有嵌入式ML加速器)就可以在边缘设备上执行机器学习。
这些设备不仅可以执行机器学习,而且能够以低成本、低功耗实现出色的性能,仅在绝对必要时才连接到云端。简而言之,内置ML加速器的微控制器代表着物联网发展的下一阶段:在生产数据的源头,例如麦克风、摄像头和监控其他环境条件的传感器中引入智能计算,并使物联网应用受益。
边缘计算有多深?
尽管边缘被普遍认为是物联网中最远的位置,但实际上它通常被视为高级网关或边缘服务器。然而,这还不是边缘的尽头,真正的尽头是接近用户的各种传感器。因此,在用户附近配置尽可能多的分析算力成了很自然的事,而这是微控制器所擅长的。
不同宽度乘数下的多个MobileNet V1模型。图中可见,宽度乘数对参数的数量、计算结果和精度都有显著影响。但是,如果只是将宽度乘数从1.0改为0.75,TOP-1精度并无太大变化,参数的数量和算力需求却明显不同。(来源:NXP)
按理说,单板计算机具有出色的性能,也可考虑用于边缘处理;单板机集群甚至可以与小型超级计算机相媲美。不过单板计算机的体积仍然太大,成本太高,无法成千上百地部署在大型应用场景。单板计算机还需要外部直流电源,这在某些情况下可能不现实;而MCU仅消耗毫瓦级的功率,可以由纽扣电池甚至几块太阳能电池供电。
因此,毫不奇怪人们对在边缘执行机器学习的微控制器越来越感兴趣,这已成为一个非常热门的开发领域。它甚至有一个专用的名称—TinyML。TinyML的目标就是允许在资源受限的小型低功耗设备(尤其是微控制器),而不是在更大的平台或云端上执行模型推理,甚至最终能实现模型训练。这就要求神经网络模型缩小尺寸,以适应这些器件相对较低的处理、存储和带宽资源,而又不会显著降低功能性和准确性。
这些方案对资源进行了优化,使设备可以采集充足的传感器数据并发挥恰当作用,同时还可以微调精度并减少资源需求。因此,尽管数据仍然可以发送到云端(或者先发送到边缘网关,然后再送到云端),但由于已经进行了大量分析,需要上传的数据量会少很多。
TinyML的一个流行示例是基于摄像头的目标检测系统,尽管它能够捕获高分辨率图像,但因存储空间有限,需要降低图像分辨率才行。但是,如果摄像头具备本机分析能力,仅捕获需要的目标,而不是整个场景;由于相关图像减少,就可以保留其较高的分辨率。这类功能通常都需要更大型、功能更强大的处理器,但是TinyML技术却使它得以在微控制器上实现。
小而强
尽管TinyML是一种相对较新的范例,但已经产生了令人惊讶的效果,它能够以最小的精度损失进行推理(甚至可以使用性能一般的微控制器)和训练(使用性能更强大的微控制器)。最新的应用包括语音和面部识别、语音命令和自然语言处理,甚至可以并行处理多种复杂的视觉算法。
具体而言,这意味着一个不足2美元的微控制器,带有500 MHz Arm Cortex-M7内核和28 Kb至128 Kb的内存,就可以提供使传感器真正智能化所需的性能。
即使这样的价格和性能水平,这些微控制器仍然具有多种安全功能,包括AES-128;支持多种外部存储器类型,如以太网、USB、SPI;并包括或支持各种类型的传感器,以及蓝牙、Wi-Fi、SPDIF和I2C音频接口。如果再多花一点钱,还可以拥有1 GHz Arm Cortex-M7、400 MHz Cortex-M4、2 MB RAM和图形加速,而且它采用3.3 V直流供电,功耗通常不超过几毫安。
机器学习用例
关于TOPS
消费者常使用单个指标来定义性能,而设计师和营销人员也喜欢这样做。这是因为这个指标使区分器件变得简单,或者看起来简单。一个典型的例子就是CPU,多年来它一直以其时钟频率来定义。对设计师和消费者而言,幸运的是,情况已不再如此。只用一个指标评定CPU性能就像是按照发动机的峰值转速来评估汽车性能。尽管峰值转速有一定参考意义,但几乎无法体现发动机的强劲或汽车的驾驶性能,这些特性取决于许多其他因素。
不幸的是,神经网络加速器(包括高性能MPU或微控制器中的那些加速器)正日益被每秒数十亿或数万亿次操作数定义,因为,这又是一个容易记住的数字。但是实际上,单独的GOPS和TOPS都是相对无意义的指标,它们仅代表了在实验室中进行的一项测量(毫无疑问是最佳条件下的指标),但并不能代表实际操作环境中的性能。例如,TOPS并未考虑内存带宽的限制、所需的CPU开销、预处理和后处理以及其它因素。如果考虑所有这些因素,例如实际操作中在特定电路板上使用时的性能,则系统级性能可能只能达到数据手册中TOPS值的50%或60%。
所有这些数字都是硬件中的计算单元乘以对应的时钟速率所得到的数值,而不是上需要运行时数据已经就绪的频率。如果数据一直即时可用,也不存在功耗问题和内存限制,并且算法能无缝映射到硬件,则这种统计方式更有参考价值。然而,现实中并没有这样理想的环境。
当TOPS应用于微控制器中的ML加速器时,该指标更没有价值。这些超小型设备通常具有1至3 TOPS的值,但仍可以提供许多ML应用所需的推理功能,这些功能还有赖于专为低功耗ML应用而设计的Arm Cortex处理器。ML加速器不仅支持整数运算和浮点运算,还支持微控制器的许多其它功能。很明显,TOPS或任何其他单个指标均无法单独或在系统中充分定义性能表现。
结语
随着物联网领域越来越趋向于在边缘执行尽可能多的处理,直接在传感器上或与传感器相连的微控制器上进行推理的需求逐渐兴起。微控制器内部应用处理器和神经网络加速器的开发进展迅速,越来越多更专业的解决方案不断涌现。目前的发展趋势是,在不显著增加功耗或尺寸的情况下,更多以AI为核心的功能被整合,例如神经网络处理以及微控制器中的应用处理器的功能整合。
如今,模型可以在功能更强大的CPU或GPU上进行训练,然后使用诸如TensorFlow Lite之类的推理引擎在微控制器上实现;这样既减小了模型尺寸,也满足了微控制器的资源需求,而且可以轻松扩展以适应更多的机器学习需求。很快,在这些设备上不仅可以进行推理,还可以进行训练,这将有效地赋能微控制器,使之成为更大型、更昂贵的计算解决方案的有力竞争者。
(参考原文:Deep Learning on MCUs is the Future of Edge Computing)
作者:Markus Levy,恩智浦半导体人工智能和机器学习技术部门总监
责编:Amy Guan
本文为《电子工程专辑》2020年10月 刊杂志文章,版权所有,禁止转载。点击申请免费杂志订阅
- 到底说的是哪个型号的MCU