DL2:A Deep Learning-Driven Scheduler for Deep Learning Clusters 阅读思考+组会

IEEE Transactions on Parallel and Distributed Systems
CCF A 提问题记录

1、自己提出的问题

1.1 这篇文章解决的主要问题是什么,怎么理解?

传统的调度方法具有如下特点:

  • 要么无法感知机器学习工作负载特性(如集群中的GPU的利用率)或ML框架(如TensorFlow),效率低
  • 要么使用基于专家对特定ML框架和工作负载的理解的调度启发式算法,虽提升了效率但不通用
    在这里插入图片描述

效率低和不通用的具体含义:

  • 效率低:
    ①:不能感知工作负载特性或ML框架特性
    ②:无法做到弹性伸缩
    总体表现为“平均作业(Job)训练完成时间较长”
  • 不通用:
    ①:不同ML框架需要分别建模
    ②:建模过程紧密耦合,重新建模很耗时的,并且重新建模频率高。建模过程没有考虑到干扰并且考虑到干扰是复杂的。

1.2 job、worker/ps之间的关系是什么?

Job:作业,即要训练的ML模型。如Resnet-50、VGG-16和Seq2Seq三个经典模型

Worker:工作节点,本质是服务器,它具有GPU,负责读取小批量训练数据进行训练,使用当前的参数执行前向和反向传播计算梯度,并将梯度发送给PS

PS(Parameter Server):参数服务器,本质还是服务器。它存储全局模型的参数,广播参数给所有Workers,接收Workers发送的参数更新,完成参数的平均和更新

通过调度联系起来:将资源(Worker以及PS)分配给Job的过程,就叫做调度

1.3 DL2流程是什么?

Step1:用户指定每个PS/Worker需要多少资源
Step2:用户估计Job的总Epoch数
Step3:将Job提交给调度器DL2(已经通过线下训练了)。
Step4:调度器DL2根据在线RL进行调度(每个时间间隔),并伴随弹性伸缩

1.4 调度决策是什么时间进行的?读取集群状态是什么时间进行的?

猜测:
(1)在每一个时隙开始之前进行状态读取和调度(因为一开始就要做决策)
(2)然后执行训练
(3)训练结束后,又进行下一轮的状态读取和调度。

1.5 记得k8s也会有弹性伸缩,但是为啥子不能应用到这里呢?

因为K8s的弹性伸缩策略,是根据资源利用,即CPU和内存,以及网络请求来进行调整、迁移。
但是这里的主要资源是GPU,所以用K8S的话,可能不会因为GPU的利用率而进行弹性伸缩。

2、同学们提出的问题

2.1 同学A

看你ppt没有提获取了什么数据 ?怎么去做处理的?最后用什么方法去做的这权重计算,然后他是怎么实时计算并反馈的?

2.2 同学B

DL2线下监督学习的过程,输入的数据和输出数据,请用具体例子解释一下

2.3 同学C

1、我有tensorflow,pytorch,这两种不同的框架,它在哪一步去做适配的(流程的哪一步)?
2、相对于checkpoiting方法,作者是用什么方法进行优化的?

3、老师们提出的问题

3.1 老师A

1、缺少了实验部分
2、大模型时代,如何进行调度
3、Data是哪来的

3.2 老师B

1、线下监督学习数据来源于哪里,是不是云服务提供商提供给他的数据?标签标注的是什么东西?
2、参数ε(ε-greedy),这个ε的作用是什么?
3、假如这是你提出的想法,你如何设计实验证明你的这个方法效果好

3.3 老师C

1、没听懂模型的细节
2、文章考虑过调度本身的开销没有,做实验。

4、总结同学老师常提的问题:

(1)数据

  • 哪来?
  • 输入/输出的数据结构具体是怎么样的
  • 数据是怎么进行处理的。

(2)实验

  • 作者的实验思路
  • 作者做没做哪些事情,证明这个提出的方法效果好

(3)流程

  • 如果我要应用这个方法,哪一步去做适配。

5、下次需要改进的地方:

(1)少花些时间在做PPT上(精简文字、少动画),多花些时间在论文上,尽量把数据/实验部分的内容进行呈现
(2)被问问题时,

  • 有些问题自己没能理解它的意思,
  • 有些问题自己能回答但是回答得牛头不对马嘴,
  • 有些问题自己回答不了。

很紧张,脑袋一片空白,临时组织不了语言…【需要磨练,下次停5s试试】

你可能感兴趣的:(科研之旅,深度学习,人工智能)