1. 引言
在近年来的工业物联网领域,工业软件组件凭借其模块化设计、可重用性和灵活性,极大地促进了制造业的数字化进程。在过去以云为中心的计算架构中,组件任务工作流部署到云,利用其强大算力对数据进行分析处理。但在面对新兴应用,如VR/AR、自动驾驶、3d同步定位和地图(SLAM)等需要更多低延迟处理需求资源时,传统的云计算不再具有优势[1]。
边缘计算作为云计算的补充,正逐步成为实现低延迟、高效率数据处理的新范式[2]。通过将计算能力下沉靠近数据源,不仅能够缩短数据传输路径,减少响应时间,还为工业软件组件任务的实时数据分析与决策提供了有力支撑[3] [4]。所以如何在异构的边缘环境中对工作流进行高效部署调度,同时能够适应动态环境,成为了当前研究的热点和难点。
工业应用程序在部署之前需要将其划分为不同的任务组件,并在异构边缘节点上编排和部署这些任务,这给研究带来了许多挑战。本文通过采用应用程序分区、节点资源抽象化以及深度强化学习等方法的集成对目标进行优化,将计算密集型或时间敏感型任务部署到合适节点,对不同硬件架构和能力的节点资源进行抽象化建模,以通用的指标体系来表达其计算、存储及通信能力,基于SAC算法对部署模型进行训练,平衡资源利用与任务时延[5]。
针对这些做法,我们提出了一套解决方案,通过预分析确定任务组件资源需求,采用MO-SAC算法合理化资源分配,优化任务部署策略,以平衡任务处理时间和资源利用率。除此之外,本文还构建了集成Prometheus的资源监控系统,实时反馈边缘集群信息,确保集群稳定运行并进行动态调整,提升系统负均衡性衡与可靠性。具体的系统架构图如图1所示。
Figure 1. System framework
图1. 系统框架
2. 相关工作
边缘计算的广泛应用为工业物联网开辟了新的可能性,但也带来了新的问题。由于边缘节点的计算和存储资源与云相比[6]相对有限,因此迫切需要有效利用边缘资源。传统调度策略常根据单一指标进行部署,当面临复杂的工业软件组件时无法做到兼顾,效率低下。如何高效部署任务组件以充分利用异构资源、处理组件间复杂的逻辑关系与实时性要求、在动态变化的环境条件下寻求任务处理时延和节点资源消耗的最优解衍生出两个任务部署的关键问题:部署模型和优化算法。
2.1. 部署模型
文献[7]提出了一种通用的在线调度模型,以最小化任务卸载到边缘设备时的任务响应时间。基于Lyapunov优化,文献[8]提出了一种基于通信模块和计算模块的排队模型与延迟模型用于公式推导,以最小化通信延迟和计算延迟。文献[9]提出了一种在MEC系统中联合协同任务感知部署的模型,目标是最小化平均协同任务完成时间,并在测试平台证明了提出的解决方案的有效性。这些方法基于理想的数学模型,虽然面向这些模型的算法可以取得良好的效果,但在节点负载与资源需求变化的动态环境中适用性依然不高。
2.2. 优化算法
文献[10]提出了一种利用强化学习解决异构分布式资源的工作流调度方案,在一定程度上减少了任务执行时间。文献[11]研究了多用户边缘计算环境中的工作流调度问题,并提出了一种基于深度Q网络(DQN)的多工作流调度方法,该方法能够处理边缘服务的时变性能。文献[12]提出了一种针对物联网边缘计算系统的资源分配策略,将资源分配问题抽象化为马尔可夫决策过程,利用改进的DQN来学习策略,能以更短的完成时间和更少的请求资源优于其他参考策略。
2.3. 总结
如上文所述,边缘计算上的任务部署从优化问题、模型再到优化算法逐步结合人工智能优化部署方案,可以看到有些工作关于资源分配的颗粒度较粗,优化目标单一,算法相对落后。针对这些不足和有待改进之处,本文提出了一套优化多目标决策的部署方案,通过预分析确定任务组件资源需求,采用MO-SAC算法合理化资源分配,优化部署策略,以平衡任务处理时间和资源利用。
3. 模型
3.1. 模型构建
在介绍任务模型之前,以图2的物块自动分拣应用程序为例,将其分解为若干个具有数据依赖和执行依赖关系的子任务:相机处理,物体检测,基于外观的实时映射、机械臂移动和放置。
Figure 2. Automatic block sorting application based on 3D vision
图2. 基于3D视觉的物块自动分拣应用程序
本文使用了两种异构边缘节点以不同配置对任务延迟进行剖析,得到如图3所示的任务预分析结果。
Figure 3. Delay of application tasks under different configurations
图3. 应用程序任务在不同配置下的时延
从图中可以得出,像这种缺陷检测和形状识别等需要用到视频处理算法的任务是应用程序性能在延迟方面的主要瓶颈,随着资源配置的降低,延迟还会变得更高。
3.1.1. 任务模型
假设一个应用程序A可以在系统中被划分为M个任务
,系统在每个时间周期
中优化任务序列调度。每个任务
可以如式(1)这么表述:
(1)
其中
表示任务
从其直接前置任务接收的输入数据大小,
表示任务
的输出数据的大小,
表示任务预分析之后形成的任务类型,引入
是为了给分区之后的任务做标识,便于后续的任务类型区分,并且进一步定义了任务依赖图。
由多个依赖任务组成的应用程序通常可以用DAG图来表示,
,其中
,
表示所有的分区任务,
表示任务与任务之间的通信依赖或约束集合,每条有向边
则代表任务
必须在任务
完成后才能执行。
3.1.2. 系统模型
假设由K个异构的边缘节点构成一个边缘集群E,
,边缘节点之间的连接可以用
来表示,其中
,
表示所有边缘节点的集合,边缘节点之间通过有线链路连接,
表示边缘节点之间的通信链路,
则表示边缘节点
和
之间可以互相通信。
用S代表边缘节点DAG的混合调度策略,S是一个元组。假设在一个时间周期
内,用
代表任务
的调度策略,因为每个任务只能选择一个节点部署,所以有
。综合来讲,
可用式(2)表示:
(2)
3.2. 任务时延
编排策略
第一个任务
的部署延迟如式(3)所示:
(3)
其中网络传输延迟
可以用
表示,
代表平均可用带宽,而
则是获取执行任务需要的前置资源时间,
是任务实例化、加载依赖项、环境配置等初始化步骤所需的时间。
任务执行时间与任务的复杂度和当前边缘节点k的计算能力有关。首先对任务的复杂度
进行建模如式(4)所示:
(4)
其中,
是任务的计算密度,通常用Flops/Byte(每字节浮点运算次数)来表示,
表示任务的操作数,
表示边缘节点k的计算能力。
通过引入计算资源的抽象特性,我们可以将边缘节点k的计算能力
描述如式(5):
(5)
计算能力
用设备的CPU/GPU频率、核数和指令集等指标来衡量,存储能力
用设备的内存容量和存储速度来衡量,节点带宽
可以用设备与云端或其他设备之间的网络连接速度和带宽来衡量。综合上述的计算资源和网络资源,对于任务
,它的执行时间如式(6):
(6)
我们假设任务
的起始时间为
,部署到服务器后的结束时间为
。它们可以从首要任务递归计算到最终任务,如式(7)、(8)所示:
(7)
(8)
在DAG模型中,工作流任务应用程序的整个时间延迟是指从初始任务开始到最终任务完成的时间段。在所有任务被映射并部署到不同边缘节点后,完成一个工作流任务的时间延迟如式(9):
(9)
3.3. 资源消耗
假设
代表处理应用程序A中所有任务的总成本,而
表示在边缘节点k上处理任务
的成本。我们将边缘节点的可用资源分为CPU/GPU资源和内存资源两种,在处理每个任务的过程当中,都会对这些资源造成不同程度的消耗。
3.3.1. CPU/GPU
假设边缘节点k的CPU利用率为
,那么节点k处理任务
所消耗的CPU资源如式(10)所示:
(10)
其中,
表示边缘节点k上的CPU的时钟频率,
指边缘节点k上的CPU的核数。所以,边缘集群系统中的所有CPU资源消耗可以描述为如式(11)所示:
(11)
同理,边缘节点k上任务
的运行时间为
,节点k处理任务
所消耗的GPU的资源
可以用式(12)表述:
(12)
其中,
代表边缘节点与硬件工艺相关的常数,
表示节点上的GPU的工作频率,而
则是指节点上的GPU的时钟频率。所以,边缘集群系统中的所有GPU资源消耗可以描述为如式(13)所示:
(13)
3.3.2. 内存
将任务
部署到边缘节点k上以后,节点k所消耗的内存资源
可以采用在时间序列上的内存占用积分来反映一段时间周期
内系统的资源消耗情况,如式(14)所示:
(14)
其中
代表系统进程中内存占用量随时间变化的函数,
代表边缘节点运行时的固定开销,所以整个边缘集群系统的资源消耗
可以表示为式(15):
(15)
根据上述时间延迟模型和资源消耗模型要求,我们可以将工作流任务部署问题表述为多目标约束优化问题如式(16)所示:
(16)
其中,
是处理应用程序A的总成本,由每个边缘节点的资源消耗构成,包括CPU/GPU和内存资源的使用。
是处理应用程序A的总延迟,以上所有优化目标的数据均在一个时间周期
内完成。
4. 方法
4.1. 任务资源估计
本文在实际部署之前提出了一个预分析阶段,将边缘节点Jetson nano的CPU利用率设置为10%到90%,拟合测量值的置信带,提供区间估计并预测不确定性范围。在该模型中,我们将处理器的CPU资源利用率和任务作为输入,并给出任务的处理时间估计,得到结果如图4所示。
Figure 4. Task processing time estimates
图4. 任务处理时间预估计
4.2. 集群资源监控
本文利用Prometheus的优势和性能结合设计的集成控制组件,实现了集群资源监控模块采集、存储和查询各节点的性能指标、任务状态和可用资源等功能。通过对边缘集群的资源监测,有效提高系统容错能力,迅速响应系统故障,降低资源消耗。
4.2.1. 监控采集
数据汇总模块SD Client从边缘集群系统中采集硬件资源信息HIS (Hardware Resource Information)和软件资源信息SSI (Software Resource Information)后,以K/V的形式发送给集成控制件,之后再经集成控制件的转换模块FC将数据转换为时间序列数据形式。集成控制件还会暴露一个HTTP接口供查询,Prometheus的数据采集模块DC通过基于HTTP的pull方式来周期性的拉取数据。集成控制件和集群系统以及Prometheus的数据流向接口如图5所示。
Figure 5. System data flow direction
图5. 系统数据流向
4.2.2. 信息交互
本文定义了传输协议MWP (Monitoring and Warning Protocol)来实现交互功能。集成控制件通过将获取的数据信息以MWP协议封装后传输给Grafana,用户可在交互界面上与系统进行交互。协议格式如图6所示。
Figure 6. System data flow direction
图6. 协议格式
MWP协议以四元组形式M (
,
,
,
)表示,Data字段核心内容为主要传输数据。其中:
代表节点的IP地址;
代表节点的资源类别,分硬件资源和软件资源;
代表节点状态,分为正常状态和故障状态;
代表监控指标的具体值。
4.3. 任务编排调度
强化学习中的SAC算法结合了策略梯度和Q-learning的方法,并通过最大化策略的熵来鼓励探索。与传统的Actor-Critic算法相比,SAC算法在处理连续和离散动作空间以及稳定学习方面具有优势[13]。因此,本文开发了一种基于SAC的MO-SAC算法,以实现最优工作流调度结果。
4.3.1. 问题转化
在本文中,时间以固定的时隙持续时间划分。整个任务部署过程,从发出请求到获得最终结果,持续
个状态。t表示时刻,
。
第一,关于状态空间。对任意时刻t所处的系统状态描述如下:
(17)
(18)
其中
是一个
的矩阵,
代表t时刻接收任务
的边缘节点k的网络带宽,
是指边缘节点k的计算能力,
包含工业物联网应用程序的DAG内要处理的当前任务
的信息,
,
代表每一个边缘节点k的系统配置。
第二,关于动作空间。本文设计一个混合动作空间来描述这种决策结构[14],将动作空间定义为一个高维向量,动作的选择决定了两个相邻系统状态之间的转移规则,我们将任务
的编排决策定义为代理做出的动作如式(19)所示:
(19)
首先,为节点选择这个离散动作设计一个连续的概率分布向量
,可以通过一个原始向量
计算得到,其中
表示原始的未归一化得分,K是边缘节点的数量。用
函数将其转换为概率分布:
(20)
其中,
表示选择第k个节点的概率,且满足
。
对于选定的节点,假设每种资源的比例分配由三维向量
(
分别对应CPU/GPU和内存)。
为了确保资源分配总和不超过1,考虑一个原始向量
,通过软约束方法来控制总和,在强化学习环境中比较常见的一种是直接在策略网络输出后通过后处理来保证位于预设的区间内,如式(21)所示:
(21)
综合以上两部分,最终的混合动作空间
可以用式(22)表示:
(22)
其中,
是离散动作空间,
是连续动作空间,z和b由策略网络直接输出,通过后处理转换为有效动作空间中的动作。
第三,关于奖励函数。本文设计了一种综合考虑了处理执行时间、资源消耗与负载均衡、任务优先级等三个性能指标实现系统优化奖励函数。
执行时间奖励函数时采用了饱和函数,用来反映随着任务的执行时间减少,边际收益递减的情况,如式(23)所示:
(23)
上式中,
是一个正参数,代表时间收益的饱和程度。当
较小时,收益增加显著;随着
减小,收益增加速度放缓。
本文通过引入各节点资源使用率的标准差
来直接反映负载均衡的状态,同时考虑单个节点的极值惩罚项来鼓励更加均匀且高效的资源分配,如式(24):
(24)
其中,
是负权重,
是调整参数,控制极值惩罚的强度,
是边缘节点
的工作负载,
是边缘集群系统的平均工作负载。
为了更精确地反映优先级和等待时间的关系,本文使用sigmoid函数,以体现优先级任务及时处理的紧迫性,如式(25):
(25)
其中,
是调整参数,
是指数衰减因子,
是任务
的优先级,
是任务的等待时间,
是一个阈值,超过这个阈值的等待时间,高优先级任务的奖励迅速下降。
4.3.2. 策略函数
在MO-SAC算法中,我们为两个动作价值函数
(参数分别为
和
)和一个策略函数
(参数为
)建模[15]。基于Double DQN的思想,SAC使用两个
网络,但每次用
网络时会挑选一个
值小的网络,从而缓解
值过高估计的问题。任意一个函数
的损失函数如式(26):
(26)
其中,R是策略过去收集的数据。为了让训练更加稳定这里使用了目标Q网络
,同样是两个目标Q网络,与两个Q网络一一对应。
策略的损失函数由KL散度得到,化简后为:
(27)
对于连续动作空间的环境,SAC算法的策略输出高斯分布的均值和标准差,但是根据高斯分布来采样动作的过程是不可导的。所以需要用到重参数化技巧,先从一个单位高斯分布N采样,再把采样值乘以标准差后加上均值。这样就可以认为是从策略高斯分布采样,并且这样对于策略函数是可导的[16]。我们将其表示为
,其中
是一个噪声随机变量。同时考虑到两个函数Q,重写策略的损失函数如下:
(28)
在初始化阶段,MO-SAC定义了策略网络(参数为
)以及一对Q价值网络(参数分别为
和
),工作流应用程序中的每个任务根据策略
选择混合动作
,动作价值函数
衡量状态
下当前动作
的质量。训练循环阶段始于采样环境交互数据,利用策略
在环境中执行动作并收集当前状态、动作、奖励函数以及下一个状态作为一个四元组
存放到经验回放池。这些样本随后被用于策略更新及价值函数的学习。
5. 实验
5.1. 实验设置
在本节中,我们用数值结果验证了提出的MO-SAC算法部署工作流的性能。MO-SAC的神经网络是由一个输入层(
神经元)、两个隐藏层和一个输出层(
神经元)组成的。
和
分别是状态和动作的维度空间。激活函数采用Sigmoid函数。该奖励效用在一个Episode中累积,在进行2000个学习片段后进行收集,将MO-SAC算法的学习率和衰减率分别设置为0.0001和0.5。温度系数
参照采用自动确定的方法。采用自适应贪心算法,避免在模型有足够的学习经验之前陷入次优策略。贪心因子最初设置为0.9,然后呈指数衰减,直到达到0.05。
本实验数据通过实验室自主研发的工业软件实训平台设备采集。平台主要由UR机械臂、机械臂末端执行器(主要为不同类型夹爪)、Hikvision视觉相机以及针对不同工业应用场景的专用设备组成。实验于2024年10月至11月在信息物理融合系统实验室进行,共从四个边缘节点组成的边缘集群中采集节点资源利用率、任务处理时延等原始数据500组,剔除因网络异常、设备故障等导致的异常值后,保留有效数据447组。数据处理采用python3.8中的pandas库进行缺失值插补和归一化。
5.2. 训练表现和收敛性
Figure 7. Convergence performance of different algorithms
图7. 不同算法的收敛表现
为了验证算法的有效性和泛化能力,我们首先进行了不同初始状态的实验。图7比较了三种算法的训练集获得的平均累积收益。在训练初期,策略更新很快,收益在每次迭代之间的波动较大。随着时间推移,收益逐渐收敛到稳定的值。MO-SAC在第920个Episode左右收敛到11,平均累计收益最高。
我们还研究了梯度下降训练的学习因子对系统性能的影响,如图8所示,随着学习率的提高,收敛速度更快。学习率低导致收敛速度慢,使代理无法从经验中学习。然而,快速收敛会导致较大的波动,并可能导致代理陷入局部最优而错过更好的策略。因此,在设置学习率时,不宜过高或过低。
Figure 8. Convergence performance of MO-SAC at different learning rates
图8. MO-SAC在不同学习率下的收敛表现
5.3. 集群负载均衡
本文比较了三种算法(DDPG、AC、MO-SAC)在边缘集群中的CPU和GPU负载情况。图9和图10通过采集每隔一定时间的集群资源负载信息展示CPU和GPU利用率的离散程度,MO-SAC算法箱体间距最小,在整个实验期间的CPU和GPU利用率最高且最为均衡。
Figure 9. CPU load information
图9. CPU负载信息
Figure 10. GPU load information
图10. GPU负载信息
为了进一步量化负载的均衡性,我们计算了每种算法在CPU和GPU上的负载标准差,如表1所示。从表中可以看出,MO-SAC算法在CPU和GPU上的负载标准差均低于DDPG和AC算法。这表明其能够更有效地分配计算资源,从而提高负载均衡,这得益于其高效的策略更新机制和资源分配策略。
Table 1. Standard deviation of three algorithms
表1. 三种算法的标准差
Standard Deviation |
CPU Usage |
GPU Usage |
DDPG |
0.1511 |
0.1424 |
AC |
0.1866 |
0.1535 |
MO-SAC |
0.1237 |
0.1376 |
5.4. 多维度评估
Figure 11. Total time consumption in multiple dimensions
图11. 多维度下总时间消耗
Figure 12. Total resource consumption in multiple dimensions
图12. 多维度下总资源消耗
本文比较了三种算法在不同工作流数量下的总处理时间和总资源消耗。从图11可以看出,MO-SAC算法在所有工作流数量下的总处理时间均显著低于DDPG和AC算法。类似地,图12显示其在总资源消耗方面也表现出色,其总资源消耗始终低于其他两种算法。当工作流数量为1时,任务处理时间比DDPG和AC算法分别降低了8.68%和18.65%,总资源能耗分别降低了15.96%和21.93%。实验结果表明,MO-SAC算法在处理时间和资源消耗方面均优于其他两种,尤其是在资源受限的环境中,SAC算法能够提供更高的处理效率和资源利用效率。
6. 结语
本文研究了面向工业软件组件在边缘集群中的工作流任务部署调度问题。我们通过对边缘集群、工作流任务以及优化目标等进行数学建模,将任务部署调度问题抽象为多目标优化问题。接着进一步研究了基于MO-SAC的算法来寻找解决方案,利用深度强化学习进行离线训练,不断更新部署策略。最后,我们通过设置的对比实验来验证所提出方案的有效性。
我们的方法存在一些缺点。针对工作流任务部署性能的影响因素,除了直观的资源供给、任务量和算法效率,还能考虑节点动态性与可靠性、工作流复杂程度以及数据传输等因素。在后续工作中,我们将探索强化学习驱动的动态调度,结合边缘节点的实时状态预测,构建端到端智能决策模型。
基金项目
国家自然科学基金项目(U20A600004):广东省信息物理融合系统实验室。