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, 深度学习开发者
   98   99   100   101   102   103   104   105   106   107   108