CN113032152B - 用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品 - Google Patents
用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品 Download PDFInfo
- Publication number
- CN113032152B CN113032152B CN202110362239.3A CN202110362239A CN113032152B CN 113032152 B CN113032152 B CN 113032152B CN 202110362239 A CN202110362239 A CN 202110362239A CN 113032152 B CN113032152 B CN 113032152B
- Authority
- CN
- China
- Prior art keywords
- task
- processing
- tasks
- scheduling
- processing unit
- 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
- 238000000034 method Methods 0.000 title claims abstract description 214
- 238000013135 deep learning Methods 0.000 title abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 368
- 230000008569 process Effects 0.000 claims abstract description 153
- 230000006870 function Effects 0.000 claims description 12
- 238000012549 training Methods 0.000 claims description 11
- 238000013136 deep learning model Methods 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 2
- 238000005549 size reduction Methods 0.000 claims description 2
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 238000010801 machine learning Methods 0.000 abstract description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 30
- 238000004590 computer program Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
-
- 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/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
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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/5016—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 the resource being the memory
-
- 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/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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提供了一种用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品,可以用于人工智能领域,特别是机器学习领域和深度学习领域等领域中。该方法包括:接收针对使用专用处理单元来处理多个任务的处理请求,处理请求包括针对多个任务的调度需求,多个任务中的每个任务与执行多批次数据处理相关联;以及基于多个任务的调度需求,以数据的批次为单位,调度专用处理单元以处理多个任务。利用上述方法,可以实现对专用处理单元的计算资源和存储资源的动态调用,因而可以满足使用专用处理单元进行多任务计算和计算与存储资源复用的问题,从而能够提升用户体验。
Description
技术领域
本公开涉及计算机技术,并且更具体地,涉及用于深度学习框架的调度方法、调度装置、电子设备、计算机可读存储介质和计算机程序产品,可以用于人工智能领域,特别是机器学习领域和深度学习领域等领域中。
背景技术
深度学习框架可以极大地加速深度学习任务的研发效率。深度学习任务通常都使用深度学习框架来开发。当前主流的深度学习框架大都支持用中央处理单元(CPU),诸如图形处理单元(GPU)的专用处理单元,或者专用集成电路(ASIC)芯片等来实现深度学习任务中的训练。
目前,在很多场景中,都会存在多人或者多个任务复用专用处理单元或者中央处理单元与专用集成电路的情况。因此,在传统技术中,通过例如使用操作***的调度功能或者使用虚拟化技术来实现复用处理单元。然而,使用操作***的调度功能并不适用于包括多批次并行数据处理任务的深度学习任务,并且虚拟化技术成本很高且存在很多局限性。因此,传统的用于处理单元复用的技术无法实现针对例如深度学习任务对包括专用处理单元的处理单元的计算资源和存储资源的动态调用,因而无法满足使用包括专用处理单元的处理单元进行多任务计算和计算与存储资源复用的问题,从而导致了用户体验的降低。
发明内容
根据本公开的实施例,提供了一种调度方法、调度装置、电子设备、计算机可读存储介质和计算机程序产品。
在本公开的第一方面中,提供了一种调度方法,包括:接收针对使用处理单元来处理多个任务的处理请求,处理请求包括针对多个任务的调度需求,多个任务中的每个任务与执行多批次数据处理相关联;以及基于多个任务的调度需求,以数据的批次为单位,调度处理单元以处理多个任务。
在本公开的第二方面中,提供了一种调度装置,包括:处理请求接收模块,被配置为接收针对使用处理单元来处理多个任务的处理请求,处理请求包括针对多个任务的调度需求,多个任务中的每个任务与执行多批次数据处理相关联;以及第一调度模块,被配置为基于多个任务的调度需求,以数据的批次为单位,调度处理单元以处理多个任务。
在本公开的第三方面中,提供了一种电子设备,包括至少一个处理器;以及与至少一个处理器通信连接的存储器;其中存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够实现根据本公开的第一方面的方法。
在本公开的第四方面中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机实现根据本公开的第一方面的方法。
在本公开的第五方面中,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时,执行根据本公开的第一方面的方法。
利用根据本申请的技术,提供了一种调度方法,利用该方法的技术方案,可以实现对包括专用处理单元的处理单元的计算资源和存储资源的动态调用,因而可以满足使用包括专用处理单元的处理单元进行多任务计算和计算与存储资源复用的问题,从而能够提升用户体验。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中在本公开示例性实施例中,相同的参考标号通常代表相同部件。应当理解,附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示出了可以在其中实现本公开的某些实施例中的调度方法的调度环境100的示意性框图;
图2示出了根据本公开实施例的调度方法200的流程图;
图3示出了根据本公开实施例的调度方法300的流程图;
图4示出了根据本公开的实施例的调度装置400的示意性框图;以及
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如以上在背景技术中所描述的,传统的用于处理单元复用的技术无法实现针对例如深度学习任务对包括专用处理单元的处理单元的计算资源和存储资源的动态调用,因而无法满足使用包括专用处理单元的处理单元进行多任务计算和计算与存储资源复用的问题,从而导致了用户体验的降低。
为了描述方便,以下用单机单卡和深度学习任务为例来举例说明用户在处理深度学习任务时可能会遇到的问题。此外,在以下示例中,以专用处理单元为例进行说明,但本公开的保护范围并不被限制为适用于专用处理单元,而是也可以适用于包括中央处理单元的其他处理单元。
在一种场景中,用户一例如是深度学习开发者,并且用户一在公司和其他同事共用一台具有专用处理单元的计算设备进行深度学习开发。此时,在其他同事启动一个需要使用专用处理单元的训练任务后,则专用处理单元的资源将被占用,从而导致在其他同事使用计算设备期间用户一无法使用专用处理单元来处理任务,而深度学习的任务通常训练时间较长,因此极大地影响了用户一的深度学习开发。
在另一种场景中,用户二例如是深度学习开发者,用户二拥有一台自己的、具有专用处理单元的计算设备,当用户二启动了一个需要使用专用处理单元的训练任务后,用户二可能想要再启动一个需要使用专用处理单元的任务用来做开发调试。
在又一种场景中,用户三例如是学校的学生,并且尝试学习深度学习。由于是学习场景,因此用户三需要执行的深度学习任务通常占用时间不长,但用户三可能需要频繁的启动深度学习任务,而且为了提高资源的利用率,学校里通常是多个学生同时使用一台具有专用处理单元的计算设备。
在上述任何场景中,都涉及对专用处理单元资源的复用。针对上述复用,传统技术通常使用两种方式。方式一包括直接使用例如Linux的操作***的任务调度功能。方式二包括使用虚拟化技术。对于虚拟化技术,以图形处理单元为例,虚拟化技术可以将一块图形处理单元卡的计算能力进行切片,分成多个逻辑上虚拟的多个图形处理单元,并且以虚拟图形处理单元为单位进行计算能力调度。
然而,上述两种方式都存在严重的不足。
对于方式一,现有的操作***以进程为单位进行计算和存储资源调度,调度的方式比较简单,大部分调度策略针对中央处理单元完成,采用的是通用的调度策略,没有专门针对深度学习任务进行优化。因此,方式一具体存在例如以下不足:无法精确控制不同进程使用资源的比例,比如,设置某一个进程允许占用图形处理单元的多少显存,允许占用多少图形处理单元计算时间;进程间缺少同步,深度学习任务通常都是计算密集型的任务,容易出现互相抢占资源的情况,比如,往一张图形处理单元卡上提交两个任务,假设显存资源足够,计算的时候可能会同时提交计算密集型的任务,由于图形处理单元采用多流(stream)的方式启动计算任务,因此在存在两个任务同时向设备提交计算任务的情况时,有可能因为计算资源冲突,反而造成性能下降,体现为同时提交两个任务并且执行的时间,比分别执行两个任务的时间要长;进程调度过于频繁,造成开销过大,这是由于操作***的调度策略通常按照中央处理单元进行,因此为了保证进程的实时性,进程间的调度很频繁,比如,每间隔50ms切换一个进程,但是深度学习任务通常要例如数秒的秒级别才能训练完成一个批次(batch)的数据的训练,因此频繁的进程切换会造成例如高速缓存失效等问题,然而会降低了资源的利用率;操作***的进程调度针对每个进程采用相同的方案,并且不知道进程的具体任务类型,因此当资源不满足的时候,无法对进程的行为进行动态调整。
对于方式二,采用虚拟化技术的成本很高,并且需要较强的硬件支持,因此通用性方面严重不足。因此,方式二具体存在例如以下不足:虚拟化依赖复杂的、非操作***自带的功能,因此通常需要安装额外的软件;不同操作***、不同硬件支持虚拟化方式不一样,并且很多硬件不支持虚拟化技术;无法进行资源的精准控制,而是通常只能分为特定的份数,比如8份等;不能对调度进行精确控制,比如无法实现计算能力的75%;进行虚拟化之后,由于进行了显卡隔离,因此计算资源无法被充分利用,例如,当图形处理单元的计算能力被分成8份后,即使当前只有一个任务,也只能利用1份资源,从而造成计算资源的浪费;资源虚拟化之后,无法再进行动态调整,例如,当图形处理单元的计算能力被分成8份后,无法被进一步分成16份;资源虚拟化是由外部工具完成的,因此无法与当前训练进程通信,并且无法动态调整当前训练进程的属性;很多专用处理电路芯片目前也并不支持虚拟化。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开的实施例提出了一种调度方法,利用根据本公开的实施方式的技术方案,可以实现对包括专用处理单元的处理单元的计算资源和存储资源的动态调用,因而可以满足使用包括专用处理单元的处理单元进行多任务计算和计算与存储资源复用的问题,从而能够提升用户体验。
图1示出了可以在其中实现本公开的某些实施例中的调度方法的调度环境100的示意性框图。根据本公开的一个或多个实施例,调度环境100可以是云环境。如图1中所示,调度环境100包括计算设备110。在调度环境100中,计算设备110接收处理请求120,处理请求120包括针对使用例如图形处理单元的专用处理单元140来处理多个任务的处理请求,其具体而言可以包括针对多个任务的调度需求,并且多个任务中的每个任务与执行多批次数据处理相关联,例如可以是与训练深度学习模型相关联的任务,因此调度环境100可适用于深度学习框架。
在接收到处理请求120之后,计算设备110既可以基于多个任务的调度需求,使用调度环境100中的调度进程130、以数据的批次为单位,调度调度环境100中的专用处理单元140以处理多个任务。根据本公开的一个或多个实施例,处理请求120是针对多个处理任务而被生成的,并且调度需求可以包括以下至少一项:处理多个任务中的任务将占用专用处理单元140的处理时间;处理多个任务中的任务将占用专用处理单元140的存储器的存储空间;以及多个任务中的任务的处理优先级。
应当理解,调度环境100仅仅是示例性而不是限制性的,并且其是可扩展的,其中可以包括更多的计算设备110,并且计算设备110可以接收更多的处理请求120,并且可以使用更多的调度进程130来调度调度环境100中的更多的专用处理单元140以处理更多的任务,从而使得可以满足更多用户同时利用更多的计算设备110和更多的专用处理单元140来同时或者非同时地处理更多与执行多批次数据处理相关联的任务的需求。
在图1所示的调度环境100中,计算设备110接收处理请求120,计算设备对调度进程130的使用以及调度进程130对专用处理单元140的调度可以通过网络来进行。
图2示出了根据本公开的实施例的调度方法200的流程图。具体而言,调度方法200可以由图1中所示的调度环境100中的计算设备110来执行。应当理解的是,调度方法200还可以包括未示出的附加操作和/或可以省略所示出的操作,本公开的范围在此方面不受限制。
在框202,计算设备110接收针对使用专用处理单元140来处理多个任务的处理请求。根据本公开的一个或多个实施例,处理请求包括针对多个任务的调度需求,多个任务中的每个任务与执行多批次数据处理相关联。
根据本公开的一个或多个实施例,调度需求可以包括以下至少一项:处理多个任务中的任务将占用专用处理单元140的处理时间;处理多个任务中的任务将占用专用处理单元140的存储器的存储空间;以及多个任务中的任务的处理优先级。同时,与执行多批次数据处理相关联的任务例如与训练深度学习模型相关联,因此调度方法200可适用于深度学习框架。
以启动工作进程作为任务为例,工作进程可以通过用户在控制台输入命令而且启动。例如,可以通过输入命令python-m control-launch-memory=30%-gpu=40%-priority=0train1.py来启动工作进程1(进程pid号例如为4561),并且可以同理启动工作进程2(pid=4562)和工作进程3(pid=4563)。其中control用于通过调用control模块来实现进程调度逻辑。-memory=30%表示希望使用的图形处理单元的显存的存储大小大于等于30%,-gpu=40%表示希望使用的图形处理单元计算时长占比大于等于40%,-priority=0表示当前进程的优先级,其从0开始编号,数字越小表示优先级越高,当***资源无法满足所有进程的请求的资源时,优先满足高优先级进程的资源占用。
在以上示例中,显存占用可以采用百分比的方式来设置,也可以使用绝对值的方式来设置,比如-memory=2G表示使用2GB显存。根据不同的调度策略,可以针对显存和计算能力可以设置一个范围,比如,-memory="2G,10G",表示显存占用最小为2GB,最大不超过10GB,如果***资源不能满足特定的要求,则可以报错退出。通过设定最小值,可以避免由于启动其他进程而造成显存被占用后失败。当***资源不能满足要求时,可以优先保证历史任务可以正常运行,此时新启动的任务会失败。
在框204,计算设备110基于多个任务的调度需求,以数据的批次为单位,调度专用处理单元140以处理多个任务。根据本公开的一个或多个实施例,计算设备110基于多个任务的调度需求,使用调度进程130、以数据的批次为单位,调度专用处理单元140以处理多个任务。计算设备110可以在每次处理完一个任务所涉及的多批次数据处理中的一个批次数据之后,基于调度需求来进一步确定是继续处理这个任务的后续批次的数据,还是处理其他任务中的需要被处理的下一批次的数据。
如前所述,调度需求可以包括以下至少一项:处理多个任务中的任务将占用专用处理单元140的处理时间;处理多个任务中的任务将占用专用处理单元140的存储器的存储空间;以及多个任务中的任务的处理优先级。以下分别以调度需求仅包括处理时间或者存储空间为例来说明计算设备110使用调度进程130对专用处理单元140所进行的调度。
根据本公开的一些实施例,调度需求包括处理多个任务中的任务将占用专用处理单元140的处理时间。在这些实施例中,计算设备110基于在调度需求中所指示的、处理多个任务中的任务将占用专用处理单元140的处理时间,以及多个任务中的任务的已完成处理时间,确定多个任务中的任务的未完成处理时间;并且随后使用调度进程130,调度专用处理单元140以处理多个任务中的、未完成处理时间最长的任务。
例如,如果多个任务分别包括两个任务,第一任务和第二任务,并且在调度需求中指示处理第一任务和第二任务均将占用专用处理单元140的50%的处理时间。此时,当最初开始处理第一任务和第二任务时,调度进程130可以随机选择例如第一任务来开始处理。当处理了第一任务的第一批次的数据花费了专用处理单元140的5%的处理时间时,第一任务的已完成处理时间为5%,此时第一任务的未完成处理时间为45%,因此调度进程130可以调度专用处理单元140以接下来处理第二任务,因为第二任务的未完成处理时间仍为50%,是多个任务中的、未完成处理时间最长的任务。应当理解,处理时间也可以并不是百分比的形式,而是可以按照秒、分钟、小时等作为单位的实际处理时间的形式。
根据本公开的另一些实施例,调度需求包括处理处理多个任务中的任务将占用专用处理单元140的存储器的存储空间。在这些实施例中,计算设备110可以采取不同的处理方式来对任务进行处理。
在一些实施例中,计算设备110基于确定处理多个任务中的例如第一任务的某个任务所占用的专用处理单元140的存储器的存储空间超过在调度需求中所指示的、分配给第一任务的存储空间,停止对第一任务的处理。采取这种方式的目的是为了直接确保专用处理单元140对其他任务的正常处理。因此,当某个任务使用的存储空间超过了调度需求指示的、所分配的存储空间,从而有可能导致其他任务无法正常被处理时,可以直接停止对这一任务的处理。
在另一些实施例中,计算设备110基于确定处理多个任务中的例如第一任务的某个任务所占用的专用处理单元140的存储器的存储空间超过在调度需求中所指示的、分配给第一任务的存储空间,调整对第一任务的处理,以降低处理第一任务所占用的存储空间。采取这种方式的目的是为了在确保专用处理单元140对其他任务的正常处理的情况下,尽可能保证仍然能够对第一任务进行处理,并且因此通过调整对第一任务的处理方式的形式来降低处理第一任务所占用的存储空间。
根据本公开的一个或多个实施例,计算设备110调整对第一任务的处理包括以下至少一项:减小与第一任务相关联的多批次数据处理中的每批次数据的大小,例如将每个批次数据的大小减半;通过在需要使用时重新计算的方式来减少在处理第一任务期间需要被存储的数据;以及为使用其他存储器来存储在处理第一任务期间需要被存储的数据,例如采用显存交换技术,将被存储在显存中的数据移动到计算设备110的、例如与中央处理单元相关联的存储器或固态驱动器中,从而减少数据所占据的显存空间,并且在后续处理任务需要的时候,再将被存储在存储器或固态驱动器中的数据移动回到显存。
应当理解,以上调度需求也可以同时包括处理多个任务中的任务将占用专用处理单元140的处理时间以及处理多个任务中的任务将占用专用处理单元140的存储器的存储空间。在这种情况下,计算设备110可以在存储空间正常的情况下按照处理多个任务中的任务将占用专用处理单元140的处理时间来使用调度进程130对专用处理单元140进行调度,并且在存储空间出现前述异常的情况下,停止对涉及存储空间异常的任务的处理,或者调整对涉及存储空间异常的任务的处理。
根据本公开的一个或多个实施例,当调度需求包括多个任务中的任务的处理优先级时,计算设备110可以按照处理优先级的高低来确定处理任务的顺序,并且优先对处理优先级更高的任务进行处理。此外,当调度需求包括处理优先级时,计算设备110也可以随着对任务的处理而降低处理优先级。例如,如果第一任务的处理优先级为100,第二任务的处理优先级为70,其中处理优先级数值越高处理优先级越高。在这种情况下,计算设备110将首先使用调度进程130来调度专用处理单元140以处理第一任务。如果处理第一任务一共需要处理20批次的数据,那么处理每批次的数据将会使得处理第一任务将占用专用处理单元140的处理时间减少5%。在这种情况下,可以同时按照比例降低处理优先级的数值。当专用处理单元140处理了第一任务的7个批次的数据之后,处理第一任务将占用专用处理单元140的处理时间减少了35%,并且其处理优先级同样减少了35%,变为65。此时,由于第一任务的处理优先级65低于第二任务的处理优先级70,则计算设备110接下来将使用调度进程130来调度专用处理单元140以处理第二任务。
需要指出的是,当两个任务的优先级相同时,计算设备110可以随机选择调度专用处理单元140来处理哪个任务,或者按照未完成处理时间的长短、已完成处理时间的长短或者不改变正在处理的任务的标准等标准来确定调度专用处理单元140来处理哪个任务。
图3示出了根据本公开的实施例的调度方法300的流程图。具体而言,调度方法300也可以由图1中所示的调度环境100中的计算设备110来执行。应当理解的是,调度方法300还可以包括未示出的附加操作和/或可以省略所示出的操作,本公开的范围在此方面不受限制。
在框302,计算设备110基于多个任务中的、被首先创建的任务的创建,创建调度进程130。根据本公开的一个或多个实施例,在之前提及的示例中,当用户通过输入命令python-mcontrol-launch-memory=30%-gpu=40%-priority=0train1.py来启动工作进程1时,计算设备110可以检查调度进程130是否已经被创建,并且如果调度进程130尚未被创建,则在创建工作进程1的同时或稍后创建调度进程130。此外,根据本公开的一个或多个实施例,被创建的例如工作流程的任务中可以包括例如调度逻辑的调度功能,并且计算设备110可以使用被首先创建的任务中所包括的调度功能,创建调度进程130。
根据本公开的一些实施例,调度进程130也可以是被预先被创建的,并且其可以是由计算设备110在创建多个任务中的任何任务之前被创建的。因此,框302所涉及的操作可以被认为是方法300中的可选操作。
根据本公开的一个或多个实施例,在计算设备110基于多个任务中的、被首先创建的任务的创建而创建调度进程130之后,计算设备110基于被首先创建的任务完成,使用多个任务中的、尚未被完成的任务中所包括的调度功能,创建调度进程130。例如,在以上示例中,当工作进程1已经被执行完毕后,工作流程1可以不再存在,并且因此工作流程1中所包括的调度功能也可以不再存在。此时,为了能够继续使用调度进程130来对专用处理单元140进行调度,计算设备110可以使用与工作流程1共享专用处理单元140的工作流程2和工作流程3中的尚未被完成执行的工作流程,例如工作流程2,来创建调度进程130。
在框304,计算设备110接收针对使用专用处理单元140来处理多个任务的处理请求。根据本公开的一个或多个实施例,如前所述,处理请求包括针对多个任务的调度需求,多个任务中的每个任务与执行多批次数据处理相关联。框304所涉及的步骤的具体内容与框202中所涉及的步骤的具体内容相同,在此不再赘述。
在框306,计算设备110基于多个任务的调度需求,使用调度进程130、以数据的批次为单位,调度专用处理单元140以处理多个任务。根据本公开的一个或多个实施例,如前所述,计算设备110可以在每次处理完一个任务所涉及的多批次数据处理中的一个批次数据之后,基于调度需求来进一步确定是继续处理这个任务的后续批次的数据,还是处理其他任务中的需要被处理的下一批次的数据。框306所涉及的步骤的具体内容与框204中所涉及的步骤的具体内容相同,在此不再赘述。
在框308,计算设备110在完成与多个任务中的例如第一任务的任务相关联的至少一个批次的数据的处理之后,释放处理第一任务所占用的专用处理单元140的存储器的存储空间。根据本公开的一些实施例,计算设备110可以在使用调度进程130调度专用处理单元140执行针对每个任务的每个批次的数据的处理之后,均释放处理这一任务所占用的专用处理单元140的存储器的存储空间,从而可以大幅减少存储空间占用。根据本公开的另一些实施例,计算设备110可以在使用调度进程130调度专用处理单元140执行针对每个任务的每个批次的数据的处理之后,在确定接下来将调度专用处理单元140处理另一任务时,释放处理这一任务所占用的专用处理单元140的存储器的存储空间。根据本公开的又一些实施例,计算设备110可以在使用调度进程130调度专用处理单元140执行针对每个任务的每个批次的数据的处理之后,在确定针对这一任务所占用的存储空间大于预设存储空间阈值时,释放处理这一任务所占用的专用处理单元140的存储器的存储空间。
应当理解,框308所涉及的操作是方法300中的可选操作,其目的在于大幅减少存储空间的占用。因此,在存储空间充足或者需要避免重新针对任务分配存储空间所花费的时间时,可以无需采用框308所涉及的操作。
基于以上描述的方法200和方法300,根据本公开的一个或多个实施例还可以包括以下示例性具体实施例。
实施例一:
步骤1,启动工作进程1;
步骤2,查找当前是否存在调度进程130,如果没有则创建调度进程130;
步骤3,工作进程1工作与调度进程130通信,告知所需要的处理时间、存储空间、以及处理优先级;
步骤4,开始针对工作进程1的第一批次数据的处理,并记录实际占用的存储空间,如果实际占用的存储空间超出预设大小,则工作进程1与调度进程130进行通信,申请更多显存资源,并且如果申请失败,则报错退出;
步骤5,结束第一批次数据的处理,工作进程1与调度进程130进行通信,告知本批次数据的处理完成,释放计算资源,并进入等待调度状态;
步骤6,调度进程130根据全部进程的执行时间进行调度,等到工作进程1允许执行时,向工作进程1发送信号;
步骤7,工作进程1继续下一批次数据的处理,重复步骤4。
实施例二:
步骤1,启动工作进程1;
步骤2,查找当前是否存在调度进程130,如果没有则创建调度进程130;
步骤3,工作进程1工作与调度进程130通信,告知所需要的处理时间、存储空间、以及处理优先级;
步骤4,开始针对工作进程1的第一批次数据的处理,并记录实际占用的存储空间,如果实际占用的存储空间超出预设大小,则工作进程1与调度进程130进行通信,申请更多显存资源;
步骤5,如果申请失败,则动态调整处理方式,启用更加节省存储空间的方式进行处理;
步骤5,结束第一批次数据的处理,工作进程1与调度进程130进行通信,告知本批次数据的处理完成,释放计算资源,并进入等待调度状态;
步骤6,调度进程130根据全部进程的执行时间进行调度,等到工作进程1允许执行时,向工作进程1发送信号;
步骤7,工作进程1继续下一批次数据的处理,重复步骤4。
实施例三:
步骤1,启动工作进程1;
步骤2,查找当前是否存在调度进程130,如果没有则创建调度进程130;
步骤3,工作进程1工作与调度进程130通信,告知所需要的处理时间、存储空间、以及处理优先级;
步骤4,开始针对工作进程1的第一批次数据的处理,并记录实际占用的存储空间,如果实际占用的存储空间超出预设大小,则工作进程1与调度进程130进行通信,申请更多显存资源;
步骤5,如果申请失败,则动态调整处理方式,启用更加节省存储空间的方式进行处理;
步骤5,结束第一批次数据的处理,工作进程1与调度进程130进行通信,告知本批次数据的处理完成,释放计算资源,释放所占用的存储空间,并进入等待调度状态;
步骤6,调度进程130根据全部进程的执行时间进行调度,等到工作进程1允许执行时,向工作进程1发送信号;
步骤7,工作进程1继续下一批次数据的处理,重复步骤4。
以上参考图1至图3描述了与可以在其中实现本公开的某些实施例中的调度方法的调度环境100、根据本公开实施例的调度方法200以及根据本公开实施例的调度方法300的相关内容。应当理解,上述描述是为了更好地展示本公开中所记载的内容,而不是以任何方式进行限制。
应当理解,本公开的上述各个附图中所采用的各种元件的数目和物理量的大小仅为举例,而并不是对本公开的保护范围的限制。上述数目和大小可以根据需要而被任意设置,而不会对本公开的实施方式的正常实施产生影响。
上文已经参见图1至图3描述了根据本公开的实施方式的调度方法200和调度方法300的细节。在下文中,将参见图4描述调度装置中的各个模块。
图4是根据本公开实施例的调度装置400的示意性框图。如图4所示,调度装置400包括:处理请求接收模块410,被配置为接收针对使用处理单元来处理多个任务的处理请求,处理请求包括针对多个任务的调度需求,多个任务中的每个任务与执行多批次数据处理相关联;以及第一调度模块420,被配置为基于多个任务的调度需求,以数据的批次为单位,调度处理单元以处理多个任务。
在一个或多个实施例中,其中处理单元包括专用处理单元。
在一个或多个实施例中,其中调度需求包括以下至少一项:处理多个任务中的任务将占用处理单元的处理时间;处理多个任务中的任务将占用处理单元的存储器的存储空间;以及多个任务中的任务的处理优先级。
在一个或多个实施例中,其中多个任务与训练深度学习模型相关联,因此调度装置400可适用于深度学习框架。
在一个或多个实施例中,第一调度模块420包括:第二调度模块(未示出),被配置为基于多个任务的调度需求,使用调度进程、以数据的批次为单位,调度处理单元以处理多个任务。
在一个或多个实施例中,调度装置400还包括:第一调度进程创建模块(未示出),被配置为基于多个任务中的、被首先创建的任务的创建,创建调度进程。
在一个或多个实施例中,其中第一调度进程创建模块包括:第二调度进程创建模块(未示出),被配置为使用被首先创建的任务中所包括的调度功能,创建调度进程。
在一个或多个实施例中,调度装置400还包括:第三调度进程创建模块(未示出),被配置为基于被首先创建的任务完成,使用多个任务中的、尚未被完成的任务中所包括的调度功能,创建调度进程。
在一个或多个实施例中,其中第二调度模块包括:未完成处理时间确定模块(未示出),被配置为基于在调度需求中所指示的、处理多个任务中的任务将占用处理单元的处理时间,以及多个任务中的任务的已完成处理时间,确定多个任务中的任务的未完成处理时间;以及第三调度模块(未示出),被配置为使用调度进程,调度处理单元以处理多个任务中的、未完成处理时间最长的任务。
在一个或多个实施例中,其中第一调度模块420包括:处理停止模块(未示出),被配置为基于确定处理多个任务中的第一任务所占用的处理单元的存储器的存储空间超过在调度需求中所指示的、分配给第一任务的存储空间,停止对第一任务的处理。
在一个或多个实施例中,其中第一调度模块420包括:处理调整模块(未示出),被配置为基于确定处理多个任务中的第一任务所占用的处理单元的存储器的存储空间超过在调度需求中所指示的、分配给第一任务的存储空间,调整对第一任务的处理,以降低处理第一任务所占用的存储空间。
在一个或多个实施例中,其中处理调整模块包括以下至少一项:每批次数据大小减小模块,被配置为减小与第一任务相关联的多批次数据处理中的每批次数据的大小;被存储数据减少模块,被配置为通过在需要使用时重新计算的方式来减少在处理第一任务期间需要被存储的数据;以及数据存储模块,被配置为使用其他存储器来存储在处理第一任务期间需要被存储的数据。
在一个或多个实施例中,调度装置400还包括:存储空间释放模块,被配置为在完成与多个任务中的第一任务相关联的至少一个批次的数据的处理之后,释放处理第一任务所占用的处理单元的存储器的存储空间。
通过以上参考图1至图4的描述,根据本公开的实施方式的技术方案相对于传统方案具有诸多优点。例如,利用根据本公开的实施例的技术方案,可以实现对专用处理单元的计算资源和存储资源的动态调用,因而可以满足使用专用处理单元进行多任务计算和计算与存储资源复用的问题,从而能够提升用户体验。具体而言,利用根据本公开的实施例的技术方案,可以精准地控制向每个任务所分配的计算与存储资源;可以只针对同一类任务进行调度,从而可以实现更简单的调度策略更简单和更高的调度效率;并且可以在计算与存储资源不充足的情况下,对任务进行动态地调整,从而降低任务对计算与存储资源的需求。此外,根据本公开的实施例的技术方案无论是实现还是使用都简单易行,并且其实现和使用可以独立于硬件和操作***,因此具有良好的适配性。
根据本公开的实施例,本公开还提供了一种电子设备、一种计算机可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。例如,如图1所示的计算设备110和如图4所示的调度装置400可以由电子设备500来实施。电子设备500旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如方法200和300。例如,在一些实施例中,方法200和300可以被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的方法200和300的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法200和300。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (26)
1.一种调度方法,包括:
接收针对使用处理单元来处理多个任务的处理请求,所述处理请求包括针对所述多个任务的调度需求,所述多个任务中的每个任务与执行多批次数据处理相关联;
基于被包括在所述处理请求中的、针对所述多个任务的所述调度需求,以数据的批次为单位,调度所述处理单元以处理所述多个任务,包括:
基于完成对所述多个任务中的一个任务所涉及的多个批次的数据中的一个批次的数据的处理,基于所述调度需求来确定进一步处理以下之一:
所述一个任务所涉及的所述多个批次的数据中的下一批次的数据,以及
所述多个任务中的另一任务的需要被处理的下一批次的数据,
其中所述调度需求包括所述多个任务中的任务的处理优先级,所述处理优先级随着所述任务的已处理比例的增加而被降低;以及
在完成与所述多个任务中的第一任务相关联的至少一个批次的数据的处理之后,如果所述第一任务尚未被处理完毕并且针对所述第一任务所占用的所述处理单元的存储器的存储空间大于预设存储空间阈值,则释放处理所述第一任务所占用的所述存储空间。
2.根据权利要求1所述的方法,其中所述处理单元包括专用处理单元。
3.根据权利要求1所述的方法,其中所述调度需求还包括以下至少一项:
处理所述多个任务中的任务将占用所述处理单元的处理时间;以及
处理所述多个任务中的任务将占用所述处理单元的存储器的存储空间。
4.根据权利要求1所述的方法,其中所述多个任务与训练深度学习模型相关联。
5.根据权利要求1所述的方法,其中调度所述处理单元以处理所述多个任务包括:
基于针对所述多个任务的所述调度需求,使用调度进程、以数据的批次为单位,调度所述处理单元以处理所述多个任务。
6.根据权利要求5所述的方法,还包括:
基于所述多个任务中的、被首先创建的任务的创建,创建所述调度进程。
7.根据权利要求6所述的方法,其中创建所述调度进程包括:
使用所述被首先创建的任务中所包括的调度功能,创建所述调度进程。
8.根据权利要求7所述的方法,还包括:
基于所述被首先创建的任务完成,使用所述多个任务中的、尚未被完成的任务中所包括的调度功能,创建所述调度进程。
9.根据权利要求5所述的方法,其中调度所述处理单元以处理所述多个任务包括:
基于在所述调度需求中所指示的、处理所述多个任务中的任务将占用所述处理单元的处理时间,以及所述多个任务中的任务的已完成处理时间,确定所述多个任务中的任务的未完成处理时间;以及
使用所述调度进程,调度所述处理单元以处理所述多个任务中的、所述未完成处理时间最长的任务。
10.根据权利要求1所述的方法,其中调度所述处理单元以处理所述多个任务包括:
基于确定处理所述多个任务中的第一任务所占用的所述处理单元的存储器的存储空间超过在所述调度需求中所指示的、分配给所述第一任务的存储空间,停止对所述第一任务的处理。
11.根据权利要求1所述的方法,其中调度所述处理单元以处理所述多个任务包括:
基于确定处理所述多个任务中的第一任务所占用的所述处理单元的存储器的存储空间超过在所述调度需求中所指示的、分配给所述第一任务的存储空间,调整对所述第一任务的处理,以降低处理所述第一任务所占用的所述存储空间。
12.根据权利要求11所述的方法,其中调整对所述第一任务的处理包括以下至少一项:
减小与所述第一任务相关联的多批次数据处理中的每批次数据的大小;
通过在需要使用时重新计算的方式来减少在处理所述第一任务期间需要被存储的数据;以及
使用其他存储器来存储在处理所述第一任务期间需要被存储的数据。
13.一种调度装置,包括:
处理请求接收模块,被配置为接收针对使用处理单元来处理多个任务的处理请求,所述处理请求包括针对所述多个任务的调度需求,所述多个任务中的每个任务与执行多批次数据处理相关联;
第一调度模块,被配置为基于被包括在所述处理请求中的、针对所述多个任务的所述调度需求,以数据的批次为单位,调度所述处理单元以处理所述多个任务,包括:
基于完成对所述多个任务中的一个任务所涉及的多个批次的数据中的一个批次的数据的处理,基于所述调度需求来确定进一步处理以下之一:
所述一个任务所涉及的所述多个批次的数据中的下一批次的数据,以及
所述多个任务中的另一任务的需要被处理的下一批次的数据,
其中所述调度需求包括所述多个任务中的任务的处理优先级,所述处理优先级随着所述任务的已处理比例的增加而被降低;以及
存储空间释放模块,被配置为在完成与所述多个任务中的第一任务相关联的至少一个批次的数据的处理之后,如果所述第一任务尚未被处理完毕并且针对所述第一任务所占用的所述处理单元的存储器的存储空间大于预设存储空间阈值,则释放处理所述第一任务所占用的所述存储空间。
14.根据权利要求13所述的装置,其中所述处理单元包括专用处理单元。
15.根据权利要求13所述的装置,其中所述调度需求还包括以下至少一项:
处理所述多个任务中的任务将占用所述处理单元的处理时间;以及
处理所述多个任务中的任务将占用所述处理单元的存储器的存储空间。
16.根据权利要求13所述的装置,其中所述多个任务与训练深度学习模型相关联。
17.根据权利要求13所述的装置,其中所述第一调度模块包括:
第二调度模块,被配置为基于针对所述多个任务的所述调度需求,使用调度进程、以数据的批次为单位,调度所述处理单元以处理所述多个任务。
18.根据权利要求17所述的装置,还包括:
第一调度进程创建模块,被配置为基于所述多个任务中的、被首先创建的任务的创建,创建所述调度进程。
19.根据权利要求18所述的装置,其中所述第一调度进程创建模块包括:
第二调度进程创建模块,被配置为使用所述被首先创建的任务中所包括的调度功能,创建所述调度进程。
20.根据权利要求19所述的装置,还包括:
第三调度进程创建模块,被配置为基于所述被首先创建的任务完成,使用所述多个任务中的、尚未被完成的任务中所包括的调度功能,创建所述调度进程。
21.根据权利要求17所述的装置,其中所述第二调度模块包括:
未完成处理时间确定模块,被配置为基于在所述调度需求中所指示的、处理所述多个任务中的任务将占用所述处理单元的处理时间,以及所述多个任务中的任务的已完成处理时间,确定所述多个任务中的任务的未完成处理时间;以及
第三调度模块,被配置为使用所述调度进程,调度所述处理单元以处理所述多个任务中的、所述未完成处理时间最长的任务。
22.根据权利要求13所述的装置,其中所述第一调度模块包括:
处理停止模块,被配置为基于确定处理所述多个任务中的第一任务所占用的所述处理单元的存储器的存储空间超过在所述调度需求中所指示的、分配给所述第一任务的存储空间,停止对所述第一任务的处理。
23.根据权利要求13所述的装置,其中所述第一调度模块包括:
处理调整模块,被配置为基于确定处理所述多个任务中的第一任务所占用的所述处理单元的存储器的存储空间超过在所述调度需求中所指示的、分配给所述第一任务的存储空间,调整对所述第一任务的处理,以降低处理所述第一任务所占用的所述存储空间。
24.根据权利要求23所述的装置,其中所述处理调整模块包括以下至少一项:
每批次数据大小减小模块,被配置为减小与所述第一任务相关联的多批次数据处理中的每批次数据的大小;
被存储数据减少模块,被配置为通过在需要使用时重新计算的方式来减少在处理所述第一任务期间需要被存储的数据;以及
数据存储模块,被配置为使用其他存储器来存储在处理所述第一任务期间需要被存储的数据。
25.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的方法。
26.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-12中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110362239.3A CN113032152B (zh) | 2021-04-02 | 2021-04-02 | 用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品 |
JP2022051143A JP7336562B2 (ja) | 2021-04-02 | 2022-03-28 | 深層フレームワーク用のスケジューリング方法、スケジューリング装置、電子機器、記憶媒体及びプログラム |
US17/707,895 US20220222111A1 (en) | 2021-04-02 | 2022-03-29 | Deep learning framework scheduling |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110362239.3A CN113032152B (zh) | 2021-04-02 | 2021-04-02 | 用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113032152A CN113032152A (zh) | 2021-06-25 |
CN113032152B true CN113032152B (zh) | 2023-03-24 |
Family
ID=76453597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110362239.3A Active CN113032152B (zh) | 2021-04-02 | 2021-04-02 | 用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220222111A1 (zh) |
JP (1) | JP7336562B2 (zh) |
CN (1) | CN113032152B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113283547B (zh) * | 2021-07-21 | 2021-11-23 | 之江实验室 | 一种基于多任务深度学习的最优潮流计算方法 |
CN114466012B (zh) * | 2022-02-07 | 2022-11-25 | 北京百度网讯科技有限公司 | 内容初始化方法、装置、电子设备和存储介质 |
CN114356534B (zh) * | 2022-03-16 | 2022-06-03 | 苏州云途半导体有限公司 | 一种处理单元任务调度方法和装置 |
CN116167437B (zh) * | 2023-04-18 | 2023-07-11 | 之江实验室 | 一种芯片管理***、方法、设备及存储介质 |
CN117539639B (zh) * | 2024-01-05 | 2024-06-14 | 北京趋动智能科技有限公司 | 显存资源调度方法、装置、***、存储介质及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111461290A (zh) * | 2020-03-11 | 2020-07-28 | 北京百度网讯科技有限公司 | 模型参数更新方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100591052C (zh) * | 2007-04-25 | 2010-02-17 | 华为技术有限公司 | 流量控制的方法和业务处理*** |
US8893140B2 (en) * | 2012-01-24 | 2014-11-18 | Life Coded, Llc | System and method for dynamically coordinating tasks, schedule planning, and workload management |
US9128754B2 (en) * | 2012-05-31 | 2015-09-08 | Hewlett-Packard Development Company, L.P. | Resource starvation management in a computer system |
CN105824702A (zh) * | 2016-03-22 | 2016-08-03 | 乐视云计算有限公司 | 一种管理程序内存占用量的方法和终端 |
CN109254846B (zh) * | 2018-08-01 | 2022-06-03 | 国电南瑞科技股份有限公司 | 基于两级调度的cpu与gpu协同计算的动态调度方法及*** |
CN110795228B (zh) | 2018-08-03 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | 用于训练深度学习模型的方法和制品、以及计算*** |
CN109885389B (zh) | 2019-02-19 | 2021-07-16 | 浪潮云信息技术股份公司 | 一种基于容器的并行深度学习调度训练方法及*** |
CN112445602A (zh) * | 2019-08-27 | 2021-03-05 | 阿里巴巴集团控股有限公司 | 资源调度方法、装置、***及电子设备 |
CN110764886B (zh) * | 2019-09-03 | 2023-03-31 | 中国航空无线电电子研究所 | 一种支持多分区处理的批量作业协同调度方法及*** |
CN111625325A (zh) * | 2020-04-21 | 2020-09-04 | 上海天数智芯半导体有限公司 | 基于批数据的ai芯片片上网络调度方法和装置 |
-
2021
- 2021-04-02 CN CN202110362239.3A patent/CN113032152B/zh active Active
-
2022
- 2022-03-28 JP JP2022051143A patent/JP7336562B2/ja active Active
- 2022-03-29 US US17/707,895 patent/US20220222111A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111461290A (zh) * | 2020-03-11 | 2020-07-28 | 北京百度网讯科技有限公司 | 模型参数更新方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
JP7336562B2 (ja) | 2023-08-31 |
CN113032152A (zh) | 2021-06-25 |
US20220222111A1 (en) | 2022-07-14 |
JP2022084869A (ja) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113032152B (zh) | 用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品 | |
EP4002112A1 (en) | Data processing method and apparatus, and electronic device | |
US10101910B1 (en) | Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager | |
US10664318B2 (en) | Method and apparatus for allocating computing resources of processor | |
CN109451051B (zh) | 服务请求处理方法、装置、电子设备及存储介质 | |
US9947068B2 (en) | System and method for GPU scheduling | |
CN112783659B (zh) | 一种资源分配方法、装置、计算机设备及存储介质 | |
US10289446B1 (en) | Preserving web browser child processes by substituting a parent process with a stub process | |
CN104598426A (zh) | 用于异构多核处理器***的任务调度方法 | |
CN106897299B (zh) | 一种数据库访问方法及装置 | |
CN113849312A (zh) | 数据处理任务的分配方法、装置、电子设备及存储介质 | |
US20040098722A1 (en) | System, method, and computer program product for operating-system task management | |
CN113986497B (zh) | 基于多租户技术的队列调度方法、装置及*** | |
CN115904761A (zh) | 片上***、车辆及视频处理单元虚拟化方法 | |
CN114968567A (zh) | 用于分配计算节点的计算资源的方法、装置和介质 | |
CN113535251A (zh) | 一种线程管理方法及装置 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
US10248321B1 (en) | Simulating multiple lower importance levels by actively feeding processes to a low-memory manager | |
KR20130051076A (ko) | 응용프로그램 스케줄링 방법 및 장치 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN111338803A (zh) | 一种线程处理方法和装置 | |
CN116303132A (zh) | 一种数据缓存方法、装置、设备以及存储介质 | |
JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
CN114721818A (zh) | 一种基于Kubernetes集群的GPU分时共享方法和*** | |
CN116893893B (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 |