2020年1月09年, 工业

人工智能和ML在嵌入式系统中的实际应用

文章首次发表于RTInsights在1/7/19

通过加雷斯诺伊斯

嵌入式开发通常是由部署高度优化和高效的系统的需求驱动的。

人工智能可以通过提供解决复杂问题的新方法或威胁整个商业部门或工作类型的现状来颠覆企业。是否你理解的兴奋是什么,以及它将如何应用到你的市场,你也很难理解如何利用技术,有一些基本的了解人工智能及其潜在的应用必须是你的战略规划过程的一部分。

尽管大肆宣传,但我们应该清醒地记住,人工智能并不是无所不能的魔术。这是一个魔术师可以做一些魔术的工具。人们越来越感兴趣的一个领域是人工智能如何应用于嵌入式系统,重点是如何计划在这些更受限的环境中部署。

定义和基本原则

为了确保我们都在同一页上,让我们从一些关于不同技术及其计算需求的背景开始。

AI是一门研究如何用计算机模拟人类智能的计算机科学学科。人工智能自20世纪计算技术出现以来就存在了,当时艾伦•图灵(Alan Turing)等先驱预见到,计算机有可能以与人类类似的方式解决问题。

经典的计算机编程通过在代码中明确地编码算法来解决问题,引导计算机执行逻辑来处理数据,并计算输出。相比之下,机器学习(ML)是一种人工智能方法,它寻求在数据中找到模式,并基于数据进行有效学习。有很多方法可以实现这一点,包括预标记数据(或不标记数据),强化学习指导算法的开发,通过统计分析(或其他一些方法)提取特征,然后将输入数据与训练数据集进行分类,以确定具有一定置信程度的输出。

深度学习(Deep Learning, DL)是ML的一个子集,它使用多层神经网络从大数据集迭代训练模型。一旦经过训练,模型就可以查看新数据集,从而对新数据作出推断。这种方法最近得到了很多关注,并已应用于各种问题,如图像处理和语音识别或金融资产建模。我们认为这种方法也会对未来的关键基础设施和设备产生重大影响。

ML/DL在嵌入式系统中的应用

由于创建精确的模型需要大量的数据集,训练模型需要大量的计算能力,训练通常在云计算或高性能计算环境中执行。相反,推理通常应用于接近数据源的设备。虽然分布式或边缘训练是一个非常有趣的主题,但它不是目前大多数ML系统的部署方式。为了简单起见,让我们假设培训在云中进行,而推理将在边缘或设备内进行。

正如我们所描述的,ML和DL是以数据为中心的学科。因此,创建和培训模型需要访问大型数据集,以及为数据操作提供丰富环境的工具和环境。使用了简化数据操作、实现复杂数学库和统计分析的框架和语言。通常这些都是语言框架,比如Python,然后在其上构建ML框架。有很多这样的框架,但一些常见的框架包括TensorFlow、Caffe或PyTorch。

ML框架可用于模型开发和训练,也可用于在边缘使用经过训练的模型运行推理引擎。因此,一个简单的部署场景是在设备中部署一个框架,例如TensorFlow。因为它们需要丰富的运行时环境,比如Python,所以它们最适合Linux上的通用计算工作负载。由于需要在移动设备中运行ML,我们看到许多轻量级推理引擎(TensorFlow Lite, PyTorch mobile)开始开发,它们需要更少的资源,但这些引擎还没有广泛可用,也没有它们功能齐全的父引擎成熟。

有些模型不需要完整的ML框架就可以解释和运行。例如,OpenCV,一个包含深度/卷积神经网络(DNN/CNN)库的计算机视觉框架,可以从TensorFlow和其他框架中读取模型。OpenCV和DNN库可以在许多紧凑的操作环境中使用,这些环境不支持更复杂或功能完整的ML框架,所以第二个部署选项是使用OpenCV这样的框架部署推理引擎。

ML是高度计算密集型的,早期部署(如自动驾驶汽车)依赖于专门的硬件加速器,如gpu、fpga或专门的神经网络。随着这些加速器在soc中越来越普遍,我们可以预见到在受限设备中运行DL模型的高效引擎。当这种情况发生时,另一个部署选项将是编译经过训练的模型,以便在DNN加速器上进行优化部署。一些这样的工具已经存在,并且需要诸如LLVM这样的现代编译器框架来针对模型前端和硬件加速器后端。

对嵌入式开发的影响

嵌入式开发通常是由部署高度优化和高效的系统的需求驱动的。经典的开发方法是从非常有限的硬件和软件环境开始,只在需要时添加功能。这一直是RTOS应用的典型领域。

随着技术的快速变化,我们看到开发方法从使复杂的系统工作开始,然后在后期为部署进行优化。与软件领域的许多重大进步一样,开源社区是我们在ML中看到的创新速度和规模的一个巨大驱动力。拥抱源自开源的工具和框架,并经常从Linux开发开始,正迅速成为主要的创新路径。因此,同时使用实时操作系统(RTOS)和Linux,或者将开源从Linux迁移到RTOS,都是必须支持的重要开发旅程。

无论公司是刚刚起步,还是准备部署优化的机器学习解决方案,他们都必须构建基础技术和丰富的开发环境,以抽象复杂性,并支持异构的运行时环境。

以前的化工领域的开放式过程自动化PoC
下一个引入带有新的分布式云架构的StarlingX 3.0