虽然人工智能(AI)与机器学习(ML)计算一般都在数据中心内以规模化方式执行,但基于最新的处理设备,我们已经有可能将AI/ML能力嵌入于网络边缘位置的物联网设备中。边缘位置的AI可实现快速响应,而无需等待云端传回的结果。如果能够立足本地完成推理,那么用户也将无需承担昂贵的数据上传以及云端计算周期带来的巨额成本。最后,一部分应用场景也将因此摆脱对隐私问题的担忧。
除了两种最为常见的应用方式,即语音处理与图像识别之外,机器学习技术也能够消化来自几乎任何类型传感器的数据。在当今的智能化工厂当中,机器学习技术可能适用于工业过程控制当中各类复杂的传感器组合,或者为工业机器提供异常检测与预测性维护方案。
>>> MCU异常检测
恩智浦公司(NXP)在本月早些时候召开的微软Build开发者大会上展示了一款用于此类目标的模块。这块30 x 40毫米的电路板能够将少量传感器与功能强大的微控制器加以结合——其中的控制器元件采用i.MX RT1060C,这是一款高性能Cortex-M器件,拥有高达600 MHz的极高运行速度,同时具备连接功能(见图一)。
▲ 图一:恩智浦的AI驱动型工业异常检测模块,左右分别为正面与背面图。
恩智浦公司物联网与安全解决方案总经理兼执行副总裁Denis Cabrol表示,“我们的基本思路是将这块电路板连接至旋转电机、压缩机或者普通电机上,但它也能够完成其它一些任务,例如对矿井内的气体进行检测。它具备两种模式:首先,设备会在正常运行的系统上收集数据,并创建正常模式。在部署设备之后……我们会看到由于温度或设备的正常磨损所导致的微小变化;但一旦出现某些极端情况,例如轴承开始分离,或者某些器件失去了动平衡,我们就可以马上派遣技术人员或者对设备加以关闭。”
我们在GUI当中看到的AI支持型异常检测呈现形式(见图二)。
▲ 图二:恩智浦异常检测模块的GUI。图中右侧的蓝点代表正常操作,粉红色三角形为正常操作的极限状态,红点则代表异常。
恩智浦的模块既能够完全以本地方式运行机器学习,也可以在其MCU上进行训练与推理,甚至能够对接微软Azure并将所有数据发送至云端完成训练与推理。当然,大家也可以根据需求将这两种方式结合起来。
Cabrol表示,“实际上,最佳用例确实介于两者之间;即利用本地智能处理大量数据,因为大多数时候本地处理器就已经拥有完成理想决策的必要能力。在这种情况下,我们只需要将一部分数据字节发送至云端,而非发送全部原始数据。”
通过这种方式,微控制器将能够立足边缘位置运行训练任务。这在实际应用当中具有重大意义,因为机器所处的确切环境会因部署位置而发生变化。因此,我们需要对模型进行训练才能帮助其建立起对正常运营的准确认知。
在为此类应用场景引入MCU时,有以下几项要点需要注意。
Cabrol表示,“大家需要拥有正确的处理能力方可使训练结果尽可能准确,而且您还需要拥有大量的内存。我们设备的内存大致介于512 KB到1 MB之间;如果使用拥有大量SRAM的MCU,您也可以创建出非常巨大的模型。”
如果应用场景比较简单,那么这里讨论的模块只需要扩展至性能较低的MCU;但在实践当中,工业应用对于成本往往不那么敏感。不过如果相关设备以电池供电,那么配置较低的MCU可能有助于提高能效。
在这种情况下,MCU与MPU之间又该如何比较?Cabrol指出,虽然微处理器能够提供更简单的解决方案,但微控制器在尺寸小巧性与功耗水平方面仍然更具优势。
他进一步补充称,“如果大家想要几乎无限的性能,不打算投入太多时间优化自己的软件,或者只是打算随便进行一点尝试,那么微处理器无疑是最好的选择——它能够运行Linux、它拥有更强大的处理能力、它也配备DRAM。但这一切,都是用更高的功耗水平为代价换来的,而且其成本更高、尺寸通常更大。正因为如此,微处理器不可能采用电池供电,这意味着除了两种芯片之间的实际价格差异之外,大家至少需要承担额外6美元的硬件成本(用于支持各类硬件,包括DRAM、引导ROM、闪存,以及经常被用到的PMIC)。”
>>> FPGA AI加速
FPGA同样适用于边缘位置AI场景,因为其能够提供可编程的硬件加速能力。虽然大型高端FPGA对于我们的智能工厂示例而言可能过于严苛,但目前可用的小型可编程逻辑器件没准能够符合要求。Lattice就在提供功耗极低的FPGA,这些FPGA已经通过智能手机等多种设备与用户见面;其中iCE40 UltraPlus的功耗甚至仅为1毫瓦(见图三)。
▲ 图三:更小巧的FPGA设备也许更适合边缘应用中的AI需求。
Lattice半导体部门与解决方案营销高级总监Deepak Boppana表示,“这类FPGA非常适合用于此类非视觉性低端传感器数据的处理。对于工厂环境当中可能存在的压力与热传感器而言,其对于性能提出的要求并不是很高。我们可以将它们放在视觉与语音处理这两种极端之间进行处理。”
Boppana指出,虽然AI推理确实可以在智能工厂的边缘设备上完成,但如果数据在某种网关当中汇聚,则可能需要更多的处理能力——每个网关当中传感器数量的持续增长,意味着其对性能的要求必将大幅提高。
他解释称,“在传感器融合场景当中,大家可以为每一种传感器设置单独的神经网络,或者首先进行某种传感器融合,而后立足这种组合模型使用通用型神经网络。总而言之,其中存在着多种不同的方法。”
与MCU相比,FPGA在此类应用场景中能够实现多种比较性优势。其能够提供灵活的接口,用于支持同一系统当中多种不同类型的传感器装置,同时帮助运营管理者进行未来验证。
Boppana表示,“MCU的问题在于I/O灵活性与性能。关于其性能是否充足,人们总是会抱有疑问,因为这类工业系统大部分可能在未来十年甚至更长时间内都不可能再进行更迭。因此,具有未来验证能力将非常重要,这意味着其必须能够根据新的要求进行扩展,并具有实现更新算法的灵活性与性能余量。在这方面,我们无疑可以通过FPGA更轻松地达成这些目标。”
Lattice公司的AI方案基于其senAI硬件/软件堆栈,可以在两套不同的FPGA平台(iCE40 UltraPlus与ECP5)上运行。该堆栈包含软件工具、编译器与参考设计,虽然其基于视觉类应用,但仍有支持其它应用场景的余地(见图四)。
▲ 图四:Lattice的sensAI硬件/软件堆栈当中包含两个低功耗FPGA平台、IP内核、软件工具以及参考设计。
>>> GPU深度学习
那么,如何利用更为专业的硬件加速器,例如GPU?GPU经过高度优化,能够以并行方式执行大量关于数据的简单操作,这也使其成为AI实现的高效选项。然而,虽然GPU制造商的目标确实是将AI能力引向边缘位置,但其在设计之初就主要考虑计算机视觉与物体识别等应用方向。
英伟达公司几周之前刚刚发布Jetson Nano,这是一款小型单片,并提供两个版本:一款为99美元的开发套件,另一款为129美元的生产级模块(见图五)。其中包含129个CUDA-X GPU核心,一个四核CPU以及4 GB内存。
▲ 图五:英伟达Jetson Nano单片分为开发套件(左)与生产级版本。
英伟达公司智能机器产品管理负责人Murali Gopalakrishna表示,“我们之所以将其称为低功耗AI计算机,是因为它代表着人们有史以来第一次能够以99美元的价格建立起具有实际意义的AI与深度学习方案。”
那么,我们是否能够将其它相对更基础的应用场景运行在GPU之上?比如说我们之前提到的非视觉智能工厂示例?
他表示,“当然,完全没问题。”对于简单的应用场景,系统能够以极快的速度运行,“但这样的应用场景值99美元吗?如果不值,那么还是使用微控制器比较好。这一切最终都将归结于用例本身,即用户需要多大程度的灵活性、多大程度的扩展能力,以及希望解决方案拥有怎样的未来验证能力。”
这套Jetson平台拥有Nano与英伟达的边缘GPU方案TX2,且支持全部神经网络类型。
Gopalakrishna介绍称,“GPU非常灵活,它使得用户能够以远高于定制Soc或者定制ASIC的方式利用神经网络解决实际问题。因此,如果大家对于灵活性、性能以及速度有所要求,那么GPU绝对是非常适合的选项。但如果您只关注用例结果本身,其它都不重要,那么FPGA或者谷歌TPU也许更为合适……而如果您希望能够持续验证用例、不断改进用例,并希望始终拥有使用任意网络与多个独立运行网络的灵活性,那么请选择Jetson Nano。”
正如Gopalakrishna所补充的那样,利用GPU在边缘位置进行训练当然是完全可能的,因为这意味着边缘设备所使用的GPU核心将与云基础设施完全相同。接下来,只需要提供充足的内存与时间周期,训练肯定能够完成。
最后,机器学习模型属于算法,因此我们可以将其运行在任何类型的处理器之上。针对特定应用进行优化,意味着我们必须考虑其需要的内存量、场景中可用的电量、如何进行训练以及需要多长时间,外加实现未来验证的可能性。大多数MCU、MPU、FPGA以及GPU的主要供应商都提供适用于嵌入式系统的AI解决方案,外加软件工具等一系列资源。利用这一切,大家完全可以建立起各种基础性的复杂AI应用。但究竟要如何实现、怎样权衡,还要由您视自己的实际情况而定。