• (转载)边缘计算与深度学习综述


    边缘计算与深度学习综述

    ##深度学习和边缘计算研究进展

    摘要

    ​ 深度学习目前被广泛应用于各种应用中,包括计算机视觉和自然语言处理。智能手机和物联网传感器等终端设备正在生成数据,这些数据需要使用深度学习进行实时分析,或用于训练深度学习模型。然而,深度学习推理和训练需要大量的计算资源才能快速运行。边缘计算(Edge computing)是一种可行的方法,它将大量计算节点放置在靠近终端设备的位置,以满足边缘设备上深度学习的高计算和低延迟要求,并在隐私、带宽效率和可伸缩性方面提供额外的好处。这篇研究进展全面分析了深度学习和边缘计算领域的结合性。具体来说,分析了网络边缘使用深度学习的应用场景,讨论跨终端设备、边缘服务器和云的组合快速执行深度学习推断的各种方法,并描述跨多个边缘设备训练深度学习模型的方法。还讨论了系统性能、网络技术和管理、基准测试和隐私方面的公开挑战。

    背景,度量与框架

    ​ 深度学习在机器学习的多个应用领域取得了巨大成功,包括计算机视觉、自然语言处理和大数据分析等。例如,自2012年[1]以来,在ISLVRC计算机视觉大赛中,深度学习方法在目标识别和检测方面的表现一直优于传统方法。然而,深度学习的高准确性是以深度学习的训练和推理阶段对计算和内存的高需求为代价的。训练一个深度学习模型对空间和计算需求都很高,是因为过程中需要数百万个参数经历多次的迭代。由于输入数据(例如,高分辨率图像)可能具有很高的维数,并且需要对输入数据执行数百万次计算,因此推理在计算上的代价非常高。高准确性和高资源消耗是深度学习的特点。

    ​ 为了满足深度学习的计算需求,一种常见的方法是利用云计算。要使用云资源,必须将数据从网络边缘的数据源(从智能手机到物联网(IoT)传感器)上云。这种将数据从源迁移到云的解决方案带来了几个问题:

    1. 延迟:实时推理对于许多应用程序都是至关重要的。例如,自动驾驶汽车上的摄像机帧需要快速处理以检测和避免障碍物,或者基于语音的辅助应用程序需要快速解析和理解用户的查询并返回响应。但是,将数据发送到云中进行推理或训练可能会导致额外的排队和网络的传播延迟,无法满足这些有着端到端、低延迟需求的交互式应用场景。例如,实验表明,将摄像机帧offload到Amazon Web服务服务器并执行计算机视觉任务需要200 ms以上的端到端时间。
    2. 伸缩性: 将数据从数据源发送到云会带来可伸缩性问题,因为随着连接设备数量的增加,对云的网络访问可能成为瓶颈。在网络资源利用方面,将所有数据上传到云中也是低效的,特别是在深度学习并不需要所有来源的所有数据的情况下。带宽密集型数据源,如视频流,数据上云会遇到可扩展性的问题[2]。
    3. 隐私性: 向云发送数据可能导致数据的泄露问题。例如,最近在纽约市的智能城市环境中部署的摄像头和其他传感器引起了隐私监管机构的严重关注[3]。

    ​ 边缘计算是一种可行的解决方案,可以满足本节前面描述的延迟、可伸缩性和隐私方面的挑战。基于网格的边缘计算提供了接近于终端设备[4]的计算能力。例如,边缘计算节点可以与蜂窝基站和物联网网关或校园网共同定位。边缘计算已经被工业界所采用,例如,美国一家主要的移动互联网服务提供商和一家全国性的快餐连锁店都部署了边缘计算服务[5] [6]。为了解决延迟问题,边缘计算接近终端设备上的数据源,从而减少了端到端延迟,从而支持实时服务。为了解决可伸缩性挑战,边缘计算支持端设备、边缘计算节点和云数据中心的分层架构,这些架构可以提供计算资源并随客户端数量伸缩,从而避免了中心位置的网络瓶颈。为了解决隐私挑战,边缘计算使数据能够在接近源的地方进行分析,例如通过本地可信的边缘服务器,从而避免了公共网络的遍历问题,并减少了隐私和安全攻击的风险。

    ​ 虽然边缘计算可以提供本节前面讨论的延迟、可伸缩性和隐私优势,但是在边缘上实现深度学习仍然面临几个挑战。一个主要的挑战是在不太强大的边缘计算资源上适应深度学习的高资源需求。深度学习需要在各种边缘设备上执行,从配备了GPU的合理配置的边缘服务器,到带有移动处理器的智能手机,再到简单的树莓派设备。第二个挑战是在异构处理能力和动态网络条件下,边缘设备如何与其他边缘设备和云协调,以确保良好的端到端应用的性能。最后,隐私仍然是一个挑战,即使边缘计算通过保持数据在网络边缘的本地位置来自然地改善隐私,因为一些数据仍然需要在边缘设备和可能的云之间进行交换。研究人员从不同的角度提出了各种方法来应对这些挑战,从硬件设计到系统架构再到理论建模和分析。本文主要研究深度学习和边缘计算的结合性,尤其是软件层面。虽然在深度学习[7]和边缘计算[8] [9]方面都有很好的研究,但本文主要研究它们的交集。

    ​ 边缘设备上的深度学习与文献中其他研究领域既有相似之处,也有不同之处。与云计算下的机器学习相比,边缘计算有几个优势,例如研究人员[10]利用了更低的延迟和更大的地理空间特异性。一些论文将边缘计算与云计算结合在一起,产生了混合的边缘云架构[11]。与传统的机器学习方法(深度学习之外)相比,深度学习的计算需求尤其具有挑战性,但可以利用深度学习特定的内部结构来解决这一挑战(见[12]-[14])。与日益增长的资源受限设备的深度学习工作相比,边缘计算在跨多个边缘设备共享通信和计算资源方面面临着额外的挑战。

    ​ 这里的边缘设备,包括端设备(如智能手机或物联网传感器),以及边缘计算节点或服务器,如图1所示。
    在这里插入图片描述

    深度学习的背景

    ​ 由于本文讨论的一些技术依赖于深度学习的特定内部机制,因此,我们首先提供一个简要的深度学习背景。更多的细节可以在参考文献中找到(见[7])。

    ​ 深度学习预测算法也称为模型,它由若干层组成,如图2所示。在深度学习推理中,输入数据依次通过各层,各层对数据进行矩阵乘法。一层的输出通常是下一层的输入。在最后一层处理数据之后,输出要么是一个特征,要么是一个分类输出。当模型包含多个层时,神经网络称为深度神经网络(deep neural network, DNN)。如果DNNs的矩阵乘法中包含卷积滤波操作,这在设计用于图像和视频分析的DNNs中很常见,则这些模型被称为卷积神经网络(CNNs)。还有专为时间序列预测设计的DNNs,这些被称为递归神经网络(RNNs)[7],RNNs的层与层之间的链接通过loop来保持状态并支持对顺序输入的预测。
    在这里插入图片描述

    ​ 在深度学习训练中,计算按相反的顺序进行。根据真值训练标签,对各层进行多次遍历,优化矩阵乘法各层的参数,从最后一层开始,到第一层结束。所使用的算法通常是随机梯度下降。在每一遍中,随机选择"mini-batch"样本,用于更新梯度,使训练损失最小化(其中训练损失定义为预测结果与真实值之间的差异)。对整个训练数据集的一次传递称为一次epoch[15]。

    ​ 这项工作的一个关键结论是,在矩阵乘法中有大量的参数,导致许多计算被执行,从而导致我们在终端设备上看到的延迟问题。第二个要点是关于如何设计DNN模型有许多选择(超参数)(例如,每层参数的数量和层的数量),这使得模型设计更像是一门艺术而不是科学。不同的DNN设计决策导致系统指标之间的权衡,例如,具有更高精度的DNN可能需要更多内存来存储所有模型参数,并且由于要执行所有的矩阵乘法,因此会有更高的延迟。另一方面,参数较少的DNN模型可能执行得更快,消耗的计算资源和能量更少,但它可能没有足够的准确性来满足应用的要求。有几项工作利用了这些权衡,这些将后面讨论。

    深度学习性能的度量

    ​ 深度学习既可以用于监督学习,也可以用于非监督学习。成功的度量标准取决于应用深度学习的特定应用领域。例如,在对象检测中,精度可以通过平均平均精度(mAP)[1]来测量,该[1]测量的是预测的对象位置与地面真实位置的重叠程度,以及跨多个对象类别的平均值。在机器翻译中,准确性可以通过双语评价指标[16]来衡量,该指标将候选译文与几个基本真实参考译文进行比较。与应用程序无关的其他一般系统性能指标包括吞吐量、延迟和能量。表1总结了这些指标:
    在这里插入图片描述

    ​ 设计一个良好的DNN模型或为给定的应用程序选择正确的DNN模型是一个挑战,因为超参数决策的数量很大。对于DNN模型设计人员或应用程序开发人员来说,很好地理解速度、精度、内存、能量和其他系统资源之间的权衡是很有帮助的。文献[17]通过设计新的模型和独立的测量方法来对比这些度量指标。在边缘计算上下文中,一个特别重要的考虑事项是在测试平台上进行测量。机器学习的研究通常集中在精度指标上,它们的系统性能结果通常来自配备了gpu的强大服务器测试平台。例如,Huang等人在[17]中比较了在高端游戏GPU (Nvidia Titan X)上运行时的速度和精度权衡,YOLO DNN模型[18]是为实时性能设计的,它在同一服务器的GPU上提供时间测量。

    ​ 针对移动设备,Lu等人在[19]中提供了一些移动端(手机)的cpu和gpu (Nvidia TK1和TX1)上流行的DNN模型的测量结果。Ran等人通过测量降低输入大小的维数如何降低总体精度和延迟,进一步探索了移动设备上的精度-延迟权衡。文献[12]设计了MobileNets,专门为移动设备设计的DNN模型,从乘法-加法操作数的角度反馈系统的性能,这可用于根据硬件的处理能力估计不同移动硬件上的延迟特性和其他指标。

    ​ 一旦了解了系统性能,应用程序开发人员就可以选择正确的模型。自动化机器学习得到了很多人的关注,它使用人工智的方法能来选择运行和调整超参数的DNN模型。例如,Tan等人[22]和Taylor等人[23]分别提出使用强化学习和传统的机器学习来为移动设备选择合适的超参数,这在边缘场景中是有用的。

    DNN推理和训练的可用框架

    ​ 为了测试深度学习模型,研究人员通常求助于开源软件库和硬件开发工具包。有几个开源软件库是公开的,用于在终端设备和边缘服务器上进行深度学习推理和训练。谷歌于2015年发布的TensorFlow[24]是一个用于实现机器学习算法的接口,也是在异构分布式系统上执行此类算法的实现。Tensorflow的计算工作流被建模为一个有向图,并根据估计或测量的执行时间和通信时间[25],利用放置算法来分配计算任务。放置算法采用贪心方法,将计算任务放置在最快完成计算的节点上。Tensorflow可以在树莓派(Raspberry Pi)和智能手机等边缘设备上运行。TensorFlow Lite是在2017年底[26]上提出的,是针对移动和嵌入式设备的TensorFlow的优化版本,并在2019年初加入了移动GPU支持。TensorFlow Lite之提供单设备上的推理能力,而不是训练,并通过压缩一个预先训练的DNN模型实现低延迟。

    ​ Caffe[27]-[29]是另一个深度学习框架,最初由贾扬清开发,目前的版本为Caffe2,由Facebook维护。它致力于为深度学习提供一种简单而直接的方式,专注于移动设备,包括智能手机和树莓派。PyTorch[30]是Facebook开发的另一个深度学习平台,其主要目标与专注于将研究原型集成到生产开发中。目前,Caffe2已经合如到PyTorch中。

    ​ GPU是进行有效的DNN推理和训练的重要因素。Nvidia提供利用Nvidia GPU的GPU软件库,如CUDA[31],用于通用的GPU处理,cuDNN[32]用于深度学习。尽管这些库有助于在桌面服务器上训练DNN模型,但cuDNN和CUDA在当前的移动设备(如智能手机)上还不能广泛使用。为了利用智能手机GPU, Android开发者目前可以使用Tensorflow Lite,它提供了实验性的GPU功能。要在智能手机以外的边缘设备上进行试验,研究人员可以使用特定于边缘的开发工具,例如Nvidia Jetson TX2开发工具,用于试验边缘计算(例如,在[33]中使用),Nvidia提供的sdk用于对设备进行编程。Intel Edison kit是另一个流行的实验平台,它是为物联网实验设计的(例如,在[34]中使用)。其他基于硬件的平台将在后继的章节中讨论。

    深度学习在边缘侧的应用

    ​ 我们现在描述几个例子应用程序,其中在边缘设备上的深度学习是有用的,以及“实时”对每个应用程序意味着什么。深度学习的其他应用与以下描述的应用并存;这里,为了简单起见,我们重点介绍几个与边缘计算上下文相关的应用程序。这些应用程序的共同主题是,它们是复杂的机器学习任务,深度学习已经证明可以提供良好的性能,它们需要实时运行和或有隐私问题,因此需要在边缘上进行推理或训练。

    计算机视觉

    ​ 自2012年以来,深度学习在ISLVRC计算机视觉大赛中取得成功以来,深度学习一直被认为是图像分类和目标检测的最新技术。图像分类和目标检测是一些特定领域(如视频监视、目标计数和车辆检测)需要的基本计算机视觉任务。这些数据自然来自位于网络边缘的摄像机,设置有些商业化的摄像机已经集成了深度学习的能力[35]。计算机视觉中的实时推理通常以帧率[36]来衡量,它可以达到相机的帧率,通常为30-60帧/秒。将相机数据上传到云端也存在隐私问题,特别是如果相机框架包含敏感信息,比如人脸或私人文档,这进一步激发了边缘的计算。可伸缩性是边缘计算在计算机视觉任务中有用的第三个原因,因为如果有大量摄像机上传大型视频流,到云服务器的上行带宽可能成为瓶颈。

    ​ Vigil[37]是基于边缘的计算机视觉系统的一个例子。Vigil是无线通信网络下的相机,它在边缘计算节点上执行处理,以智能地选择帧进行分析(对象检测或计数),例如,在监视相机中搜索失踪的人或分析零售业场景下的客户队列。在Vigil中进行边缘计算的动机有两个:一是相比传统的视频流上云的方法,可以减少带宽消耗,二是随着摄像机数量的增加,提高可伸缩性。

    ​ VideoEdge[38]也是基于边缘的视频分析来提升可伸缩性的用例。他们使用一个云、端分层架构来实现负载平衡,同时保持高预测精度(见第四章节)。商业设备,比如Amazon DeepLens[35],也遵循一个edge-based方法,图像检测实在本地执行,这样可以减少本地延迟。如果一个感兴趣的对象被检测到,则场景会背上传到云端,这样可以节省带宽。

    自然语言处理

    ​ 深度学习也在自然语言处理领域[39]中也非常流行,包括语音合成[40]、命名实体识别[41]和机器翻译[42]。对于对话人工智能,在[43]的系统中实现了数百毫秒的延迟。在自然语言处理和计算机视觉的交叉点上,还有可视化的问答系统[44],其目标是对一幅图像提出问题(例如,“这幅图像中有多少只斑马?”)并接收自然语言的答案。延迟需求根据信息的呈现方式而不同。例如,会话回复最好在10毫秒内返回,而对Web查询的响应可以容忍约200毫秒的[45]。

    ​ 一个自然语言处理的应用是语音助手,如亚马逊的Alexa或苹果的Siri。虽然语音助理在云中执行一些处理,但它们通常使用单一设备来检测wakewords(例如,“Alexa"或者"Hey Siri”)。只有在检测到wakeword之后,语音记录才会被发送到云上进行进一步的解析、解释和查询响应。在苹果Siri的例子中,wakeword处理系统使用两个设备上的dnn将语音分为20个类别(包括普通语音、无声语音和wakeword语音)[46]。第一个DNN更小(5层32个单元),运行在低功耗的处理器上。如果第一个DNN的输出超过一个阈值,它就会在主处理器上触发第二个更强大的DNN(5层192个单位)。

    ​ Wakeword检测方法需要进一步优化,以在计算能力更有限的设备上运行,比如在智能手表或Arduino上。在Apple Watch上,借鉴了前面提到的两种方法,通过混合结构,只用了一个DNN来进行wakeword检测。为了在Arduino上进行语音处理,来自微软的研究人员优化了一个基于RNA的wakeword(“Hey Cortana”)检测模块,使其适合于1kb的内存[47]。总的来说,虽然边缘计算目前用于边缘设备上的wakeword检测,但对于更复杂的自然语言任务(例如,使用Pixel Buds earbuds[48],一个专业的翻译器可以比谷歌翻译快5倍),以及需要持续的云连接,延迟仍然是一个重要的问题。

    网络功能

    ​ 可以利用深度学习技术实现入侵检测[49] [50]和无线调度[51]等网络功能。这样的系统位于网络边缘,某些操作对延迟非常敏感。例如,一个入侵检测系统,需要在40µs[52]的时间内,积极响应检测到的攻击,并阻断恶意数据,防止网络成为一个瓶颈。然而,如果入侵检测系统在被动模式下运行,则其延迟要求就不那么严格。无线调度器还需要以一定速率运行,以便实时决定应该将哪些包发送到何处。

    ​ 网络内缓存是网络功能的另一个例子,它可以在网络边缘使用深度学习。在边缘计算场景中,位于同一地理区域的不同终端设备可能多次从远程服务器请求相同的内容。在边缘服务器上缓存这些内容可以显著减少感知到的响应时间和网络流量。在缓存系统中应用深度学习通常有两种方法:使用深度学习进行内容流行度预测或使用深度强化学习确定缓存策略。例如,Saputra[53]等人使用深度学习来预测内容的受欢迎程度。为了训练深度学习模型,云从所有的边缘缓存中收集内容流行度信息。

    ​ 另一方面,用于缓存的深度强化学习避免了流行度预测仅仅基于来自其行的奖励。例如,Chen[55]等人使用缓存命中率作为奖励,对缓存进行深度强化学习。

    IOT

    ​ 智能化的理解物联网传感器数据在几个垂直领域有着真正的需求,如医疗下的可穿戴设备,智能城市,智能电网。对这些数据进行的分析类型取决于具体的物联网领域,但深度学习在其中几个领域已经被证明是成功的。这些例子包括可穿戴传感器[56]对人类活动的识别,智能城市[57]中的行人交通,以及智能电网[58]中的电力负荷预测。物联网环境的一个不同之处在于,可能有多个数据流需要融合在一起进行处理,而这些数据流通常具有空间和时间相关性,机器学习应该利用这些相关性。DeepSense[56]是一个利用时空关系进行物联网数据融合的框架。它提出了一个通用深度学习框架,包含了CNNs的层次结构(捕获多个传感器模式)和RNNs(捕获时间相关性),这个通用框架可以应用于不同的任务与多个传感器输入:汽车跟踪、人类活动识别,使用惯性传感器的生物识别(陀螺仪、加速度计和磁强计)。

    ​ 物联网深度学习领域的另一项工作重点是压缩深度学习模型,以适应计算能力较弱的终端设备,如Arduino或树莓派,这些设备通常只有千字节的内存和低功耗处理器。在Arduino Uno[59]上,树莓派上的 DeepThings[60],用Intel的物联网平台Edison board上的DeepIoT[34]等实验。更多细节例如如何缩小深学习模型装入内存并运行这些轻量级设备将在第四章节中讨论。应用深度学习在物联网的其他例子场景,包括农业、工业和智能家居等,可以参考文献[61]。

    ​ 使用物联网设备进行边缘计算的另一个动机是,当物联网传感器被放置在公共位置时,存在重大的隐私问题;例如,纽约市的哈德逊庭院智能城市开发项目(Hudson Yards smart city development)试图利用空气质量、噪音和温度传感器,以及摄像头,向广告商提供人们看广告的数量和时间,以及他们基于面部表情的情绪。然而,这引起了隐私监管机构[3]的严重警告。因此,虽然实时分析物联网传感器数据并不总是一个要求,而且传感器的通信带宽要求通常很小(除非涉及摄像头),但隐私是激发物联网边缘处理的一个主要问题。

    虚拟现实和增强现实(VR and AR)

    ​ 在360◦虚拟现实(VR)中,深度学习被用来预测用户的视野[62]-[64]。这些预测是用来确定哪些空间区域的360◦视频从内容提供商获取,必须进行实时计算,以尽量减少摊位和最大限度的质量的用户的经验。

    ​ AR/VR中的延迟通常以"motion-to-photons"的延迟来度量。这被定义为端到端的延迟,从用户移动耳机开始,一直到显示器根据用户的移动进行更新。motion-to-photons的延迟通常需要几十到几百毫秒[66]。由于深度学习只是AR/VR管道中一个可能的部分(从内存中检索虚拟对象并呈现它们也会消耗大量的延迟),所以motion-to-photons的延迟需求是深度学习延迟需求的上限。motion-to-photons的延迟需求也取决于特定的应用程序和该应用程序中的用户交互类型。Chen等人分析了不同认知辅助应用的延迟要求[67]。由于将AR计算转移到云上可能会导致数百毫秒的延迟,因此需要边缘计算来提供令人满意的性能,就像在Gabriel中所做的那样,Gabriel是一个使用谷歌Glass的认知辅助框架[68]。

    边缘侧的快速推理

    ​ 为了使上述应用程序能够满足其延迟要求,已经提出了用于快速执行DNN推断的不同体系结构。在本节中,我们将围绕三种主要架构进行研究:1) 设备上的计算,即dnn在终端设备上执行;2) 基于边缘服务器的架构,来自终端设备的数据被发送到一个或多个边缘服务器进行计算;3) 终端设备、边缘服务器、云之间的联合计算。我们还讨论了在边缘设备之间以及与云通信时的隐私保护技术,如场景1和场景2所示。图3给出了这些方法的分类,图5给出了不同场景的例子,我们将在下面详细讨论。表2和表3提供了所讨论工作的摘要。
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    设备端计算

    ​ 许多研究工作都集中在设备资源受限时,减少深度学习延迟的方法上[参见图5(a)]。通过减少DNN在终端设备或边缘服务器上运行时的延迟,来使整个edge生态系统收益。

    1. 模型设计

      ​ 在为资源受限的设备设计DNN模型时,机器学习的研究人员往往关注于设计参数较少的DNN模型,从而减少内存和执行延迟,同时保持较高的准确性。这里简要地提一下几种流行的用于资源受限设备的深度学习模型,它们属于计算机视觉领域。这些模型包括MobileNets[21]、SSD(Single Shot MultiBox Detector)[69]、YOLO[18]和SqueezeNet[70]。MobileNets将卷积滤波器分解为两个更简单的操作,减少了所需的计算量。SqueezeNet使用特殊的1×1卷积滤波器对数据进行采样。YOLO和SSD都是单镜头探测器,可以同时预测物体的位置和类别,这比连续执行这些步骤要快得多。这些模型中有许多是预先训练好的,可以在诸如Tensorflow[24]和Caffe[28]这样的开源机器学习平台上下载,以便快速引导。

    2. 模型压缩

      ​ 压缩DNN模型是在边缘设备上启用DNN的另一种方式。这些方法通常是压缩现有的DNN模型,与原始模型相比,精度损失最小。常用的模型压缩方法有参数量化、参数剪枝和知识提取。下面简要概述这些方法。

      ​ 参数量化采用现有的DNN,并通过将浮点数改为低位宽数来压缩其参数,从而避免了昂贵的浮点乘法。修剪包括删除最不重要的参数(例如,那些接近于0的参数),如图4所示。量化和修剪方法分别被认为是独立的,也被认为是共同的[71]。针对edge和移动设备,DeepIoT[34]针对物联网设备中常用的深度学习结构提出了一种剪枝方法,剪枝后的DNN无需修改即可直接部署到edge设备上。Lai和Suda[72]提供了用于ARM Cortex-M处理器的CMSISNN库,该库通过量化使DNN性能最大化。优化了矩阵乘法中的数据重用,提高了DNN的执行速度。Han等人[73]提出了RNN模型的剪枝和量化,剪枝得到10倍加速,量化得到2倍加速。Bhattacharya和Lane[74]通过稀疏全连接层和分解可穿戴设备上的卷积滤波器来压缩神经网络。

      ​ 知识提炼包括创造一个更小的DNN,模仿一个更大、更强大的DNN的行为[75]。这是通过使用较大DNN产生的输出预测来训练较小的DNN来实现的。本质上,较小的DNN近似于较大的DNN所获得的函数。快速退出[76]是另一种不计算所有层的技术,只使用计算初始层的结果来提供近似的分类结果。

      ​ 一些工作已经探索了这些模型压缩技术的组合。Adadeep[77]自动选择不同的压缩技术,包括修剪和借用自MobileNet和SqueezeNet的特殊过滤器结构,以满足应用要求和满足移动资源约束。DeepMon[78]将量化与缓存来自gpu中间层的结果相结合。缓存利用了输入视频在后续帧之间变化不大这一观点,因此前一帧的一些计算结果可以在当前帧中重用,从而减少了冗余计算并加快了执行速度。

    3. 硬件

      ​ 为了加速深度学习的推理,硬件制造商正在利用现有的硬件,如cpu和gpu,以及为深度学习生产定制的特定应用的集成电路(asic),如谷歌的张量处理单元(TPU)[79]。ShiDianNao[80]最近提出的另一种定制ASIC,它侧重于有效的内存访问,以减少延迟和能源消耗。它是DianNao[81]系列DNN加速器的一部分,但它是面向嵌入式设备的,这在边缘计算环境中很有用。基于现场可编程门阵列(FPGA)的DNN加速器是另一种很有前景的方法,因为FPGA可以在保持可重构性的同时提供快速计算[82]。这些定制的asic和FPGA设计通常比传统的cpu和gpu更节能,而传统的cpu和gpu是为灵活支持各种工作负载而设计的,其代价是更高的能耗。

      ​ 供应商还为应用程序开发人员提供软件工具,以利用硬件提供的加速功能。芯片制造商已经开发了软件工具来优化现有芯片上的深度学习,如英特尔的OpenVINO工具包,以利用英特尔芯片,包括英特尔的cpu、gpu、fpga和视觉处理单元[83],[84]。Nvidia的EGX平台[85]是这个领域的另一个新来者,它支持Nvidia的硬件,从轻量级的Jetson Nanos到强大的T4服务器。高通的神经处理软件开发工具包(SDK)旨在利用其Snapdragon芯片[86]。也有一些为移动设备开发的通用库,它们不依赖于特定的硬件,比如RSTensorFlow[87],它使用GPU来加速深度学习中的矩阵乘法。人们还开发了软件方法来有效地利用硬件,如Lane等人[88]分解dnn并将其分配给异构的本地处理器(如CPU和GPU)来加速执行。关于硬件加速深度学习的更多细节可以在Sze等人的论文中查阅[89]。由于Sze的论文工作已经深入地涵盖了基于硬件的DNN加速,本文的其余部分主要关注基于软件的方法。

    边缘端计算

    ​ 虽然上面提到的硬件加速和压缩技术可以帮助dnn在终端设备上运行,但是由于资源的限制(例如,功率、计算和内存),部署大型的、功能强大的、需要在边缘设备上实时执行的dnn仍然具有挑战性。因此,考虑将DNN计算从终端设备转移到更强大的实体(如边缘服务器或云)是很自然的。然而,云不适合需要短响应时间[8]的边缘应用程序。因为edge服务器离用户很近,可以快速响应用户的请求,所以它成为了首选。

    ​ 利用边缘服务器最直接的方法是将所有计算从终端设备转移到边缘服务器。在这种情况下,终端设备将其数据发送到附近的边缘服务器,并在服务器处理后接收相应的结果。例如,Wang等人[90]总是将DNNs卸载到边缘服务器(IoT网关)来分析无线信号。

    1. 数据预处理

      ​ 在向边缘服务器发送数据时,数据预处理有助于减少数据冗余,从而减少通信时间。Glimpse[91]将所有的DNN计算卸载到附近的边缘服务器,但是它使用变化检测来过滤哪些摄像机帧被卸载。如果没有检测到任何更改,则Glimpse将在终端设备上执行帧跟踪。这种预处理改进了系统处理能力并且使移动设备上的实时目标识别成为可能。类似地,Liu等人[92]构建了一个包含两个预处理步骤的食品识别系统:首先,他们丢弃模糊的图像,其次,他们裁剪图像使其只包含感兴趣的对象。这两个预处理步骤都是轻量级的,可以减少卸载的数据量。我们注意到,虽然特征提取是计算机视觉中常见的预处理步骤,但它不适用于深度学习,因为DNNs本身就是特征提取器。

    2. 边缘资源管理

      ​ 当DNN计算运行在边缘服务器上时,来自多个终端设备的DNN任务需要在共享的计算资源上运行并得到有效的管理。已经有几项研究探索了这个问题,主要关注准确性、延迟和其他性能指标(如服务的请求数量)之间的权衡。VideoStorm[93]是这个领域最早的作品之一,它分析了这些权衡,为每个请求选择正确的DNN配置,以满足准确性和延迟目标。该配置还可以在流媒体视频输入期间在线更新,就像Chameleon在文献[94]中所做的那样。VideoEdge[38]还考虑了分布在edge和云服务器层次结构中的计算,以及如何联合调优所有DNN超参数。Mainstream[95]考虑了在边缘服务器上设置准确性和延迟折衷的类似问题,但是他们的解决方案使用传输学习来减少每个请求所消耗的计算资源。转移学习使多个应用程序能够共享DNN模型的公共低层,并计算特定应用程序特有的高层,从而减少总体计算量。

    跨边缘设备计算

    ​ 虽然边缘服务器可以加速DNN处理,但并不总是需要边缘设备在边缘服务器上执行DNN,可以使用智能卸载。接下来我们讨论了四种卸载场景:1) DNN计算的二进制卸载,其中决策是否卸载整个DNN;2) 分割的DNN的部分卸载,这里的决策是应该卸载DNN计算的多少部分;3) 分级架构,通过边缘设备、边缘服务器和云的组合进行卸载;4) 分布式计算方法,DNN计算分布在多个对等设备上。

    1. 卸载(offloading):

      ​ DeepDecision[20] [111]和MCDNN[104],采用了设计了在面临诸如网络延迟和带宽、设备能量和金钱成本等约束的前提下的优化的卸载决策。这些决策基于对这些参数之间权衡的经验测量,比如不同DNN模型的能量、准确性、延迟和输入大小。不同的DNN模型可以从现有的模型中选择,也可以通过类似文献[104]描述的通过knowledge distillation 或者"mix-and-matching" DNN层来构造新的模型变种。图5(d)给出了一个卸载的用力,它是一个模型的结合方案,综合了2个DNN模型,一个powerful的DNN在圆边服务器上使用,一个weak的DNN在终端设备上使用。

      ​ 卸载问题已经从各种角度得到了长时间的研究,例如从网络角度[112],从边缘计算上下文的角度[113]。

      ​ 虽然在文献[112]中已经对卸载进行了很长时间的研究,甚至在边缘计算[113]的上下文中,DNN卸载不仅可以考虑在何处运行,还可以考虑运行哪个DNN模型或模型的哪个部分的额外自由度。因此,是否卸载的决定取决于数据的大小、硬件能力、要执行的DNN模型和网络质量等因素。DNN卸载不仅可以考虑在何处运行,还可以考虑运行哪个DNN模型或模型的哪个部分的额外自由度。因此,是否卸载的决定取决于数据的大小、硬件能力、要执行的DNN模型和网络质量等因素。

    2. DNN模型分割

      ​ 我们也可以考虑利用DNN独特的结构,尤其是其层状结构的部分卸载方法。在这种模型划分方法中,有些层在设备上计算,有些层由边缘服务器或云计算,如图5©所示。这就是所谓的DNN模型分割。通过利用其他边缘设备的计算周期来延迟降低。必须注意的是,在DNN分区点通信中间结果的延迟仍然会带来总体的净收益。模型分割的背后是,在DNN模型的前几层计算之后,中间结果的大小相对较小,这使得它们通过网络发送到边缘服务器的速度比原始数据[60]更快。这激发了在初始层之后进行分割的方法。Neurosurgeon[13]是一项智能地决定在哪里分割DNN,分层,同时考虑网络条件的工作。

      ​ 总的来说,这些通过DNN划分的部分卸载方法在思路上与过去的非DNN卸载方法类似,如MAUI[112]和Odessa[114],它们将应用程序划分为其组成的子任务,并根据能量和延迟因素决定在何处执行哪些子任务。然而,在深度学习场景中,一个新的决策是如何决定组成的子任务,因为DNN可以按层、按输入或可能以其他方式进行划分,这些方式还有待探索。

    3. 边缘设备+云的分级架构

      ​ 深度学习计算不仅可以在边缘设备上进行,还可以在云上进行,如图5©所示。虽然单独将任务转移到云中可能会违反正在考虑的深度学习应用程序的实时要求,但是明智地使用云中强大的计算资源可能会减少总处理时间。与在边缘服务器或云上执行计算的二元决策(是或否)不同,该领域的方法通常考虑DNN分割,其中一些层可以在云、边缘服务器和/或终端设备上执行。

      ​ Li等[106]将DNN模型分为两部分,边缘服务器计算DNN模型的初始层,云计算DNN的较高层。边缘服务器接收输入数据,进行底层DNN处理,然后将中间结果发送到云端。云在计算了更高的层之后,将最终结果发送回终端设备。这些设计同时利用了边缘服务器和云,云可以帮助处理计算量大的请求,提高边缘服务器的请求处理速度,同时减少边缘服务器和云之间的网络流量。DDNN[109]还将计算分布在云、边缘服务器和终端设备的层次结构中,并将其与现有的fast exiting相结合(在后面节中讨论),因此计算请求并不总是到达云。

      ​ 边缘计算的一个独特特性是,边缘服务器通常在有限的地理区域内为用户提供服务,这表明用户的输入数据和DNN输出可能是相似的。Precog[10]利用了在图像识别方面的这种洞察力,并将更小的、专门的图像分类模型放在终端设备上,该模型基于由同一边缘服务器提供服务的其他设备最近观察到的情况。如果设备上的分类失败,查询将发送到存储所有分类模型的边缘服务器。虽然他们的评估不使用DNNs,但他们讨论了他们的分类模型放置决策如何适用于DNNs。这种方法与压缩模型的知识提取(参见后面章节)有相似之处,在压缩模型中,它使用较弱和较强的分类模型的组合,但它更仔细地查看了在边缘场景中需要在终端设备上使用哪些专门的模型。

    4. 分布式计算

      ​ 上述方法主要考虑将计算从终端设备转移到其他更强大的设备(如边缘服务器或云)。另一项工作是从分布式计算的角度来考虑这个问题的,其中DNN计算可以分布在多个辅助边缘设备上,如图5(e)所示。例如,MoDNN[107]和DeepThings[60]在树莓派和Android智能手机等轻量级终端设备上使用细粒度分区来分配DNN执行。DNN分区决策是基于终端设备的计算能力和内存做出的。在运行时,输入数据根据负载平衡原则分发给helper类,MoDNN使用类似于mapreduce的模型,DeepThings设计了负载平衡启发。可以在线调整辅助设备的数据分配,以适应计算资源可用性或网络条件的动态变化。在这些场景中还可以应用来自分布式系统的更正式的机制来提供可证明的性能保证。

    隐私性推理

    ​ 当来自终端设备的数据通过边缘网络(从终端设备到边缘服务器)时,可能包含敏感信息(如GPS坐标、摄像机图像和麦克风音频),从而导致隐私问题。这在边缘计算中尤其重要,因为数据通常来自有限地理区域内的有限用户组,这使得隐私侵犯更加令人担忧。虽然边缘计算通过减少通过公共互联网到云的数据传输来自然地改善隐私,但是额外的技术可以进一步增强终端设备和边缘服务器之间的隐私,并保护它们不被窃听。在本节中,我们将讨论两种保护隐私的推理方法:添加噪声来混淆终端设备上传到边缘服务器的数据,以及使用加密技术来保护计算。

    1. 给数据添加噪声

      ​ 一些工作已经考虑了如何混合或添加噪声,到由终端设备上传到执行推理的中央机器(例如,边缘服务器)的推理样本。Wang等人[115]在设备上局部部署了一个较小的DNN来提取特征,在特征上添加噪声,然后将特征上传到云端,由更强大的DNN进行进一步的推理处理。云上的DNN使用噪声样本进行预训练,使得从终端设备上传的噪声推理样本在测试时仍能保持较高的分类精度。本文中使用的隐私的正式概念是差分隐私,它在较高的层次上保证了机器学习模型不会记住任何特定设备输入数据的细节。

    2. 安全计算

      ​ 加密是DNN预测的另外一种技术。安全计算的目标是确保终端设备在不了解DNN模型的情况下接收推断结果,边缘服务器在不了解设备数据的情况下处理数据。换句话说,一个终端设备和一个边缘服务器想要计算DNN预测f(a, b),其中a是一个只有终端设备知道的输入样本(例如,一个摄像机帧),b是只有边缘服务器知道的DNN参数。安全计算允许设备和服务器在不知道对方数据的情况下计算f(a, b)。

      ​ 同态加密是安全计算的一种方法,它对通信数据进行加密,并对加密的数据进行计算,如CryptoNets[116]所做的那样。其思想是用低次多项式近似DNN中常用的计算方法,如加权和、最大池、平均池、sigmoid函数和校正线性单元(RELU),这些计算方法适用于同态加密。然而,同态加密的一个瓶颈是计算时间,这意味着需要离线预处理。加密器也需要重新训练DNN,因为是近似。

      ​ 多方计算(MPC)是另一种安全计算技术[图5(b)]。在安全多方计算中,多台机器协同工作并在多轮通信中共同计算结果(例如,在我们的场景中是DNN预测)。与差分隐私不同,安全多方计算关注的是计算中间步骤的隐私,而差分隐私关注的是整个构建模型的隐私保障。MiniONN[117]和DeepSecure[118]采用了安全的两方计算和同态加密,并与现有的预先训练的DNN模型一起工作,而不需要更改DNN训练或结构。然而,安全多方计算技术的瓶颈往往是其通信复杂性。

      ​ Chameleon[120]和Gazelle[119]是基于计算和通信之间的权衡,在上述加密技术(同态加密和安全多方计算)之间进行选择。Gazelle研究了同态加密(高计算和低通信)和双方安全计算(低计算和高通信)之间的权衡,并为该场景选择了合适的技术。它通过高效实现密码原语进一步加速了训练过程。与使用标准图像分类数据集的CryptoNet、MiniONN、DeepSecure和Chameleon相比,它们的评估表明运行时延迟和通信成本较低。

    边缘侧的训练

    ​ 到目前为止,边缘计算和深度学习主要用于推理,目标包括低延迟、隐私和节省带宽。这些方法假设一个深度学习模型已经在一个集中的、现有的数据集上离线训练过。在这一节中,我们将讨论使用边缘计算训练深度学习模型的方法,主要关注通信效率和隐私。

    ​ 传统的方法,终端设备产生的训练数据被发送到云端,云端利用其庞大的计算资源进行训练,最后根据需要将训练后的模型分发回边缘设备。然而,将数据发送到云会消耗大量的带宽,也有隐私问题。当需要保护隐私时,将数据留在终端设备上是有用的,这也有助于降低网络带宽需求。例如,一个基于深度学习的智能手机打字预测模型可能受益于来自多个用户的训练数据,但单个用户可能不希望将他们的原始击键数据上传到云上;同样,在一个图像分类服务中,从终端设备上传所有的相机帧到云端会消耗大量的带宽,并有上传敏感信息的风险。

    ​ 基于边缘的训练借鉴了数据中心的分布式DNN训练。在数据中心,跨多个work进行训练,每个work持有数据集的一个分区(称为数据并行性)或模型的一个分区(称为模型并行性)。[121]中对着两种方式进行了讨论并且设计了系统原型。这也是本节其余部分的重点。在数据并行性中,每个worker计算其数据集的本地分区的梯度,然后由一个中央参数服务器收集这些梯度,执行一些聚合计算,并将更新发送回worker(参见图7(a))。

    ​ 对边缘设备的训练借鉴了数据中心的设置,其中worker是终端设备,而不是数据中心中的强大服务器,中心参数服务器是边缘计算节点或服务器。例如,DeepCham[122]由一个master边缘服务器+多个终端设备组成,并且在终端训练基于地域感知的对象识别模型,这充分的利用了在某个时间段多个设备端连接着同一的边缘端。在边缘场景中,通信延迟、网络带宽和终端设备的计算能力是训练性能的关键考虑因素。

    ​ 在边缘设备上训练深度学习通常涉及分布式深度学习训练技术。本节从以下角度讨论在边缘设备上执行分布式培训的技术:训练更新的频率和大小,这两个方面都会增加通信成本;分散的信息共享;最后,隐私保护下DNN训练。这些技术的分类见图6,下面讨论的工作进展见表4。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    训练更新的频率

    ​ 通信成本是端设备的主要关注点。减少通信频率和通信规模是降低通信成本的关键方法。在本节中,我们将讨论集中于通信时间和频率的分布式训练方法。对中心边缘服务器进行更新同步的一般方法有两种:同步和异步随机梯度下降[123]。在同步随机梯度下降(SGD)中,当所有设备对当前的训练数据完成梯度计算后,各个设备同步更新它们的参数。在异步SGD中,设备独立地将其参数更新到中央服务器。同步SGD和异步SGD都有各自的优点和缺点。尽管同步SGD通常收敛于更好的解决方案,但在实践中它常常更慢,因为在每次迭代中都需要等待掉队的设备。异步SGD收敛速度比同步SGD更快,但它可能会使用来自设备的陈旧信息来更新参数,并且可能会聚变成糟糕的解决方案。

    ​ 分布式训练算法通常关注如何使同步SGD更快或如何使异步SGD收敛更好的解决方案。在分布式环境中,通信频率和数据量也很重要。通过允许每个设备执行更多的本地训练计算,并在同步更新之前进一步偏离/探索全局共享解决方案,[124]弹性平均的降低了同步和异步SGD训练方法的通信成本。这减少了本地设备和边缘服务器之间的通信量。联邦学习[125]在本质上是相似的,但是它考虑了非理想的场景,例如非独立的和同分布的数据分布(例如,一个设备具有一个给定类的比另一个设备更多的数据样本)。在不将原始训练数据上传到服务器的情况下计算更多的局部梯度更新,这牺牲了通信成本的准确性:在本地进行更多的计算降低了预测精度(由于对本地数据集的过度拟合),但它也可以节省通信成本,反之亦然。Wang等人[126]进一步探讨了这一问题,考虑了在实际测试台上实现的一些实际问题。他们提出了一种控制策略,用来决定在全局梯度更新和用树莓派和笔记本电脑进行的实验之间,应该在本地执行多少计算。

    ​ 分层架构及其通信成本也被考虑在内。Gaia[127]研究了设备在地理上分布在大区域的情况下的同步SGD。在他们的测试设置中,客户机是数据中心内部和跨数据中心的服务器。由于跨地理分布的数据中心的带宽约束比单个数据中心更严格,因此需要在工作人员之间仔细协调梯度更新。Gaia提出了一种策略,其中只有当聚合更新高于给定阈值时,更新才会跨不同的数据中心同步进行。

    ​ 除了同步和异步更新之外,distillation是另一种用于降低通信频率的方法。distillation,指使用一个模型的预测输出来帮助训练另一个模型。Anil等[128]提出将distillation技术应用到DNNs的分布式训练中。在他们的方法中,每个设备都对数据子集进行训练,并根据其计算出的训练损失来更新其梯度,但是它也使用其他同时进行训练的设备的预测输出来提高训练效率。由于他们发现该训练对来自其他设备的陈旧预测结果具有鲁棒性,因此需要与其他设备较少地交换信息(与本节前面描述的梯度共享方法相比)。这样就避免或减少了梯度的频繁通信。此外,distillation可以与分布式SGD相结合,即使在分布式SGD由于网络约束而无法实现的情况下,也可以提高训练效率。

    ​ 如果一些设备的连接性很差,并且受到了意外的长时间延迟,那么它们就会影响分布式训练。Chen等人[123]提出了对同步SGD的改进,以减轻这种掉队效应。他们的主要想法是让备份设备“随叫随到”,以计算任何分散的常规设备的梯度更新。一旦服务器从足够多的设备接收到梯度更新,训练过程将更新全局参数并继续下一个迭代,而不需要等待掉队的设备,从而减少了训练延迟。

    训练更新的大小

    ​ 除了训练更新的频率之外,训练更新的大小也影响了带宽的使用。由于模型大小大约为几百兆字节,并且需要进行多轮通信,因此带宽需求可能相当大。在边缘场景中,带宽问题至关重要。边缘场景一般是指与端连接的一英里内无线或接入网。在本节中,我们将回顾梯度压缩技术,它可以减少与中央服务器通信的更新的大小:

    ​ 梯度压缩一般有两种方法:梯度量化和梯度稀疏化[129]。梯度量化使用低bit宽度的近似浮点梯度。例如,32位浮点数可以近似为8位数,从而将大小减少4倍。梯度量化与参数量化类似,区别在于量化是应用于模型梯度还是模型参数。梯度稀疏化丢弃不重要的梯度更新,只与超过一定阈值的更新通信。梯度量子化和稀疏化可以同时进行。例如,Lin等人[129]将梯度稀疏化与动量修正[138]、warm-up训练[139]等其他训练技巧相结合,加速训练收敛。Hardy等人[140]进行了梯度稀疏化,并根据其新旧度选择了哪些梯度进行通信。

    去中心化的通信协议

    ​ 前面我们已经考虑了集中的训练体系结构,其中多个终端设备与一个边缘服务器通信。拥有中心边缘计算或服务器节点有助于确保所有设备都收敛到相同的模型参数。然而,集中式架构的通信吞吐量受到中心节点带宽的限制。为了克服这一问题,提出了一种分散的训练信息交换算法。在gossip类算法中,每个设备根据其训练数据计算其自身的梯度更新,然后将其更新传递给其他一些设备[参见图7(b)]。总的目标是设计一个gossip算法,让设备在一个好的DNN模型上达成一致。

    ​ Blot等[131]提出了一种基于gossip的深度学习训练异步算法。他们的实验表明比弹性平均法收敛更快。Jin等[132]在研究同步和异步SGD的收敛速度的基础上,提出了对SGD进行gossip传播。他们主要关心的是可伸缩性,其中SGD方法可以适用于不同数量的client。他们发现,异步方法,如gossip算法或弹性平均法,在少数worker(在他们的模拟中有32个worker)中收敛得更快,而同步SGD在有更多worker(在他们的模拟中有100个worker)时,扩展得更好,具有更高的准确性。Li等人[133]开发了一种称为INCEPTIONN的分布式系统,它将梯度压缩和gossip传播结合在一起。他们的八卦方法包括将设备分成不同的组,在每个组中,每个设备与下一个设备共享一些梯度。该算法保证所有设备上的DNN的所有部分都将在几次迭代后更新。在每个组中,可以以传统的集中式方式或通过gossip共享参数。

    隐私性训练

    ​ 当终端设备收集的训练数据与其他边缘设备共享时,隐私性训练就显得非常重要。虽然SGD算法的训练可以通过消除终端设备收集数据的直接共享,自然地提高了隐私,但是边缘设备之间通信的梯度信息仍然可以间接地泄漏关于私有数据[14]的信息。因此,需要进一步加强隐私保护的技术。在本节中,我们将考虑两种主要的隐私增强技术:将噪声添加到梯度或数据传输中作为训练的一部分,以及为训练DNN而进行的安全计算。

    1. 对数据或者训练更新添加噪音

      ​ 下面介绍的一些文献,threat模型由一个passive adversary组成,例如一个终端设备,它遵循规定的训练协议,没有主动的恶意,但是它可能会试图通过观察他人的通信数据来了解模型或数据。Shokri和Shmatikov[14]在这种场景下,考虑了训练DNN的隐私问题,尤其是差分隐私。他们修改了端设备更新中心服务器中梯度的策略:1) 只选择超过一定阈值的梯度进行传输 2) 添加噪声传输到每个上传的梯度。这使得模型能够被合理准确地训练,同时减少来自训练更新的信息泄漏(直观地说,因为发送的更新更少)。

      ​ Abadi等人[134]研究了一个类似的问题,即整个模型的隐私损失是有限的,而不是Shokri中设定的那样针对每个参数。Abadi的方法通过剪切、平均和添加噪声来修改梯度,然后再将其传递给参数服务器。Mao等[137]对分割的模型采用不同的查分隐私算法,将DNN的初始层在设备上计算,然后与噪声混合,上传到边缘服务器,以模糊上传的训练数据和保护隐私。

      ​ 在修改梯度的同时,还考虑了在训练数据中加入噪声。Zhang[135]在训练前考虑了可以添加到输入数据中的不同类型的噪声。他们没有使用正式的差别隐私概念,而是通过经验来防止对手发现单个训练数据样本的统计特性或关于训练样本组的汇总统计信息。这本质上是训练数据的预处理步骤,即使对手已经接管了参数服务器并可以访问模型参数或后处理的训练数据,也可以保证数据安全。

    2. 安全计算

      ​ SecureML[136]提出了一个双服务器模型,其中终端设备将它们的数据传递给两台服务器,然后基于来自终端设备的组合数据训练一个神经网络,而不学习任何超出DNN参数的东西。他们的方案是基于安全的两方线性回归和逻辑回归,这是DNN训练的基础计算。为了提高效率,提出了改进的softmax函数和RELU函数。与前面讨论的多方计算方案不同,SecureML侧重于DNN训练,而不是推理。

    挑战及问题

    ​ 在edge上部署深度学习仍然面临许多挑战,不仅是在终端设备上,还包括在边缘服务器上,以及在终端设备、边缘服务器和云的组合上。接下来,我们将讨论一些尚未解决的挑战。

    系统级别的挑战

    1. 延迟

      ​ 虽然前面几节中描述的一些工作重点是减少推理延迟,但是当前的技术状态仍然导致相当高的延迟,特别是在操作高维输入数据(如图像)和移动设备时。例如,即使是为移动设备设计的DNN模型,在现代智能手机[20]上也只能以1-2帧/秒的速度运行[20] [78]。要使深度学习在边缘设备上运行,特别是在资源约束最严重的物联网设备上,还有很多工作要做。此外,虽然前面描述的卸载方法提出了创新的方法来最小化延迟,机器学习专家们也在不断创新,尝试新的DNN模型与更多的参数和新的层设计。例如,DNN划分方法可能适用于标准的顺序DNN,但不适用于其他深度学习方法,如RNNs,它们的层结构中有循环。与新的深度学习技术同步进行是主要系统的挑战。

    2. 能耗

      ​ 最小化深度学习的能耗对于电池驱动的边缘设备(如智能手机)来说非常重要。虽然减少计算量隐含地降低了能耗,但是理解深度学习计算与其他电池管理机制(如CPU节流或传感器硬件优化)之间的相互作用是研究的重要途径[141]。无论是软件还是硬件[142],对输入数据进行变化检测都有助于降低深度学习执行的频率和整体能耗。减少特定硬件芯片(如gpu和TPUs)的能耗已经是硬件设计者的一个关键优先事项,但是理解它们与系统其余部分的交互(如电池管理机制和与边缘服务器计算资源的权衡)是降低整体能耗所必需的。

    3. 迁移

      ​ 在不同的边缘服务器之间迁移边缘计算应用程序对于负载平衡或适应用户移动非常有用,其目标是最小化用户的端到端延迟。虽然边缘迁移已经在一般情况下进行了研究,例如,使用VM迁移技术[143]或Docker容器[144],或者使用多路径TCP来加速迁移[145],但是理解应该如何迁移深度学习应用程序仍然是一个需要考虑的领域。DNN模型可以相当大;例如,一个预先训练好的YOLO模型[18]大约是200MB,根据我们的经验,加载一个DNN模型可能需要几秒钟。DNN模型的哪些部分应该迁移,哪些部分应该包含在独立的虚拟映像中,是否可以在DNN执行过程中迁移程序状态,类似于用于卸载的DNN分区方法等。解决这些挑战需要系统度量和实验来获得对迁移挑战的经验式理解。

    与SDN和NFV的关系

    ​ 近年来,从控制平面抽象数据平面的软件定义网络(SDN)、从硬件抽象网络功能的网络功能虚拟化(NFV)等网络抽象越来越受到重视,并被电信行业所采用。如果深度学习越来越受欢迎,这些包含深度学习数据的流出现在边缘网络上,这就引出了SDN如何实现、NFV应该如何管理这些类型的流,以及保证这些流所需的QoS类型的问题。即使在加密的情况下,如何识别深度学习数据流?给定一组需要对深度学习流进行操作的网络功能,如何设计一个SDN控制器来最好地管理这些流(例如,通过为深度学习流量切割网络切片)? 如何在相互竞争的深度学习流之间或与其他非深度学习流共享网络资源,如Web或视频?

    ​ 另一个方向是使用深度学习本身作为网络功能,如第三节中描述的网络入侵检测和缓存应用。如果将深度学习用于各种网络任务,NFV平台需要考虑深度学习的资源需求,以便网络功能能够实时运行。虽然NFV的快速实例化和性能已经得到了研究[146],但是通过边缘服务器上的GPU访问,深度学习推断可以大大加快,这就需要NFV平台上的GPU支持。

    边缘计算资源的管理和调度

    ​ 深度学习通常被应用程序开发人员和网络管理员视为一个黑匣子。然而,深度学习模型在延迟、准确性、电池等方面有很多权衡。虽然前面描述的一些工作已经讨论了如何调优这些控制旋钮以获得总体良好的系统性能[20] [93],但是通过一个标准规范以一致和统一的方式向应用程序开发人员和服务器管理员公开这些控制层是有价值的。这将使没有深入的机器学习知识的开发人员和服务器管理员能够理解如何使用,并对它们进行调优以获得良好的系统性能,特别是在资源有限的边缘计算节点上。指定应用程序的需求和正在运行的DNN模型的权衡可以允许边缘服务器有效地调度终端设备请求。如果不做精细的设计(例如,从AR耳机发出的视频帧分析请求会导致长时间的延迟),就会削减边缘计算的延迟优势。

    ​ 一个很自然的问题是,在了解了权衡和控制层之后,如何安排这样的请求。由于来自终端设备的顺序输入(例如,来自摄像机的多个帧)之间的时间依赖性,这个问题变得复杂起来,这可能会将优先级引入调度策略,从而影响边缘服务器的决策,即请求在什么时候服务。例如,来自设备a的新相机帧推断请求是否应该获得比来自设备B的第100帧更高的优先级? 结合freshness指标,如信息生存期[147],可以允许边缘服务器做出更智能的调度决策。而这个问题与云数据中心的任务调度有一些重叠。边缘计算带来了新的挑战,在为地理位置终端设备提供服务的边缘服务器上,请求的数量和种类可能更少,因此统计复用并不一定可靠。需要对负载平衡和请求调度机制进行新的分析。此外,计算资源分配可以与从终端设备到边缘服务器的流量控制相结合。现有的研究工作主要认为邻近性是影响流量转向决策的主要因素[148]。

    边缘设备的深度学习基准

    ​ 对于希望在边缘设备上部署深度学习的研究人员和开发人员来说,选择正确的DNN模型是困难的,因为缺乏对目标硬件的逐项比较。尽管新的机器学习论文包含与现有模型的比较评估,但是被比较的模型子集是由研究人员自行选择的,可能不包括所需的比较或硬件平台。此外,随着新的DNN模型的出现,独立的测量论文可能很快就会过时。公共存储库包含对不同硬件上的模型之间的基准比较,这可能对社区有很大的好处。由于在某些应用领域(如图像分类和自然语言处理)中存在标准数据集,以及TensorFlow、Caffe和PyTorch等标准机器学习平台,这一任务变得稍微容易了一些。对边缘计算特别重要的是对各种边缘设备硬件的比较,包括简单设备(如树莓派)、智能手机、家庭网关和边缘服务器。目前的大部分工作都集中在功能强大的服务器或智能手机上,但随着深度学习和边缘计算的流行,需要对异构硬件上的深度学习性能进行比较了解。

    隐私

    ​ 虽然隐私通常是在分布式深度学习的背景下进行研究的,但是对于边缘计算有几个方面,值得进一步研究。一个可能的担忧是成员攻击(membership attach)。成员攻击试图确定某一特定项目是否属于用于生成深度学习模型的训练集的一部分[149]。这种攻击在边缘计算中非常重要,因为成功的进程意味着拥有边缘服务器的用户可以解析出数据的某些属性。另外一个问题是数据干扰问题。虽然这项技术已经得到了很多的研究的关注,但其能否在边缘这种特殊的场景下使用,仍然不是很确定。边缘场景下,常常是一组较小的地理定位设备和边缘服务器通信。到底需要添加多少噪声才能补偿边缘设备比较少的问题还未知。总的来说,前面描述的隐私问题主要是在通用分布式机器学习的背景下进行研究的,但是它们关于边缘计算的研究可能是有价值的,因为边缘计算具有更小的用户集和更专门的深度学习模型。

    结论

    ​ 这一部分没必要介绍了。

    参考文献

    所有的参考文献可以参见

    Chen, Jiasi, and Xukan Ran. “Deep learning with edge computing: A review.” Proceedings of the IEEE 107.8 (2019): 1655-1674.

     
  • 相关阅读:
    有JSON中字段最好是【字符】而非【enum】想到
    OpenCV实现马赛克和毛玻璃滤镜效果
    matlab 高阶(二) —— 数值、溢出问题的解决
    matlab 高阶(二) —— 数值、溢出问题的解决
    matlab 排列组合
    matlab 排列组合
    图像处理的真实应用
    图像处理的真实应用
    编程军规 —— Java 篇
    编程军规 —— Java 篇
  • 原文地址:https://www.cnblogs.com/txhan/p/13268679.html
Copyright © 2020-2023  润新知