1.introduction

首先,集群作业必须扩展到数百个作业,数千个机器,,必须在每个作业的数百种配置中做出决定,这导致了更大的问题规模
第二,传统的反向学习算法不能训练具有连续流作业到达的模型,工作到达的随机性使得RL算法无法判断两个决策的观察结果是由于不同的工作到达时间还是由于策略的质量不同;另外,RL在训练的早期必然会做出错误的决定,因此我们在一开始应该使用简短的工作序列,然后逐步增加他的长度
总结,我们做了以下贡献:
(1)可扩展的神经网络设计可以处理任意大小形状的DAG,并为每个作业设置有效的并行级别
(2)RL第一次训练调度来处理无限的随机工作到达序列
(3)Decimal是第一个基于RL的调度器,,可以调度复杂的数据处理作业,学习在没有人工输入的情况下特定于工作负载的调度策略
(4)Decimal与集中调度算法的比较

2.Motivation

在调度策略中使用作业特定信息的挑战

2.1

(1) 依赖感知任务调度
DAG调度问题是困难的
设计一种算法为所有可能的DAG组合生成最优调度是难以解决的

2.2

(2) 设置正确的并行度
理想的调度程序还必须了解如何在作业之间有效的分隔有限的资源

2.3 spark案例的解说

为了得到最佳的性能,还需考虑执行顺序,避免资源碎片, FIFO,SJF,Fair,Decimal,,测量了十项工作的平均完成时间(JCT)

3,spark中DAG调度问题

Decima是学习DAG结构调度算法的通用框架。
一个spark包含一个DAG,其节点是作业的执行阶段,每个阶段代表一个操作,
输入是一个或多个父节点的输出
一旦所有的副阶段完成,阶段的任务就可以运行
有多少任务可以运行取决于改作业包含的执行程序的数量
因此,spark必须要处理三种调度决策:
(1)决定每项工作有多少执行者
(2)决定每个作业下一步运行哪个阶段的任务
(3)当执行器空闲时,决定下一步运行那个任务

4,概述和设计挑战

Decimal将调度器表示为一个agent,使用神经网络来做出决策
在调度事件中,例如阶段完成(释放调度器),作业到达(添加DAG),agent将集群的当前状态作为输入,并输出调度操作。
Decima在每次工作后像agent提供奖励,RL算法利用这个奖励信号来逐步改进调度策略,
Decima的设计解决了三个关键挑战:
(1)可扩展的状态信息处理
调度器必须考虑大量的动态信息来做出调度决策:数百个作业DAG,每个DAG有几十个阶段,执行器,每个执行器可能处于不同的状态(分配不同的作业),通过神经网络处理这些信息具有挑战性
(2)调度决策的巨大空间
调度器必须将数千个可运行的阶段映射到可用的执行器,映射的指数级大空间对RL算法提出了挑战
(3)连续随机工作到达的训练
Rl算法通常在有效的时间范围内训练“片段”,所以工作到达的随机性给RL训练带来了困难,因为他增加了奖励值的偏差和报酬

5.设计

5.1 可扩展的状态信息处理

在每次状态观察中,Decima必须将状态信息(job DAG和执行者状态)转化为特征以传递给策略网络
一种选择是创建包含所有状态信息的平面特征向量,然而这种方法不能扩展到任意大小形状,任意数量的DAGs,即使有对作业和阶段数量的硬性限制,处于高维的特征向量将需要很难训练的大型策略网络
Decima使用图神经网络实现可伸缩性,该网络编码或嵌入状态信息(作业阶段的属性,DAG依赖结构)在一组嵌入向量中。我们的方法是基于图形卷积神经网络
图形嵌入将作业数据组作为输入,其节点携带一系列阶段的属性(剩余任务数,预期任务持续时间),输出三种不同类型的embedding:
(1)每节点嵌入,捕捉节点及其孩子的信息(包含例如沿着从节点开始的关键路径的聚合工作)
每作业节点嵌入
Evi是向量,为了去计算向量,decima在一系列message passing中将信息从孩子节点传递到父节点(从DAG的叶子节点开始),在每个message passing中,一个节点v,它的孩子节点聚合来自所有孩子节点的信息,计算evi公式如下:
,其中f(),g()是向量输入上的非线性转换,ξ(v)表示v的孩子的集合,
我们发现加上第二非线性变换g()对于学习强调度策略至关重要,原因是没有了g(),图神经网络不能计算特定的调度特征(不能计算DAG的关键路径)
(3) 每个作业嵌入,聚合整个DAG的信息(包括作业中的总工作量)
图神经网络还为每个DAG计算所有节点嵌入的总和(即每作业嵌入和全局嵌入)
(4) 全局嵌入,(包含每工作嵌入组合成集群摘要的信息),包含作业数量和集群负载
为了去计算这些嵌入,decima向每个DAG添加了一个总结点,(下图的黄色方框),这些汇总节点的嵌入也使用evi的公式来计算,每一级都有自己的非线性转换f和g,图神经网络总共使用6个非线性转换,

在这里插入图片描述
重要的是,在这些嵌入中存储信息不是硬编码,通过端对端的学习,decima自动学习什么是统计上重要的,以及如何从DAG输入中计算他,嵌入被认为是神经网络在没有手动特征工程情况下学习计算的特征向量,decima的图神经网络是可以扩展的,因为它重利用了一些常用的操作,如设置封锁计算上述的嵌入,

5.2,将调度决策编码为动作(编码调度决策作为动作)

编码调度决策时关键挑战在于处理大型动作空间的学习和计算复杂性
一种方案:在5,1的嵌入中,一次性返回所有执行者到作业阶段的分配,这种方法必须从指数级的大量组合中选择动作,
另一种方案:每车次执行器变得可用时调用调度agent来选择一个阶段,这种方法具有很小的动作空间,但是他需要很长的操作序列来调度给定的一组作业,在神经网络中,大的动作空间和长的动作序列都会增加样本的复杂性,减慢训练的速度,因此:
Decima通过调度策略分解为一系列的二维动作来平衡动作空间的大小和动作的数量,这些二维动作输出
(i) 下一个要调度的阶段
(ii) 该阶段作业的执行器数量的上限
调度事件
当:
(1)一个阶段用完任务
(2)一个阶段完成,解锁他的一个或多个子阶段任务
(3)一个新的任务到达系统
时调度事件发生
在每个调度事件中,agent在一个或多个动作中调度一组自由的执行者,
将来自于以下图片embedding向量作为输入传递到策略网络中,策略网络输出一个二维的动作action<v,li>包含一个阶段v和平行限制li,如果工作少于li的执行者,decima将会分配执行者。如果在调度之后仍有空闲的执行器,decima再次调用agent来选额另一个阶段v和平行限制li,这个过程重复进行,知道所有的执行程序都被指定,或者不再有可运行的程序,
在这里插入图片描述
State 选择
上图设想了decima的策略网络,对于一个节点v,计算分数qiv≜q(eiv,yi,z),q(.)是将嵌入向量(从图神经网络输出)映射到标向量的核心函数
在这里插入图片描述
对于每一个节点v,策略网络使用每节点嵌入evi,每工作嵌入yi,全局嵌入z来计算:
(i)要调度节点的分数qvi
(iii) 采样节点作业的并行度限制的分数wi

在这里插入图片描述
在这里插入图片描述
平行度限制选择
许多现有的调度器为每个作业设置静态并行度,decima的策略网络还使用另一个评分分数w()来计算分配给作业的并行度限制的分数

5,3训练

训练到decima的主要挑战是如何训练连续的随机工作到达时间。
每一个episode包含多个调度事件,每个调度事件包含一个或多个动作action,设置T为一个episode中动作的总数量,设置奖励值,最小化平均时间JCT,

补充:
 使用监督学习来训练图神经网络,标签是从jobDAG.py文件中Job GAGDuration类中的关键路径
 我们不限制节点总数,softmax是无范围的,softmax的输入可以有任意大小(仅仅是指数和他们和的标准化)
 我们使用输出节点来代表并行度限制,因此,如果你有n个执行者,你需要n个节点,但是一个更试用的方法是以数字形式来输出并行度限制,可以用高斯分布来表示这样的连续的数,神经网络输出平均值,然后从高斯分布中采样。
 红色的框:softmax可能有来自不同调度的不同输入,这是因为actor network的最后一个全连接层有输出大小为1,重组之后actor network中的输出大小将会是[batchSize, numberOfNodes] ,numberOfNodes是可变的数。
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐