论文部分内容阅读
摘 要:针对大规模深度学习训练集群中存在的多租户资源管理困难问题,提出了一种多租户资源动态管理算法,满足不同时期不同用户组的资源配额需求。针对集群中用户作业种类多样等导致集群资源碎片化的问题,提出一种基于深度学习作业特点的作业自适应调度算法。以上算法在科大讯飞集群实践中,提高资源利用率并提升了用户体。
关键词:深度学习;多租户管理;作业调度;自适应
引言
人工智能特别是深度学习技术的进步,使得异构计算兴起,越来越多的机构、企业开始搭建并使用深度学习训练集群进行模型训练。随着资源共享程度增加和业务需求增长,训练集群的规模往往越来越大,使用该集群的用户人数也越来越多,实际运行在该集群上的作业类型也越来越多样化。
在集群底层资源共享的前提下,为了方便管理,往往需要对于集群的用户先进行分组。并且还要为每个租户组配置好资源使用上限(即为每个租户组设置资源配额),以防止集群资源被个别人或个别组占用太多。但是在实际生产过程中,不同租户组的资源需求往往不固定,且动态变化,因此简单的设置组配额不够灵活,造成用户组临时的高资源需求无法满足,且不利于集群整理资源利用率的提升。因此,本文将提出一种多租户资源动态管理算法。
在进行复杂的深度学习模型训练时,租户的一个作业常常需要同时使用很多张加速卡,譬如16张卡、32张卡等等。训练集群中每个计算节点的加速卡数目是有限的,因此租户的多卡作业往往涉及到跨机器并行计算。在深度学习领域,Tensorflow或pytorch是目前用户使用最广泛的两种训练框架,均已支持多卡训练。在进行多卡训练时,用户需要明确指定机器数目和每台机器上需要使用的加速卡数目。而在大规模训练集群中,用户作业对资源的需求数目不一导致集群资源碎片,因此指定机器信息的多卡作业体验往往不佳。因此,本文提出一种针对多卡训练的自适应调度算法,提高此类任务的用户体验,同时提高集群的资源利用率。
一、多租户资源动态管理算法
本文提出的多租户资源动态管理算法基本思想为:对每个租户组使用的资源设置配额、设计配额距离度量准则。当有用户组配额用满且有新作业提交到集群后,通过计算所有租户组的配额距离,并从中筛选出可贡献配额的组信息,然后扣减贡献组的配额值,并增加作业组的配额值,实现本作业组的配额动态提升。如果同时有多个组满足配额贡献条件时,则根据配额距离进行排序,从大到小的方式扣減,即,配额距离越大的组扣减越多。多租户资源动态管理算法处理流程示意图如下所示。
二、作业自适应调度算法
在本调度算法下,用户提交作业时无需再指定机器数目和每个机器所需的加速卡数目,只需要提交作业时指定总共需要几张加速卡即可。作业自适应调度算法的具体思想为:作业提交后,作业控制器将作业的资源需求信息反馈给判决器,判决器向资源监控器发送请求查询集群当前实时空闲资源和节点拓扑信息。判决器拿到信息后,经过判决算法计算得出资源配比数据,并将此数据返回给作业调度度,作业调度器根据接收到的机器节点数目和每台机器上的加速卡数目完成资源调度实现作业运行。在实际集群中,存在因为节点故障导致调度失败的可能,因此调度失败后会进行作业重提。
作业自适应调度的算法如下图所示。用户提交一个作业,需求为16张卡,作业被提交到集群后,判决器通过自适应算法共获得6个机器节点的地址信息,其中2个节点各有4张加速卡,另外4个节点各有2张加速卡。作业控制器拿到这个信息后将作业调度到这6个计算节点并进行训练。
三、结语
深度学习等人工智能技术的突飞猛进,使得大规模集群调度面临越来越多的挑战。面对越来越多的用户群体、越来越多样的作业类型,本文主要探索了一种多租户资源动态管理算法和一种作业自适应调度算法。经过企业集群的实践,有效提高了用户体验,并同时提高了集群整体的资源利用率。
关键词:深度学习;多租户管理;作业调度;自适应
引言
人工智能特别是深度学习技术的进步,使得异构计算兴起,越来越多的机构、企业开始搭建并使用深度学习训练集群进行模型训练。随着资源共享程度增加和业务需求增长,训练集群的规模往往越来越大,使用该集群的用户人数也越来越多,实际运行在该集群上的作业类型也越来越多样化。
在集群底层资源共享的前提下,为了方便管理,往往需要对于集群的用户先进行分组。并且还要为每个租户组配置好资源使用上限(即为每个租户组设置资源配额),以防止集群资源被个别人或个别组占用太多。但是在实际生产过程中,不同租户组的资源需求往往不固定,且动态变化,因此简单的设置组配额不够灵活,造成用户组临时的高资源需求无法满足,且不利于集群整理资源利用率的提升。因此,本文将提出一种多租户资源动态管理算法。
在进行复杂的深度学习模型训练时,租户的一个作业常常需要同时使用很多张加速卡,譬如16张卡、32张卡等等。训练集群中每个计算节点的加速卡数目是有限的,因此租户的多卡作业往往涉及到跨机器并行计算。在深度学习领域,Tensorflow或pytorch是目前用户使用最广泛的两种训练框架,均已支持多卡训练。在进行多卡训练时,用户需要明确指定机器数目和每台机器上需要使用的加速卡数目。而在大规模训练集群中,用户作业对资源的需求数目不一导致集群资源碎片,因此指定机器信息的多卡作业体验往往不佳。因此,本文提出一种针对多卡训练的自适应调度算法,提高此类任务的用户体验,同时提高集群的资源利用率。
一、多租户资源动态管理算法
本文提出的多租户资源动态管理算法基本思想为:对每个租户组使用的资源设置配额、设计配额距离度量准则。当有用户组配额用满且有新作业提交到集群后,通过计算所有租户组的配额距离,并从中筛选出可贡献配额的组信息,然后扣减贡献组的配额值,并增加作业组的配额值,实现本作业组的配额动态提升。如果同时有多个组满足配额贡献条件时,则根据配额距离进行排序,从大到小的方式扣減,即,配额距离越大的组扣减越多。多租户资源动态管理算法处理流程示意图如下所示。
二、作业自适应调度算法
在本调度算法下,用户提交作业时无需再指定机器数目和每个机器所需的加速卡数目,只需要提交作业时指定总共需要几张加速卡即可。作业自适应调度算法的具体思想为:作业提交后,作业控制器将作业的资源需求信息反馈给判决器,判决器向资源监控器发送请求查询集群当前实时空闲资源和节点拓扑信息。判决器拿到信息后,经过判决算法计算得出资源配比数据,并将此数据返回给作业调度度,作业调度器根据接收到的机器节点数目和每台机器上的加速卡数目完成资源调度实现作业运行。在实际集群中,存在因为节点故障导致调度失败的可能,因此调度失败后会进行作业重提。
作业自适应调度的算法如下图所示。用户提交一个作业,需求为16张卡,作业被提交到集群后,判决器通过自适应算法共获得6个机器节点的地址信息,其中2个节点各有4张加速卡,另外4个节点各有2张加速卡。作业控制器拿到这个信息后将作业调度到这6个计算节点并进行训练。
三、结语
深度学习等人工智能技术的突飞猛进,使得大规模集群调度面临越来越多的挑战。面对越来越多的用户群体、越来越多样的作业类型,本文主要探索了一种多租户资源动态管理算法和一种作业自适应调度算法。经过企业集群的实践,有效提高了用户体验,并同时提高了集群整体的资源利用率。