ThriftyEdge:资源高效边缘计算

ThriftyEdge:面向智能物联网应用的资源高效边缘计算

摘要

本文提出了一种新的资源高效边缘计算范式,以支持新兴的智能物联网应用,如用于精准农业、电子健康和智能家居的飞行自组织网络。我们设计了一种资源高效的边缘计算方案,使智能物联网设备用户能够通过在本地设备、附近的辅助设备以及邻近的边缘云之间进行适当的任务卸载,有效支持其计算密集型任务。与现有的移动计算卸载研究不同,我们从资源效率这一新视角出发,设计了一种高效的计算卸载机制,该机制包含延迟感知任务图划分算法和最优虚拟机选择方法,旨在最小化智能物联网设备的边缘资源占用,同时满足其服务质量要求。性能评估验证了所提出的风险高效边缘计算方案的有效性和优越性能。

引言

随着人工智能技术的迅速发展和广泛渗透,越来越多的新型智能物联网(IoT)应用不断涌现,例如基于深度学习的智能视频监控、用于精准农业的飞行自组织网络、电子健康和智能家居[1]。这类智能物联网应用通常具有资源密集型特征,运行计算密集型机器学习算法(例如深度学习[2]),并要求实时处理[3]。然而,由于物理尺寸限制,物联网设备通常受限于有限的计算资源,难以满足智能物联网应用的服务质量(QoS)需求[4]。

任务卸载作为一种增强设备资源的有前景技术,已在学术界和工业界得到广泛考虑。近年来,许多研究人员专注于移动云计算解决方案,其中移动设备可以将计算密集型数据处理任务卸载到资源丰富的云上进行远程执行。然而,由于物联网设备与云之间的网络距离较长,该范式无法支持延迟敏感型物联网应用[5]。作为一种替代方案,移动边缘计算(更广义地说,雾计算)是一种新兴的范式,利用大量协作终端用户和/或近用户设备来执行大量的计算任务,每个设备都能从中受益[5]。由于移动边缘计算在网络边缘实现,因此能够为物联网设备用户提供低延迟以及敏捷计算增强服务[5, 6]。如图1所示,移动边缘计算可以为智能物联网应用实现一种混合任务卸载范式,其中物联网设备能够利用自身的本地资源、通过设备到设备(D2D)通信技术利用附近设备的资源,以及连接的蜂窝基站附近的边缘云资源。

已有许多现有研究探讨了计算卸载问题,特别是针对移动云计算(例如[7–11,参见其中的参考文献])。然而,这些研究大多仅关注目标设备与其关联云服务器之间的计算卸载。如何高效地将计算密集型和延迟敏感的智能物联网应用任务在目标设备、辅助设备和边缘云之间进行卸载,目前仍缺乏充分理解。此外,由于物联网设备数量庞大且边缘云容量有限,跨不同设备的并发计算卸载显得极为重要且必要。因此,每个单独的物联网设备的计算卸载应在满足服务质量要求的前提下实现资源高效。更资源高效的计算卸载也意味着更少的资源消耗,从而降低物联网设备用户的边缘云服务费用。然而,现有研究很少探讨计算卸载的资源效率问题。

基于这一动机,本文提出了ThriftyEdge,一种面向智能物联网应用的资源高效边缘计算新范式。具体而言,我们采用以设备为中心的方法,设计了一种资源高效的计算卸载算法,使得每个智能物联网设备用户在满足其服务质量要求的前提下,力求最小化云资源占用(使用)。我们提出的资源高效计算卸载算法具有以下显著特点:一方面,我们采用混合方法,充分利用本地设备、附近的辅助设备以及邻近边缘云的分层资源;另一方面,我们提出了一种高效的基于拓扑排序的任务图分区算法以及最优虚拟机选择方法,以最小化智能物联网设备的边缘资源占用,同时满足其服务质量要求。

示意图0

相关工作

许多先前关于移动云计算的研究工作都集中在计算卸载问题上(例如,[7–11,参见其中的参考文献])。Wen et al. 在 [7] 中提出了一种高效的卸载策略,通过联合配置移动设备的时钟频率和调度数据传输来最小化能耗。Yang et al. 在 [8] 中研究了多个用户共享无线网络带宽的场景,并采用集中式启发式遗传算法解决了最小化延迟性能的问题。Chen et al. 在 [9] 中提出了一种博弈论方法,用于设计去中心化多用户计算卸载机制,以减少总的任务执行开销。Pu et al. 在 [10] 中设计了一种基于D2D协作的移动边缘计算框架,旨在优化系统级能效。

请注意,本文中的计算卸载方案与上述研究不同,因为现有工作旨在优化设备的能效或延迟性能,而我们的目标是针对资源利用效率(在满足完成时间约束的前提下)优化设备的卸载决策。这对于许多物联网应用具有重要意义,因为物联网设备数量通常较大,通过最小化每个设备的资源占用,可以支持更多的并发物联网设备用户。

边缘计算场景

我们考虑一种场景:一个智能物联网设备(例如智能摄像头或机器人)连接到一个拥有邻近边缘云的无线基站。边缘云提供多种虚拟机类型,每种类型具有不同的计算能力。需要注意的是,通过引入广域网(WAN)传输延迟,我们的模型也可以扩展到包含远程公共云的情况。

物联网设备有一个时间关键型且计算密集型的任务(例如,用于智能物联网应用的机器学习任务)需要完成。根据该应用的服务质量要求,该任务具有最大允许完成时间。当存在辅助设备(例如,一个任务设备附近存在处于空闲状态的设备时,也可以选择与其建立D2D连接(例如使用蜂窝D2D [12]或Wi‐Fi直连 [13]),以实现支持D2D的计算卸载。1这是因为边缘设备类型通常具有异构性,某些设备(例如监控摄像头和机器人)既具备充足的电池电量又拥有足够的计算容量,因此能够处理来自附近资源受限设备的卸载任务。需要注意的是,当没有可用的辅助设备时,任务设备仅考虑本地计算和卸载至边缘云进行计算这两种选择。

接下来,我们引入任务图模型来描述计算任务的处理过程。与大多数现有研究(例如,[7, 8, 14])类似,我们使用有向无环图来描述设备的数据处理计算任务。具体而言,在任务图中,节点表示数据处理任务组件,有向边表示数据依赖。对于任务图中的一个节点,可以将其节点权重定义为对应数据处理任务组件所需的计算资源(即CPU周期)。对于调用另一个节点输出数据的后续节点,还可以将这两个节点之间的边权重定义为在两个对应任务组件之间传输的数据量。

对于任务图中的给定任务组件,任务设备可以在其本地设备上执行,也可以卸载到附近的辅助设备或边缘云。因此,我们得到任务组件 i 在设备 m 上的执行时间 Ti m,该时间取决于执行设备的计算能力。对于边缘云计算方法,边缘云中会为任务设备用户关联一个虚拟机以执行其任务。根据设备为其整个任务所选择的虚拟机类型,可相应地计算出通过云计算方法在虚拟机上执行给定任务组件 i 的时间为 Ti c。

现在假设两个具有数据依赖性的任务组件 i 和 j 在不同的执行位置运行(例如,一个在用户设备上,另一个在边缘云上)。那么,这两个任务组件之间需要通过无线连接 [12] 传输一定总量的数据。我们将任务组件 i 的执行位置记为 yi,任务组件 i 和 j 之间因计算卸载而产生的总数据传输时间表示为 Tije(yi,yj)。

资源高效的计算卸载

在本节中,我们讨论ThriftyEdge的核心思想。我们首先考虑资源高效的计算卸载问题,以确定最优任务组件执行位置和虚拟机选择,从而最小化资源占用,同时满足服务质量需求。

1为了便于阐述,本文仅考虑一个辅助设备。然而,通过扩展计算卸载的选择空间,我们的方法可以很容易地推广到多个辅助设备的情况。

延迟感知任务图划分

我们首先考虑在固定边缘云资源规模下的延迟感知任务图划分问题。也就是说,在用户针对云计算所选择的虚拟机类型固定的情况下,我们的目标是确定每个任务组件在其任务图中的最优执行位置(即目标设备 n、辅助设备 m 或边缘云 c),以最小化执行整个任务的总延迟。

首先,我们利用任务图的结构特性。由于该图是有向无环的,因此可以对该图进行拓扑排序(如图2所示),即对节点进行排序,使得对于从节点 i 到节点 j 的每一条有向边,i 在排序中都位于 j 之前。

我们引入经典的卡恩算法对任务图进行拓扑排序,该算法具有较低的多项式计算复杂度。在完成拓扑排序后,我们得到节点的一个有序排列。我们还将从节点 i 有有向边指向的节点集合记为 D(i)。根据拓扑排序的定义可知,若 j ∈ D(i),则在节点排序中 i 位于 j 之前。注意,由于不存在从终止节点(即输出组件)出发的有向边,而对于其他任意节点,总存在从其出发的有向边(否则对应的任务组件是无用的,因为它未向其他中间组件或输出组件提供任何输入),因此在拓扑排序后的节点序列中,最后一个节点必定是输出组件。

基于拓扑排序得到的节点排序,我们随后通过逆向归纳法来解决延迟感知任务图划分问题。也就是说,我们首先确定拓扑排序后最后一个节点的最优执行位置,然后以此为基础,逆向逐个确定其他节点的最优执行位置。此外,我们用 Z(i)表示从任务组件i开始执行到整个任务结束的最小延迟。

对于排序中的最后一个节点 k(即输出组件),我们有 Z(k) 等于在本地任务设备 n 上的执行时间 tk n ,因为通常最终结果将返回到任务设备 n。然后我们逆向递归地考虑排序中剩余的节点。显然,从执行任务组件 i 开始直到整个任务结束的延迟取决于需要从节点 i 获取输入数据的具有最大延迟的瓶颈节点 j ∈ D(i)。因此,我们有 Z(i) = miny∈{n,m,c}maxj∈D(i){Tyi+ Te ij(y, y j) + Z(j)}。直观上,这意味着从执行任务组件 i 开始直到整个任务结束的最小延迟等于最小化当前任务组件的执行延迟(包括任何数据传输延迟)以及后续剩余任务组件的最小执行延迟的总和。因此,每个节点的最优执行位置是实现最小延迟的最佳选择。通过逆向归纳法,我们可以对所有剩余节点递归地计算出最小延迟和最优执行位置。

最优虚拟机选择

我们的目标是设计一种资源高效的计算卸载策略,以确定设备的最优边缘云资源配置,在满足其服务质量约束的同时,最小化边缘云资源占用。该研究的关键动机有两方面:一方面,从系统角度来看,最小化云资源占用有助于提高资源利用效率,并可在移动边缘系统中支持更多并发的物联网设备;另一方面,从用户角度来看,通常云资源占用是确定边缘计算服务费用的重要指标。因此,较低的云资源占用也意味着用户所需支付的服务费用更低。形式上,我们将资源高效卸载问题(即ThriftyEdge的核心问题)定义为:在任务完成时间不超过截止时间的约束下,选择能够最小化边缘云资源占用的合适虚拟机类型。

如图3所示,在上述延迟感知任务图分区算法的基础上,该问题可以按如下方式轻松解决。首先,我们根据相应的计算资源容量对边缘云提供的所有虚拟机类型进行排序。然后,按照该排序依次选择一个虚拟机选项,并利用延迟感知任务图分区算法计算拓扑排序后首个节点的最小延迟。一旦执行时间小于截止时间,便停止搜索,并找到具有最小资源占用的最优虚拟机选择。为简化起见,在本文中所提算法包含延迟感知任务图划分算法和最优虚拟机选择方法,旨在满足服务质量要求的同时,最小化智能物联网设备的边缘资源占用。

我们进一步评估了所提出的ThriftyEdge方案(即资源高效的卸载算法)在资源占用方面的性能。作为对比,我们还实现了Odessa计算卸载方案[15]以及全卸载方案——任务图中的所有任务组件都将被卸载。Odessa计算卸载方案采用贪心策略,利用数据与流水线并行性进行计算卸载。

结果如图4所示,使用物体位姿估计应用进行测试,其中以全卸载方案作为基线,对另外两种方案的资源占用性能进行归一化处理。可以看出,与Odessa方案相比,所提出的ThriftyEdge方案在资源占用方面表现出更优的性能,资源占用降低了19%。

未来研究方向

在本节中,我们将讨论针对智能物联网应用的资源高效边缘计算进一步探索的几个重要方向。

首先,扩展当前研究的一个非常有趣且具有挑战性的方向是考虑多用户资源高效边缘计算。与单用户情况不同,在多用户情况下,我们需要仔细解决在同一辅助设备和边缘云上计算资源共享的关键竞争问题。此外,探索多个用户在运行相似应用时任务组件的可重用性,以进一步提高资源效率,也是非常有意义的。

其次,设计一种细粒度计算卸载机制也非常有前景,使得不同的物联网设备能够根据物理环境以及服务质量需求精细调整其计算需求。实现细粒度计算卸载无疑有助于提高资源效率。

最后但同样重要的是,在本文中我们考虑了一个由计算任务图表示的通用计算模型。由于物联网数据分析对于许多智能物联网应用至关重要,因此可以特别关注边缘数据流处理领域,该领域结合边缘计算和机器学习技术,以实现高效的实时物联网数据处理与分析。

结论

本文探讨了智能物联网应用中的资源高效边缘计算问题。我们设计了一种资源高效的计算卸载算法,使物联网设备能够利用本地设备、附近辅助设备以及邻近边缘云的资源。具体而言,所提算法包含延迟感知任务图划分算法和最优虚拟机选择方法,旨在满足服务质量要求的同时,最小化智能物联网设备的边缘资源占用。性能评估结果验证了所提计算卸载算法在资源效率方面的优越性能。

第三方支付功能的技术人员;尤其适合从事电商、在线教育、SaaS类项目开发的工程师。; 使用场景及目标:① 实现微信与支付宝的Native、网页/APP等主流支付方式接入;② 掌握支付过程中关键的安全机制如签名验签、证书管理与敏感信息保护;③ 构建完整的支付闭环,包括下单、支付、异步通知、订单状态更新、退款与对账功能;④ 通过定时任务处理内容支付超时与概要状态不一致问题:本文详细讲解了Java,提升系统健壮性。; 阅读应用接入支付宝和建议:建议结合官方文档与沙微信支付的全流程,涵盖支付产品介绍、开发环境搭建箱环境边学边练,重点关注、安全机制、配置管理、签名核心API调用及验签逻辑、异步通知的幂等处理实际代码实现。重点与异常边界情况;包括商户号与AppID获取、API注意生产环境中的密密钥与证书配置钥安全与接口调用频率控制、使用官方SDK进行支付。下单、异步通知处理、订单查询、退款、账单下载等功能,并深入解析签名与验签、加密解密、内网穿透等关键技术环节,帮助开发者构建安全可靠的支付系统。; 适合人群:具备一定Java开发基础,熟悉Spring框架和HTTP协议,有1-3年工作经验的后端研发人员或希望快速掌握第三方支付集成的开发者。; 使用场景及目标:① 实现微信支付Native模式与支付宝PC网页支付的接入;② 掌握支付过程中核心的安全机制如签名验签、证书管理、敏感数据加密;③ 处理支付结果异步通知、订单状态核对、定时任务补偿、退款及对账等生产级功能; 阅读建议:建议结合文档中的代码示例与官方API文档同步实践,重点关注支付流程的状态一致性控制、幂等性处理和异常边界情况,建议在沙箱环境中完成全流程测试后再上线。
matlab2python 这是一个Python脚本,用于将Matlab文件或代码行转换为Python。此项目处于alpha阶段。 该实现严重依赖于Victor Leikehman的SMOP项目。 当前实现围绕SMOP构建,具有以下差异: 力图生成不依赖libsmop的代码,仅使用如numpy这样的标准Python模块。 使用常见缩写如np而非全称numpy。 尝试重排数组和循环索引,从0开始而不是1。 不使用来自libsmop的外部类matlabarray和cellarray。 增加了对Matlab类的基本支持,类体中声明的属性在构造函数中初始化。 因上述改动,产出代码“安全性较低”,但可能更接近用户自然编写的代码。 实现相对直接,主要通过替换SMOP使用的后端脚本,这里称为smop\backend_m2py.py。 一些函数替换直接在那里添加。 额外的类支持、导入模块以及其他微调替换(或说是黑客技巧)在matlabparser\parser.py文件中完成。 安装 代码用Python编写,可按如下方式获取: git clone https://github.com/ebranlard/matlab2python cd matlab2python # 安装依赖项 python -m pip install --user -r requirements.txt # 让包在任何目录下都可用 python -m pip install -e . # 可选:运行测试 pytest # 可选:立即尝试 python matlab2python.py tests/files/fSpectrum.m -o fSpectrum.py 使用方法 主脚本 存储库根目录下的主脚本可执行,并带有一些命令行标志(部分直接取自SMOP)。要将文件file.m转换为file.py,只需输入:
【信号识别】识别半监督粗糙模糊拉普拉斯特征图(Matlab代码实现)内容概要:本文档围绕“信号识别”主题,重点介绍了基于半监督粗糙模糊拉普拉斯特征图的信号识别方法,并提供了完整的Matlab代码实现。该方法结合了半监督学习、粗糙集理论、模糊逻辑与拉普拉斯特征映射技术,用于提升在标签样本稀缺情况下的信号分类性能,尤其适用于复杂背景噪声下的信号特征提取与识别任务。文中详细阐述了算法原理、数学模型构建过程及关键步骤的编程实现,旨在帮助科研人员深入理解并应用该混合智能识别技术。; 适合人群:具备一定信号处理基础和Matlab编程能力的研究生、科研人员及从事通信、雷达、电子系统等领域工程开发的技术人员;熟悉机器学习与模式识别的基本概念者更佳; 使用场景及目标:①应用于低标注成本、高噪声环境下的信号分类任务,如雷达信号识别、通信信号监测等;②用于学术研究中对半监督学习与特征降维融合方法的探索与性能验证;③作为撰写相关领域论文或项目开发的技术参考与代码基础; 阅读建议:建议读者结合文档中的理论推导与Matlab代码逐段分析,动手运行并调试程序以加深理解;可尝试在不同信号数据集上进行实验对比,进一步优化参数设置与模型结构,提升实际应用场景下的识别精度与鲁棒性。
基于Python的织物表面缺陷检测系统源代码 本资源提供了一套完整的织物表面质量检测系统实现方案,采用Python编程语言开发。该系统通过计算机视觉技术,能够自动识别织物生产过程中产生的各类表面瑕疵,适用于纺织行业的质量控制环节。 系统核心功能包括图像预处理、特征提取、缺陷分类与定位。预处理模块对采集的织物图像进行标准化处理,包括灰度化、噪声滤除和对比度增强,以优化后续分析条件。特征提取环节采用多种算法组合,有效捕捉纹理异常、色差、孔洞、污渍等常见缺陷的视觉特征。 缺陷识别部分整合了传统图像处理技术与机器学习方法,实现对瑕疵类型的准确分类与严重程度评估。系统支持实时检测与批量处理两种模式,可集成于生产线进行在线质量监控,亦可用于离线样本分析。 代码结构清晰,包含完整的模型训练脚本与推理接口,并附有详细注释说明各模块功能与参数配置方法。用户可根据实际生产环境中的织物材质与缺陷类型,调整特征参数与分类阈值,以提升检测精度。 该系统为纺织制造业提供了一种高效、自动化的表面质量检测解决方案,有助于减少人工检验成本,提高产品合格率与生产一致性。所有功能模块均基于开源库实现,无需依赖特定硬件设备,具备较高的可移植性与扩展性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
《Unity引擎下的经典平台游戏实现剖析》 在当代游戏开发实践中,Unity引擎凭借其高效的三维图形处理能力、多平台适配特性以及直观的脚本编写界面,已成为广泛采用的工具之一。本文将以一个具体的案例——基于Unity环境重新构建的经典平台跳跃游戏为例,系统阐述该引擎在复刻传统游戏过程中的技术应用与实现逻辑。 Unity采用组件化设计理念,游戏内的每个实体均由多种功能模块组合而成。在本案例中,游戏角色、地形模块及敌对单位均通过添加相应组件实现其基础功能。以主角为例,其视觉呈现依赖于精灵渲染组件,二维刚体组件负责模拟物理运动规律,而自定义编写的行为脚本则定义了角色的移动、跳跃及交互响应等核心逻辑。 项目主目录通常包含完整的源代码资源,其中C#脚本构成了游戏行为控制的基石。开发者通过定义“主角控制类”来封装角色的状态管理与动作响应,同时设计“关卡管理类”用于统筹场景布局与进度控制,“道具效果类”则处理角色能力强化等特殊事件。项目说明文档一般会提供详细的环境配置指引与代码结构说明,帮助使用者快速理解项目架构并掌握修改方法。 在Unity中,场景作为游戏世界的容器,承载了所有对象的空间关系与属性配置。本案例可能包含多个独立场景,分别对应不同难度或主题的关卡,每个关卡内均预设了平台排布、敌对单位生成点及通关条件等要素。动画系统的运用进一步丰富了角色表现,通过状态机控制器可实现行走、跳跃、受伤等动作间的平滑过渡。 音效与背景音乐是塑造游戏氛围的关键要素。借助Unity的音频管理模块,开发者能够根据游戏进程动态触发对应的声效资源,重现原版游戏的听觉体验。物理引擎在二维平台游戏中尤为重要,通过为对象添加矩形或圆形碰撞体,可实现精确的接触检测与力学反馈。 总体而言,该案例不仅展示了利用Unity引擎重构经典游戏的技术路径,更为学习者提供了深入理解二维游戏开发流程的实践样本。从脚本编写到系统集成,从资源管理到交互设计,该项目全面呈现了现代游戏开发工具在传承经典玩法过程中的方法论价值,为不同阶段的开发者提供了可借鉴的技术范本与设计思路。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值