0 背景
边缘智能是边缘计算中一个非常重要的方向。它将边缘计算和人工智能算法结合起来,在边缘设备上就近处理目标检测、物体跟踪,识别等任务。这种处理方式可以降低时延,减少数据上送云端对回传网络的冲击,同时保证数据的隐私和安全性。但是,我们要面对一个问题,即现有的人工智能算法是否可以直接应用于边缘侧,还是我们需要重新设计一套原生算法。本文将探讨边缘智能网关的全栈解决方案,提供一套工程化的实现框架,从硬件、操作系统、数据平台和智能编程库选型入手,帮助读者选型快速搭建一个边缘智能网关出来。
1 什么是边缘智能
边缘智能是指将边缘计算和人工智能相结合,在靠近用户的边缘设备上对数据进行智能采集,检测和识别。如下图所示,智能模型可以在云端进行训练,然后在边缘设备上进行预测。这样的协同模式,是因为边缘设备通常在计算能力和存储能力上比较弱,无法完成大规模的训练,考虑到边缘设备就近处理的优势,可以将预测模型下沉到这一级边缘设备。如何评价边缘智能设备的预测能力,结合边缘设备资源不足的特点,主要从边缘智能设备的预测准确率,低延迟,低功耗和内存占用率低四个视角评价。
整个边缘智能设备为了达成上述的四个评价标准,在技术层面主要追求轻量化的实现方式,比如轻量化的机器学习算法,轻量化的边缘智能开发库,轻量化的操作系统等。在硬件选型上采用异构化的硬件,与通常的边缘网关设备不同,需要选择计算密集型的芯片作为计算设施。被采集的数据并不能被立刻处理而要首先进行数据清洗。当下一种比较流行的边缘智能模型是边传边算,从空口开始到每一级的边缘设备都进行计算,在其中某一级的边缘智能设备上就完成了检测,识别等功能。关于边缘智能的实现技术框架,详见下节。
2 边缘智能的实现技术架构
如果我们想落地一款边缘智能网关,在每一层上可以选择哪些技术呢?本小节将给出一个参考案例。如下图所示,图中右边从底层硬件到最上层的应用给出了可选的技术方案,左边则给出选择这一项技术的原因。
首先是硬件芯片的选择,因为我们要实现的边缘智能网关需要具备一定的运行机器学习、深度学习的能力,传统的边缘计算网关采用的CPU和arm体系结构并不适合处理这种计算密集型的业务,因此需要选择诸如GPU、NPU、ASIC、FPGA等计算型芯片加速。考虑到上一节提到的边缘智能的低功耗的特性,当前比较占优势的技术是FPGA,FPGA因其灵活的硬件设计,可以很方便地开发不同应用场景的硬件,当然ASIC可以提供更低的功耗,但是因灵活性不及FPGA,所以在此处图中选择FPGA作为硬件加速引擎。
接下来是操作系统的选型。linux是边缘计算网关中被广泛使用的一种开源操作系统,但是linux本身是一种IO密集型或者说是指令密集型的操作系统,在数据的处理调度上并无优势,因此此处笔者借鉴《边缘计算》一书中提到的ROS作为专门处理计算任务和调度的操作系统,实现AMP双系统。对于模型预测,智能编程库相关的算法运行在ROS上,对于一般的数据管理和设备管理则运行在linux上,如果是双核的开发板,则可以分别绑定到不同的核上运行。
再往上看就来到数据平台层,这一层是边缘计算网关的核心,主要是处理和管理数据、设备状态,实现云边协同等。显然在边缘智能网关,仍然需要对设备进行处理,而且会涉及到大量预测数据的处理,部分数据还需要上送到云端进行训练,因此这一层也是必不可少的。此处我们选择kubeedge或者edgex foundary作为数据处理平台,这两个平台分别在工业边缘网关,物联网网关,智慧城市,智慧交通等有着广泛应用,可以简化设备维护,部署,云边数据传输的复杂度,让我们更聚焦于使用边缘智能编程库进行业务开发或者设计新的边缘智能算法。
再往上就是我们本节的核心轻量的边缘智能编程库,这个库可以方便实现快速的智能业务开发,不必从头开始实现原生边缘智能算法或者裁剪现有云端算法。此处我们推荐TensorFlow Lite和Paddle Lite两个编程库,这两个库同样是当前应用比较广泛的开源项目,关于这两个库的差别将在下一节重点介绍。
最后就是从算法角度,实现边缘智能算法的一些方案,简单来说分为两类,一类是原生算法,就是基于边缘网关的资源受限的特点重新设计轻量化的训练和预测模型;还有一类是从当前云端的算法通过压缩、裁剪等手段得到预测模型,然后卸载到边缘网关上,比如深度学习模型的网络压缩,知识迁移,低秩逼近等。如果要自己设计算法,需要注意从低时延,低内存,低延迟,高准确率四个角度考虑,保证算法可用性。
3 TensorFlow Lite和Paddle Lite对比
TensorFlow Lite和Paddle Lite分别是由Google和百度开发的轻量级的智能算法编程库,均适合部署在诸如嵌入式系统,边缘计算网关等资源受限的设备上,擅长进行预测,其负责训练模型分别是TensorFlow和PaddlePaddle,可以部署在云端。如下表所示从10个角度进行对比,读者可以根据自己的业务需求选择其中的一个模型。
从上表中可以看出,两个模型有不同的应用场景,TensorFlow Lite更适合应用在英语自然语言的场景,而Paddle Lite更适合中文语音图像。在实现上,都是选择对现有云端的算法进行优化裁剪,不过采用的方案不同,一个是量化策略核内存复用,另一个则是知识蒸馏技术。都支持多种硬件,支持深度学习推理框架。在商用案例和场景上,两者又很多的重合,比如都支持时下比较火的自动驾驶领域,TensorFlow Lite支持的场景更加丰富核多样,而paddle lite主要聚焦在图像和视频的检测、追踪和识别上。
4 小结
本文从工程选型的角度简单地介绍了边缘智能网关的实现原理和相关实现过程。当然这并不是唯一的解决方案,目的是抛砖引玉,帮助读者从项目视角感受一个边缘智能网关的实现框架。在其中还有一些细节,比如如何将Paddle Lite作为Kubeedge的pod节点安装上去,希望读者在实践中一起交流探讨。