基于模型划分的云边协同推理算法

摘要

在网络状态和任务需求的动态变化下,为减少模型推理时延和计算成本,在软件定义网络( Software Defined Network,SDN) 中提出了一种基于模型划分的云边协同推理算法。通过构建复杂度预测器分配任务执行环境,采用深度Q网络(Deep Q-network,DQN) 算法对边缘环境中的推理模型进行自适应划分与卸载;以及用SDN技术从全局感知推理任务与网络资源,实现动态网络环境下网络资源的合理分配。试验结果表明:SDN中基于模型划分的云边协同推理算法具有良好的收敛能力,在动态环境中具有较好的鲁棒性。与现有的推理算法相比,该算法能够在合理分配计算资源的前提下,满足协同推理低时延的目标要求。

引言

深度神经网络(Deep Neural Network,DNN) 是计算密集型网络在依靠单一的云端或边缘节点执行推理任务时,会造成推理时延难以预测、推理性能明显下降等问题[1]。为解决此类问题,众多云边协同处理方案应用而生,如基于云边协同的分布式推理算法,通过将部分推理任务分配到边缘节点以缓解云端的负载压力,从而达到推理低时延、高可靠性的目的。而在实际的应用场景中,如何在网络状态和任务需求动态变化下协同多个边缘节点合理分配推理任务,实现边缘集群与云端协作以优化推理时延和负载均衡是一个值得深入研究的问题[2]。

目前,已有大量的研究来加速DNN模型推理,例如将云计算环境中的推理计算问题建模为最短路径和整数线性规划问题并结合模型压缩方法以减少通信成本[5];针对模型划分方法,以DNN模型每层的神经元为单位,采用深度强化学习(DeepReinforcement Learning,DRL) 自适应卸载策略在各个物联网设备上完成运算,实现在资源受限的物联网设备上低时延的推理目标[6]。以上方法虽然有效降低模型的推理时延与资源需求,但可能会带来模型推理精度的损失。因此,如何在网络状态和任务需求的动态变化中寻找最佳划分点是我们研究的目标。

随着深度强化学习被广泛应用于感知决策领域,通过与网络环境的不断交互来实现优化目标的最优策略[7-8]; SDN 则可以通过控制器获取实时网络状态信息,从而更加灵活地控制网络、提高网络性能[9]。本文结合SDN 技术提出了基于模型划分的云边协同推理算法(Cloud-Edge collaborative inference algorithm based on model partition in SDN,SDNCEP) ,以优化推理时延和网络资源的合理利用。通过将DNN模型分别部署在云边端中,并设计任务预测器决策任务的执行环境。边缘环境中协同多个计算节点参与DNN推理,以解决单一节点算力不足的问题,并结合深度强化学习中的DQN算法实现推理模型的自适应划分与卸载。SDN-CEP 算法结合SDN 技术从全局感知推理任务与网络资源信息,通过协同架构的南向接口屏蔽边端设备之间的差异,使用全局视图进行网络资源管理,并通过边端控制器的北向接口按

云边协同模型架构推理结合了云计算和边缘计算的优势,其原理、方法和应用如下: ### 原理 云边协同推理的原理基于对云计算和边缘计算各自劣势的改进。云计算将DNN卸载到云端执行,推理性能受限于网络传输速率;边缘计算的推理性能受限于边缘服务器的计算能力。而协同计算在这些方面劣势不明显。在SP协同环境中,算法将SDN技术与深度强化学习相结合,通过SDN控制器的南北向接口连接云和边,实现云边环境的协调控制,从全局感知资源信息进行合理分配,并通过全局视图来反映网络资源的动态变化,以此来支撑大模型推理 [^1]。 ### 方法 - **模型划分与卸载**:结合SDN技术与深度强化学习处理模型划分与卸载问题,根据全局资源信息,将大模型的不同部分合理分配到云端和边缘端进行处理,以优化推理性能 [^1]。 - **多协同方式**:边云协同包括资源协同、应用协同、数据协同、智能协同等多种协同方式,通过这些协同方式充分利用云计算和边缘计算的优势,满足大模型推理的需求 [^2]。 ### 应用 - **计算密集型任务处理**:在网络资源限定的条件下,模型推理时延与其本身的复杂程度呈正相关,面对计算密集型神经网络任务,利用协同环境处理是必要的,云边协同模型架构推理可以更好地应对此类任务 [^1]。 - **现代应用场景**:边云协同架构是一种新兴的计算模式,旨在充分利用云计算和边缘计算的优势,以满足现代应用对大模型推理的需求 [^2]。 ```python # 以下为一个简单示意代码,模拟云边协同推理中资源分配的部分逻辑 # 假设资源信息用字典表示,key为资源类型,value为资源量 cloud_resources = {'cpu': 100, 'memory': 200} edge_resources = {'cpu': 20, 'memory': 50} # 大模型任务对资源的需求 model_task = {'cpu': 30, 'memory': 60} def resource_allocation(cloud_resources, edge_resources, model_task): # 简单的资源分配逻辑,优先在边缘端分配,如果不够再从云端分配 if edge_resources['cpu'] >= model_task['cpu'] and edge_resources['memory'] >= model_task['memory']: edge_resources['cpu'] -= model_task['cpu'] edge_resources['memory'] -= model_task['memory'] print("任务分配到边缘端执行") else: remaining_cpu = model_task['cpu'] - edge_resources['cpu'] remaining_memory = model_task['memory'] - edge_resources['memory'] if cloud_resources['cpu'] >= remaining_cpu and cloud_resources['memory'] >= remaining_memory: cloud_resources['cpu'] -= remaining_cpu cloud_resources['memory'] -= remaining_memory edge_resources['cpu'] = 0 edge_resources['memory'] = 0 print("任务部分在边缘端执行,部分在云端执行") else: print("资源不足,无法执行任务") return cloud_resources, edge_resources cloud_resources, edge_resources = resource_allocation(cloud_resources, edge_resources, model_task) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马不常有

整理不易,点滴助力就是不竭动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值