[Dis/MLsys/net]An Efficient and
2021-07-12 周一,2021-07-13周二
地址:sc'20
An Efficient and Non-Intrusive GPU Scheduling Framework for Deep Learning Training System
Abstract
GPU调度可以减少DL训练的时间,调度系统一般给一个任务固定数量的GPU。现在出现了动态分配的调度,更好的利用了资源。但是现有的工作,要么在调度和重启任务的时候带来了较大的额外负担,要么需要改动上层框架。
我们提出的方法,上层框架是无感知的,SideCar进程控制GPU上的进程暂停和重启。我们的方法作为Kubernete的一个插件,在16GPU的集群中达到了比较好的效果
一、Intro 泛-精-专
泛
现在有很多专门处理DL训练的集群,比如Flep(2017),Gandiva(2018),[这里举的例子有点早了吧]
DL训练依赖于编排系统比如Kubernete,来管理一个DL任务的生命周期。
精
使用K8s的默认调度器有两个缺点,1,一般无法重复利用资源,2,通常会延迟任务的完成时间
提出两个概念:“reshaping up”,“reshaping down”
reallocating idle GPUs to running jobs is referred to as “reshaping up” and reallocating used GPUs to incoming jobs is referred to as “reshaping down”.
给任务加GPU是up,分GPU给新任务是down
计算调整GPU带来的收益,是一件很复杂的事情,因为GPU数量变化的加速比不是线性的。
最近的工作有18年的Optimus,它有reshaping up,但是没有reshaping down;Gandiva有reshaping down了,但是对框架需要做intrusive的调整;
结合这两个问题,我们设计一个non-intrusive的调度方法。有两个难点需要克服。
- 当一个container跑起来,重新分配GPU资源的话,需要停止pod,and restart
- 当一个GPU被分配给一个新的任务的时候,系统不能提前初始化这个新任务。这个新任务必须等到旧任务结束,将GPU资源释放出来才可以使用。这个问题是nvida设备的限制
专
本文提出的解决方案,在DL训练的进程里,驻留一个SideCar进程,它主要有两个工作。
1.它可以暂停和重启训练进程,而不用暂停和重启整个job(细化粒度)
2.在reshaping down的过程时,提前做初始化的工作,加速训练。
SideCar是不需要对DL框架的代码进行修改的
二、背景和motivation
2.1 分布式DL训练(内容比较简单)
同步并行模型,ASP,SSP,A-BSP
DL训练是有Epoch迭代的,所以知道Epoch的数量,大致就能预测DL训练的时间长度。
2.2 GPU调度
静态分配
非线性性能gain
2.3 Case study
We created a 4-GPU cluster to demonstrate the drawbacks of the default scheduler.
三、调度框架设计
2021-07-13,周二
3.1 架构和工作流
调度框架一共分五个部分,除了adaptive的GPU分配的四个部分分别是 内存数据库,作业启动器,GPU协调器,sidecar进程。
系统架构
sidecar进程可以保证调度的粒度从作业调整到了process。
3.1.1新作业的工作流
当作业提交之后,面临两个任务,分别是early initialization and GPU allocation
(1) Early initialization,
Job Launcher从内存数据库中get 接下来要到达的和正在运行的作业的信息,基于这些信息,调度器决定每个任务分配多少GPU,分配的GPU包括空闲以及正在运行的任务的GPU。所以调度器把分配决策发给作业启动器和GPU协调器。基于调度信息,作业启动器可以先做初始化的工作,等初始化工作完成, SideCar将提醒GPU协调器
(2)GPU allocation
初始化完成后,协调器给running job的SideCar发消息,调整GPU的分配。由GPU协调器来更新内存数据库中的状态信息
3.1.2运行作业的工作流
如果环境资源足够多,可以利用调度器给运行任务加GPU
3.2 弹性GPU分配机制
(1) 内存数据库
(2) Job Launcher
(3)GPU Coordinator
(4) SideCar
3.3 自适应的GPU调度器
(1)新作业的调度
(2)运行作业的调度
四、具体实现
框架:Kurbernete
编程语言:python
内存数据库:MongoDB
作业启动器: Ansible Playbook (不熟)
GPU协调器和SideCar:Python Tornado server (不熟)
五、环境设置
5.1硬件环境和数据集
物理集群,16块GPU的集群:8块V100,8块P100
云集群,AWS,s a 16-GPU cluster that consists of two AWS GPU instances. One instance is p3.16xlarge with eight V100 GPUs and the other is p2.8xlarge with eight NVIDIA K80 GPUs
数据集
- 只包括resnet
2.混合多种网络
5.2 衡量标准和比较方案
标准: 平均作业完成时间
比较方案:
1.默认
- 直接结束的方案
- 本文的方案
六、实验结果
在makespan,AJCT和GPU使用率上都有不错的结果
6.4 开销分析
Workload One | Workload Two | Workload Three | Workload Four | Average | |
---|---|---|---|---|---|
Termination | 29.3% | 21.9% | 27.1% | 28.6% | 26.7% |
Our framework | 8.9% | 6.7% | 7.6% | 8.3% | 7.9% |
还是比直接结束要省资源,可是这个系统本身的开销呢?
6.5 讨论
兼容性:本文工作给予k8s,可以拓展到其他,比如yarn中
starggler:不考虑这个问题,因为单块GPU之分给一个任务,不存在混合运行的情况
同步并行模型:支持AllReduce-based synchronous training,支持TensorFlow employs two strategies (MirroredStrategy and MultiWorkerMirroredStrategy)
通讯模式:对作业运行时间的预测与网络通讯模型无关,每次预测基于当前的迭代情况,Allreduce和PS架构都支持
SideCar的限制:不能同时添加和重新分配
模型并行:数据并行,模型并行都支持
七、相关工作
7.1 分布式DL训练
基于PS架构的,李沐的工作,14年osdi,15年的工作:Highperformance distributed ml at scale through parameter server consistency models
训练框架:tensorflow,mxnet
云平台的训练模型:BigML for spark;
新的调度框架:
Poseidon,2017,ATC
iBatch,2019,AAAI
减少通讯代价:
P3 ,2019,SysML,Priority-based parameter propagation for distributed dnn training
TicTac ,2019,SysML Tictac: Accelerating distributed deep learning with communication scheduling
ByteScheduler 2019,sosp,A generic communication scheduler for distributed dnn training acceleration
PHub ,2018,socc,Parameter hub: a rack-scale parameter server for distributed deep neural network training
Parallax,2019,eurosys,Parallax: Sparsity-aware data parallel training of deep neural networks
LAG,2018,nips,Lag: Lazily aggregated gradient for communication-efficient distributed learning
基于allreduce:
PyTorch,
Horovod
7.2 多作业的资源调度
Tiresias,2019,NSDI
SLAQ,2017,socc,Slaq: quality-driven scheduling for distributed machine learning
Gandiva: Introspective cluster scheduling for deep learning,2018,OSDI
Optimus: an efficient dynamic resource scheduler for deep learning clusters,eurosys,2018
这里提到的文献有点不够新了,19和20还有很多新的工作都没提到
八,结论
本文的想法很朴素,内容不是很复杂。