当前位置:首页 > 报告详情

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

上传人: 懒人 编号:82869 2022-07-14 15页 866.85KB

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

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要探讨了如何通过使用CNCF分论坛专场中的Volcano与AI训练场景,提高集群利用率。何颖鹏在2021年7月10日的会议上分享了五个关键点: 1. 使用Helm发布TFJobs,由tf-operator管理训练任务流程。 2. 使用Volcano对TFJobs的任务容器进行批量调度。 3. 对tf-operator进行改造,按业务划分Volcano队列,并支持任务优先级。 4. 改造kubelet实现资源超卖,提高容器部署密度。 5. 通过自研的VPA,实现在容器运行时动态调整资源。 此外,文章还提到了Volcano架构和部署,以及VPA的设计方案和操作策略。VPA能够实时监控本宿主机容器的cgroup秒级指标,并通过调用docker API实时调整容器资源,无需重启容器。 在提高集群利用率方面,文章提出了一些解决方案,如对训练任务进行批调度,避免任务碎片化;改造kubelet进行资源超卖,提高CPU使用率;实现VPA,实时动态调整容器资源。 现状显示,每日运行约200个训练任务,运行时间平均为75分钟,资源等待时间平均为40秒。宿主机CPU使用率平均为50%,90分位到达75%。未来的工作方向包括:1) 加强训练任务容器资源监控;2) 支持按照label选取宿主机;3) 增强VPA功能,提升资源使用率。
如何通过Volcano提高TFJob的集群利用率? 如何实现TFJob容器资源的精细化管理? 如何解决资源超卖导致的CPU热点问题?
客服
商务合作
小程序
服务号
折叠