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试试】