CN111611087B - 一种资源调度方法、装置和系统 - Google Patents
一种资源调度方法、装置和系统 Download PDFInfo
- Publication number
- CN111611087B CN111611087B CN202010614480.6A CN202010614480A CN111611087B CN 111611087 B CN111611087 B CN 111611087B CN 202010614480 A CN202010614480 A CN 202010614480A CN 111611087 B CN111611087 B CN 111611087B
- Authority
- CN
- China
- Prior art keywords
- accelerator
- graph
- subgraph
- workload
- calculation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Abstract
本申请提供一种资源调度方法,包括:获取深度学习作业的作业程序,将作业程序进行转换,得到计算图中间表示;将计算图中间表示进行分割得到子图集合;对子图集合进行包装,得到各类加速器对应的工作负载镜像;根据预设的加速器能力信息、用户提交的服务水平条件和资源池的信息,从加速器集群中确定目标加速器,发送对应的工作负载镜像至目标加速器。本申请利用计算图中间表示对不同框架的作业程序进行统一抽象,基于计算图中间表示得到多种工作负载镜像,综合加速器能力信息、服务水平条件和资源池的信息,确定目标加速器并对其分配相应的工作负载镜像,合理的利用加速器资源,提高使用效率。本申请提供了具有上述有益效果的资源调度装置和系统。
Description
技术领域
本申请涉及资源调度技术领域,特别涉及一种资源调度方法、资源调度装置、资源调度系统。
背景技术
深度学习中计算密集型的工作负载对计算系统的算力提出了极高的要求,为了提高深度学习各类工作负载的计算效能,人们通常通过两种手段来提升计算系统的算力。一是通过分布式计算的途径,增加同时参与计算的计算机节点数量来获得更高的计算能力,即通常说的水平扩容;二是通过提高单个计算机节点的计算能力,包括使用更高性能的中央处理器(Center Processing Unit,CPU)和使用专用的计算加速器等,即通常说的垂直扩容。随着深度学习相关技术和应用的飞速发展,在生产环境中,深度学习研究人员均选择将上述两种手段进行融合构建深度学习云或者深度学习即服务平台,通过在大规模分布的计算系统中各个计算机节点上增加深度学习加速器的方式,同时提高单点计算性能和全系统的吞吐率。
在大规模分布的深度学习计算系统中,使用多种异构加速器以支持不同类型工作负载同时运行成为了一个显著的趋势。在使用这样的计算系统时,当前技术采用的资源调度方法的资源使用效率差,不能够对异构加速器进行调度,局限性大。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
发明内容
本申请的目的是提供一种资源调度方法、资源调度装置、资源调度系统,能够形成全系统一致的计算图中间表示的描述,并且能够合理的利用了加速器资源,优化了加速器的资源调度。其具体方案如下:
本申请公开了一种资源调度方法,包括:
获取深度学习作业的作业程序,将所述作业程序进行转换,得到计算图中间表示;
将所述计算图中间表示进行分割得到子图集合;
对所述子图集合进行包装,得到各类加速器对应的工作负载镜像;
根据预设的加速器能力信息、用户提交的服务水平条件和资源池的信息,从加速器集群中确定目标加速器,发送对应的所述工作负载镜像至所述目标加速器。
优选的,还包括:
按照所述加速器的类别构造所述资源池;
实时监测所述加速器上的工作负载运行情况;
接收到所述加速器的反馈信息,并根据所述反馈信息更新所述资源池的信息。
优选的,预设的所述加速器能力信息的建立过程包括:
读取基准测试程序,并对所述基准测试程序进行分割、包装,得到各类所述加速器的基准工作负载;
将所述基准工作负载发送至对应的所述加速器,以使各类所述加速器运行对应的所述基准工作负载;
接收到所述加速器发送的运行信息,并根据所有的所述运行信息得到所述加速器能力信息。
优选的,所述将所述作业程序进行转换,得到计算图中间表示,包括:
校验所述作业程序对应的深度学习模型是否正确;
若所述深度学习模型正确,则将所述作业程序进行计算图转化,得到初始计算图中间表示;
判断所述初始计算图中间表示是否完整;
若是,则将所述初始计算图中间表示确定为所述计算图中间表示。
优选的,所述校验所述深度学习模型是否正确,包括:
判断所述深度学习模型是否与标识模型类型一致;
若一致,则判断所述深度学习模型的模型校验码是否正确;
若是,则判断所述深度学习模型的模型相关参数与标准参数是否匹配;
若匹配,则确定所述深度学习模型正确。
优选的,所述将所述计算图中间表示进行分割得到子图集合,包括:
将所述计算图中间表示进行算子融合,得到中间计算图;
将所述中间计算图按照算子组的复杂程度进行划分,得到计算子图组;
将所述计算子图组中的子图按照工作流进行排列,并确定所述工作流中的最大时长路径;
根据所述最大时长路径确定所述子图集合和对应的负载工作流。
优选的,所述对所述子图集合进行包装,得到各类加速器对应的工作负载镜像,包括:
从所述负载工作流中读取所述子图集合中的一个所述子图,从基础镜像仓库中读取每类所述加速器对应的基础镜像;
将所述子图和所述基础镜像进行封装,得到子图镜像;
判断所述负载工作流中是否还存在所述子图;
若不存在所述子图,则按照所述负载工作流的顺序将对应的所述子图镜像进行处理,输出每类所述加速器对应的所述工作负载镜像。
优选的,还包括:
判断所述加速器的数量是否发生变化,或者,判断所述基准测试程序是否发生变化;
若是,则重新确定所述加速器能力信息。
本申请提供了一种资源调度装置,包括:
工作负载转换模块,用于获取深度学习作业的作业程序,将所述作业程序进行转换,得到计算图中间表示;
工作负载分割模块,用于将所述计算图中间表示进行分割得到子图集合;
工作负载包装模块,用于对所述子图集合进行包装,得到各类加速器对应的工作负载镜像;
资源管理模块,用于根据预设的加速器能力信息、用户提交的服务水平条件和资源池的信息,从加速器集群中确定目标加速器,发送对应的所述工作负载镜像至所述目标加速器。
本申请提供了一种资源调度系统,包括:
多个计算节点,包括加速器,所述加速器用于运行基准工作负载;
至少一个管理节点,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上所述资源调度方法的步骤。
本申请提供一种资源调度方法,包括:获取深度学习作业的作业程序,将作业程序进行转换,得到计算图中间表示;将计算图中间表示进行分割得到子图集合;对子图集合进行包装,得到各类加速器对应的工作负载镜像;根据预设的加速器能力信息、用户提交的服务水平条件和资源池的信息,从加速器集群中确定目标加速器,发送对应的工作负载镜像至目标加速器。
本申请利用标准的计算图中间表示,解决了异构工作负载在异构加速器上运行的复杂性,能够对不同的框架的作业程序进行统一抽象,极大地减少了工作量,然后对计算图中间表示依次进行分割和包装,得到加速器的工作负载镜像,进而确定合适的加速器资源,并分配相应的工作负载镜像到目标加速器,本申请合理的利用了加速器资源,提高了加速器资源的使用效率。
本申请同时还提供了一种资源调度装置和资源调度系统,均具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种资源调度方法的流程图;
图2为本申请实施例提供的一种工作负载转化的流程示意图;
图3为本申请实施例提供的一种工作负载分割的流程示意图;
图4为本申请实施例提供的一种工作负载包装的流程示意图;
图5为本申请实施例提供的一种资源管理的流程示意图;
图6为本申请实施例提供的一种加速器评估模块的流程示意图;
图7为本申请实施例提供的一种资源调度装置的结构示意图;
图8为本申请实施例提供的一种软件构架;
图9为本申请实施例提供的一种具体网络拓扑图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在大规模分布的深度学习计算系统中,使用多种异构加速器以支持不同类型工作负载同时运行成为了一个显著的趋势。在使用这样的计算系统时,当前技术采用的资源调度方法的资源使用效率差,并不能对异构加速器进行调度,局限性大。基于上述技术问题,本实施例提供一种资源调度方法,能够形成全系统一致的计算图中间表示的描述,解决了异构工作负载在异构加速器上运行的复杂性,并且能够合理的利用了加速器资源,保证系统整体的使用效率,具体请参考图1,图1为本申请实施例提供的一种资源调度方法的流程图,具体包括:
S110、获取深度学习作业的作业程序,将作业程序进行转换,得到计算图中间表示;
本步骤的目的是将不同框架的作业程序转换成统一的计算图中间表示,该计算图中间表示是标准的描述计算图数据结构的一个文件。所有框架的计算图都转换成计算图中间表示,面对各种硬件去做各种优化,大大的降低了工作量。该计算图中间表示包含了模型、参数的中间表示。
为了保证中间图计算表示转换的有效性,本实施例通过校验对应的深度学习模型和计算图中间表示的完整性来实现上述目的,将作业程序进行转换,得到计算图中间表示,包括:校验作业程序对应的深度学习模型是否正确;若深度学习模型正确,则将作业程序进行计算图转化,得到初始计算图中间表示;判断初始计算图中间表示是否完整;若是,则将初始计算图中间表示确定为计算图中间表示。
若深度学习模型正确,将作业程序进行计算图转化得到初始计算图中间表示,只有初始计算图中间表示是完整的,才能够得到计算图中间表示,否则均停止操作。进一步的,将作业程序进行计算图转化得到初始计算图中间表示具体的可以是:利用开放神经网络交换(Open Neural Network Exchange,ONNX)ONNX工具进行转化,得到ONNX初始计算图中间表示,当然还可以是其他形式的中间表示,用户可根据实际需求进行转化,只要能够实现本实施例的目的即可。本实施例通过两次校验,只有两次校验均通过才能够得到计算图中间表示,极大地提高了计算图中间表示的有效性,避免了由于计算图中间表示的错误造成的后续资源调度的错误的出现。
进一步的,为了保证深度学习模型校验的精确性,本实施例提供了一种校验方法,具体是,校验深度学习模型是否正确,包括:判断深度学习模型是否与标识模型类型一致;若一致,则精确性判断深度学习模型的模型校验码是否正确;若是,则判断深度学习模型的模型相关参数与标准参数是否匹配;若匹配,则确定深度学习模型正确。
具体的,作业程序中包括深度学习模型、模型相关的参数和模型校验码。当校验深度学习模型的正确性时,依次判断深度学习模型的类型、模型校验码、模型相关参数的正确性,只有三者均校验成功,才能确定深度学习模型的正确性,否则深度学习模型均为错误。通过三次校验深度学习模型,极大地提高了深度学习模型校验的,避免了仅仅采用模型类型或模型校验码或模型相关参数进行校验带来的校验结果错误的情况的发生。
针对上述技术方案,请参考图2,图2为本申请实施例提供的一种工作负载转化的流程示意图,包括:S21、读入作业相关数据(作业程序),包括深度学习模型、模型相关参数以及模型校验码。S22、校验深度学习模型正确性,包括模型类型正确性(即输入模型与标识模型类型的一致性)、深度学习模型的完整性、模型与模型相关参数的匹配性。如果深度学习模型正确,则转S23,否则转S26提示错误并退出。S23、进行计算图转化,具体实施中选取ONNX作为标准中间表示,并依据输入模型的类型选取ONNX提供的工具进行转化。S24、判断计算图是否正确,即计算图校验,校验转换后中间表示(初始计算图中间表示)的完整性和正确性。如果正确则转S25,否则转S26提示错误并退出。S25、导出计算图中间表示,本实施中导出ONNX描述的ONNX计算图中间表示。
S120、将计算图中间表示进行分割得到子图集合;
本步骤的目的是将计算图中间表示进行分割。
为了保证分割过程不会出现子图的顺序发生错误,本实施例提供一种分割方式,能够保证分割的子图集合顺序准确,具体的,将计算图中间表示进行分割得到子图集合,包括:将计算图中间表示进行算子融合,得到中间计算图;将中间计算图按照算子组的复杂程度进行划分,得到计算子图组;将计算子图组中的子图按照工作流进行排列,并确定工作流中的最大时长路径;根据最大时长路径确定子图集合和对应的负载工作流。
具体的,将计算图中间表示进行算子融合,主要是根据加速器支持的计算指令,将能够归并到一起计算的算子合并成一个算子组,构成中间计算图。将中间计算图按照算子组的复杂程度进行划分,将中间计算图分割成复杂程度相近的一组计算子图,将计算子图按照工作流的模式进行编排,维护子图间的顺承关系,分析工作流中的关键路径(即计算时间最长的路径),并最终输出负载工作流。此时保证了子图可以按照顺序进行编排,能够保证无论存在支路还是不存在支路均能够得到准确地顺序。
具体的,请参考图3,图3为本申请实施例提供的一种工作负载分割的流程示意图,工作负载分割器主要负责将转换器生成的计算图中间表示进行进一步的分割,形成若干计算子图,并按作业将计算子图编组成工作流,以便进一步包装,包括:S31、读入计算图中间表示。S32、算子融合,即对计算图中间表示进行算子融合,主要是根据加速器件支持的计算指令,将能够归并到一起计算的算子合并成一个算子组,构成中间计算图。S33、子图划分,即将中间计算图按照算子组的复杂程度进行划分,将中间计算图分割成复杂程度相近的一组计算子图(计算子图组)。S34、工作流构建,即将计算子图组的计算子图按照工作流的模式进行编排,维护子图间的顺承关系。S35、关键路径分析,即分析工作流中的关键路径(即计算时间最长的路径),最终确定子图集合,并输出负载工作流。
S130、对子图集合进行包装,得到各类加速器对应的工作负载镜像;
加速器包括但是不限定于:GPU、TPU、FPGA、DSP和以寒武纪Cambricon、比特大陆Sophon。其中,本实施例中基于加速器类型进行包装,得到各类加速器对应的工作负载镜像。其中各类加速器为异构加速器。
本实施例提供一种具体的工作负载镜像的获取过程,其中,对子图集合进行包装,得到各类加速器对应的工作负载镜像,包括:从负载工作流中读取子图集合中的一个子图,从基础镜像仓库中读取每类加速器对应的基础镜像;将子图和基础镜像进行封装,得到子图镜像;判断负载工作流中是否还存在子图;若不存在子图,则按照负载工作流的顺序将对应的子图镜像进行处理,输出每类加速器对应的工作负载镜像。
具体的,按照负载工作流的顺序依次读取一个子图,从基础镜像仓库中读取每类加速器对应的基础镜像。其中,本实施例中利用容器对支持计算图中间表示的运行时环境、深度学习框架、依赖库等进行封装,其中的依赖库包括针对特定加速器的硬件驱动程序和相关优化数学库,形成面向异构加速器件的基础容器镜像,并将每类的加速器对应的基础镜像存储在基础镜像仓库中。然后可以基于该基础容器镜像将分割好的子图进行打包,形成可以运行的工作负载镜像。
具体的,请参考图4,图4为本申请实施例提供的一种工作负载包装的流程示意图,工作负载包装模块将工作负载分割模块输出的负载工作流中的子图,利用基础镜像分别封装成面向各种加速器的工作负载镜像,具体包括:
S41、读入负载工作流。S42、读入一个子图,即从负载工作流中读入一个子图。S43、读取基础镜像,即从基础镜像仓库中读入一组基础镜像(针对每类加速器件各读取一个)。S44、使用基础镜像对子图进行封装,即将子图与基础镜像进行封装,封装方式包括两种,一种是将子图链接进进行,即在镜像中指定访问子图的路径;另一种是将子图直接写入镜像。S45、判断是否还有其他子图,即检查负载工作流中是否还有其他子图,有则转到S43,否则转到S46。S46、输出工作负载镜像,即按照工作流描述的顺承关系组织子图镜像并输出工作负载镜像。
S140、根据预设的加速器能力信息、用户提交的服务水平条件和资源池的信息,从加速器集群中确定目标加速器,发送对应的工作负载镜像至目标加速器。
目标加速器接收到工作负载镜像后,目标加速器运行工作负载镜像。具体的,步骤S140可以是根据预设的加速器能力信息和用户提交的服务水平条件,估算加速度集群使用的优先级;根据优先级确定目标加速器。其中,加速器能力信息是不同加速器对不同工作负载的计算效率、能效等信息;用户提交的服务水平条件具体可以是:用户需要效率或者能耗等要求,当然还可以是其他的要求,只要是能够实现本实施例的目的即可;资源池的信息包括目前各加速器的作业执行状况和资源占用情况。可以理解的是,目标加速器可以是一个服务器对应的加速器还可以是多个服务器对应的加速器。例如,得到的目标加速器是服务器a对应的加速器a,服务器b对应的加速器a,此时服务器a和服务器b的加速器类型一致,均为服务器a;当然,得到的目标加速器是服务器a对应的加速器a,服务器c对应的加速器b,此时,服务器a和服务器c的加速器类型不一致。
值得注意的是步骤S130和步骤S140的步骤不进行限定,当先执行步骤S140时,对应的步骤S130中的各类加速度具体为目标加速器。优选的先执行步骤S130,再执行步骤S140,避免了由于集群中的同时多个资源需求时,由先确定完成目标加速器后,但是由于时间的延迟,该目标加速器已经被占用,此时需要重新确定造成的时间延误,系统运行压力。
其中,预设的加速器能力信息的建立过程包括:读取基准测试程序,并对基准测试程序进行分割、包装,得到各类加速器的基准工作负载;将基准工作负载发送至对应的加速器,以使各类加速器运行对应的基准工作负载;接收到加速器发送的运行信息,并根据所有的运行信息得到加速器能力信息。
本实施例中的资源管理模块,主要负责将用户提交的作业程序包装形成的工作负载镜像进行分析并调度到具体的加速器集群上运行,进一步的,在作业运行期间与集群特定的管理模块交互获取作业运行状态和资源使用情况。
进一步的,资源管理模块的作业调度主要依据几个判断条件:一是作业程序的类型,根据作业程序是否为训练型,工作负载可以区分为共享资源型(非训练型)和独占资源型(训练型),对两种作业形成的工作负载按照不同的原则进行调度。二是服务水平要求,服务水平要求一般为用户和计算系统提供方订立的约束性文件,根据服务水平要求可以推定工作负载最大可使用资源量、功耗优先还是性能优先等要求,主要影响训练型作业的资源分配。
具体的,资源管理模块的工作流程如图5所示,图5为本申请实施例提供的一种资源管理的流程示意图,其具体流程如下:
S501、读入工作负载镜像。S502、判断训练类型是否是训练型,即判断工作负载镜像所属作业程序是否为训练型,如是转S503,如否转S510。S503、将工作负载镜像加入负载队列。S504、判断是否有空闲资源,如有转S505,否则等待直到有空闲资源。S505、取出队列头部负载并查询加速器能力表(加速器能力信息)。S506、估算基于现有资源的加速器集群使用优先级。S507、按照服务水平要求将负载按照优先级发送到一组加速器集群。S508、监听集群特定管理报告的状态,并按照作业关联的工作流驱动负载执行。S509、更新资源使用情况并更新工作负载镜像和作业信息。S510、查询资源使用情况,判断是否有同类作业在运行,有转S511,否则转S512。S511、返回负载启动后接收数据请求的地址(本实施中以远程调用方式提供),转S509。S512、分配工作负载与其他推理作业共享加速器集群资源运行,转S511。
综上可知,本实施例体用的资源调度的整体流程包括两个方面,一个是系统准备环节,主要采用离线执行的方式运行,这里的离线指的是不参与系统的主线流程。准备环节主要目的是获得对不同类型的计算加速器件性能的评价,得到加速器能力信息。通常使用基准测试程序作为输入作业,具体过程包括:①、工作负载转换模块读入基准测试程序,工作负载分割模块和工作负载包装模块将基准测试程序中的作业进行分割、包装成为面向各类加速器的工作负载镜像。②、加速器评估模块加载一组基准工作负载镜像,将基准工作负载镜像分别提交给集群特定的管理模块进行执行,在执行过程中,接收集群特定管理模块反馈的加速器的运行信息。③、集群特定管理模块实际运行各类工作负载,并将运行情况反馈到加速器评估模块。④、加速器评估模块根据执行情况(运行信息)计算生成/更新加速器能力表(加速器能力信息)。另一个是系统运行环节,即主线流程环节。主要用于在集群上执行用户提交的作业,具体过程包括:1、工作负载转换模块读入用户提交的作业程序,工作负载分割模块和工作负载包装模块将基准测试程序中的作业进行分割、包装成为面向各类加速器的工作负载镜像。2、资源管理模块加载工作负载镜像,根据加速器能力表,将工作负载镜像按照加速器能力表和服务水平要求提交给集群特定的管理模块进行执行,在执行过程中,接收集群特定管理模块反馈的信息。3、集群特定管理模块实际运行各类工作负载,并将运行情况反馈到资源管理模块。4、资源管理模块根据执行情况计算更新系统资源使用情况。
基于上述技术方案,本实施例利用标准的计算图中间表示,解决了异构工作负载在异构加速器上运行的复杂性,能够对不同的框架的作业程序进行统一抽象,极大地减少了工作量,然后对计算图中间表示依次进行分割和包装,得到加速器的工作负载镜像,进而确定合适的加速器资源,并分配相应的工作负载镜像到目标加速器,本申请合理的利用了加速器资源,提高了加速器资源的使用效率。
为了提高系统的加速器的使用情况的监控,本实施例中提供一种资源池的信息的收集的方法,包括:按照加速器的类别构造资源池;实时监测加速器上的工作负载运行情况;接收到加速器的反馈信息,并根据反馈信息更新资源池的信息。
其中,本实施例对各个计算节点、加速器上的工作负载运行情况进行监控,对运行完成工作负载进行资源回收,回收的加速器资源重新归还到资源池,对运行异常的工作负载进行重新调度。
为了获取实时有效的加速器能力信息,该资源调度方法还包括:判断加速器的数量是否发生变化,或者,判断基准测试程序是否发生变化;若是,则重新确定加速器能力信息。
进一步的,加速器评估模块主要是是对采用标准的基准测试程序形成的工作负载作为输入,对整个计算系统中的各类加速器对不同类型的工作负载的计算效率、能效等信息进行统计。本申请中对加速器进行评估主要在下述三种情况。情况一:系统部署完成后,首次运行前,出发加速器评估过程,对系统中现有的加速器的能力进行评估并生成加速器能力信息。情况二:系统运维期间,对加速器进行版本升级,或者增加了新的加速器类型,或者去除了某种加速器,执行加速器评价,更新加速器能力信息。情况三,出现新的类型的基准测试程序,执行加速器评价,更新加速器能力信息。
加速器评估模块的工作流程如图6所示,图6为本申请实施例提供的一种加速器评估模块的流程示意图,其具体流程如下:
S61、判断是否移除加速器,如否则转S62,如是则转S67。S62、读入工作负载。S63、判断是否新增加速器,如否则转S64,如是则转S65。S64、判断工作负载是否为新增类型,如是则转S65,如否,则转S68提示信息并结束。S65、向集群特定管理模块提交工作负载。S66、监听集群特定管理模块报告的运行状态。S67、根据监听到的状态信息,计算能力值并更新加速器能力表。
其中,步骤S63和S64,可以同时执行,在本发明具体实施中则是采用串行方式执行。步骤S67中,计算能力值的方法有很多种,在本实施中主要通过两个方面:一是评价计算效率,采用CPU上处理工作负载的时延作为归一化基准值,对各类加速器处理同类负载时的时延进行归一化;二是评价计算能效,采用CPU上工作负载执行的吞吐率和能耗,计算单位能耗的负载处理吞吐率作为归一化的基准值,再对各类加速器上处理同类负载单位能耗吞吐率进行归一化。
基于上述任一实施例,本实施例提供一种资源调度方法,利用统一的深度学习工作负载中间表示描述各类工作程序,并针对异构加速器件构造支持工作负载运行的多种基础容器镜像。在预先进行的加速器对不同类型工作负载计算能力、效能评估的基础上,根据用户提交的工作程序及预期的服务水平要求,以及目前系统资源使用情况,在系统中分配相应的加速器资源进行计算。
具体包括:
1)、利用深度学习计算图中间表示机制(本发明具体实施时使用的开放神经网络交换(Open Neural Network Exchange,ONNX),后续研究对于其他中间表示格式也同样适用),对深度学习工作负载进行描述。将各类深度学习框架构造的工作负载统一转化为ONNX描述格式。
2)、利用容器对支持计算图中间表示的运行时环境、深度学习框架、依赖库等进行封装,其中的依赖库包括针对特定加速器的硬件驱动程序和相关优化数学库。形成面向异构加速器件的基础容器镜像。
3)、对系统中各类加速器件进行资源池化,按照加速器件类别构造资源池,形成全系统统一的资源视图。
4)、构造工作负载分割器,支持将1)中提到的计算图中间表示描述的深度学习工作负载在计算图层面进行子图分割。
5)、构造工作负载包装器,使用2)中实现的基础容器镜像将4)中工作负载分割器分割好的子图进行打包,形成可以运行的工作负载镜像。
6)、构造加速器评估器,将典型的深度学习基准测试程序(benchmark)中的各个工作负载逐一使用4)中的分割器进行子图分割后,并使用5)包装成工作负载,之后分别提交到各类加速器,对加速器计算各类工作负载时的性能、功耗等进行监控,统计出细粒度(子图级)的各类加速器的计算能力和效能信息。
7)、使用4)对用户输入的工作负载进行子图分割,并利用5)根据系统中各类资源使用情况、用户服务水平要求、加速器评估情况对工作负载进行封装,向3)中描述的资源池申请相应加速器资源并将工作负载调度到不同加速器上运行。
8)、对各个计算节点、加速器上的工作负载运行情况进行监控,对运行完成工作负载进行资源回收,回收的加速器资源重新归还到3)中资源池,对运行异常的工作负载进行重新调度。
9)、对工作负载适用的加速器进行优先级排序,在最优加速器资源不足时,调度工作负载到次优的加速器。
提出了一种支持大规模异构深度学习加速器集群的资源调度方法;实现了支持大规模异构深度学习加速器集群的资源调度方法的软件系统和硬件装置;实现了一种对多种深度学习框架训练模型进行统一转化和计算图分割的方法。
下面对本申请实施例提供的一种资源调度装置进行介绍,下文描述的资源调度装置与上文描述的资源调度方法可相互对应参照,参考图7,图7为本申请实施例提供的一种资源调度装置的结构示意图,包括:
工作负载转换模块710,用于获取深度学习作业的作业程序,将作业程序进行转换,得到计算图中间表示;
工作负载分割模块720,用于将计算图中间表示进行分割得到子图集合;
工作负载包装模块730,用于对子图集合进行包装,得到各类加速器对应的工作负载镜像;
资源管理模块740,用于根据预设的加速器能力信息、用户提交的服务水平条件和资源池的信息,从加速器集群中确定目标加速器,发送对应的工作负载镜像至目标加速器。
优选的,还包括:集群特定的管理模块,用于按照加速器的类别构造资源池;实时监测加速器上的工作负载运行情况;接收到加速器的反馈信息,并根据反馈信息更新资源池的信息。
优选的,还包括:加速器能力信息的建立模块,用于读取基准测试程序,并对基准测试程序进行分割、包装,得到各类加速器的基准工作负载;将基准工作负载发送至对应的加速器,以使各类加速器运行对应的基准工作负载;接收到加速器发送的运行信息,并根据所有的运行信息得到加速器能力信息。
优选的,工作负载转换模块710,包括:
校验单元,用于校验作业程序对应的深度学习模型是否正确;
转化单元,用于若深度学习模型正确,则将作业程序进行计算图转化,得到初始计算图中间表示;
判断单元,用于判断初始计算图中间表示是否完整;
确定单元,用于若是,则将初始计算图中间表示确定为计算图中间表示。
优选的,校验单元,包括:
第一判断子单元,用于判断深度学习模型是否与标识模型类型一致;
第二判断子单元,用于若一致,则判断深度学习模型的模型校验码是否正确;
第三判断子单元,用于若是,则判断深度学习模型的模型相关参数与标准参数是否匹配;
确定子单元,用于若匹配,则确定深度学习模型正确。
优选的,工作负载分割模块720,包括:
融合单元,用于将计算图中间表示进行算子融合,得到中间计算图;
划分单元,用于将中间计算图按照算子组的复杂程度进行划分,得到计算子图组;
排列单元,用于将计算子图组中的子图按照工作流进行排列,并确定工作流中的最大时长路径;
确定单元,用于根据最大时长路径确定子图集合和对应的负载工作流。
优选的,工作负载包装模块730,包括:
读取单元,用于从负载工作流中读取子图集合中的一个子图,从基础镜像仓库中读取每类加速器对应的基础镜像;
封装单元,用于将子图和基础镜像进行封装,得到子图镜像;
判断单元,用于判断负载工作流中是否还存在子图;
输出单元,用于若不存在子图,则按照负载工作流的顺序将对应的子图镜像进行处理,输出每类加速器对应的工作负载镜像。
优选的,还包括:加速器评估模块,用于判断加速器的数量是否发生变化,或者,判断基准测试程序是否发生变化;若是,则重新确定加速器能力信息。
请参考图8,图8为本申请实施例提供的一种软件构架。
其中,工作负载转换模块710,主要负责将用户输入的深度学习作业或典型的基准测试程序中的深度学习模型进行计算图转化,形成有效的计算图中间表示。
工作负载分割模块720,主要负责将计算图中间表示进行优化分割,包括算子融合、数据类型转化等,并将优化后的计算图进行分割,分割为一组可以独立进行计算的子图的集合。
工作负载包装模块730,将分割后的子图集合中的各个子图和基础镜像打包成为可运行的容器,打包方式包括两种,一个是将子图直接包装进容器,另一个是在容器中指明可以访问到子图的地址。
资源管理模块740,将包装好的负载进行排队,并查询各类资源的使用情况、各类资源对于特定子图中的工作负载的执行效率,按照服务水平要求约定将工作负载容器提交到相应的计算集群中去运行,并监控负载运行情况,在负载运行完毕后回收资源。
集群特定的管理模块101~(100+n),负责特定集群的作业执行监控,包括提交作业、监督作业运行、重启出错作业、终止作业、撤销作业等,并向资源管理模块报告作业执行情况和资源使用情况。
加速器评估模块750,通过将基准测试进行分割、包装后,在各类加速器集群上进行预先运行测试得到各类作业的执行效率(包括性能、能效等),并向资源管理模块报告执行效率。
加速器能力信息200,存储不同加速器对不同工作负载的计算效率、能效等信息的空间,可以通过多种方式实现。
基础镜像仓库300,存储预先定义好的支持各类加速器的容器镜像。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
下面对本申请实施例提供的一种资源调度系统进行介绍,下文描述的资源调度系统与上文描述的资源调度方法可相互对应参照。
本实施例提供一种资源调度系统,包括:
多个计算节点,包括加速器,加速器用于运行基准工作负载;
至少一个管理节点,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上资源调度方法的步骤。
本申请的技术方案运行在一个分布式的集群计算环境中,集群中每个计算节点均必须包括CPU、内存、主板,优选的配置包括硬盘和深度学习加速器,其中在系统中存在共享的存储子系统(如SAN、NAS或存储服务器阵列)时,计算节点可以不装配硬盘,也可以装配硬盘;在不存在共享存储子系统时,计算节点必须包含硬盘。另外计算节点上选装的深度学习加速器,可以是同构加速器,也可以是异构加速器。计算节点间通过互联网络进行连接,互联网络包括但不限于以太网、Infiniband网络等。
在本申请具体的实施中,深度学习计算环境中的计算节点都配置了硬盘和同构加速器,其中每个节点配置4块加速器。计算节点间通过以太网进行互联,按照计算节点配置加速器种类的不同,将配置同类加速器的计算节点集中安装,减少其相互间通信的跳数。计算环境中,配置至少一个节点作为与用户交互并实施系统监控的管理节点。请参考图9,图9为本申请实施例提供的一种具体网络拓扑图。
由于资源调度系统部分的实施例与资源调度方法部分的实施例相互对应,因此资源调度系统部分的实施例请参见资源调度方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种资源调度方法、资源调度装置、资源调度系统进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (8)
1.一种资源调度方法,其特征在于,包括:
获取深度学习作业的作业程序,将所述作业程序进行转换,得到计算图中间表示;
将所述计算图中间表示进行分割得到子图集合;
对所述子图集合进行包装,得到各类加速器对应的工作负载镜像;
根据预设的加速器能力信息、用户提交的服务水平条件和资源池的信息,从加速器集群中确定目标加速器,发送对应的所述工作负载镜像至所述目标加速器;
其中,所述将所述计算图中间表示进行分割得到子图集合,包括:
将所述计算图中间表示进行算子融合,得到中间计算图;将所述中间计算图按照算子组的复杂程度进行划分,得到计算子图组;将所述计算子图组中的子图按照工作流进行排列,并确定所述工作流中的最大时长路径;根据所述最大时长路径确定所述子图集合和对应的负载工作流;
所述对所述子图集合进行包装,得到各类加速器对应的工作负载镜像,包括:
从所述负载工作流中读取所述子图集合中的一个所述子图,从基础镜像仓库中读取每类所述加速器对应的基础镜像;将所述子图和所述基础镜像进行封装,得到子图镜像;判断所述负载工作流中是否还存在所述子图;若不存在所述子图,则按照所述负载工作流的顺序将对应的所述子图镜像进行处理,输出每类所述加速器对应的所述工作负载镜像。
2.根据权利要求1所述的资源调度方法,其特征在于,还包括:
按照所述加速器的类别构造所述资源池;
实时监测所述加速器上的工作负载运行情况;
接收到所述加速器的反馈信息,并根据所述反馈信息更新所述资源池的信息。
3.根据权利要求1所述的资源调度方法,其特征在于,预设的所述加速器能力信息的建立过程包括:
读取基准测试程序,并对所述基准测试程序进行分割、包装,得到各类所述加速器的基准工作负载;
将所述基准工作负载发送至对应的所述加速器,以使各类所述加速器运行对应的所述基准工作负载;
接收到所述加速器发送的运行信息,并根据所有的所述运行信息得到所述加速器能力信息。
4.根据权利要求1所述的资源调度方法,其特征在于,所述将所述作业程序进行转换,得到计算图中间表示,包括:
校验所述作业程序对应的深度学习模型是否正确;
若所述深度学习模型正确,则将所述作业程序进行计算图转化,得到初始计算图中间表示;
判断所述初始计算图中间表示是否完整;
若是,则将所述初始计算图中间表示确定为所述计算图中间表示。
5.根据权利要求4所述的资源调度方法,其特征在于,所述校验所述深度学习模型是否正确,包括:
判断所述深度学习模型是否与标识模型类型一致;
若一致,则判断所述深度学习模型的模型校验码是否正确;
若是,则判断所述深度学习模型的模型相关参数与标准参数是否匹配;
若匹配,则确定所述深度学习模型正确。
6.根据权利要求3所述的资源调度方法,其特征在于,还包括:
判断所述加速器的数量是否发生变化,或者,判断所述基准测试程序是否发生变化;
若是,则重新确定所述加速器能力信息。
7.一种资源调度装置,其特征在于,包括:
工作负载转换模块,用于获取深度学习作业的作业程序,将所述作业程序进行转换,得到计算图中间表示;
工作负载分割模块,用于将所述计算图中间表示进行分割得到子图集合;
工作负载包装模块,用于对所述子图集合进行包装,得到各类加速器对应的工作负载镜像;
资源管理模块,用于根据预设的加速器能力信息、用户提交的服务水平条件和资源池的信息,从加速器集群中确定目标加速器,发送对应的所述工作负载镜像至所述目标加速器;
其中,所述工作负载分割模块,具体用于:
将所述计算图中间表示进行算子融合,得到中间计算图;将所述中间计算图按照算子组的复杂程度进行划分,得到计算子图组;将所述计算子图组中的子图按照工作流进行排列,并确定所述工作流中的最大时长路径;根据所述最大时长路径确定所述子图集合和对应的负载工作流;
所述工作负载包装模块,具体用于:
从所述负载工作流中读取所述子图集合中的一个所述子图,从基础镜像仓库中读取每类所述加速器对应的基础镜像;将所述子图和所述基础镜像进行封装,得到子图镜像;判断所述负载工作流中是否还存在所述子图;若不存在所述子图,则按照所述负载工作流的顺序将对应的所述子图镜像进行处理,输出每类所述加速器对应的所述工作负载镜像。
8.一种资源调度系统,其特征在于,包括:
多个计算节点,包括加速器,所述加速器用于运行基准工作负载;
至少一个管理节点,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述资源调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614480.6A CN111611087B (zh) | 2020-06-30 | 2020-06-30 | 一种资源调度方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614480.6A CN111611087B (zh) | 2020-06-30 | 2020-06-30 | 一种资源调度方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111611087A CN111611087A (zh) | 2020-09-01 |
CN111611087B true CN111611087B (zh) | 2023-03-03 |
Family
ID=72201026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614480.6A Active CN111611087B (zh) | 2020-06-30 | 2020-06-30 | 一种资源调度方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611087B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148451B (zh) * | 2020-09-27 | 2023-12-29 | 南京大学 | 一种低时延的协同自适应cnn推断系统及方法 |
CN112148494B (zh) * | 2020-09-30 | 2023-07-25 | 北京百度网讯科技有限公司 | 用于算子服务的处理方法、装置、智能工作站和电子设备 |
CN112612600A (zh) * | 2020-12-01 | 2021-04-06 | 曙光信息产业(北京)有限公司 | 基于dcu的资源调度方法、装置和计算机设备 |
CN112835714B (zh) * | 2021-01-29 | 2023-07-28 | 中国人民解放军国防科技大学 | 云边环境中面向cpu异构集群的容器编排方法、系统及介质 |
CN113722065B (zh) * | 2021-08-20 | 2023-08-18 | 中国电子科技集团公司第十四研究所 | 一种基于子图匹配的面向嵌入式异构硬件的资源调度方法 |
CN113885845B (zh) * | 2021-09-30 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 深度学习编译器的计算图的生成方法、系统、设备及介质 |
CN114091688B (zh) * | 2021-11-25 | 2022-05-20 | 北京九章云极科技有限公司 | 一种计算资源获取方法、装置、电子设备和存储介质 |
CN114915460B (zh) * | 2022-04-28 | 2023-05-05 | 中国人民解放军战略支援部队信息工程大学 | 一种面向容器云的异构动态扩缩容装置及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11151446B2 (en) * | 2015-10-28 | 2021-10-19 | Google Llc | Stream-based accelerator processing of computational graphs |
CN110532072A (zh) * | 2019-07-24 | 2019-12-03 | 中国科学院计算技术研究所 | 基于微内核操作系统的分布式流式数据处理方法及系统 |
CN110413294B (zh) * | 2019-08-06 | 2023-09-12 | 中国工商银行股份有限公司 | 服务发布系统、方法、装置和设备 |
-
2020
- 2020-06-30 CN CN202010614480.6A patent/CN111611087B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111611087A (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111611087B (zh) | 一种资源调度方法、装置和系统 | |
CN105912399B (zh) | 一种任务处理方法、装置及系统 | |
CN102193832B (zh) | 云端计算资源排程方法与应用的系统 | |
CN112783649A (zh) | 一种面向云计算的交互感知的容器化微服务资源调度方法 | |
CN108021435B (zh) | 一种基于截止时间的具有容错能力的云计算任务流调度方法 | |
Hiessl et al. | Optimal placement of stream processing operators in the fog | |
CN110347504B (zh) | 众核计算资源调度方法及装置 | |
CN107203421B (zh) | 一种云计算环境中自适应的组合工作流方法 | |
CN110333941B (zh) | 一种基于sql的大数据实时计算方法 | |
CN111654416B (zh) | 一种物联网测试云平台和方法 | |
CN110086855A (zh) | 基于蚁群算法的Spark任务智能感知调度方法 | |
CN111160873A (zh) | 基于分布式架构的跑批处理装置及方法 | |
Cao et al. | A parallel computing framework for large-scale air traffic flow optimization | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
CN115134371A (zh) | 包含边缘网络算力资源的调度方法、系统、设备及介质 | |
CN101916321A (zh) | 一种Web应用细粒度性能建模方法及其系统 | |
Hilbrich et al. | GTI: A generic tools infrastructure for event-based tools in parallel systems | |
Ever | Performability analysis of cloud computing centers with large numbers of servers | |
Mahato et al. | Load balanced transaction scheduling using Honey Bee Optimization considering performability in on‐demand computing system | |
Kanwal et al. | Head node selection algorithm in cloud computing data center | |
CN103299277A (zh) | Gpu系统及其处理方法 | |
Sukhija et al. | Evaluating the flexibility of dynamic loop scheduling on heterogeneous systems in the presence of fluctuating load using SimGrid | |
CN116932201A (zh) | 一种面向深度学习训练任务的多资源共享调度方法 | |
CN110928659A (zh) | 一种具有自适应功能的数值水池系统远程多平台接入方法 | |
Dai et al. | Research on dynamic resource allocation with cooperation strategy in cloud computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |