用户驱动型应用,如云游戏、增强现实(Augmented Reality, AR)、虚拟现实(Virtual Reality, VR)等,往往需要强大算力来支持其密集计算。然而,移动设备自身的计算资源十分有限,很难满足用户对应用实时处理的需求。边缘计算通过将计算资源下沉到边缘节点,使得用户能够将计算卸载至距离其最近的节点进行处理,从而提升效能。通常来说,一个典型的应用卸载方案包含两个核心问题:①确定卸载的具体对象;②确定卸载的执行策略。
1.不可分任务卸载
任务的输入或者任务本身不支持细粒度划分,因而为了保持其完整性,只能将整个任务或整个输入作为卸载对象。
2.可并行代码或数据卸载
数据或代码间不存在依赖关系,可独立进行处理。如在边缘视频分析应用中,移动端负责采集视频,并将其卸载至边缘节点进行计算密集型的深度学习推断处理。推断的输入单元往往是独立的帧,因而可将视频帧作为一个卸载单元(考虑到视频编码器,如H.264,根据一组帧来进行时空相关编码,因而可将这组帧作为卸载单元)。又如在数据驱动型联邦学习中,数据来源于移动端且每个移动端产生的数据独立同分布,因而用户只需要决定卸载量,而无须对数据进行依赖性分析。如图4-2a所示,任务或数据可分为相互独立的1~8块,1~4在终端处理,5~8在边缘服务器端处理。
图4-2 子任务可并行处理的任务和存在依赖关系的DAG任务
3.存在依赖关系的计算任务卸载
由于执行顺序有先后关系,随机卸载可能导致当前任务无法得到有效的输入,从而拉长整个应用的处理时延。如在处理基于云-边协同的DNN切割任务中,将DNN中存在依赖的层分别部署在边缘节点和终端设备,使得云-边通信次数和数据量增加,加大网络负载。通常,可将任务建模成有向无环图(Directed Acyclic Graph, DAG)结构,并基于此设计合理的卸载计划。调度如图4-2b所示的任务,子任务4是所有其他任务的最前驱节点,因而不可卸载至边缘服务器。
计算卸载旨在克服移动端硬件的瓶颈,即计算和存储资源匮乏、耗电量大,因此卸载至边缘服务器的处理性能必然要优于本地处理,否则不执行计算卸载。不同于云端海量算力,边缘服务器的资源也是有限的,在处理类似于视频超分辨率的计算密集型应用时,往往需要云服务器的参与。图4-3展示了云-边-端计算卸载框架,以及其中产生的传输开销和计算开销,包括本地处理时延 D l 和能耗 E l 、边缘服务器处理时延 D e 和能耗 E e 、云端处理时延 D r ,以及接入网络的传输时延 T 1 和回程网络传输时延 T 2 。根据性能表现,可将卸载策略大致分为以下三类。
图4-3 云-边-端计算卸载框架
1.完全卸载
完全卸载是二值决策,只需要决定要不要卸载,通常用一个指示变量表示。只考虑处理时延,若 D e + T 1 < D l 或 D r + T 1 + T 2 < D l ,则将计算卸载至边缘或云服务器;否则,任务在本地进行处理。同时考虑能耗和时延,若满足 D e + T 1 < D l 且 E e < E l ,则执行计算卸载;否则,任务在本地处理。Liu等人 [1] 基于客户端队列状态、本地和服务器计算资源以及信道反馈信息做决策,设计一种贪心算法,选择预测时延最低的卸载方案,这种方法的缺点是边缘设备需要边缘服务器的反馈信息,这引入了额外的信道通信开销。Kamoun等人 [2] 考虑同时优化时延和能耗,将计算卸载建模成马尔可夫序列化决策过程,并设计了两种算法来优化资源分配,即基于应用运行信息和网络状况的在线学习和基于确定信息(如数据包到来速率、无线信道状况)的预训练。Barbarossa等人 [3] 考虑在多边缘设备场景下,最小化能源消耗并满足最大处理时延。在每个时隙中,将边缘设备动态划分成两组,其中一组将任务卸载至边缘服务器处理,另一组在本地处理,同时优化对网络带宽和计算资源的分配。
2.部分卸载
从云-边-端协同的思路出发,对计算卸载决策量化分析。通常来说,根据应用特征分为以下两类:
(1)任务可分为 N 个独立子任务(包含依赖关系的子任务可耦合成一个新的子任务),每个子任务需要决定在本地、边缘服务器或云端处理。
(2)任务可均匀划分,此时需要决策计算卸载的百分比。
这两类决策都需要考虑并权衡总时延和能耗,以此实现最优决策。You等人 [4] 考虑多边缘设备场景,并根据信道质量、本地可用计算资源和能量消耗状况对每个设备赋予一个优先级,并根据优先级来确定卸载的比例,级别越高,卸载比例越大;Mao等人 [5] 对能耗和时延进行平衡,提出了一个满足任务时延队列稳定性约束的能耗最小化问题,并提出一种基于李雅普诺夫(Lyapunov)优化的在线算法来分配服务器计算和带宽资源。
不管是完全卸载还是部分卸载,合理高效的卸载方案很大程度上依赖于本地和服务器信息,如图4-4所示,这些信息包括:
(1)本地可用计算资源,影响执行时间。
(2)任务队列状态,占用本地缓存且存在竞争关系;边缘网络状况,影响边缘设备和边缘服务器之间的通信(数据上传、结果反馈);边缘服务器可用计算资源,影响执行时间。
图4-4 完全卸载决策执行流程图
1.边缘应用往往由多个存在依赖关系的子任务构成
这类应用可用有向无环图表示,而DAG图的调度早已被证明是NP难问题。深度学习中的神经网络推断任务可按层划分成多个子任务,很多网络如YOLO中,层与层之间都存在复杂的依赖关系,因而高效的计算卸载需要以高效的DAG划分为前提。
2.边缘环境的不确定性
这主要体现在①任务的特征,如数据规模、到来模式、位置分布等都是未知的;②网络的拥塞状况是动态变化的,难以预测的。因而在一个序列化的连续决策过程中,很难建立一个统一且精准的模型去预测下一个时隙的信息,做出高效的决策。在面对一些极端情况,如任务突发到来、网络剧烈抖动,计算卸载决策更是充满挑战性。
3.边缘设备的异构性
通常计算卸载方案是针对一个具体的边缘设备,而边缘广泛分布着各类异构的设备,这些设备在计算、存储、架构上各不相同,因而很难将一个表现良好的方案从一个设备迁移到另一个设备。