本发明涉及人工智能领域,更具体地涉及面向深度学习的分布式计算系统的作业调度方法和装置。
背景技术:
1、深度学习技术应用对我们生活的各个方面产生了显著了影响,例如人脸识别、语言翻译、广告推荐等。深度学习模型的性能一般与复杂的神经网络结构有很大关系,可能包含成千上万亿模型参数。训练一个生产模型可能需要数千亿次的计算,消耗大量的gpu/cpu算力资源。因此,研究机构、人工智能公司和云提供商通常会构建大规模的算力集群平台来促进深度学习模型的开发。通常,这些集群以多租户的方式进行管理,通过资源调控和访问控制,为用户提供不同的服务。作业调度器是管理资源和调度作业的重要部件,决定了整个集群的资源利用率和作业性能,影响运营成本和用户体验。
2、在典型的集群作业调度策略中,利用机器学习模型对历史数据(包括作业名称、用户、gpu需求、提交时间等)进行分析,来预测作业的运行时间。这些典型调度策略中,基于两个假设特征:1)大多数作业时重复或者再次出现;2)相同或者相似的作业执行始终一致。但是根据现有的研究表明:只有40%-60%的作业是重复的,同一个作业在不同的机器执行并不一致。基于历史的数据对作业结束时间进行预测的精度较差,从而导致作业调度效果不佳、资源利用率不高等问题。
技术实现思路
1、本发明要解决现有调度程序中的作业结束时间预测精度较差的问题,提供面向深度学习的分布式计算系统的作业调度方法和装置。
2、为实现上述目的,本发明提供了一种分布式计算系统的调度方法、装置、设备、存储介质、以及计算机程序产品。
3、根据本发明的第一方面,提了面向深度学习的分布式计算系统的作业调度方法,包括:
4、s1.获取用户输入的作业信息,并存储在数据库中,作业信息包括作业名称、类型、所需的资源、作业执行参数、作业提交时间;
5、s2.获取集群中各节点的缓存信息,并存储在数据库中,其中缓存信息包括主机节点标识、状态、数据源标识;
6、s3.响应和接收到发起作业执行的请求,作业执行根据所述资源数量和所述获取的节点缓存信息,分配到匹配的计算节点,并给作业分配一个优先级,根据所述优先级维护待执行作业队列;
7、s4.所述的计算节点根据作业优先级按照时间片方式执行作业,所述作业根据固定时间执行完成后被挂起,并将结果存储在数据库中同时发起模型更新请求;所述结果包括模型训练的损失值、模型训练时间、模型迭代步数。
8、s5.响应和接收到模型更新作业的请求,在所述数据库中查询所述作业所需的数据,计算作业剩余结束时间,并将计算结果保存在数据库中同时发起队列优先级更新请求;
9、进一步,所述计算作业剩余结束时间步骤包括:在每次训练步骤后,收集一组训练损失数据点(k,l);对数据进行预处理即对数据进行平滑处理;用非负最小二乘(nnls)求解器找到最佳系数以拟合迄今为止收集的损失点;使用拟合的损失模型和预定义的收敛阈值δ,计算作业实现收敛所需的总迭代数,以及从现在开始到收敛所需的迭代数;基于每次迭代的batch size、每次迭代的时间估计出该作业结束时间。
10、s6.响应与接收到更新所述队列请求,在所述数据库中查询所需的数据,并根据所述数据判断作业是否结束,如所述作业结束,结束相关作业,并将该作业从所述作业队列中删除;如果该作业未结束,更新该作业优先级,然后回到s4,进行下一轮作业执行。
11、进一步,步骤s1所述的作业执行参数包括:模型训练的batch size、初始学习率、使用数据集路径。
12、进一步,步骤s3所述的分配作业到匹配的计算节点包括:首先将作业分配到满足条件的闲置资源,若无满足条件的闲置资源,寻找满足条件且待执行作业队列最短的资源;
13、步骤s3所述的优先级分配规则是:对于计算资源上无正在执行的作业,新作业优先级最高,对于计算资源上存在正在执行的作业,新作业的优先级次高。
14、进一步,步骤s5所述计算作业结束的剩余时间包括以下子步骤:
15、(5.1)在每次训练步骤后,收集一组训练损失数据点(k,l);
16、(5.2)对数据进行预处理即对数据进行平滑处理;
17、(5.3)使用非负最小二乘(nnls)求解器找到最佳系数以拟合迄今为止收集的损失点;
18、(5.4)使用拟合的损失模型和预定义的收敛阈值δ,计算作业实现收敛所需的总迭代数,以及从现在开始到收敛所需的迭代数;
19、(5.5)基于每次迭代的batch size、每次迭代的时间估计出该作业结束的剩余时间。
20、根据本发明的第二方面,提了一种面向深度学习的分布式计算系统的作业调度装置,包括:
21、获取单元,被配置成获取集群中各节点的缓存信息、用户输入的作业信息,其中缓存信息包括主机节点标识、状态、数据源标识,作业信息包括作业名称、类型、所需的资源、作业执行参数、作业提交时间;
22、作业单元,被配置成响应于接收到发起执行作业的请求、执行模型更新的请求、执行更新作业优先队列的请求;
23、查询单元,被配置成在所述数据库中查询所述作业所需的数据;
24、调度单元,被配置成将所述作业调度到查询到的缓存信息的主机或者被指定的主机节点上执行。
25、根据本发明的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够实现第一方面所述的面向深度学习的分布式计算系统的作业调度方法。
26、根据本发明的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行第一方面所述的面向深度学习的分布式计算系统的作业调度方法。
27、根据本发明的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现第一方面所述的面向深度学习的分布式计算系统的作业调度方法。
28、从以上技术方案可以看出,本发明具有以下优点:
29、本发明通过调度器和模型更新引擎两个重要组件,利用深度学习作业迭代性特性,根据数学建模方式更新作业的预测时间,较少依赖用户输入信息,有效提高作业执行时间预测精度;本发明的相应的动态更新作业优先级,利用抢占机制,动态地执行作业,可以提高整个集群资源利用率,减少作业平均完成时间。
1.面向深度学习的分布式计算系统的作业调度方法,包括以下步骤:
2.根据权利要求1所述的面向深度学习的分布式计算系统的作业调度方法,其特征在于,步骤s1所述的作业执行参数包括:
3.根据权利要求1所述的面向深度学习的分布式计算系统的作业调度方法,其特征在于,步骤s3所述的分配到匹配的计算节点,系分配到满足条件的最合适资源,包括:
4.根据权利要求1所述的面向深度学习的分布式计算系统的作业调度方法,其特征在于,步骤s3所述的给作业分配一个优先级的具体方式是:
5.根据权利要求1所述的面向深度学习的分布式计算系统的作业调度方法,其特征在于,步骤s4所述的作业执行结果,包括:
6.根据权利要求1 所述的面向深度学习的分布式计算系统的作业调度方法,其特征在于,步骤s5所述计算作业结束的剩余时间包括以下子步骤:
7.一种面向深度学习的分布式计算系统的作业调度装置,其特征在于,包括:
8.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至6任一项所述面向深度学习的分布式计算系统的作业调度方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行如权利要求1至6任一项所述的面向深度学习的分布式计算系统的作业调度方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现如权利要求1至6任一项所述的面向深度学习的分布式计算系统的作业调度方法。