CN112948079B - 任务调度方法、装置、设备和计算机存储介质 - Google Patents
任务调度方法、装置、设备和计算机存储介质 Download PDFInfo
- Publication number
- CN112948079B CN112948079B CN202110190139.7A CN202110190139A CN112948079B CN 112948079 B CN112948079 B CN 112948079B CN 202110190139 A CN202110190139 A CN 202110190139A CN 112948079 B CN112948079 B CN 112948079B
- Authority
- CN
- China
- Prior art keywords
- operator
- task
- hardware
- tasks
- scheduling
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/5038—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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/5044—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 hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- 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/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开公开了任务调度方法、装置、设备和计算机存储介质,涉及人工智能技术领域中的深度学习技术。具体实现方案为:依据预先分析得到的目标任务中各算子任务的硬件执行代价,对可并发执行的算子任务进行优先级排序;按照优先级排序结果,依次对所述可并发执行的算子任务进行调度;其中,所述调度包括:依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务。本公开实现了任务的合理调度,以缓解存储资源不足的问题。
Description
技术领域
本公开涉及计算机应用技术领域,尤其涉及人工智能技术领域中的深度学习技术。
背景技术
深度学习框架是人工智能技术发展的基础技术之一。在深度学习框架中,深度学习模型的训练和应用都需要大量的任务来完成。随着计算量的增加,逐步出现了并发执行的处理方式。即依据深度学习模型中各算子之间的依赖关系,尽可能地并发调度算子任务。
然而,通常硬件中往往存在一些有限的存储资源,例如显存资源,一旦算子任务调度不合理,就会面临存储资源不足的问题。
发明内容
本公开提供了一种任务调度方法、装置、设备和计算机存储介质,以合理进行任务调度,缓解存储资源不足的问题。
根据本公开的第一方面,提供了一种任务调度方法,包括:
依据预先分析得到的目标任务中各算子任务的硬件执行代价,对可并发执行的算子任务进行优先级排序;
按照优先级排序结果,依次对所述可并发执行的算子任务进行调度;
其中,所述调度包括:依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务。
根据本公开的第二方面,提供了一种任务调度装置,包括:
排序单元,用于依据预先分析得到的目标任务中各算子任务的硬件执行代价,对可并发执行的算子任务进行优先级排序;
调度单元,用于按照优先级排序结果,依次对所述可并发执行的算子任务进行调度;其中,所述调度包括:依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如上所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方法。
由以上技术方案可以看出,在本公开中,依据硬件执行代价依次对算子进行调度,并且在对各算子任务进行具体调度时,会依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务,避免盲目并行执行算子任务而导致因资源不足引起算子任务不断重试,最终超时退出。因此本公开能够更加合理地进行任务调度,缓解了存储资源不足的问题。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1为本公开实施例一提供的主要方法流程图;
图2为本公开实施例二提供的一种详细方法流程图;
图3为本公开实施例三提供的任务调度装置的结构示意图;
图4是用来实现本公开实施例的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
实施例一、
图1为本公开实施例一提供的主要方法流程图,在很多应用场景下,需要在设备上针对目标任务进行多线程地并行调度,从而提升计算效率。上述的设备可以是服务器设备、具有较强计算能力的计算机设备等等。本本公开就可以应用于上述设备中。如图1中所示,该方法可以包括以下步骤:
在101中,依据预先分析得到的目标任务中各算子任务的硬件执行代价,对可并发执行的算子任务进行优先级排序。
目标任务可以是任意需要进行大量计算的任务。一种典型的目标任务为深度学习框架内的训练任务或应用任务,即基于深度学习模型的训练任务或应用任务。
在深度学习框架中,各种深度学习模型通常是由各种算子通过特定的依赖关系构成的,因此,此类目标任务可以被划分成一个以上的算子任务。算子任务可以包括以下至少一种:数学运算算子、数组运算算子和神经网络运算算子。
其中数学运算算子可以包括减法、加法、除法、梯度计算、散度计算、微分等算子。
数组运算算子可以包括串接、拼接、拆分、排序等算子。
神经网络运算算子可以包括分类器(softmax)、归一化(sigmod)、激活函数(ReLU)、卷积等算子。
在此类任务中可能会涉及到算子任务对硬件资源的占用,例如CPU(centralprocessing unit,中央处理器)资源、GPU(Graphics Processing Unit,图形处理器)占用、内存资源、显存资源等等。而其中显存资源是非常稀缺和有限的,因此如何合理利用显存资源这类稀缺资源就显得尤为重要。在后续实施例中会以此场景为例进行描述。
在102中,按照优先级排序结果,依次对可并发执行的算子任务进行调度;其中该调度包括:依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务。
通常在针对目标任务进行多线程的并行调度时,会梳理出相互之间不存在依赖关系的算子任务来并行执行,从而提高计算效率。在本公开中,一方面,对于算子任务不再采用盲目并行调度的方式,而是依据硬件执行代价依次对算子进行调度;另一方面,在对各算子任务进行具体调度时,会依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务,避免盲目执行算子任务而导致资源不足引起算子任务不断重试,最终超时退出。显然本公开提供的方式能够更加合理地进行任务调度。
实施例二、
图2为本公开实施例二提供的一种详细方法流程图,如图2中所示,该方法可以包括以下步骤:
在201中,预先确定目标任务中各算子任务的硬件占用信息。
其中硬件占用信息可以包括新增硬件资源占用、执行后回收资源以及硬件执行代价等。
本步骤可以采用但不限于以下两种方式:
第一种方式:在目标任务的编译阶段,根据指定输入数据的大小以及目标任务中各算子任务之间的依赖关系,确定各算子任务的硬件占用信息。
例如,用户组建深度学习模型后,在模型编译阶段根据用户指定的输入数据大小可以推导出每个算子任务的输入数据和输出数据的大小。基于此,对于每个算子任务而言,能够计算得到其最大显存占用(用M表示)、已有显存占用(用O表示)、新增显存占用(用N表示)和执行后回收显存(用G表示)。
假设算子add任务,其计算公式为out=a+b,假设输入a、b和out的大小均是1024*1024,如果数据类型为float,则每个变量的显存占用为1024*1024*4字节。
因此,该add任务的最大显存占用M由输入、输出三个变量的显存占用确定,即3*1024*1024*4字节。但某些比较复杂的算子的最大显存占用除了由输入、输出变量的显存占用确定之外,还会进一步结合临时变量来确定。
该add任务的已有显存占用由其输入变量是否由上一算子提供来确定。如果上一算子提供了输入变量a和b,或者存在两个算子分别输出a和b给add算子,那么已有显存占用O就是a和b的显存占用,即2*1024*1024*4字节。
该add任务的新增显存占用N由M和O的差值确定,即N为1024*1024*4字节。
如果在add任务之后,变量a和b在后续其他算子中不再使用,那么久可以将变量a和b占用的显存回收,因此G为2*1024*1024*4字节。
第二种方式:在目标任务的试运行阶段,记录各算子任务的硬件占用信息;根据试运行阶段采用的输入数据的大小和当前实际运行阶段采用的输入数据的大小,在记录的所述各算子任务的硬件占用信息的基础上确定实际运行阶段各算子任务的硬件占用信息。
这种方式下,可以采用小规模的输入数据在系统中对目标任务进行试运行。例如在上述add任务的例子中均采用256*256字节的变量大小。那么在实际运行时如果采用的变量大小为1024*1024字节,则硬件占用信息需要扩大相应的倍数即16倍。
作为其中一种优选的实现方式,算子任务的硬件执行代价可以由该算子任务需要的新增硬件资源量与执行后可回收硬件资源量得到,体现的是算子任务执行实际消耗的资源量。接续上例,add任务的硬件执行代价P可以由N和G得到,例如P=α*N+β*G。其中,α和β可以采用试验值或经验值,例如可以分别取-1和1。
在目标任务的实际运行阶段开始执行以下步骤:
在202中,确定当前可并发执行的算子任务。
在本步骤中,可以首先获取依据目标任务中各算子任务之间的依赖关系得到的计算图。其中,计算图中节点为算子任务,节点之间的边指示算子任务之间的数据流向。也就是说,计算图体现了目标任务中各算子任务的拓扑关系。
然后基于计算图,将不存在依赖关系且输入数据已就绪的算子任务作为可并发执行的算子任务。也就是说,可并发执行的算子任务必须具备两个条件,一个是相互之间不存在依赖关系,另一个是该算子任务需要的输入数据已准备就绪。其中如果某算子任务A的输入数据来源于其他算子任务B,则需要保证该算子任务B执行完毕并输出至该算子任务A。
在本实施例中,可以每在一个算子任务执行完毕后,确定当前可并发执行的算子任务,也可以周期性地执行确定当前可并发执行的算子任务的步骤,也可以在上一次确定可并发执行的算子任务将要执行完毕后确定当前可并发执行的算子任务。本申请对此不加以特别限制。
在203中,依据各算子任务的硬件执行代价,将可并发执行的算子任务进行优先级排序,并放入就绪队列。
在本实施例中,依据各算子任务的硬件执行代价将可并发执行的算子任务进行优先级排序。其中硬件执行代价越低的算子任务优先级越高,越靠近就绪队列的头部。
若算子任务的硬件执行代价由该算子任务需要的新增硬件资源量与执行后可回收硬件资源量得到时,意味着若算子任务需要的新增硬件资源量越少且执行可回收硬件资源量越多,该算子的优先级越高。
这种依据硬件执行代价从低到高的顺序,依次对算子任务进行调度的方式,能够有效地缓解硬件资源的占用峰值问题。具体地,在现有技术中通常对算子任务的调度是固定按照预设的数量例如n值(n为大于1的正整数),一次性调用n个算子任务执行,这就有可能造成这n个算子任务都需要占用大量硬件资源所带来的占用峰值问题。而本公开实施例中是按照硬件执行代价从低到高依次对算子任务进行调度,先调度小代价的算子任务,使得后调度大代价的算子任务时,已经有之前的算子任务执行完毕回收了资源,使得大代价的算子任务执行时资源占用峰值问题得到缓解,减小了所需要的硬件资源。
在204中,从就绪队列中依次读取算子任务并进行以下调度:
在205中,判断当前读取的算子任务需要的新增硬件资源量是否小于或等于当前系统可用硬件资源量;如果是,则执行206;否则执行207。
在206中,执行当前读取的算子任务,继续从就绪队列中读取下一算子任务执行205,直至就绪队列中的算子任务均读取完毕。
如果当前读取的算子任务需要的新增硬件资源量小于或等于当前系统可用硬件资源量,则说明当前系统可用硬件资源量足够该算子任务执行,因此,执行该算子任务即可。
执行当前读取的算子任务时,需要为该算子任务分配硬件资源,例如分配该算子任务需要的新增显存,以供该算子任务执行。
待算子任务执行完毕后,回收硬件资源,并更新当前系统可用硬件资源量。其中在回收硬件资源时,由于通常算子任务的输出数据是供后续算子任务使用或者作为系统输出数据的,因此通常不能够回收输出数据占用的硬件资源。但算子任务的输入数据占用的硬件资源或者中间数据占用的临时硬件资源在后续算子任务中不再使用,这类硬件资源就可以回收。
在调度算子任务执行后,继续从就绪队列中读取下一算子任务以调度其执行,这样就产生了一系列的算子任务并行执行,并且保证每一个受调度开始执行的算子任务都具备足够的硬件资源,而不会发生被调度执行后又因硬件资源不足而不断进行重试执行。
在207中,判断是否存在正在执行的算子任务,如果是,执行208;否则执行209。
在208中,等待正在执行的算子任务回收硬件资源后,转至步骤205再次对当前读取的算子任务进行调度。
在209中,结束目标任务的执行。
如果预先已经保证了系统的硬件资源量足够任意一个算子任务的执行,则也可以不进行步骤207的判断,在步骤205的判断结果为否时,直接执行步骤208。
以上是对本公开所提供方法进行的详细描述,下面结合实施例对本公开提供的装置进行详细描述。
实施例三、
图3为本公开实施例三提供的任务调度装置的结构示意图,该装置可以是位于服务器端的应用,或者还可以为位于服务器端的应用中的插件或软件开发工具包(SoftwareDevelopment Kit,SDK)等功能单元,或者,还可以位于计算机终端,本发明实施例对此不进行特别限定。如图3中所示,该装置300可以包括:排序单元301和调度单元302,还可以进一步包括第一分析单元303、第二分析单元304和确定单元305。其中各组成单元的主要功能如下:
排序单元301,用于依据预先分析得到的目标任务中各算子任务的硬件执行代价,对可并发执行的算子任务进行优先级排序。
调度单元302,用于按照优先级排序结果,依次对可并发执行的算子任务进行调度;其中,调度包括:依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务。
其中,预先分析得到目标任务中各算子任务的硬件执行信息的处理可以由第一分析单元303或者第二分析单元304执行。
第一分析单元303,用于在目标任务的编译阶段,根据指定输入数据的大小以及目标任务中各算子任务之间的依赖关系,确定各算子任务的硬件占用信息,硬件占用信息包括硬件执行代价。
第二分析单元304,在目标任务的试运行阶段,记录各算子任务的硬件占用信息,硬件占用信息包括硬件执行代价;根据试运行阶段采用的输入数据的大小和当前实际运行阶段采用的输入数据的大小,在记录的各算子任务的硬件占用信息的基础上确定实际运行阶段各算子任务的硬件占用信息。
其中,算子任务的硬件执行代价可以由该算子任务需要的新增硬件资源量与执行后可回收硬件资源量得到。
其中可并发执行的算子任务可以由确定单元305确定。作为一种优选的实施方式,确定单元305可以获取依据目标任务中各算子任务之间的依赖关系得到的计算图,计算图中节点为算子任务,节点之间的边指示算子任务之间的数据流向;基于计算图,将不存在依赖关系且输入数据已就绪的算子任务作为可并发执行的算子任务。
作为一种优选的实施方式,调度单元302,具体用于若当前待调度的算子任务需要的新增硬件资源量小于或等于当前系统可用硬件资源量,则执行当前待调度的算子任务;否则,等待正在执行的算子任务回收硬件资源后,再次对当前待调度的算子任务进行调度。
更进一步地,若当前待调度的算子任务需要的新增硬件资源量大于当前系统可用硬件资源量,且在等待正在执行的算子任务回收硬件资源之前,调度单元302还用于判断是否存在正在执行的算子任务,如果是,则继续执行等待正在执行的算子任务回收硬件资源;否则,结束目标任务的执行。
更进一步地,调度单元302,还用于在算子任务执行结束后,对算子任务回收硬件资源,并更新当前系统可用硬件资源量。
作为一种常用的应用场景,上述目标任务可以包括深度学习模型的训练任务或应用任务;硬件资源可以包括显存空间。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
如图4所示,是根据本公开实施例的XXX的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图4所示,设备400包括计算单元401,其可以根据存储在只读存储器(ROM)402中的计算机程序或者从存储单元408加载到随机访问存储器(RAM)403中的计算机程序,来执行各种适当的动作和处理。在RAM 403中,还可存储设备400操作所需的各种程序和数据。计算单元401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
设备400中的多个部件连接至I/O接口405,包括:输入单元406,例如键盘、鼠标等;输出单元407,例如各种类型的显示器、扬声器等;存储单元408,例如磁盘、光盘等;以及通信单元409,例如网卡、调制解调器、无线通信收发机等。通信单元409允许设备400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元401的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元401执行上文所描述的各个方法和处理,例如方法XXX。例如,在一些实施例中,方法XXX可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元408。
在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元409而被载入和/或安装到设备400上。当计算机程序加载到RAM 403并由计算单元401执行时,可以执行上文描述的方法XXX的一个或多个步骤。备选地,在其他实施例中,计算单元401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法XXX。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控30制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (18)
1.一种任务调度方法,包括:
依据预先分析得到的目标任务中各算子任务的硬件执行代价,对可并发执行的算子任务进行优先级排序,其中硬件执行代价越低的算子任务优先级越高,所述算子任务的硬件执行代价由该算子任务需要的新增硬件资源量与执行后可回收硬件资源量得到;
按照优先级排序结果,依次对所述可并发执行的算子任务进行调度;
其中,所述调度包括:依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务。
2.根据权利要求1所述的方法,其中,所述目标任务中各算子任务的硬件执行代价采用如下方式预先分析得到:
在目标任务的编译阶段,根据指定输入数据的大小以及所述目标任务中各算子任务之间的依赖关系,确定各算子任务的硬件占用信息,所述硬件占用信息包括硬件执行代价。
3.根据权利要求1所述的方法,其中,所述目标任务中各算子任务的硬件执行代价采用如下方式预先分析得到:
在目标任务的试运行阶段,记录各算子任务的硬件占用信息,所述硬件占用信息包括硬件执行代价;
根据试运行阶段采用的输入数据的大小和当前实际运行阶段采用的输入数据的大小,在记录的所述各算子任务的硬件占用信息的基础上确定实际运行阶段各算子任务的硬件占用信息。
4.根据权利要求1所述的方法,其中,所述可并发执行的算子任务采用如下方式确定:
获取依据所述目标任务中各算子任务之间的依赖关系得到的计算图,所述计算图中节点为算子任务,节点之间的边指示算子任务之间的数据流向;
基于所述计算图,将不存在依赖关系且输入数据已就绪的算子任务作为可并发执行的算子任务。
5.根据权利要求1所述的方法,其中,所述依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务包括:
若当前待调度的算子任务需要的新增硬件资源量小于或等于当前系统可用硬件资源量,则执行所述当前待调度的算子任务;
否则,等待正在执行的算子任务回收硬件资源后,再次对所述当前待调度的算子任务进行调度。
6.根据权利要求5所述的方法,其中,若当前待调度的算子任务需要的新增硬件资源量大于当前系统可用硬件资源量,且在所述等待正在执行的算子任务回收硬件资源之前,还包括:
判断是否存在正在执行的算子任务,如果是,则继续执行所述等待正在执行的算子任务回收硬件资源;否则,结束所述目标任务的执行。
7.根据权利要求5所述的方法,该方法还包括:
算子任务执行结束后,对所述算子任务回收硬件资源,并更新当前系统可用硬件资源量。
8.根据权利要求1至3、4至7中任一项所述的方法,其中,所述目标任务包括深度学习模型的训练任务或应用任务;
所述硬件资源包括显存空间。
9.一种任务调度装置,包括:
排序单元,用于依据预先分析得到的目标任务中各算子任务的硬件执行代价,对可并发执行的算子任务进行优先级排序,其中硬件执行代价越低的算子任务优先级越高,所述算子任务的硬件执行代价由该算子任务需要的新增硬件资源量与执行后可回收硬件资源量得到;
调度单元,用于按照优先级排序结果,依次对所述可并发执行的算子任务进行调度;其中,所述调度包括:依据当前待调度的算子任务需要的新增硬件资源量与当前系统可用硬件资源量,确定是否执行当前待调度的算子任务。
10.根据权利要求9所述的装置,还包括:
第一分析单元,用于在目标任务的编译阶段,根据指定输入数据的大小以及所述目标任务中各算子任务之间的依赖关系,确定各算子任务的硬件占用信息,所述硬件占用信息包括硬件执行代价。
11.根据权利要求9所述的装置,还包括:
第二分析单元,在目标任务的试运行阶段,记录各算子任务的硬件占用信息,所述硬件占用信息包括硬件执行代价;根据试运行阶段采用的输入数据的大小和当前实际运行阶段采用的输入数据的大小,在记录的所述各算子任务的硬件占用信息的基础上确定实际运行阶段各算子任务的硬件占用信息。
12.根据权利要求9所述的装置,还包括:
确定单元,用于获取依据所述目标任务中各算子任务之间的依赖关系得到的计算图,所述计算图中节点为算子任务,节点之间的边指示算子任务之间的数据流向;基于所述计算图,将不存在依赖关系且输入数据已就绪的算子任务作为可并发执行的算子任务。
13.根据权利要求9所述的装置,其中,所述调度单元,具体用于若当前待调度的算子任务需要的新增硬件资源量小于或等于当前系统可用硬件资源量,则执行所述当前待调度的算子任务;否则,等待正在执行的算子任务回收硬件资源后,再次对所述当前待调度的算子任务进行调度。
14.根据权利要求13所述的装置,其中,若当前待调度的算子任务需要的新增硬件资源量大于当前系统可用硬件资源量,且在所述等待正在执行的算子任务回收硬件资源之前,所述调度单元还用于判断是否存在正在执行的算子任务,如果是,则继续执行所述等待正在执行的算子任务回收硬件资源;否则,结束所述目标任务的执行。
15.根据权利要求13所述的装置,其中,所述调度单元,还用于在算子任务执行结束后,对所述算子任务回收硬件资源,并更新当前系统可用硬件资源量。
16.根据权利要求9至11、12至15中任一项所述的装置,其中,所述目标任务包括深度学习模型的训练任务或应用任务;
所述硬件资源包括显存空间。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110190139.7A CN112948079B (zh) | 2021-02-18 | 2021-02-18 | 任务调度方法、装置、设备和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110190139.7A CN112948079B (zh) | 2021-02-18 | 2021-02-18 | 任务调度方法、装置、设备和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112948079A CN112948079A (zh) | 2021-06-11 |
CN112948079B true CN112948079B (zh) | 2022-06-28 |
Family
ID=76244427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110190139.7A Active CN112948079B (zh) | 2021-02-18 | 2021-02-18 | 任务调度方法、装置、设备和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948079B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448704B (zh) * | 2021-06-24 | 2023-04-21 | 展讯通信(上海)有限公司 | 任务处理方法及设备 |
CN113612642B (zh) * | 2021-08-03 | 2024-03-08 | 北京八分量信息科技有限公司 | 基于通信开销进行异构任务的刻画方法、装置及相关产品 |
CN114003306B (zh) * | 2021-10-27 | 2024-03-15 | 上海商汤科技开发有限公司 | 一种显存优化方法、装置、设备及存储介质 |
CN113835900B (zh) * | 2021-11-26 | 2022-02-22 | 山东产研鲲云人工智能研究院有限公司 | 神经网络计算方法、装置、设备及计算机可读存储介质 |
CN114217977B (zh) * | 2021-12-23 | 2023-01-10 | 北京百度网讯科技有限公司 | 资源分配方法、装置、设备以及存储介质 |
CN114492737B (zh) | 2021-12-31 | 2022-12-09 | 北京百度网讯科技有限公司 | 数据处理方法、装置及电子设备、存储介质及程序产品 |
CN114610575B (zh) * | 2022-03-14 | 2024-05-14 | 北京百度网讯科技有限公司 | 应用于计算分支的更新峰值的方法、装置、设备和介质 |
CN114860410A (zh) * | 2022-05-19 | 2022-08-05 | 北京百度网讯科技有限公司 | 批量任务处理的方法、装置及电子设备 |
CN116560847B (zh) * | 2023-05-19 | 2023-10-27 | 北京百度网讯科技有限公司 | 任务处理方法、装置、电子设备以及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008024A (zh) * | 2019-04-02 | 2019-07-12 | 广西大学 | 一种多维约束下基于延迟决策的容器调度方法以及装置 |
CN110837410A (zh) * | 2019-10-30 | 2020-02-25 | 北京奇艺世纪科技有限公司 | 任务调度方法、装置、电子设备及计算机可读存储介质 |
CN111309479A (zh) * | 2020-02-14 | 2020-06-19 | 北京百度网讯科技有限公司 | 一种任务并行处理的实现方法、装置、设备和介质 |
CN111367679A (zh) * | 2020-03-31 | 2020-07-03 | 中国建设银行股份有限公司 | 人工智能算力资源复用方法及装置 |
CN111400022A (zh) * | 2019-01-02 | 2020-07-10 | 中国移动通信有限公司研究院 | 一种资源调度方法、装置及电子设备 |
CN111597040A (zh) * | 2020-04-30 | 2020-08-28 | 中国科学院深圳先进技术研究院 | 一种资源分配方法、装置、存储介质和电子设备 |
CN111966481A (zh) * | 2020-09-04 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种适用于多租户场景的并行计算管理方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066332B (zh) * | 2017-01-25 | 2020-03-13 | 广东神马搜索科技有限公司 | 分布式系统及其调度方法和调度装置 |
CN107291545B (zh) * | 2017-08-07 | 2019-12-10 | 星环信息科技(上海)有限公司 | 计算集群中多用户的任务调度方法及设备 |
US11373088B2 (en) * | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
CN110888726A (zh) * | 2019-11-25 | 2020-03-17 | 中冶赛迪重庆信息技术有限公司 | 一种多任务并发处理方法及系统 |
-
2021
- 2021-02-18 CN CN202110190139.7A patent/CN112948079B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111400022A (zh) * | 2019-01-02 | 2020-07-10 | 中国移动通信有限公司研究院 | 一种资源调度方法、装置及电子设备 |
CN110008024A (zh) * | 2019-04-02 | 2019-07-12 | 广西大学 | 一种多维约束下基于延迟决策的容器调度方法以及装置 |
CN110837410A (zh) * | 2019-10-30 | 2020-02-25 | 北京奇艺世纪科技有限公司 | 任务调度方法、装置、电子设备及计算机可读存储介质 |
CN111309479A (zh) * | 2020-02-14 | 2020-06-19 | 北京百度网讯科技有限公司 | 一种任务并行处理的实现方法、装置、设备和介质 |
CN111367679A (zh) * | 2020-03-31 | 2020-07-03 | 中国建设银行股份有限公司 | 人工智能算力资源复用方法及装置 |
CN111597040A (zh) * | 2020-04-30 | 2020-08-28 | 中国科学院深圳先进技术研究院 | 一种资源分配方法、装置、存储介质和电子设备 |
CN111966481A (zh) * | 2020-09-04 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种适用于多租户场景的并行计算管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112948079A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112948079B (zh) | 任务调度方法、装置、设备和计算机存储介质 | |
CN113342345A (zh) | 深度学习框架的算子融合方法、装置 | |
CN112925587A (zh) | 用于初始化应用的方法和装置 | |
JP6570156B2 (ja) | データベースシステム最適化の方法、システム、電子装置及び記憶媒体 | |
US20200379807A1 (en) | Method, device, and computer program product for managing jobs in processing system | |
CN113867916A (zh) | 任务处理方法、装置及电子设备 | |
CN112508768A (zh) | 单算子多模型流水线推理方法、系统、电子设备及介质 | |
CN114860412B (zh) | 任务处理方法、装置、电子设备和介质 | |
CN114841315A (zh) | 混合专家模型实现方法、系统、电子设备及存储介质 | |
CN114819084A (zh) | 模型推理方法、装置、设备及存储介质 | |
CN114861059A (zh) | 资源推荐方法、装置、电子设备及存储介质 | |
CN112817660A (zh) | 扩展小程序能力的方法、装置、设备以及存储介质 | |
CN113360266B (zh) | 任务处理方法和装置 | |
CN114239853A (zh) | 模型训练方法、装置、设备、存储介质以及程序产品 | |
CN114519006A (zh) | 测试方法、装置、设备以及存储介质 | |
CN116451174A (zh) | 任务执行装置、方法、电子设备和存储介质 | |
CN115809688B (zh) | 一种模型调试方法、装置、电子设备及存储介质 | |
CN115759209A (zh) | 神经网络模型的量化方法、装置、电子设备及介质 | |
CN114595047A (zh) | 一种批量任务处理方法和装置 | |
CN112783574B (zh) | 应用程序开发方法、装置、设备和存储介质 | |
CN114579191A (zh) | 一种指令发射方法、装置、电子设备及存储介质 | |
CN114386577A (zh) | 用于执行深度学习模型的方法、设备和存储介质 | |
CN113361574A (zh) | 数据处理模型的训练方法、装置、电子设备及存储介质 | |
CN114115789B (zh) | 芯片插件化实现方法、装置、电子设备及存储介质 | |
CN113963433B (zh) | 运动搜索方法、装置、电子设备及存储介质 |
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 |