作者:施巍松团队(张星洲、王一帆、张庆阳)
计算模型的创新带来的是技术的升级换代,而边缘计算的迅速发展也得益于技术的进步。本节总结了推动边缘计算发展的7项核心技术,它们包括网络、隔离技术、体系结构、边缘操作系统、算法执行框架、数据处理平台以及安全和隐私。
1.网络
边缘计算将计算推至靠近数据源的位置,甚至于将整个计算部署于从数据源到云计算中心的传输路径上的节点,这样的计算部署对现有的网络结构提出了 3个新的要求:
1)服务发现。在边缘计算中,由于计算服务请求者的动态性,计算服务请求者如何知道周边的服务,将是边缘计算在网络层面中的一个核心问题.传统的基于DNS的服务发现机制,主要应对服务静态或者服务地址变化较慢的场景下.当服务变化时,DNS的服务器通常需要一定的时间以完成域名服务的同步,在此期间会造成一定的网络抖动,因此并不适合大范围、动态性的边缘计算场景。
2)快速配置。在边缘计算中,由于用户和计算设备的动态性的增加,如智能网联车,以及计算设备由于用户开关造成的动态注册和撤销,服务通常也需要跟着进行迁移,而由此将会导致大量的突发网络流量。与云计算中心不同,广域网的网络情况更为复杂,带宽可能存在一定的限制.因此,如何从设备层支持服务的快速配置,是边缘计算中的一 个核心问题。
3)负载均衡。边缘计算中,边缘设备产生大量的数据,同时边缘服务器提供了大量的服务.因此,根据边缘服务器以及网络状况,如何动态地对这些数据进行调度至合适的计算服务提供者,将是边缘计算中的核心问题。
针对以上3个问题,一种最简单的方法是,在所有的中间节点上均部署所有的计算服务,然而这将导致大量的冗余,同时也对边缘计算设备提出了较高的要求。因此,我们以“建立一条从边缘到云的计算路径”为例来说,首当其冲面对的就是如何寻找服务,以完成计算路径的建立。命名数据网络(named data networking,NDN)是一种将数据和服务进行命名和寻址,以P2P和中心化方式相结合进行自组织的一种数据网络。而计算链路的建立,在一定程度上也是数据的关联建立,即数据应该从源到云的传输关系.因此,将NDN引入边缘计算中,通过其建立计算服务的命名并关联数据的流动,从而可以很好地解决计算链路中服务发现的问题。
而随着边缘计算的兴起,尤其是用户移动的情况下,如车载网络,计算服务的迁移相较于基于云计算的模式更为频繁,与之同时也会引起大量的数据迁移,从而对网络层面提供了动态性的需求。软件定义网络(software definednetworking,SDN), 于2006年诞生于美国GENI项目资助的斯坦福大学Clean Slate课题,是一种控制面和数据面分离的可编程网络,以及简单网络管理.由于控制面和数据面分离这一特性,网络管理者可以较为快速地进行路由器、交换器的配置,减少网络抖动性,以支持快速的流量迁移,因此可以很好地支持计算服务和数据的迁移。同时,结合NDN和SDN,可以较好地对网络及其上的服务进行组织,并进行管理,从而可以初步实现计算链路的建立和管理问题。
2.隔离技术
隔离技术是支撑边缘计算稳健发展的研究技术,边缘设备需要通过有效的隔离技术来保证服务的可靠性和服务质量.隔离技术需要考虑2方面:
1)计算资源的隔离,即应用程序间不能相互干扰;
2)数据的隔离,即不同应用程序应具有不同的访问权限。
在云计算场景下,由于某一应用程序的崩溃可能带来整个系统的不稳定,造成严重的后果,而在边缘计算下,这一情况变得更加复杂.例如在自动驾驶操作系统中,既需要支持车载娱乐满足用户需求, 又需要同时运行自动驾驶任务满足汽车本身驾驶需求,此时,如果车载娱乐的任务干扰了自动驾驶任务,或者影响了整个操作系统的性能,将会引起严重后果,对生命财产安全造成直接损失.隔离技术同时需要考虑第三方程序对用户隐私数据的访问权限问题,例如,车载娱乐程序不应该被允许访问汽车控制总线数据等.目前在云计算场景下主要使用VM虚拟机和Docker容器技术等方式保证资源隔离。边缘计算可汲取云计算发展的经验,研究适合边缘计算场景下的隔离技术。
在云平台上普遍应用的Docker技术可以实现应用在基于0S级虚拟化的隔离环境中运行,Docker的存储驱动程序采用容器内分层镜像的结构,使得应用程序可以作为一个容器快速打包和发布,从而保证了应用程序间的隔离性.Li等人建立 了一个基于Docker迁移的有效服务切换系统,利用Docker的分层文件系统支持,提出了一种适合边缘计算的高效容器迁移策略,以减少包括文件系统、二进制内存映象、检查点在内的数据传输的开 销.Ha等人提出了一种VM切换技术,实现虚拟机VM的计算任务迁移,支持快速和透明的资源放置,保证将VM虚拟机封装在安全性和可管理行要求较高的应用中.这种多功能原语还提供了动态迁移的功能,对边缘端进行了优化.这种基于VM的隔离技术提高了应用程序的抗干扰性,增加了边缘计算系统的可用性。
3.体系结构
无论是如高性能计算一类传统的计算场景,还是如边缘计算一类的新兴计算场景,未来的体系结构应该是通用处理器和异构计算硬件并存的模式。异构硬件牺牲了部分通用计算能力,使用专用加速单元减小了某一类或多类负载的执行时间,并且显著提高了性能功耗比。边缘计算平台通常针对某一类特定的计算场景设计,处理的负载类型较为固定,故目前有很多前沿工作针对特定的计算场景设计边缘计算平台的体系结构.
ShiDianNao首次提出了将人工智能处理器放置在靠近图像传感器的位置,处理器直接从传感器读取数据,避免图像数据在DRAM中的存取带来的能耗开销;同时通过共享卷积神经网络(convolutional neural networks, CNNs) 权值的方法 ,将模型完整放置在SRAM中,避免权值数据在DRAM 中的存取带来的能耗开销;由于计算能效地大幅度提升(60倍),使其可以被应用于移动端设备.EIE:是一个用于稀疏神经网络的高效推理引擎,其通过稀疏矩阵的并行化以及权值共享的方法加速稀疏神 经网络在移动设备的执行能效.Phi-Stack则提出了针对边缘计算的一整套技术桟,其中针对物联网设备设计的PhiPU,使用异构多核的结构并行处理 深度学习任务和普通的计算任务(实时操作系统). In-Situ AI是一个用于物联网场景中深度学习应用的自动增量计算框架和架构,其通过数据诊断,选择最小数据移动的计算模式,将深度学习任务部署 到物联网计算节点.除了专用计算硬件的设计,还有 一类工作探索FPGA在边缘计算场景中的应用. ESE[6]通过FPGA提高了稀疏长短时记忆网络 (long short term memory network,LSTM)在移动设备上的执行能效,用于加速语音识别应用.其通过负载平衡感知的方法对LSTM进行剪枝压缩,并保证硬件的高利用率,同时在多个硬件计算单元中调度 LSTM 数据流;其使用 Xilinx XCKU060 FPGA 进行硬件设计实现,与CPU和GPU相比,其分别实现了 40倍和11. 5倍的能效提升.Biookaghazadeh 等人通过对比FPGA和GPU在运行特定负载时吞 吐量敏感性、结构适应性和计算能效等指标,表明 FPGA更加适合边缘计算场景。
针对边缘计算的计算系统结构设计仍然是一个新兴的领域,仍然具有很多挑战亟待解决,例如如何高效地管理边缘计算异构硬件、如何对这类的系统结构进行公平及全面的评测等.在第三届边缘计算会议(S E C 2 018 )上首次设立了针对边缘计算体系结构的Workshop:ArchEdge,鼓励学术界和工业界对此领域进行探讨和交流。
4.边缘操作系统
边缘计算操作系统向下需要管理异构的计算资源,向上需要处理大量的异构数据以及多用的应用负载,其需要负责将复杂的计算任务在边缘计算节点上部署 、调度 及迁移从而保证计算任务的可靠性以及资源的最大化利用。与传统的物联网设备上的实时操作系统Contikt和FreeRTOS不同,边缘计算操作系统更倾向于对数据、计算任务和计算资源的管理框架。
机器人操作系统(robot operating system, ROS) 最开始被设计用于异构机器人机群的消息通信管理,现逐渐发展成一套开源的机器人开发及管理工具,提供硬件抽象和驱动、消息通信标准、软件包管理等 一系列工具,被广泛应用于工业机器人、自动驾驶车辆即无人机等边缘计算场景.为解决ROS中的性能 问题,社区在2015年推出ROS2. 0,其核心为引入数据分发服务(data distribution service,DDS), 解决ROS对主节点(master node)性能依赖问题,同时DDS提供共享内存机制提高节点间的通信效率.EdgeOSH则是针对智能家居设计的边缘操作系统,其部署于家庭的边缘网关中,通过3层功能抽象连接上层应用和下层智能家居硬件,其提出面向多样的边缘计算任务,服务管理层应具有差异性 (differentiation)、可扩展性(extensibility)、隔离性 (isolation)和可靠性(reliability)的需求.Phi-Stack 中提出了面向智能家居设备的边缘操作系统 PhiOS,其引人轻量级的REST引擎和LUA解释器,帮助用户在家庭边缘设备上部署计算任务. OPenVDAP是针对汽车场景设计的数据分析平台,其提出了面向网联车场景的边缘操作系统 EdgeOSv.该操作系统中提供了任务弹性管理、数据共享以及安全和隐私保护等功能.
根据目前的研究现状,ROS以及基于ROS实现的操作系统有可能会成为边缘计算场景的典型操作系统,但其仍然需要经过在各种真实计算场景下部署的评测和检验。
5.算法执行框架
随着人工智能的快速发展,边缘设备需要执行越来越多的智能算法任务,例如家庭语音助手需要 进行自然语言理解、智能驾驶汽车需要对街道目标检测和识别、手持翻译设备需要翻译实时语音信息等.在这些任务中,机器学习尤其是深度学习算法占有很大的比重,使硬件设备更好地执行以深度学习算法为代表的智能任务是研究的焦点,也是实现边缘智能的必要条件.而设计面向边缘计算场景下的高效的算法执行框架是一个重要的方法.目前有许 多针对机器学习算法特性而设计的执行框架,例如谷歌于2016年发布的TensorFloE、依赖开源社区力量发展的Caffe等,但是这些框架更多地运行在云数据中心,它们不能直接应用于边缘设备.如表2所示,云数据中心和边缘设备对算法执行框架的需求有较大的区别。在云数据中心,算法执行框架更多地执行模型训练的任务,它们的输人是大规模的批量数据集,关注的是训练时的迭代速度、收敛率和框架的可扩展性等.而边缘设备更多地执行预测任务,输人的是实时的小规模数据,由于边缘设备计算资源和存储资源的相对受限性,它们更关注算法执行框架预测时的速度、内存占用量和能效。
为了更好地支持边缘设备执行智能任务,一些专门针对边缘设备的算法执行框架应运而生.2017年,谷歌发布了用于移动设备和嵌人式设备的轻量级解决方案TensorFlow Lite,它通过优化移动应用程序的内核、预先激活和量化内核等方法来减少执行预测任务时的延迟和内存占有量.Caffe2 是Caffe的更高级版本,它是一个轻量级的执行框架,增加了对移动端的支持.此外,PyTorch和 MXNet等主流的机器学习算法执行框架也都开始提供在边缘设备上的部署方式。
Zhang 等人对 TensorFlow,Caffe2 ,MXNet, PyTorch和TensorFlow Lite等在不同的边缘设备 (MacBook Pro,Intel FogNode,NVIDIA Jetson TX2,Raspberry Pi 3 Model B+ ,Huawfi Nexus 6P) 上的性能从延迟、内存占用量和能效等方面进行了对比和分析,最后发现没有一款框架能够在所有维度都取得最好的表现,因此执行框架的性能提升空间比较大.开展针对轻量级的、高效的、可扩展性强的边缘设备算法执行框架的研究十分重要,也是实现边缘智能的重要步骤。
6.数据处理平台
边缘计算场景下,边缘设备时刻产生海量数据,数据的来源和类型具有多样化的特征,这些数据包括环境传感器采集的时间序列数据、摄像头采集的图片视频数据、车载LiDAR的点云数据等,数据大多具有时空属性。构建一个针对边缘数据进行管理、分析和共享的平台十分重要。
以智能网联车场景为例,车辆逐渐演变成一个移动的计算平台,越来越多的车载应用也被开发出来,车辆的各类数据也比较多。由.Zhang等人提出的OPenVDAP是一个开放的汽车数据分析平台,如下图3所示,Open VDAP分成4部分,分别是异构计算平台(VCU )、操作系统(EdgeOSv)、驾驶数据收集器(DDI)和应用程序库(libvdap),汽车可安装部署该平台,从而完成车载应用的计算,并且实现车与云、车与车、车与路边计算单元的通信,从而保证了车载应用服务质量和用户体验.因此,在边缘计算不同的应用场景下,如何有效地管理数据、提供数据分析服务,保证一定的用户体验是一个重要的研究问题。
虽然边缘计算将计算推至靠近用户的地方,避免了数据上传到云端,降低了隐私数据泄露的可能性。但是,相较于云计算中心,边缘计算设备通常处于靠近用户侧,或者传输路径上,具有更高的潜在可能被攻击者入侵,因此,边缘计算节点自身的安全性仍然是一个不可忽略的问题.边缘计算节点的分布式和异构型也决定其难以进行统一的管理,从而导致一系列新的安全问题和隐私泄露等问题.作为信息系统的一种计算模式,边缘计算也存在信息系统普遍存在的共性安全问题,包括:应用安全、网络安全、信息安全和系统安全等。
在边缘计算的环境下,通常仍然可以采用传统安全方案来进行防护,如通过基于密码学的方案来进行信息安全的保护、通过访问控制策略来对越权访问等进行防护.但是需要注意的是,通常需要对传统方案进行一定的修改,以适应边缘计算的环境。同时,近些年也有些新兴的安全技术(如硬件协助的可信执行环境)可以使用到边缘计算中,以增强边缘计算的安全性。此外,使用机器学习来增强系统的安全防护也是一个较好的方案。
可信执行环境(trusted execution environment, TEE)是指在设备上一个独立于不可信操作系统而存在的可信的、隔离的、独立的执行环境,为不可信环境中的隐私数据和敏感计算,提供了安全而机密的空间,而TEE的安全性通常通过硬件相关的机制来保障。常见的TEE包括Intel软件防护扩展、Intel管理引擎、x86系统管理模式、 AMD内存加密技术、AMD平台安全处理器和ARM TrustZone技术。通过将应用运行于可信执行环境中,并且将使用到的外部存储进行加解密,边缘计算节点的应用,可以在边缘计算节点被攻破时,仍然可以保证应用及数据的安全性。
更多资讯,尽在边缘计算社区!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。