PaddlePaddle EDL 弹性调度体现在可以空闲的时候一个训练作业多用一些资源,忙碌的时候少用一些,但是资源的变化并不会导致作业失败;这是优于 KubeFlow 的特点之一 。同时,EDL 也弹性调度其他作业(比如 Nginx、MySQL 等),从而极大地提升集群总体利用率 。[2] 这样在公有云和私有云上的推广和部署时,就很容易节省几倍的机器,为公司一年节省的计算成本可以高达百万、甚至数百万美元 。
另一个挑战是,工业用户倾向于将深度学习作业作为完整数据管道的子集阶段,例如日志采集器等 。这种通用集群需要基于优先级的弹性调度 。比如网络开销较高的时间段内深度学习任务少运行,在网络流量较低时优先进行深度学习任务 。这就需要了解全局的情况,并协调与各种工作有关的进程的数量 。
PaddlePaddleEDL 的测试实验
面对上述这两种挑战,PaddlePaddle 作业都可以轻松应对进程数量忽高忽低的变化 。这里有 Fluid EDL 的两种测试用例:
- Kubernetes 集群只运行 PaddlePaddle 作业;
- 集群运行 PaddlePaddle 和 Nginx 作业 。
集群运行 PaddlePaddle 和 Nginx 作业 。
在第一个测试中,我们开始了 20 个 PaddlePaddle 作业,间隔 10 秒 。每个作业有 60 个 trainers 和 10 个参数服务进程,并将持续数小时 。我们重复实验 20 次:关闭 Fluid EDL 10 次,打开 Fluid EDL 10 次 。在下图中,实线对应于前 10 个实验,其余的是虚线 。在图的上半部分,我们看到未处理作业的数量在没有 EDL 的情况下单调递增 。但是,当 EDL 打开时,资源将平均分配给所有作业 。Fluid EDL 杀死了一些现有的进程,为新的其他任务腾出空间,并在晚些时候任务开始运行 。在这两种情况下,集群都被平等利用(见图的下半部分) 。

文章插图
在第二个测试中,每个实验都运行了 400 个 Nginx Pods,其优先级高于 6 个 PaddlePaddle 作业 。最初,每个 PaddlePaddle 工作有 15 个 trainers 和 10 个参数服务 。我们每 90 秒杀死 100 个 Nginx Pods,直到剩下 100 个,然后我们开始将 Nginx 工作的数量每 90 秒增加 100 个 。下图的上半部分显示了这个过程 。图中的中间显示,Fluid EDL 通过减少 Nginx Pods 来自动启动一些 PaddlePaddle 进程,并在稍后增加 Nginx Pods 来杀死 PaddlePaddle 进程 。结果,该集群维持在 90%左右的利用率,如图所示 。当 Fluid EDL 被关闭时,没有 PaddlePaddle 进程自动增加,并且利用率随着 Nginx Pods 数量的变化而波动 。

文章插图
PaddlePaddleEDL 的设计和实现
那上面这种深度学习服务和其它云端服务共享计算资源的过程,以及各个任务的优先级动态地调整和伸缩的过程,从而充分地利用集群 CPU/GPU 是如何实现的呢?
EDL 和 HPA
Horizontal Pod Autoscaling(HPA)是 Kubernetes 提供的一种弹性调度机制 。它的设计出发点是通过公平分配计算资源给某一个单一的计算任务中的各个 Pod 来实现分布式系统资源针对单一任务的最优化利用 。但我们的训练任务可能多种多样(语音、图像等)、部署时间有先有后,对资源的需求也不通,因此我们希望这种弹性调度机制能对每一种训练任务所需的系统资源有个全局的了解,然后按需分配 。但目前 HPA controller 还没有实现 。
同时,HPA 的弹性调度是针对同种类型的计算任务(homogenous computing task)下的 Pods 。但深度学习系统里的计算节点和参数服务器往往是在不同类型的 Pods 里 的 。
- 睫毛滋养精华液真的能使睫毛长长吗 睫毛精华液有用吗知乎
- 龟苓膏用什么原材料做的啊 龟苓膏的功效与作用及禁忌
- 即将步入初中的我作文600字 我的初中生活600字左右
- 同学之间的事例素材 同学之间
- 切开的猕猴桃放太久吃了会怎样 猕猴桃切开了放了一晚上能吃吗
- steam的游戏怎样退款 steam,游戏怎么退款
- 凤凰山箭眼的传说 王家庄凤凰眼风水传说
- 数字41的寓意是什么 41数字风水中的含义
- 绣花针 绣鞋花样的针法步骤
- 养十二条锦鲤的风水意义
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
