上海品茶

您的当前位置:上海品茶 > 报告分类 > PDF报告下载

何颖鹏-唯品会如何基于Volcano与AI训练场景提高集群利用率_0708(GOTC上海会场)(15页).pdf

编号:82869 PDF 15页 866.85KB 下载积分:VIP专享
下载报告请您先登录!

何颖鹏-唯品会如何基于Volcano与AI训练场景提高集群利用率_0708(GOTC上海会场)(15页).pdf

1、CNCF分论坛专场何颖鹏 2021年07月10日唯品会如何基于Volcano与AI训练场景提高集群利用率概况1.使用helm发布tfjobs,由tf-operator管理训练任务流程2.使用volcano对tfjobs的任务容器进行批量调度3.对tf-operator进行改造,按业务划分volcano队列,并支持任务优先级4.改造kubelet实现资源超卖,提高容器部署密度5.通过自研的vpa,实现在容器运行时动态调整资源HelmVolcanoTf-operatorKube-apiservertfjobpodGroupqueuekubeletkubeletps0workerps1workerw

2、orkerworkerworkerworkervpavpaTf-operator部署与使用apiVersion:kubeflow.org/v1kind:TFJobmetadata:namespace:_NAMESPACE_ name:_NAME_“spec:runPolicy:schedulingPolicy:queue:priorityClass:tfReplicaSpecs:Chief:replicas:1 template:Evaluator:replicas:1 template:PS:replicas:1 template:Worker:replicas:1 template:Hel

3、mTf-operatorKube-apiservertfjob3tfjob2tfjob1informercontrollerpsevaluatorchiefworkerspsevaluatorchiefworkerspsevaluatorchiefworkerspodgroup3podgroup2podgroup11.tf-operator管理训练任务流程,同步tfjob状态到我们的valyria管理平台2.参考社区实现,修改tf-operator,支持创建podgroup时指定queue和priorityClassValyriaVolcano原理与部署Volcano架构https:/volc

4、ano.sh/en/docs/architecture/使用Volcano实现对tfjobs容器的批调度https:/volcano.sh/en/docs/schduler_introduction/Allocate具体流程初始化namespaceQueue和JobQueueMapnamespacesOrderFnNamespaces.empty()从当前namespace中挑选queue!queueOverUsed,queueOrderFnPop namespaceNo queue 从当前queue中挑选job jobOrderFnget queuePush namespaceget job

5、 构建待调度的tasks队列 taskOrderFnNo jobtasks.empty()为task选取节点 predicatesFn,nodeOrderFnPop taskjob.ready()emptyemptycommitdiscardYesNoend任务队列apiVersion:kubeflow.org/v1kind:TFJobmetadata:spec:runPolicy:schedulingPolicy:queue:priorityClass:tfReplicaSpecs:apiVersion:scheduling.volcano.sh/v1beta1kind:Queuemetad

6、ata:name:rec-queuespec:weight:400apiVersion:scheduling.volcano.sh/v1beta1kind:Queuemetadata:name:search-queuespec:weight:200 actions:enqueue,allocate,backfill tiers:-plugins:-name:drf -name:priority -name:gang -name:conformance -plugins:-name:proportion -plugins:-name:nodeorder -name:predicatestfjob

7、queueconfigmap1.当单一业务组训练任务较多时,可以使用整个集群的所有资源按业务组拆分队列2.当多个业务组训练任务较多时,按queue的权重分配资源,保证资源不被单一业务组抢占Queue Overused:derserved allocated,其中desearved=min(totalResource*queueWeight)/totalWeight,request)request=sum(pod resources)allocated=sum(allocated pod resources)任务优先级apiVersion:kubeflow.org/v1kind:TFJobmet

8、adata:spec:runPolicy:schedulingPolicy:queue:priorityClass:tfReplicaSpecs:actions:enqueue,allocate,backfill tiers:-plugins:-name:drf -name:priority -name:gang -name:conformance -plugins:-name:proportion -plugins:-name:nodeorder -name:predicatesapiVersion:scheduling.k8s.io/v1kind:PriorityClassmetadata

9、:name:p0-privalue:1000apiVersion:scheduling.k8s.io/v1kind:PriorityClassmetadata:name:p1-privalue:100tfjobqueueconfigmap优先级低优先级高1.Gang插件优先级最高,优先调度未ready的批任务:2.priority其次,保证优先级较高的任务先调度;3.drf最后,在同等优先级下,需要资源较少的任务优先调度如何提高集群利用率1.对训练任务进行批调度,需要等待足够资源来调度容器,可能会导致部分宿主机空闲问题2.业务对训练任务的计算量估算不准确,申请过多资源导致宿主机空闲通过使用Vo

10、lcano的批调度功能,实现了tfjob容器的全量执行,避免了任务碎片化的问题解决方案1.改造kubelet,对宿主机CPU资源进行超卖,提高集群的容器部署密度2.实现VPA,监控宿主机上容器的资源利用率,实时动态调整容器资源集群资源超卖通过定制kubelet,增加超卖参数(cpu-overcommit-time),修改上报到kube-apiserver的宿主机cpu数量,实现CPU超卖通过CPU超卖,我们可以实现:1.抹平不同CPU的性能带来的异构问题2.提高容器部署密度,因此提升CPU使用率资源超卖导致CPU热点问题Kube-apiserverNode148coreskubelet24co

11、res2.2GHzcpu-overcommit-time=2cAdvisorkubelet32cores2.6GHzcpu-overcommit-time=3cAdvisorNode296coresVPA介绍VPA设计方案1.以Daemonset形式部署,去中心化2.实时监控本宿主机容器的cgroup秒级指标3.可定制化的handler处理容器和宿主机事件4.通过configmap动态配置策略参数5.调用docker api实时调整容器资源,无需重启容器VPA介绍VPA对训练任务容器的处理策略操作说明获取当前宿主机真实cpu使用率和目标cpu使用率当前宿主机48c,真实cpu使用率95%,过载

12、线90%,警戒线80%,即目标使用率是85%计算从真实使用率压制到目标使用率需要压制的核数(95%-85%)*48c=4.8c将宿主机上的容器按训练优先级(P2|P1|P0)及真实cpu使用率倒序排序podA(P0)20c,podB(P1)10c,podC(P2)6c,podD(P2)4c排序后:podC-podD-podB-podA按排序后按Max(目标压制核数,50%*容器真实cpu使用率)的标准选择需要压制的容器先选取podC进行压制,其cpu使用量50%为3c,则压制3c,还需要压制1.8c,因此需要将podC的cpu limit调为3c再选取podD进行压制,其cpu使用量50%为2

13、c,但只需压制1.8c即可,因此需要将podD的cpu limit调为2.2c修改容器cpu limit并且添加annotation标志容器被压制每个容器只进行一次压制当宿主机的CPU使用率过高时,对容器的CPU limit进行缩容压制VPA介绍VPA对于在线流量容器的操作情况操作宿主机有足够资源时,某个容器的资源使用率到达阈值对容器的资源进行暂时扩容,当容器的资源使用率下降后回收宿主机资源到达告警阈值时不再对容器进行临时扩容宿主机CPU/网络使用率达到热点阈值时调用上游LB接口,按优先级降低容器流量宿主机内存使用率到达热点阈值时Cordon宿主机现状与未来工作方向现状工作方向1.每日运行约200个训练任务,运行时间平均为75分钟,资源等待时间平均为40秒2.宿主机CPU使用率平均为50%,90分位到达75%1.训练任务容器资源监控加强 记录各角色容器资源使用率,以此建议用户优化资源申请量2.Volcano支持按照label选取宿主机 生产集群按照label划分宿主机的用途,volcano应该只考虑用于训练任务的宿主机资源3.VPA功能增强 在宿主机资源充足的情况下,对需要资源的容器进行临时扩容,提升资源使用率THANKS

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(何颖鹏-唯品会如何基于Volcano与AI训练场景提高集群利用率_0708(GOTC上海会场)(15页).pdf)为本站 (小时候) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部