Steve Roddy 2019年1月4日
机器学习(ML)在市场听起来已经不新鲜了,我们几乎都熟悉个人助理、互联家庭和看似无穷无尽的小玩意儿的概念,只要我们有数据连接,这些小玩意儿就可以改善我们的生活。但在追求更可靠、更快速、更安全和更具成本效益的用户体验的过程中,诞生于云中的技术现在正走向边缘,直接进入在我们日常生活中发挥着越来越重要作用的智能设备。
这是一个合乎逻辑的变化,并且可以带来广泛的好处:例如,将大量数据转放在云端进行处理可能会产生明显的滞后,这可能会对时间关键型应用程序产生负面影响。在设备端上处理避免了此延迟,并消除了对数据连接的依赖。此外,移动和存储数据的成本巨大,消耗大量电力,并危及数据的安全,但建设越来越多的数据中心并不是一个可行的选择-尤其是因为对碳排放的负面影响。通过将尽可能多的处理保持在设备上,降低了成本和风险。
当然,基于云的ML仍然扮演着重要的角色:仅仅是因为巨大的功率和带宽需求,大量的神经网络(NN)训练很可能会继续在云中进行。然而,正如亚马逊在最近的一份新闻稿中所说的那样,“虽然训练理所当然地受到了很多关注,但推理实际上占了在生产中运行机器学习的大部分成本和复杂性(每花1美金在训练上,就会有9美金的花费在推理上)。”
考虑到推理市场的规模和重要性,利用EDGE ML的好处来获得足足9美元的价值是谨慎的。
云与边缘:有什么不同?
当然,在边缘设备上高效运行ML会带来新的挑战,主要是因为参数与云计算的参数非常不同。
云上处理ML
- 通常适用于数量有限的重点垂直应用程序。
- 面向小范围的处理器。
- 充足的可用功率和带宽。
- 大型设备预算。
边缘设备上处理ML
- 潜在地应用于广泛多样的应用领域。
- 更多可能的处理器类型,从CPU和GPU到NPU、DSP和其他形式的专用加速器。
- 大量(通常是专有的)应用程序编程接口(API)。
- 设备的成本相对较低,并且在热量和电力受限的环境中运行
当然,这些差异对软件需求有相当大的影响。虽然神经网络的规模在云和端上各有不同,但无论哪种情况,开发者都有一个共同的目标:运行在高级框架中开发的NN,尤其是最受欢迎的框架,如Google的TensorFlow和Facebook的Caffe。
面向云中高性能CPU和GPU的开发人员将使用特定于硬件的软件库来转换和运行这些高级框架。但是,边缘开发人员面临的大量API使得创建性能可移植、平台无关的软件变得困难。真正需要的是一种针对各种处理器类型的简单方法。
ARM NN:轻松瞄准多处理器
ARM NN是一个开放源码的通用软件框架,它弥合了边缘开发人员希望与其平台上的底层处理器一起使用的NN框架之间的差距。作为所有硬件类型的通用界面,它允许开发人员高效、轻松地在SoC中移动NN工作负载,从而减少特定于处理器的优化需求,并促进软件可移植性。
至关重要的是,ARM NN不需要开发人员迁移到不同的高级框架或工具-例如,他们可以继续使用TensorFlow,而ARM NN提供转换工具将图形转换为通用的集中格式。
速度提高高达9.2倍
伴随着不断增加功能和改进的季度发布时间表,ARM NN始终受到大量性能分析的影响,涉及运行在各种IP上的各种网络。这有助于确定优化工作的优先顺序,并如下图所示,带来了令人印象深刻的改进。
示例网络-只是ARM测量的众多网络中的一小部分-显示了在短短六个月的时间内,ARM BIG Cortex-A CPU、ARM Little Cortex-A CPU和ARM Mali GPU的性能提升。这些改进-速度高达9.2倍-仅来自软件改进。随着工作的继续,预计会有进一步的改进:ARM致力于在一系列现有IP上实现一流的性能,包括CPU、GPU和NPU,以及可用的新架构。
这些令人印象深刻的数字并没有被生态系统忽视,谷歌和Facebook等主要参与者认识到了ARM ML软件的好处-从ARM NN到Compute Library和CMSIS-NN-选择将这些库集成到他们自己的ML解决方案中。
“我们很高兴能与ARM合作,在各种Android设备上实现高性能ML。ARM计算库提供了出色的性能。我们期待着使用它。”Android神经网络团队。
“TensorFlow团队很高兴能与ARM和Linaro合作,扩大对Edge设备的支持,我们期待着与ARM NN库集成。”
皮特·沃登(Pete Warden),谷歌
在协作中进步
2019年早些时候,ARM向Linaro的机器智能倡议捐赠了ARM NN,使更广泛的行业能够从边缘ML的开放和优化框架中受益,并允许第三方IP开发商将自己的支持添加到ARM NN框架中。
随着越来越多的ML走向边缘,这种协作-以及标准化的开源软件方法-将变得越来越重要。在生态系统中主要参与者的支持下,ARM将继续对ARM NN及其支持库进行大量投资。到2019年4月,100个人的努力已经产生了超过34万行代码,据估计,ARM NN已经在超过2亿台Android设备上发货。随着移动到边缘扩展到最小的微控制器CPU,ARM NN的覆盖范围将增长到数十亿-最终数万亿-安全的联网设备。
通过消除针对特定加速器的自定义代码需求,ARM NN允许开发人员将精力集中在使其产品独一无二的关键差异化因素上。公司和个人都可以贡献代码,所以如果你有专业知识可以分享,为什么不成为这场改变行业的运动的一部分呢?