一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于机器学习辅助的负载均衡方法及系统

2022-11-28 12:44:02 来源:中国专利 TAG:


1.本发明涉及高性能计算、并行计算和高通量计算领域。具体为在针对大批量子体系或高通量计算任务的分布式计算场景中,利用机器学习结合化学信息学的手段对每个计算任务给出预测的计算量。在此基础上,经由静态、动态负载均衡相结合的任务规划方案,平衡分布式计算时各个计算节点的任务负载,优化算力的分配及提高分布式计算的效率。


背景技术:

2.高性能计算(high-performance computing,hpc)技术的发展为针对材料、化学、药物等领域的计算模拟提供了坚实的基础。随着基于高通量、大数据、人工智能等的新科研范式愈发流行,算力的规划变得愈发重要,针对大量计算任务的合理调度和算力分配是提高hpc计算集群整体运行效率的关键。根据amdahl定律可以推知,计算机的理论并行加速能力随着计算资源的增加而增加,然而由于程序固有的串行模块以及并行时负载不均衡的存在,使得并行效率和可扩展性往往存在瓶颈。相对于代码层面的分析、重构等来改善串行模块的执行效率,采用合适的负载均衡(load balancing)算法是一个相对简单的、可大幅提高程序执行效率的方案。
3.在针对材料、蛋白等体系的高通量或第一原理计算中,非常多的计算任务是可以采用并行化或分布式计算的方案进行计算加速,但是这些计算任务往往并不一定相同的。因此,合理的负载均衡方案对于优化算力的分配、保障计算的效率是非常有必要的。所谓合理的负载均衡,指将各种算力需求不同、耗时长短不一的任务,合理的在计算资源上进行分配,使得并行或者分布式计算中闲置的计算资源最小化的优化策略。在优化资源分配的同时,优良的负载均衡策略能够在分布式计算场景下最小化整体任务计算所需要的时间,对于诸多的需要时效性、及时性计算的场景,例如药物筛选计算、抗体分子作用计算等,具有非常重要的作用。
4.然而,负载均衡被认为是一个np难问题。一般来说,有两种流行的负载均衡算法,分别是静态(static)负载均衡和动态(dynamic)负载均衡算法。前者在运算执行期间不会考虑计算单元的状态,通常需要前验的负载相关的数据,用以更好的分别各个计算单元的任务负载;后者则需要在运算过程中实时获取计算单元的状态,并进行针对性的调整。一般来说,静态负载均衡实现简单且几乎没有空置时间,因此适合应用在大量“细粒度”的较小计算任务的场景,例如hpc场景下的高斯积分(gaussian integration)的求解。与之相对的,如果有大量的规模不一的计算任务,此时动态负载均衡一般是更加适合的方案。例如,nikodem等人提出的“work stealing”算法、lai等人提出的结合张量缩并的动态任务分配方案。此外,也有一些诸如charm 、cyclops tensor framework等动态负载均衡框架,也能在实际计算中快速的实现动态负载均衡求解。
5.值得注意的是,当有大量的计算单元的场景下,动态负载均衡的执行效率会受很大的影响,原因是动态负载均衡中信息交换的存在。一个可能的改进方案是动态负载均衡和静态负载均衡结合的方案,即将主要的任务通过静态负载技术在计算设备上进行分配,
在此基础上通过动态负载均衡技术处理剩余的计算任务。这种改进的负载均衡方案已经应用到了多种计算领域,例如chow等人的可伸缩fock矩阵构造方案,应用了静态负载及“work stealing”动态负载方案。此外还有启发式的静态负载均衡方案,例如alexeev等人的改进静态负载均衡的分片分子轨道(fragment molecular orbital)的计算方案。


技术实现要素:

6.为了进一步提高并行计算能力,优化任务调度和计算时的负载均衡,本发明提出了一种可基于机器学习辅助的静态、动态负载均衡方法及系统,并已经应用在第一原理高通量计算中。对于待计算的大量子任务,每个任务均可以使用1到n的计算资源(如计算节点)。针对大量的子任务,在计算前可以使用机器学习的手段批量预测这些子任务需要的计算时间。预测之后,可以使用贪心算法(greedy algorithm)等规划算法,将大量的子任务按照预测的计算时间分配到m个计算节点,即实现静态负载规划。若初次规划之后,各个计算节点的预计负载没有接近均衡的负载,则增加预期耗时最长的任务的计算资源,使该任务的预期计算耗时大幅下降。在底层对最耗时任务进行并行化计算的基础之上,上层利用贪心算法等规划方案重新平衡各个计算节点的负载。获得机器学习辅助静态负载规划。在静态负载规划完成后,对任务列表中靠后的任务,可以同时引入动态负载均衡方案,使得最大程度的利用计算集群的算力。
7.本方案可划分为四个主要的模块:输入模块、预测模块、规划模块、计算模块,整体流程架构如附图1所示。各个模块我们简述如下:
8.(1)输入模块
9.该模块负责接收待计算的批量计算任务。该模块同时可以进行各个计算任务的合理性分析、格式转换或输入文件生成等功能。最后,输入模块将这些信息传递给预测模块。计算任务即计算所需要的输入文件;对于量子化学计算,计算任务中可包括分子的结构,计算方法。针对量子化学计算进行合理性分析,具体包括计算任务中的:1.原子成键合理性,不合理的可进行补氢操作2.针对待计算任务中的分子结构进行电荷和自旋多重度检查,不合理的可进行校正3.对计算任务中的原子坐标位置的重复检查,如果出现重复则在任务列表中清除该计算任务,并做输出提示。经过以上处理,得到的结果是能够获得合理的计算任务的输入文件,避免诸多由于上述因素引起的报错;同时合理的输入文件也保证预测模块可以给出可靠的计算时间预测结果。
10.(2)预测模块
11.该模块主要负责预测每一计算任务所需要的计算时间。这部分我们可以使用我们自主开发的基于化学信息学及多种机器学习模型的计算时间预测模块(acsomega_6_2001_2021)。
12.(3)规划模块
13.该模块主要依据预测模块提供的计算机时数据,在分布式计算集群上对所有的计算任务进行统筹规划。当前底层主要应用针对计算总耗时的minimizing方案和min-max方案,分别对应单任务单计算单元以及尽可能少量的并行化计算任务;上层规划模块采用贪心算法,持续将最大耗时的任务规划到承担计算任务最少的计算节点,从而使各个计算单元(计算节点)上的预期负载尽可能接近。例如,针对高通量第一原理计算或蛋白质子体系
计算时,其规划流程为:1.读入待计算的输入文件,例如结构数据集、碎片分子集等2.将读入的子体系、分片等输入文件以列表或元组的形式存储在计算机中3.由子体系或分片列表,通过程序生成计算任务列表4.根据分布式计算集群的底层规划方案进行任务规划5a.若底层采用minimizing方案(单任务单节点),则根据预测的各个计算任务的计算时间,外层使用贪心(greedy)算法进行规划,获得机器学习辅助的静态计算负载规划。5b.若底层采用min-max方案(单任务多节点),则首先根据预测的各个任务的计算时间,外层使用贪心(greedy)算法进行规划,计算当前规划下预期的整体节点利用率p,其中ti是第i个节点的预计计算时间,n为总计算节点数目,t
max
是最耗时节点的预计计算时间。如果整体节点的利用率p小于设定阈值,则增加最耗时计算任务的计算节点数目,更新预测最耗时计算任务的计算时间,然后外层重新采用贪心算法进行规划;循环执行,直到整体节点的利用率p大于或等于设定阈值,输出机器学习辅助的静态计算负载规划,参考附图2。
14.(4)计算模块
15.计算模块接收规划模块传来的静态规划结果,并据此开展计算。计算的过程中,计算模块可以将静态规划中排序靠后的若干计算任务或计算时间小于设定时间长度的任务动态调整到空闲的计算节点,即实现静态、动态负载均衡结合的任务调度。为了高效的实现静、动态结合的实时任务调度,我们独立开发了基于julia高性能计算语言的分布式计算引擎,并示于图3。首先该计算引擎可以从流行的slurm(simple linux utility for resource management)、lsf(load sharing facility)等hpc集群的任务调度系统中获取集群的任务调度权限;之后在任务计算的过程中,该引擎可使各个分布式计算节点“自监控”任务状态,即1.非运行节点自动按照规划获取计算作业2.运行中节点自我锁定防止任务冲突3.空闲节点自发匹配的单任务跨节点并行计算4.支持异构计算。当所有节点任务结束时,终止计算引擎的工作,并释放所有占用的节点。相对于默认的slurm、lsf等排队调度系统,该计算引擎可被视为具备静、动态作业调度能力的专用计算调度系统。在该调度系统的动态调整模块中,目前内置了自上而下和自下而上两种动态负载均衡模式,以期能够更好的达到计算时负载优化的目的,并示于附图4。自上而下的方式是将列入动态负载的任务均匀分配到各个可计算的分布式节点,此时同一任务可能被分配到多个计算节点;当节点静态规划部分的计算任务计算完毕后,会从本节点预先分配的动态任务队列中选取未计算的任务进行计算。自下而上的方式是将列入动态负载均衡的任务均匀分配到任务池中,当节点静态规划部分的计算任务计算完毕后,会从任务池中持续选取未计算的任务进行计算。
16.本发明的优点如下:
17.1.在分布式计算的场景下,能够显著提高节点的利用率、降低节点的空置率,进而加速实际的应用计算。
18.2.在分布式计算的场景下,能够最优化算力的分配和进行实时调整,提高计算效率,达到节能减排的目的。
19.3.基于机器学习预测,并结合动静态负载均衡的分布式计算规划方案,能够推广应用到多个科研及工业领域,具有较好的应用潜力。
附图说明
20.图1为本发明系统的整体架构。
21.图2为本发明系统中结合机器学习计算时间预测的静态负载均衡规划模块流程示例图。
22.图3为本发明系统中可应用静、动态负载均衡的计算模块实施示意图。
23.图4为本发明系统中两种不同的动态负载均衡模式示意图。
24.图5为本发明系统的应用效果示意图;
25.(a)默认负载规划,(b)默认负载规划结合动态负载规划,(c)机器学习辅助的静态负载规划,(d)机器学习辅助的静、动态负载规划。
具体实施方式
26.下面结合附图对本发明进行进一步详细描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
27.本发明描述的机器学习辅助的负载均衡方法及其实现系统可由python和julia计算机编程语言实现。目前的实现中,我们采用julia语言实现了输入模块;预测模块使用课题组前期开发的基于python语言的计算机时预测模块(acsomega_6_2001_2021);规划模块基于预测模块的数据,亦使用python语言编制;计算模块使用julia语言编制,主要应用了julia语言的分布式计算功能,并可同集群的任务调度系统(如已测试的slurm、lsf等)兼容。该系统的应用效果示例(算例为p38蛋白-配体体系计算),列于附图5。
28.尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献