Page 103 - 《软件学报》2025年第12期
P. 103
5484 软件学报 2025 年第 36 卷第 12 期
深度学习 深度学习
开发者 开发者
提交作业
EdgeFlow 调度器
作业分析器
集群状态
监测 资源 基于优先级的
分配 GPU 分配算法
作业 拓扑感知的
放置 作业分配方法
弹性训练执行器
云计算服务器 云计算服务器 边缘服务器
···
图 1 云边协同的深度学习作业调度方法 EdgeFlow 系统架构图
3.2 作业执行模型
为了让更多作业在截止期之前完成, EdgeFlow 借助弹性训练 [10,13,15] , 根据开发者所提交的作业的截止期和集
群资源紧张程度实时调整每个作业执行时用的 GPU 数量或使用的资源类型. 因此, 每个作业所使用的 GPU 数量
}
{
和类型在其生命周期中是动态变化的. 本文使用 S i = s 1,i , s 2,i ,..., s u i ,i 表示作业 i 在其生命周期中不同阶段使用的
资源类型. 其中 u i 表示作业 i 生命周期中经历的事件 (新作业到来、作业结束、可用的边缘服务器数量改变) 个
数, 作业 i 在其生命周期经历的第 j 个事件之后的一段时间内使用的资源类型 s j,i ∈{0, 1}. s j,i =0 表示作业 i 在第 j 个
事件之后的一段时间内使用云计算集群中的计算资源, s j,i =1 表示作业 i 在这段时间内只用边缘服务器上的计算资
源. 由于云计算集群和边缘服务器之间的网络带宽较小, 为了高效执行作业, EdgeFlow 只会为作业分配云计算集
群中的 GPU、边缘服务器两种计算资源其中的一种.
{
}
本文使用 A i = a 1,i ,a 2,i ,...,a u i ,i 表示作业 i 的资源分配方案, 即在作业 i 生命周期中不同阶段使用的资源数量.
其中, a j, 表示作业 i 在第 j 个事件之后的一段时间内使用 a j, 个单位 (GPU 个数) 的资源进行数据并行分布式训练,
i
i
a j, 为正整数. 边缘服务器上可能只有一个 GPU, 也可能有多个 GPU, 这些 GPU 未必同时处于空闲状态. 边缘服务
i
器之间的通信带宽较小, 导致使用边缘服务器进行跨机分布式训练的通信开销过大. 因此, EdgeFlow 为了让边缘
服务器上的作业高效执行, 同时统一考虑不同边缘服务器的配置和资源使用情况, 本文较为保守地使用边缘服务
器进行单 GPU 训练、使用云计算集群中的 GPU 进行分布式训练或单 GPU 训练. 因此, 若 s j,i =1, 则 a j,i =1; 若
s j,i =0, a j,i ≥1. 若 s j,i =0, a j, 的取值仍需要满足一些其他的条件: 一方面, 深度学习训练作业使用的资源单位个数较少
i
时, 为保持全局批大小不变, 本地批大小较大; 为避免作业的执行过程中需要每个单位的计算资源提供的内存小于
其内存上限, 深度学习训练作业所使用的资源单位个数不能过小. 另一方面, 在深度学习训练作业使用的资源单位
个数不超过某个数值时, 其使用的资源数量越多, 训练的吞吐率越大; 但在其使用的资源数量超过该数值之后, 由
于多 GPU 和多服务器之间协作进行分布式训练的通信开销较大, 作业的吞吐率反而会下降, 因此深度学习训练作
业所使用的资源单位个数不能过大. 总结来说, a j, 的取值范围为 min(a i )≤a j,i ≤max(a i ), 其中 min(a i ) 为作业 i 训练
i
时不会发生内存溢出错误时使用的资源数量最小值, max(a i ) 为作业 i 的吞吐率随着使用的 GPU 数量增加而增加
时使用的最多的 GPU 数量.
深度学习训练作业往往具有终止条件, 例如: 累积训练的批 (iteration) 数量不超过某个最大值、损失值 (loss)
不超过某个指定的数值等. 为了防止因模型训练不收敛导致训练作业永远不会停止, 对于作业 i, 深度学习开发者

