中电网移动|移动中电网
 
中电网移动|移动中电网|高清图滚动区

使用开源开发工具加速边缘计算的机器学习能力

摘要:

机器学习和深度学习技术如何快速发展,这为需要寻求方法来优化运行在具有功耗,处理和内存限制的微型边缘设备上,进行ML应用程序的开发人员带来了新的挑战。

易于使用的开源开发工具,将简化在嵌入式平台上创建ML /深度学习项目的过程。

正文:
 
物联网(IoT)已将数十亿台互联设备带入到我们的家庭、汽车、办公室、医院、工厂和城市中。物联网先驱者设想了庞大的无线传感器节点网络,这些网络将数万亿字节的数据传输到云中进行聚合、分析和决策。但是,近年来,基于物联网的,基于云的智能愿景正在被一种新的模式所取代:边缘智能。

利用机器学习(ML)技术的最新进展,嵌入式开发人员正在将人工智能(AI)的功能扩展到更靠近网络边缘的地方。当今的低功耗IoT设备现在能够在本地运行复杂的ML和深度学习算法,而无需云连接,从而最大程度地减少了对延迟,性能,安全性和隐私性的担忧。新兴的ML /神经网络边缘应用包括智能个人助理、工厂机器人、联网汽车中的语音和面部识别、支持AI的家庭安全摄像头以及对白色家电和工业设备的预测性维护。

机器学习市场正在迅速扩展,智能边缘应用的用例正在呈指数增长。根据TIRIAS Research的调查,到2025年,将有98%的边缘设备使用某种形式的机器学习。根据这些市场预测,到那时,预计将有18-25亿的设备包括ML和深度学习功能。2021年初,随着越来越多的嵌入式开发人员可以访问精简ML项目所需的低功耗设备、开发框架和软件工具,ML /深度学习应用程序将成为主流。

适应主流开发人员需求的ML Dev环境

直到最近,ML开发环境仍主要用于支持在ML和深度学习应用程序方面具有丰富专业知识的开发人员。但是,为了大规模地加速ML应用程序的开发,必须使ML支持变得更易于使用,并且对于主流的嵌入式开发人员来说,其支持范围越来越广。

与经典的基于云的AI系统相比,ML的出现相对较新,具有独特的需求。嵌入式设计的IC,电源和系统级资源受到更多限制,需要新的和不同的软件工具。ML开发人员还为智能边缘应用程序设计了全新的开发流程,包括模型训练,目标设备上的推理引擎部署以及系统集成的其他方面。

在对ML模型进行训练,优化和量化之后,下一阶段的开发涉及将模型部署在目标设备(例如MCU或应用处理器)上,并允许其执行推理功能。

在进一步介绍之前,让我们仔细研究一下用于ML应用程序的新型目标设备:跨界微控制器(MCU)。术语“分频器(Crossover)”是指结合了基于应用处理器的性能、功能,但具有易用性,低功耗和实时操作且具有MCU的中断和低延迟等特点。典型的Crossover MCU,例如NXP的i.MX RT系列设备,包含一个Arm Cortex-M内核,其运行速度为300 MHz至1 GHz。这些MCU具有足够的处理性能以支持ML推理引擎,从而无需额外的ML加速,以及功耗受限的边缘应用所需的低功耗。

理想情况下,嵌入式开发人员可以使用全面的ML开发环境(包括软件工具,应用程序示例和用户指南)在目标设备上部署开源推论引擎。例如,恩智浦的eIQ环境为Arm NN,ONNX运行引擎,TensorFlow Lite和Glow神经网络编译器提供推理支持。开发人员可以遵循简单的“自带模型”(BYOM)流程,使他们能够使用基于公共或私有云的工具来构建经过训练的模型,然后将模型转移到eIQ环境中,以为适当的芯片优化推理引擎。

如今,许多开发人员当前及将来的嵌入式项目都需要ML和深度学习工具和技术。同样,对于这些开发人员中的大多数,ML必须变得更加全面并且易于使用。全面的支持包括端到端的工作流程,使开发人员能够导入他们的训练数据,为他们的应用选择最佳模型,训练模型,执行优化和量化,完成目标配置文件,然后进行最终生产。

对于大多数主流开发人员来说,易用性意味着可以访问简化的,优化的用户界面,这些界面隐藏了底层细节并管理ML开发过程的复杂性。理想的用户界面允许开发人员勾选一些选项,然后轻松导入训练数据并将模型部署在目标设备上。

可用于帮助开发人员构建和部署ML应用程序和神经网络模型的处理平台,框架,工具和其他资源的数量正在不断增加。让我们研究几种开发工具和框架,以及它们如何帮助开发人员简化ML开发项目。

使用机器学习工具套件简化工作流程

Au-Zone Technologies的DeepView ML工具套件是直观的图形用户界面(GUI)和工作流程的一个很好的示例。它使从嵌入式设计人员到数据科学家再到ML专家的所有技能水平的开发人员,都可以导入数据集和神经网络模型,然后在各种目标设备上训练和部署这些模型和工作负载。

恩智浦最近增强了其eIQ开发环境,使其包括DeepView工具套件,以帮助开发人员简化其ML项目(图1)。新的eIQ ML工作流程工具为开发人员提供了高级功能,可以在NXP器件上进行修剪,量化,验证和部署公共或专有神经网络模型。目标上的图形级概要分析功能为开发人员提供了运行时见解,以优化神经网络模型架构,系统参数和运行时性能。

1. ML workflow tools provide developers with advanced features to build and deploy neural-net models on MCU targets.

ML工作流工具为开发人员提供了高级功能,可在MCU目标上构建和部署神经网络模型

通过添加运行时推理引擎以补充开源推理技术,开发人员可以轻松地在多个设备上快速部署和评估ML工作负载和性能。运行时推理引擎的关键功能是,它针对独特的设备体系结构优化了系统内存使用率和数据移动速度。

使用开源Glow编译器优化神经网络

Glow神经网络模型编译器是用于高级ML框架的流行的开源后端工具,该工具支持编译器优化和神经网络图的代码生成。随着诸如PyTorch之类的深度学习框架的广泛应用,机器学习/神经网络编译器提供了优化功能,可在各种硬件平台上加速推理。

作为PyTorch的领先先驱,Facebook在2018年5月推出了Glow(“降低图形编译器graph lowering compiler”的缩写)作为一个开源社区项目,旨在提供优化及加速神经网络。近年来,在全球130多个贡献者的支持下,Glow取得了长足的发展。

Glow编译器利用计算图在两个阶段中生成优化的机器代码(图2)。首先,它使用标准编译器技术优化模型运算符和层。在模型编译的第二个后端阶段,Glow使用低级虚拟机(LLVM)模块来实现特定于目标的优化。Glow还支持提前(AOT)编译模式,该模式可生成目标文件并消除不必要的开销,以减少计算量并最大程度地减少内存开销。这种AOT技术非常适合内存受限的MCU目标。

2. The Glow compiler uses a computation graph to generate optimized machine code for ML applications.

2. Glow编译器使用计算图为ML应用程序生成优化的机器代码。

像Glow编译器这样的ML工具可以简化ML /神经网络开发,并增强低功耗MCU的边缘处理性能。 GitHub上的Glow的现成标准版本与设备无关,使开发人员可以灵活地为领先的处理器架构(包括基于Arm Cortex-A和Cortex-M内核的架构)编译神经网络模型。

为了帮助简化ML项目,恩智浦将Glow与eIQ开发环境及其MCUXpresso SDK集成在一起。它将Glow编译器和量化工具组合到易于使用的安装程序中,并附有详细的文档以帮助开发人员快速运行其模型。这种经过优化的Glow实施针对Arm Cortex-M内核和Cadence Tensilica HiFi 4 DSP,并为i.MX RT系列MCU提供了特定于平台的优化。

恩智浦使用CIFAR-10数据集作为神经网络模型基准,最近测试了i.MX RT1060 MCU,以评估不同Glow编译器版本之间的性能差异。恩智浦还在i.MX RT685 MCU上进行了测试,i.MX RT685 MCU是目前唯一具有针对处理神经网络操作员进行了优化的集成DSP的i.MX RT系列设备。

i.MX RT1060包含600 MHz Arm Cortex-M7、1 MB SRAM,以及针对实时应用优化的功能,例如高速GPIO,CAN-FD和同步并行NAND / NOR / PSRAM控制器。 i.MX RT685包含一个600 MHz的Cadence Tensilica HiFi 4 DSP内核,一个300 MHz的Arm Cortex-M33内核和4.5 MB的片上SRAM,以及与安全相关的功能。

恩智浦的Glow实施与Cadence的神经网络库NNLib紧密结合。尽管RT685 MCU的HiFi 4 DSP内核旨在增强语音处理能力,但与NNLib库一起用作Glow的LLVM后端时,它也能够加速各种神经网络。尽管NNLib与CMSIS-NN类似,但它提供了一组针对HiFi4 DSP优化的更全面的手动调谐运算符。基于相同的CIFAR-10基准示例,与标准的Glow编译器实现相比,HiFi4 DSP将神经网络操作的性能提高了25倍。

使用PyTorch进行基于MCU的ML开发

PyTorch是一个开放源代码的机器学习框架,主要由Facebook的AI研究实验室开发,并基于Torch库,已被开发人员广泛用于创建ML /深度学习项目和产品。PyTorch是MCU目标的不错选择,因为它对处理平台的限制极小,并且能够生成ONNX模型,该模型可以由Glow进行编译。

由于开发人员可以通过PyTorch直接访问Glow,因此他们可以在同一开发环境中构建和编译模型,从而省去了步骤并简化了编译过程。开发人员还可以直接从Python脚本生成捆绑包,而无需先生成ONNX模型。

直到最近,ONNX和Caffe2还是Glow支持的唯一输入模型格式。 PyTorch现在可以将模型直接导出为ONNX格式以供使用。由于以其他格式(例如TensorFlow)创建了许多知名模型,因此可以使用

开源模型转换工具将其转换为ONNX格式。流行的格式转换工具包括MMdnn和tf2onnx,MMdnn是Microsoft支持的工具集,可帮助用户在不同的深度学习框架之间进行互操作;tf2onnx用于将TensorFlow模型转换为ONNX。

结论

机器学习和深度学习技术继续快速发展。同时,我们看到能够运行ML /深度学习算法并无需云干预就能做出自主决策的IoT和其他边缘设备的强劲市场势头。尽管将信息从云迁移到网络边缘是不可阻挡的趋势,但随着开发人员寻求优化ML应用程序以使其在具有功耗,处理和内存约束的微型边缘设备上运行的方法,挑战也随之而来。

正如建筑师和建筑商需要专门的工具来建造未来的房屋和城市一样,主流开发商也需要优化,易于使用的软件工具和框架,以简化在嵌入式平台上创建ML /深度学习项目的过程。 DeepView ML工具套件,Glow ML编译器和PyTorch框架例证了不断增长的开发资源浪潮,这些资源将帮助嵌入式开发人员创建下一代智能边缘应用程序。

猜你喜欢
中电网移动|移动中电网|频道导航区