首页> 中国专利> 一种面向深度学习的作业资源自动弹性伸缩方法

一种面向深度学习的作业资源自动弹性伸缩方法

摘要

本发明公开了一种面向深度学习的作业资源自动弹性伸缩方法,包括如下步骤:用户通过系统接口提交深度学习作业和作业描述文件;根据同类型作业的历史执行数据,建立作业资源预测模型;使用该模型预测作业的初始资源量,启动相应数量的实例;对每一个作业实例,基于主机资源负载、集群拓扑、用户偏好以及GPU设备的分布进行调度;每一轮深度学习训练迭代完成后,判断作业能否按预期时间完成;根据作业当前执行速度,计算作业资源弹性伸缩系数;进行作业实例数的自动调整。本发明可解决现有弹性伸缩方法在深度学习场景下资源利用率低、GPU设备分配依赖人工的问题。

著录项

  • 公开/公告号CN114816757A

    专利类型发明专利

  • 公开/公告日2022-07-29

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN202210477181.1

  • 发明设计人 顾荣;仇伶玮;袁春风;黄宜华;

    申请日2022-05-03

  • 分类号G06F9/50;G06F9/48;G06N3/08;G06N20/00;

  • 代理机构苏州威世朋知识产权代理事务所(普通合伙);

  • 代理人沈晓敏

  • 地址 210093 江苏省南京市鼓楼区汉口路22号

  • 入库时间 2023-06-19 16:09:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-29

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及作业资源弹性伸缩技术领域,尤其是一种面向深度学习的作业资源自动弹性伸缩方法。

背景技术

近年来,随着深度学习算法理论与技术的革新,深度学习技术得到了快速发展和普及应用。深度学习主要用于对数据进行表征学习,学习过程以训练参数更多的深层神经网络为基础架构,相比普通神经网络,能完成更复杂的学习任务,因此在计算机视觉、语音识别、自然语言处理等领域都得到了广泛运用。

深度学习程序对计算、存储资源需求较大,且其中图形处理器(GraphicsProcessing Unit,GPU)资源售价昂贵。而云服务商提供了按需付费的服务模式,为用户提供动态可伸缩的计算、存储资源,还提供按月、日、小时等多样的租赁模式和多样的资源规模。

因此,为降低使用成本,越来越多用户借助容器及其云编排技术对资源进行高效动态的共享使用。

基于上述背景,现有研究人员提出了许多支持在线伸缩的深度学习框架。基于此类框架开发的深度学习程序,往往利用容器及其云编排技术,以弹性可伸缩的资源运行,从而实现GPU等资源的高效利用。用户提交弹性深度学习作业时,最常提出的期望指标就是作业完成时间,用户通常希望作业能够在某一个时间点左右完成。

然而,现有深度学习场景下,现有系统对深度学习作业的在线伸缩机制支持较差。例如,深度学习作业在弹性伸缩过程中若要使用GPU资源,往往由人工配置GPU设备分配策略,这样的使用方式加剧了GPU等资源的浪费问题,也有可能造成一些程序在执行时性能不足。

因此,就需要设计一种作业资源自动弹性伸缩方法,使得深度学习作业在弹性伸缩过程中可以自动调整以GPU为代表的资源,保证作业按照用户期望的时间完成。

发明内容

发明目的:针对上述现有技术存在的问题和不足,本发明的目的是提供一种面向深度学习的作业资源自动弹性伸缩方法,解决现有系统在深度学习场景下资源利用率低、GPU设备分配依赖人工的问题。

技术方案:为实现上述发明目的,本发明提出了一种面向深度学习的作业资源自动弹性伸缩方法,包括如下步骤:

(1)用户通过系统接口提交深度学习作业和一份作业描述文件,所述深度学习作业包括需要执行的深度学习程序,作为步骤(2)的输入;所述作业描述文件包括作业的启动参数和用户期望的作业完成时间,作为步骤(3)的输入;

(2)根据用户提交的深度学习作业,找到同类型作业的历史执行数据,从历史执行数据中提取作业启动参数、作业资源使用情况以及作业完成情况,建立作业资源的预测模型,并将所述预测模型传入步骤(3);

(3)根据用户当前提交作业的启动参数和期望的作业完成时间,使用预测模型估算作业需要的初始资源量,以及需要为作业启动的实例数;将资源均分给所有实例,并将所有实例作为需要调度的实例传入步骤(4);

(4)对于需要调度的每个实例,基于集群中主机的资源负载、集群总体的拓扑结构、用户偏好以及GPU设备的分布进行调度,依次将实例分发到合适的主机上;

(5)作业每一轮深度学习训练迭代结束后,根据作业的当前执行速度,估算作业的预期完成时间;如果所述预期完成时间相比用户期望的作业完成时间误差超过了系统允许的偏差系数,则进入步骤(6),否则等待下一次迭代完成;

(6)作业弹性伸缩:根据作业当前耗时和用户期望的作业完成时间,计算得到用户期望的作业执行速度,再结合作业当前的执行速度,计算得到作业资源的弹性伸缩系数,将所述弹性伸缩系数作为结果传入步骤(7);

(7)根据弹性伸缩系数调整作业资源,创建相应数量的实例、或停止相应数量的实例;更新完成后,重复执行步骤(4)至(7),直到作业最终完成。

进一步地,所述步骤(2)中,所述预测模型是随机森林模型,预测模型的输入特征分为两个部分,第一部分是用户作业的启动参数,从所述作业描述文件中提取或由系统自动补全;第二部分是同类型作业的历史执行数据;预测模型的输出标签是用户作业需求的资源以及需要为作业启动的实例数;训练预测模型时,使用先随机搜索再网格搜索的最佳参数搜索策略。

进一步地,所述步骤(3)中,每次进行预测后,使用新数据对预测模型进行完善;完善时只优化模型参数;当新增记录的数量超过系统设定阈值时,才重新训练预测模型。

进一步地,所述步骤(4)中,使用三个调度队列分别保存可调度实例、执行失败需重调度的实例以及暂无法调度的实例;每次调度实例时,将集群中主机的资源负载、集群总体的拓扑结构、用户偏好以及GPU设备的分布都各自实现为一个子模块,对主机进行打分;打分过程中,所有子模块并行工作,每一个子模块都得到一个得分;对所有的得分按统一标准归一化后,基于权重w

进一步地,所述步骤(6)中,所述用户期望的作业执行速度Speed

有益效果:本发明能够在深度学习场景下,通过一种面向深度学习的作业资源自动弹性伸缩方法,有效解决资源利用率低、GPU设备的分配依赖人工的问题:第一,本发明提供了作业资源需求的预测模型,用户无需为作业的执行指定资源,作业资源的预测与分配将依据历史执行数据自动进行。第二,本发明实现了作业实例的自动调度,用户无需手动进行GPU等资源的分配。第三,本发明设计了作业资源的动态调整方法,通过对作业实例数的周期性弹性伸缩,保证作业按照用户预期时间完成。

附图说明

图1为本发明的总体流程示意图;

图2为本发明所述资源预测模型参数完善流程图;

图3为本发明所述调度策略流程图。

具体实施方式

下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

本发明提出一种面向深度学习的作业资源自动弹性伸缩方法,解决了现有方法资源利用率低、GPU设备分配依赖人工的问题。如图1所示,本发明的完整流程包括作业提交阶段、预测模型建立阶段、作业初始资源预测阶段、作业实例调度阶段、弹性伸缩判断阶段、弹性伸缩系数计算阶段、实例数调整阶段7个部分。具体的实施方式分别说明如下:

作业提交阶段对应技术方案步骤(1)。具体实施方式为:用户通过系统接口提交深度学习作业和一份作业描述文件,包括可执行深度学习程序、程序启动参数、期望的作业完成时间。在本发明中,对深度学习作业的定义如下:一个作业由若干实例组成,拥有若干资源。资源类型包括中央处理器、内存、GPU算力、GPU显存、网络带宽、存储空间六种。作业在执行过程中,资源与实例数可动态变化。

预测模型建立阶段对应技术方案步骤(2)。具体实施方式为:预测系统根据作业类型,在历史执行数据中寻找同类型作业的执行记录,从中提取出这些作业的启动参数、执行情况、资源使用情况。然后对这些数据进行预处理,估算这些作业若要在完全不进行弹性伸缩的情况下按用户期望完成需要多少资源。基于预处理后的数据,使用随机森林算法训练初始资源预测模型。预测模型的输入特征分为两个部分,第一部分是用户作业的启动参数,从用户提交的作业描述文件中提取或由系统自动补全;第二部分是同类型作业的历史执行数据。预测模型的输出标签就是作业需求的中央处理器、内存、GPU算力、GPU显存、网络带宽、存储空间资源,以及需要为作业生成的实例数。

训练预测模型时,先使用随机搜索的参数搜索策略,对搜索到的预测效果最好的参数,再在参数附近采用网格搜索的参数搜索策略,以搜索到最佳模型参数。

作业初始资源预测阶段对应技术方案步骤(3)。具体实施方式为:根据用户当前提交作业的启动参数和期望完成时间,使用预测模型估算作业需要的初始资源量,以及需要为作业启动的实例数。随后将作业资源均分给所有实例。

每次进行预测后,使用新数据对预测模型进行完善。图2展示了本发明中每次预测后完善旧模型参数的流程。当新增记录的数量较少时,完善模型只需部分优化模型参数,无需重新训练整个模型;当新增记录的数量超过系统设定阈值时,才需要重新训练模型。

作业实例调度阶段对应技术方案步骤(4)。具体实施方式为:首先定义了三个调度队列,分别用于保存可调度实例、执行失败需重调度的实例以及暂无法调度的实例。对于新创建的作业实例,首先加入可调度实例队列;对于暂时找不到可调度主机的作业实例,从可调度实例队列移动到不可调度实例队列;对于执行失败需要重新调度的作业实例,从主机删除并进入执行失败实例队列。每次只从可调度实例队列中取出一个实例进行调度。调度当前实例时,不考虑其它实例的状态。

为了解决本发明的资源分配问题,就需要在调度过程中综合考虑不同衡量因素。图3介绍了如何综合多个衡量因素来确定每个作业实例的调度方案:

1)过滤可调度主机:遍历集群中的主机,直到过滤出足够数量的可调度主机。可调度指主机满足作业实例的资源需求,且端口等不存在冲突问题。

2)对主机打分:调度实例时,将每一个需要考虑的因素都实现为一个打分子模块。本发明考虑的因素包括集群中主机的资源负载、集群总体的拓扑结构、用户偏好以及GPU设备的分布四种。在主机打分过程中,所有子模块并行工作,每一个子模块都得到一个得分。对所有的得分按统一标准归一化后,基于权重w

例如,当实例需求的GPU算力资源小于1时,可以与其它实例共享同一GPU设备。此时实例只使用该GPU设备的部分显存,因此需要为其找到有足够空闲显存的GPU设备。为了避免GPU显存浪费,GPU分布子模块优先从全部GPU设备的空闲显存中,选择能满足作业要求、且大小最小的空闲显存。因此,本发明为该子模块设计的打分方法为:

Score

式中,Score

由于主机上有多个GPU设备,得到每个设备的得分后,即可将其中最高的得分,作为该子模块对主机的打分。

3)基于主机得分排序:对主机进行重排序,总得分最高的主机排在最前面。若有总得分完全相同的主机,则随机选择一个排在前面。

4)实例与主机绑定:对从调度队列中取出的第一个作业实例,以及排序得到的总得分最高的主机,直接进行绑定工作。随后在主机上运行该实例。

弹性伸缩判断阶段对应技术方案步骤(5)。具体实施方式为:作业每一轮深度学习训练迭代结束后,估算作业的预期完成时间T

T

式中,T

随后,计算用户期望作业完成时间T

offset

若offset

弹性伸缩系数计算阶段对应技术方案步骤(6)。具体实施方式为:首先计算用户期望的作业执行速度Speed

Speed

再结合作业的当前执行速度Speed,即可得到对作业资源进行弹性伸缩的系数w:

w=Speed/Speed

实例数调整阶段对应技术方案步骤(7)。具体实施方式为:根据弹性伸缩系数w,为作业启动相应数量实例、或停止相应数量实例。为避免对所有资源按照相同的伸缩系统w进行扩缩容造成的部分类型资源浪费问题,本发明借助从监控系统获取的各类型资源实时监控数据,对作业使用的每一种资源,都计算得出该作业所有实例的平均负载情况。为了尽可能使资源得到充分的利用,在扩容时优先选择负载较高的资源。例如,某作业执行时,GPU算力资源负载较高,而内存资源的负载相对较低,则进行资源扩容时,GPU算力的资源扩容比例按系统设定系数适当增多,内存资源的扩容比例适当减少。在缩容时,除了直接停止相应实例,本发明还借助了GPU虚拟化技术、资源隔离技术等,为运行中的作业实例降低资源量。

本发明提出了一种面向深度学习的作业资源自动弹性伸缩方法。通过对作业资源的周期性调整,保证作业按照用户期望时间完成,作业完成时间误差仅为1.9%~8.6%。在初始资源预测方面,本发明预测误差比其它常用预测方法低21.8%~30.8%,平稳度则高24.6%~75.0%;在作业实例调度方面,本发明可显著降低作业平均完成时间,比其它常用调度方法低15%~46%;在系统开销方面,本方法无需准确的作业资源预测,可极大降低计算开销。综上,本发明所研究提出的面向深度学习的作业资源自动弹性伸缩方法具有显著的性能优化效果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号