Page 106 - 《软件学报》2025年第12期
P. 106

谷典典 等: 云边协同的深度学习作业调度方法                                                          5487


                    最后, 如果云计算集群中仍有没有被利用的              GPU  资源, 在不会让已有作业的训练速度变慢的情况下, EdgeFlow
                 进一步将这些     GPU  资源分配给云计算集群中的作业, 加速这些作业的执行, 从而使系统能够容纳更多的未来到来
                 的作业. 在这一过程中, EdgeFlow     采用已有工作     [13]  的资源分配算法, 将剩余的     GPU  分配给  GPU  资源利用率更高
                 (即新增加一块     GPU  后, 节省的作业完成时间最长) 的作业, 从而高效利用这些              GPU  资源.
                    在每次调度事件发生并进行再调度时, 状态如何保存取决于弹性训练执行器的实现. 一种实现方式是将被调
                 度的作业的状态      (即深度学习模型的权重数据、优化器状态等) 以               checkpoint 文件格式或其他格式保存至云计算
                 集群存储, 或云计算集群和边缘服务器均可访问的远程存储. 这种作业迁移方法的开销较大. 若作业不在云计算集
                 群和边缘服务器之间迁移, 仅在云计算集群内部迁移, 则弹性训练执行器可以将作业状态保存至内存. 这种作业迁
                 移方法的开销较小. 如果使用第          1  种状态保存方式, 被迁移作业的目标服务器上的训练进程可以从云计算集群存
                 储或远程存储中读取作业状态, 将之前训练的中间状态加载至训练进程中, 并从该状态开始继续训练. 如果采用
                 第  2  种状态保存方式, 被迁移作业的目标服务器上的训练进程可以和原服务器建立通信连接, 从原服务器接收作
                 业状态数据. 本文将在第       5.3  节分析作业迁移的时间开销.
                  4.3   云边协同的深度学习作业分载算法

                    由于不同的作业在不同硬件上的吞吐率表现差异较大, EdgeFlow                  设计分载算法, 在每个作业根据最小满足份
                 额得到了初步资源分配方案后, 选取部分作业, 将其迁移至边缘服务器执行. 这一过程中对作业的选取遵循                              3 个规则.
                    (1) 在云计算集群和边缘服务器之间进行作业迁移具有较大的时间开销, 为了避免对同一作业进行反复迁移
                 并减少迁移次数, EdgeFlow    优先让已经被分载到边缘服务器的作业保留在边缘服务器上执行.
                    (2) 云计算集群中有的作业即使在边缘服务器上以较慢的速度执行, 也可以在截止期之前完成. 如果在执行规
                 则  (1) 后, 仍有空闲的边缘服务器, 那么       EdgeFlow  会将这样的作业迁移至边缘服务器上执行. 这样既能保证这些
                 作业满足截止期需求, 也能为其他作业留出云计算集群资源, 从而加速留在云计算集群中的作业的执行, 部分原本
                 因集群资源紧张而无法在截止期之前完成的作业可能因此满足了其截止期需求. 我们将这些作业的集合记为
                 J edge . 然而, 如果在将  J edg 中的作业分载之前, 云计算集群中仍有空闲的         GPU  资源, J edg 中的作业不会被分载至边
                                                                                   e
                                    e
                 缘服务器. 根据第     4.2  节, 资源分配步骤中的第     1  步完成后云计算集群中仍有空闲的           GPU  意味着即使为不满足截
                 止期的作业再增加       GPU  也无法提升吞吐率, 作业分载节省下的           GPU  同样不会使更多的作业满足截止期. 因此, 是
                 否将  J edg 中的作业分载至边缘服务器取决于云计算集群中是否有剩余计算资源: 如果有剩余的计算资源, 将                             J edge
                       e
                 中的作业保留在云计算集群中不仅能保证这些作业满足截止期需求, 还能使得这些作业更早完成. 值得注意的是,
                 只有内存需求不超过边缘服务器可提供的内存的作业可以被分载至边缘服务器.
                    (3) 如果在执行了规则      (2) 之后, 仍有剩余的边缘服务器, EdgeFlow       仍可能选取部分作业迁移至边缘服务器.
                 这是因为, 对于一些作业来说, 即使进一步增加其使用的计算资源数量, 其完成时间不会有较大的改变, 仍无法满
                 足截止期需求; 而对于另一些作业来说, 如果进一步增加其使用的计算资源数量, 其完成时间可能明显更接近截止
                 期, 甚至可能满足截止期需求. 因此, 如果将很难满足截止期需求的作业迁移至边缘服务器, 并用曾经分配给这些
                 作业的资源加速留在云计算集群中的作业, 可能进一步提升截止期满足率. 本文根据不同作业特点, 定义作业“云
                 资源使用优先级”为当下时刻为作业            i 多分配一个   GPU  之后其完成时间与截止期的距离:

                                                 priority i = ddl i −end_time(i, ˜ A i )              (7)
                         {
                                      }
                 其中,   ˜ A i = a 1,i +1,a 2,i ,...,a ˜u i ,i  表示作业  i 从此刻开始到下一个事件到来之前, 比原资源分配方案多使用一个  GPU,
                 因为这一段时间内作业        i 的吞吐率增加, 其完成时间会提前, 因此其生命周期中经历的事件数量可能有所变化, 本
                                                                                     ˜ u i end_time(i, ˜ A i ) 为作业
                 文将作业   i 在第  1  个事件到来前多使用一个       GPU  后其生命周期中经历的事件个数记为  .                             i
                                                        ˜ A i  之后的预计完成时间. 云资源使用优先级的计算过程如算法
                 不再使用的资源分配方案         A i , 而使用资源分配方案                                                   1
                 所示. priority i ≥0  代表作业  i 使用资源分配方案   ˜ A i  后可以满足截止期需求; priority i <0  代表作业  i 使用资源分配方
                   ˜ A i  后仍然不能满足截止期需求; priority i >priority j 代表作业  i 多使用一个  GPU  后的完成时间比作业    j 多使用一
                 案
                 个  GPU  后的完成时间更可能满足截止期需求.
   101   102   103   104   105   106   107   108   109   110   111