上述特有的需求导致使用 Kubernetes 的时候需要有特定的弹性调度解决方案,而不能直接采用 HPA 。因此更好的解决方案是 PaddlePaddle EDL 。
PaddlePaddleEDL 的具体设计和实现
- 1. 让 Kubernetes 支持定制的弹性调度机制
Kubernetes 本身就支持定制的资源管理机制 。用户可以通过提交定制的 resource declaration file 和 controller file 来实现对某种 Pods 的弹性调度 。以下图为例,这个 training_job.yaml 保证了 controller 会自动监管 pservers,并且保证它们的数量在 min-instance 和 max-instance 之间 。

文章插图
在 Kubernetes 集群上,这个定制的资源可以通过 kubectl create -f training_job.yaml 命令获得 。接下来,我们需要有个定制的 training job controller 来调度这个资源 。
定制的 training job controller 跑在一个 Pod 里,对集群资源有一个统一的了解,它通过 Kubernetes API 对集群资源起到监控和调度的作用 。下图是 training job controller 配置文件的一个例子 。

文章插图
在 Kubernetes 集群上,这个定制的资源管理 Pod 可以通过 kubectl create -f
training_job_controller.yaml 命令启动 。
- 2. 控制程序的实现
上面提到的定制化资源在 Kubernetes 里面目前有两种实现方式 。一种是 Custom Resource Definition (CRD),由 Kubernetes 1.7 版本引入;另一种是 Third Party Resource (TRP) 。PaddlePaddle 项目现在用的是 Kubernetes 1.6 版本,所以实现的是 TRP 模式,今后将整合 CRD 模式 。
当前 PaddlePaddle 假设只有一个单独的 training job controller 在运行 。当前的 training job controller 依照下面的逻辑管理资源:

文章插图
- 3. 弹性调度算法
PaddlePaddle 根据定制资源的配置文件(training_job.yaml)来判断某个 job 需不需要弹性调度,而判断的标准是 trainer 和 pserver 的 min-instance =/ max-instance 。
集群中 GPU 的调度
controller 知道集群中全部 GPU 个数,以及当前闲置的 GPU 的个数,并试图把闲置的 GPU 全部分配给当前训练任务 。PaddlePaddle 给需求 GPU 的训练任务定义一个「满足程度」的评分(fulfillment score),此评分的范围是 [0,1] 。PaddlePaddle 会优先分配 GPU 资源给满足程度评分最低的训练任务 。如果有分数相同的情况,则分别优先考虑 GPU 需求数,CPU 需求数,内存需求数 。如果有某个训练任务的 GPU min-instance 没有满足(除非 cur-instance=min-instance),那么 PaddlePaddle 会把一个满足程度最高分的训练任务里的 GPU 资源拿出来分给它 。如果满足程度分数最高的训练任务 cur-instance=min-instance,则整个集群不再执行新的训练任务,新来的任务需等待 。
集群中 CPU 的调度
CPU 资源的分配和 GPU 思路相同 。controller 知道集群中一共有多少个 CPU,内存,它们的负载情况;同时也知道训练任务对 CPU 的需求 。同样的,CPU 资源根据满足程度评分被按需分配 。
PaddlePaddle 容错机制
这里讨论 PaddlePaddle 的容错机制 。在一个分布式训练任务里,如果 master 进程或者所有的参数服务进程都死掉了,那么整个训练任务会被停掉,过一段时间被 Kubernetes 整个重启 。如果具体训练进程没有都死掉,则整个训练任务继续 。
PaddlePaddle 用 etcd 来记录训练进程的状态 。etcd 是高可靠性的分布式 key-value 存储,训练进程会定时把自身状态写进 etcd,而这些信息将会在必要的时候用来恢复训练进程 。具体过程如下图:
- 睫毛滋养精华液真的能使睫毛长长吗 睫毛精华液有用吗知乎
- 龟苓膏用什么原材料做的啊 龟苓膏的功效与作用及禁忌
- 即将步入初中的我作文600字 我的初中生活600字左右
- 同学之间的事例素材 同学之间
- 切开的猕猴桃放太久吃了会怎样 猕猴桃切开了放了一晚上能吃吗
- steam的游戏怎样退款 steam,游戏怎么退款
- 凤凰山箭眼的传说 王家庄凤凰眼风水传说
- 数字41的寓意是什么 41数字风水中的含义
- 绣花针 绣鞋花样的针法步骤
- 养十二条锦鲤的风水意义
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
