CN116501466A - 任务处理方法、装置、电子设备及存储介质 - Google Patents
任务处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116501466A CN116501466A CN202310381092.1A CN202310381092A CN116501466A CN 116501466 A CN116501466 A CN 116501466A CN 202310381092 A CN202310381092 A CN 202310381092A CN 116501466 A CN116501466 A CN 116501466A
- Authority
- CN
- China
- Prior art keywords
- task
- inference
- offline
- reasoning
- online
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000012545 processing Methods 0.000 claims abstract description 154
- 238000000034 method Methods 0.000 claims description 87
- 230000008569 process Effects 0.000 claims description 59
- 239000012634 fragment Substances 0.000 claims description 36
- 230000011218 segmentation Effects 0.000 claims description 22
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 16
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000007781 pre-processing Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012805 post-processing Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
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/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
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本公开关于一种任务处理方法、装置、电子设备及存储介质,涉及计算机技术领域,该方法在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量。基于目标数量调整多个推理实例中推理实例的任务类型,以使多个推理实例中任务类型为离线类型的推理实例的数量,与目标数量一致;在任务类型为在线类型的情况下推理实例用于处理在线任务,在任务类型为离线类型的情况下推理实例用于处理离线任务。这样,可以在确保非高峰期内正常处理离线任务的同时,提高GPU的利用率。同时,可以提高在离线切换的灵活性,提高切换速度。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种任务处理方法、装置、电子设备及存储介质。
背景技术
目前,对人工智能算法广泛应用于短视频特效、内容理解、推荐系统等领域。人工智能算法在行业应用需要三要素:算法,数据,算力。其中,算力以图形处理器(GraphicsProcessing Unit,GPU)为主。在使用GPU的场景中,经常会利用GPU处理在线推理任务。具体的,可以将GPU作为在线任务GPU,使用在线任务GPU处理在线任务。在高峰期内,GPU利用率往往较高。但是在非高峰期内,GPU的利用率较低。
由于GPU成本较高,因此,如何提高GPU利用率成为亟需解决的技术问题。
发明内容
本公开提供一种任务处理方法、装置、电子设备及存储介质,以至少解决如何提高GPU利用率的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供了一种任务处理方法,应用于计算设备,所述计算设备包括部署在多个图形处理器中的多个推理实例,所述推理实例是用于执行推理操作的实例,包括:
在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;所述在线推理实例数量是用于处理在线任务的推理实例的数量;所述非高峰期时段是图形处理器的利用率不高于预设利用率阈值的时段;
基于所述目标数量调整所述多个推理实例中推理实例的任务类型,以使所述多个推理实例中任务类型为离线类型的推理实例的数量,与所述目标数量一致;在任务类型为在线类型的情况下所述推理实例用于处理在线任务,在任务类型为离线类型的情况下所述推理实例用于处理离线任务。
可选的,所述方法还包括:
在当前时间进入预设的高峰期时段的情况下,确定所述多个推理实例中任务类型为离线类型的推理实例,得到第一待调整实例;所述高峰期时段是图形处理器的利用率高于所述预设利用率阈值的时段;
将所述第一待调整实例的任务类型修改为在线类型,以控制所述多个推理实例用于处理在线任务。
可选的,所述根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量,包括:
根据所述计算设备当前接收到的在线查询的总数量以及单个推理实例预设时间内所能处理的在线查询数量,确定当前所需的在线推理实例数量;
根据所述多个推理实例的实例总数量与所述在线推理实例数量之间的数量差,确定所述目标数量;所述目标数量小于或等于所述数量差。
可选的,所述根据所述多个推理实例的实例总数量与所述在线推理实例数量之间的数量差,确定所述目标数量,包括:
获取所述多个推理实例中,当前用于处理在线任务的推理实例的平均延迟;所述推理实例的延迟用于表征所述推理实例从接收到在线任务处理请求至返回在线任务的处理结果所消耗的时长;
基于所述平均延迟以及预设延迟阈值,为所述数量差确定消减分量;
基于所述数量差与所述消减分量之间的差值,计算参照数量;所述参照数量小于所述数量差;
从小于或等于所述参照数量的数值中确定一个数值作为所述目标数量。
可选的,所述基于所述目标数量调整所述多个推理实例中推理实例的任务类型,包括:
确定所述多个推理实例中当前用于处理离线任务的推理实例的数量,作为当前离线数量;
在所述目标数量小于所述当前离线数量的情况下,从当前用于处理离线任务的推理实例中,确定M个推理实例作为第二待调整实例,并将所述第二待调整实例的任务类型调整为在线类型;
在所述目标数量大于所述当前离线数量的情况下,从当前未用于处理离线任务的推理实例中,确定M个推理实例作为第三待调整实例,并将所述第三待调整实例的任务类型调整为离线类型;所述M为所述目标数量与所述当前离线数量之间差值的绝对值。
可选的,一个离线任务包括多个任务分片;所述方法还包括:
对于任务类型为离线类型的推理实例,将所处理任务分片属于同一离线任务的推理实例划分至同一实例分组;
对于任一所述实例分组中的任一推理实例,在所述推理实例完成对所处理任务分片的处理操作的情况下,为所述推理实例调度属于目标离线任务的未执行任务分片或待重试任务分片;所述目标离线任务是所述实例分组中推理实例所执行的离线任务,所述待重试任务分片包括在执行过程出现执行异常的任务分片;
通过所述推理实例对所调度的未执行任务分片或待重试任务分片进行处理。
可选的,所述方法还包括:
获取当前所处非高峰时段内所述多个图形处理器的利用率以及所述多个推理实例中当前用于处理在线任务的推理实例的平均延迟;
在所述利用率以及所述平均延迟的增长幅度满足预设条件的情况下,重新执行所述根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量的操作。
根据本公开实施例的第二方面,提供了一种任务处理装置,应用于计算设备,所述计算设备包括部署在多个图形处理器中的多个推理实例,所述推理实例是用于执行推理操作的实例,包括:
第一确定模块,被配置为执行在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;所述在线推理实例数量是用于处理在线任务的推理实例的数量;所述非高峰期时段是图形处理器的利用率不高于预设利用率阈值的时段;
调整模块,被配置为执行基于所述目标数量调整所述多个推理实例中推理实例的任务类型,以使所述多个推理实例中任务类型为离线类型的推理实例的数量,与所述目标数量一致;在任务类型为在线类型的情况下所述推理实例用于处理在线任务,在任务类型为离线类型的情况下所述推理实例用于处理离线任务。
可选的,所述装置还包括:
第二确定模块,被配置为执行在当前时间进入预设的高峰期时段的情况下,确定所述多个推理实例中任务类型为离线类型的推理实例,得到第一待调整实例;所述高峰期时段是图形处理器的利用率高于所述预设利用率阈值的时段;
修改模块,被配置为执行将所述第一待调整实例的任务类型修改为在线类型,以控制所述多个推理实例用于处理在线任务。
可选的,所述第一确定模块,具体被配置为执行:
根据所述计算设备当前接收到的在线查询的总数量以及单个推理实例预设时间内所能处理的在线查询数量,确定当前所需的在线推理实例数量;
根据所述多个推理实例的实例总数量与所述在线推理实例数量之间的数量差,确定所述目标数量;所述目标数量小于或等于所述数量差。
可选的,所述第一确定模块,具体还被配置为执行:
获取所述多个推理实例中,当前用于处理在线任务的推理实例的平均延迟;所述推理实例的延迟用于表征所述推理实例从接收到在线任务处理请求至返回在线任务的处理结果所消耗的时长;
基于所述平均延迟以及预设延迟阈值,为所述数量差确定消减分量;
基于所述数量差与所述消减分量之间的差值,计算参照数量;所述参照数量小于所述数量差;
从小于或等于所述参照数量的数值中确定一个数值作为所述目标数量。
可选的,所述调整模块,具体被配置为执行:
确定所述多个推理实例中当前用于处理离线任务的推理实例的数量,作为当前离线数量;
在所述目标数量小于所述当前离线数量的情况下,从当前用于处理离线任务的推理实例中,确定M个推理实例作为第二待调整实例,并将所述第二待调整实例的任务类型调整为在线类型;
在所述目标数量大于所述当前离线数量的情况下,从当前未用于处理离线任务的推理实例中,确定M个推理实例作为第三待调整实例,并将所述第三待调整实例的任务类型调整为离线类型;所述M为所述目标数量与所述当前离线数量之间差值的绝对值。
可选的,一个离线任务包括多个任务分片;所述装置还包括:
划分模块,被配置为执行对于任务类型为离线类型的推理实例,将所处理任务分片属于同一离线任务的推理实例划分至同一实例分组;
调度模块,被配置为执行对于任一所述实例分组中的任一推理实例,在所述推理实例完成对所处理任务分片的处理操作的情况下,为所述推理实例调度属于目标离线任务的未执行任务分片或待重试任务分片;所述目标离线任务是所述实例分组中推理实例所执行的离线任务,所述待重试任务分片包括在执行过程出现执行异常的任务分片;
处理模块,被配置为执行通过所述推理实例对所调度的未执行任务分片或待重试任务分片进行处理。
可选的,所述装置还包括:
获取模块,被配置为执行获取当前所处非高峰时段内所述多个图形处理器的利用率以及所述多个推理实例中当前用于处理在线任务的推理实例的平均延迟;
执行模块,被配置为执行在所述利用率以及所述平均延迟的增长幅度满足预设条件的情况下,重新执行所述根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量的操作。
根据本公开实施例的第三方面,提供了一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如第一方面中任一项所述的方法。
根据本公开实施例的第四方面,提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备执行如第一方面中任一项所述的方法。
根据本公开实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括可读性程序指令,所述可读性程序指令由电子设备的处理器执行时,使得所述电子设备执行如第一方面中任一项所述的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:在本公开实施例中,针对计算设备中部署在多个GPU中的多个推理实例,在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;非高峰期时段是图形处理器的利用率不高于预设利用率阈值的时段,在线推理实例数量是用于处理在线任务的推理实例的数量。基于目标数量调整多个推理实例中推理实例的任务类型,以使多个推理实例中任务类型为离线类型的推理实例的数量,与目标数量一致;在任务类型为在线类型的情况下推理实例用于处理在线任务,在任务类型为离线类型的情况下推理实例用于处理离线任务。这样,通过在非高峰期时段内,基于目标数量直接调整推理实例的任务类型,来控制多个推理实例中当前用于处理离线任务的推理实例数量达到当前可支持的目标数量,进而一定程度上可以在确保非高峰期内正常处理离线任务的同时,提高GPU的利用率。同时,本公开实施例中通过调整任务类型即可灵活控制推理实例用于处理在线任务还是离线任务,也就是说,仅需调整推理实例的任务类型,即可调度该任务类型执行在线任务或者离线任务,进而一定程度上可以提高在离线切换的灵活性,提高切换速度。
且相较于对在线任务GPU缩容,将一部分在线任务GPU作为离线任务GPU使用的方式,本方案中从推理实例层面,通过调整任务类型即可灵活控制推理实例用于处理在线任务还是离线任务,进而一定程度上可以避免GPU被离线任务抢占,GPU资源一直被离线任务占用,导致无法后续无法及时处理在线任务的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种任务处理方法的流程图。
图2是根据一示例性实施例示出的一种转换关系示意图;
图3是根据一示例性实施例示出的一种数据管理器的结构示意图;
图4是根据一示例性实施例示出的一种系统整体架构示意图;
图5是根据一示例性实施例示出的一种本地调度器的交互示意图;
图6是根据一示例性实施例示出的一种离线任务处理过程示意图;
图7是根据一示例性实施例示出的一种任务处理装置的框图;
图8是根据一示例性实施例示出的一种用于任务处理的装置的框图;
图9是根据一示例性实施例示出的另一种用于任务处理的装置的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种任务处理方法的流程图,该方法可以应用于计算设备,该计算设备可以包括部署在多个GPU中的多个推理实例,如图1所示,该方法可以包括以下步骤:
步骤101、在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;所述在线推理实例数量是用于处理在线任务的推理实例的数量;所述非高峰期时段是图形处理器的利用率不高于预设利用率阈值的时段。
步骤102、基于所述目标数量调整所述多个推理实例中推理实例的任务类型,以使所述多个推理实例中任务类型为离线类型的推理实例的数量,与所述目标数量一致;在任务类型为在线类型的情况下所述推理实例用于处理在线任务,在任务类型为离线类型的情况下所述推理实例用于处理离线任务。
本公开实施例中,计算设备可以为服务器集群,例如,可以为云服务器集群。计算设备中可以部署有在离线混合处理系统,在离线混合处理系统可以包括全局调度器(Global Scheduler)以及部署在多个GPU中的多个推理实例,这多个GPU可以是服务器集群中的服务器提供的。计算设备可以具体通过全局调度器(Global Scheduler)执行上述步骤101~步骤102。推理实例可以是基于容器技术实现的,推理实例可以是调度的基本单位,作为最小部署的单元,推理实例也可以称为计算单元(Pod)或者容器云实例,Pod里面可以包括一个或多个容器。由于Pod对GPU的占有是刚性的,一张GPU只能分配给一个Pod。因此,一个GPU中部署有一个推理实例。
推理实例是用于执行推理操作的实例,其中,推理操作可以包括处理在线任务所需执行的操作,以及,处理离线任务所需执行的操作。例如,处理在线任务所需执行的操作可以包括在线查询操作,处理离线任务所需执行的操作可以包括离线查询操作。实际业务中使用GPU的场景可以分为训练和预估,其中预估占比更重。预估可以分为在线预估和离线预估,在线预估针对实时为用户(Consumer)端的用户提供服务的情况,离线预估针对时延要求不高、可以批量进行处理的情况。其中,在线预估即为使用GPU执行在线任务,离线预估即为使用GPU执行离线任务。实际应用场景中,在线推理服务存在明显的潮汐现象,在高峰期(Rush Hour)内在线任务的数量较多,针对在线任务的每秒查询率(Queries PerSecond,QPS)较高,相应地,GPU利用率较高。但是在非高峰期内在线任务的数量较少,针对在线任务的每秒查询率(Queries Per Second,QPS)较低,相应地,GPU利用率较低。本公开实施例中可以在当前时间进入预设的非高峰时段的情况下,调度多个推理实例中的部分推理实例执行离线任务,以在非高峰时段填补离线任务,复用推理实例执行离线任务,以充分利用GPU,进而提高GPU利用率,同时,节省离线任务执行成本。
具体的,本公开实施例中,非高峰期时段以及高峰期时段可以是根据历史利用率分布提前按统计周期划分的。示例性地,统计周期可以是一天,即,本公开实施例中可以按天级别划分非高峰期时段和高峰期时段,例如,将图形处理器的利用率高于预设利用率阈值的时段作为高峰期时段,将图形处理器的利用率不高于预设利用率阈值作为非高峰期时段。其中,一个时段的图形处理器的利用率可以是图形处理器在该时段内的历史利用率的均值,预设利用率阈值可以是根据实际情况预先设置的,本公开实施例对此不作限制。实际应用场景中,图形处理器的利用率可以与计算设备的流量正相关。其中,一条流量可以理解为提交至计算设备的一个处理请求,例如,查询请求。也就是说,计算设备接收到的处理请求越多的时段,图形处理器的利用率越高。
由于非高峰期时段也会存在在线任务,因此,可以先根据当前所需的在线推理实例数量,确定多个推理实例中能够用于处理离线任务的推理实例的数量,作为目标数量。其中,当前所需的在线推理实例数量可以是处理当前存在的在线任务所需的推理实例的数量。也就是说,预留这些数量的推理实例作为在线推理实例使用,可以确保能够应对当前所处的非高峰期时段内的在线任务处理需求,确保非高峰期内正常向外提供在线服务。相应地,基于当前所需的在线推理实例数量确定目标数量,一定程度上可以使得确定的目标数量符合当前情况,避免目标数量过大导致无法满足在线任务处理需求。
进一步地,本公开实施例中,推理实例的任务类型可以用于指示该任务类型所需处理的推理任务是离线任务还是在线任务。其中,推理任务可以包括在线任务以及离线任务,在线任务也可以称为在线推理任务,离线任务也可以称为离线推理任务。推理实例在用于处理在线任务时加载在线任务对应的模型(即,在线模型)进行在线预估,在用于处理离线任务时加载离线任务对应的模型(即,离线模型)进行离线预估。任务类型可以包括在线类型以及离线类型。通过将推理实例的任务类型设置为在线类型,可以控制推理实例执行在线任务。通过将推理实例的任务类型设置为离线类型,可以控制推理实例执行离线任务。基于目标数量调整多个推理实例中推理实例的任务类型时,可以是调整多个推理实例中部分推理实例的任务类型,以确保多个推理实例中任务类型为离线类型的推理实例的数量与目标数量一致,进而确保在该非高峰期时段内,有目标数量个推理实例用于处理离线任务。
综上所述,本公开实施例提供的任务处理方法,针对计算设备中部署在多个GPU中的多个推理实例,在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;非高峰期时段是是图形处理器的利用率不高于预设利用率阈值的时段,在线推理实例数量是用于处理在线任务的推理实例的数量。基于目标数量调整多个推理实例中推理实例的任务类型,以使多个推理实例中任务类型为离线类型的推理实例的数量,与目标数量一致;在任务类型为在线类型的情况下推理实例用于处理在线任务,在任务类型为离线类型的情况下推理实例用于处理离线任务。这样,通过在非高峰期时段内,基于目标数量直接调整推理实例的任务类型,来控制多个推理实例中当前用于处理离线任务的推理实例数量达到当前可支持的目标数量,进而一定程度上可以在确保非高峰期内正常处理离线任务的同时,提高GPU的利用率。同时,本公开实施例中通过调整任务类型即可灵活控制推理实例用于处理在线任务还是离线任务,也就是说,仅需调整推理实例的任务类型,即可调度该任务类型执行在线任务或者离线任务,进而一定程度上可以提高在离线切换的灵活性,提高切换速度。
且相较于对在线任务GPU缩容,将一部分在线任务GPU作为离线任务GPU使用的方式,本方案中从推理实例层面,通过调整任务类型即可灵活控制推理实例用于处理在线任务还是离线任务,进而一定程度上可以避免GPU被离线任务抢占,GPU资源一直被离线任务占用,导致无法后续无法及时处理在线任务的问题。
可选的,本公开实施例中还可以包括下述步骤:
步骤S21、在当前时间进入预设的高峰期时段的情况下,确定所述多个推理实例中任务类型为离线类型的推理实例,得到第一待调整实例;所述高峰期时段是图形处理器的利用率高于所述预设利用率阈值的时段。
步骤S22、将所述第一待调整实例的任务类型修改为在线类型,以控制所有多个推理实例用于处理在线任务。
本公开实施例中,随着时间推理,当前时间会从非高峰期时段进入高峰期时段。示例性地,假设非高峰期时段从0点开始至8点结束,高峰期时段为从8点开始至0点结束。那么在当前时间为1点时,则可以确定当前时间处于进入非高峰期时段的情况。那么在当前时间为9点时,则可以确定当前时间处于进入高峰期时段的情况。
具体的,针对不同任务类型可以设置不同的标识,例如,在线类型的标识可以为online,在线类型的标识可以为offline。对于任一推理实例,可以识别推理实例的任务类型字段的字段值,在字段值为在线类型的标识的情况下,则可以确定该推理实例的任务类型为在线类型,在字段值为离线类型的标识的情况下,则可以确定该推理实例的任务类型为离线类型。在推理实例的任务类型被调整为在线类型的情况下,推理实例可以对应拉取在线模型,并运行在线模型对在线任务进行处理。在推理实例的任务类型被调整为离线类型的情况下,推理实例可以拉取离线模型,并运行离线模型对离线任务进行处理。其中,任务类型字段可以是用于表征任务类型的字段,例如,任务类型字段可以为workload_type。可以为每个推理实例分别维护一个任务类型字段,假设有100个推理实例,那么可以对应维护100个任务类型字段。具体的,可以将各推理实例的实例标识与各推理实例的任务类型字段对应存储在远程字典服务(Remote Dictionary Server,Redis)数据库中。相应地,修改一个推理实例的任务类型时,可以修改Redis数据库中与该推理实例的实例标识对应存储的任务类型字段的字段值。
可以将字段值为offline的推理实例作为第一待调整实例,将所有第一待调整实例的任务类型字段的字段值修改为online,以实现将所有第一待调整实例的任务类型均修改为在线类型。相应地,全局调度器可以在修改了推理实例的任务类型字段的字段值的情况下,向该推理实例返回调度决策。其中,该调度决策中可以携带修改后的字段值。例如,再将第一待调整实例的字段值修改为online的情况下,向该第一待调整实例返回的调度决策中可以携带workload_type=online的信息。相应地,第一待调整实例中的本地调度器(Local Scheduler)在识别到workload_type=online的情况下,卸载该第一待调整实例中的离线模型,并加载在线模型,以处理在线任务。
由于高峰期时段内在线处理需求很高,因此,可以筛选出多个推理实例中当前任务类型为离线类型的推理实例作为第一待调整实例,将各个第一待调整实例的任务类型修改为在线类型,进而控制所有推理实例均用于处理在线任务。这样,通过避免推理实例在高峰期时段内处理离线任务,可以更大程度确保在线服务的稳定性。
本公开实施例中,针对一个推理实例可以控制该推理实例调度在线模型或者离线模型,即实现混合调度,而一个推理实例占据一个GPU。因此,混合调用相当于使得多个模型共享一个GPU,进而降低GPU的共享粒度,更加充分利用GPU的计算资源。且进行在离线调度时,无需先销毁在线、离线推理实例之后再重新创建离线、在线推理实例,因此,可以使得模型切换速度更快,进而减少对在线服务可用性的影响。同时,在非高峰期内由于不会销毁推理实例,因此,相当于不进行缩容,而是直接复用已有推理实例处理离线任务,从而使得后续可以方便的调度推理实例处理在线任务,确保在线任务可以被及时处理。
本公开实施例中推理实例可以分为:高峰期在线负载、非高峰期在线负载以及非高峰期离线负载。高峰期在线负载以及非高峰期在线负载本质上为在线负载。其中,在线负载(Online Workload)表示用于处理在线任务,离线负载(Offline Workload)表示用于处理离线任务。高峰期内不进行动态调度动作,全部均为在线负载。高峰期(Rush Hour)内所有推理实例均为在线负载。非高峰期在线负载可以表示非高峰期内,对该推理实例的调度决策为workload_type=online。非高峰期离线负载可以表示非高峰期内,对该推理实例的调度决策为workload_type=offline。图2是根据一示例性实施例示出的一种转换关系示意图,如图2所示,可以脱离非高峰期的情况下,非高峰期在线负载以及非高峰期离线负载均转换为高峰期在线负载。进入非高峰期的情况下,非高峰期在线负载以及非高峰期离线负载之间可以基于全局调度器的调度决策进行转换。
可选的,上述根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量的操作,具体可以包括:
步骤1011、根据所述计算设备当前接收到的在线查询的总数量以及单个推理实例预设时间内所能处理的在线查询数量,确定当前所需的在线推理实例数量。
步骤1012、根据所述多个推理实例的实例总数量与所述在线推理实例数量之间的数量差,确定所述目标数量;所述目标数量小于或等于所述数量差。
其中,预设时间可以根据实际情况设置,例如,预设时间可以为1秒。针对一条在线查询可以创建一个在线任务,在线查询越多所需处理的在线任务越多。可以统计计算设备在预设时间内接收到的(例如,每秒接收到的)在线查询的数量作为当前接收到的在线查询的总数量。单个推理实例预设时间内所能处理的在线查询数量可以表示单个推理实例一个预设时间内所能承载的在线查询的数量,单个推理实例预设时间内所能处理的在线查询数量可以是基于压力测试预先确定的,单个推理实例所能处理的在线查询数量可以为常数。以qtotal表示在线查询的总数量,以qt表示单个推理实例预设时间内所能处理的在线查询数量,那么当前所需的在线推理实例数量可以为qtotal/qt。其中,qtotal/qt中的“/”表示相除,也就是说,可以使用在线查询的总数量除以单个推理实例预设时间内所能处理的在线查询数量得到的值,作为当前所需的在线推理实例数量。需要说明的是,在相除的结果不为整数的情况下,可以对相除的结果进行取整,例如,进行向上取整,或者,向下取整。当前所需的在线推理实例数量可以表示理论在线实例数量,表示理论上所需的用于处理在线任务的实例数量。
多个推理实例的实例总数量为多个推理实例的实际数量,以ntotal表示实例总数量,noffline表示可用于处理离线任务的推理实例的数量,即,表示目标数量。那么实例总数量与在线推理实例数量之间的数量差可以表示为:ntotal-qtotal/qt,noffline≤ntotal-qtotal/qt。以nonline表示实际用于处理在线任务的推理实例的数量,那么noffline=ntotal-nonline≤ntotal-qtotal/qt。
用于处理在线任务的实例优先级高于用于处理离线任务的实例优先级。本公开实施例中,先根据计算设备当前接收到的在线查询的总数量以及单个推理实例预设时间内所能处理的在线查询数量,确定当前所需的在线推理实例数量。然后根据多个推理实例的实例总数量与在线推理实例数量之间的数量差,确定目标数量,目标数量小于或等于数量差。这样,可以确保在使用目标数量个推理实例处理离线任务时,剩余的推理实例充足,从而确保能够正常响应在线查询,满足在线任务的处理需求。
可选的,上述根据所述多个推理实例的实例总数量与所述在线推理实例数量之间的数量差,确定所述目标数量的步骤,具体可以包括:
步骤1012a、获取所述多个推理实例中,当前用于处理在线任务的推理实例的平均延迟;所述推理实例的延迟用于表征所述推理实例从接收到在线任务处理请求至返回在线任务的处理结果所消耗的时长。
步骤1012b、基于所述平均延迟以及预设延迟阈值,为所述数量差确定消减分量。
步骤1012c、基于所述数量差与所述消减分量之间的差值,计算参照数量;所述参照数量小于所述数量差。
步骤1012d、从小于或等于所述参照数量的数值中确定一个数值作为所述目标数量。
本公开实施例中,可以先确定任务类型为在线类型的推理实例,然后确定这些推理实例中每个推理实例的延迟(latency)。其中,推理实例的延迟可以表征推理实例从接收到在线任务处理请求开始到返回在线任务的处理结果所消耗的时长。接着,可以计算确定到的延迟的平均值,得到平均延迟。
平均延迟可以表示为
预设延迟阈值可以是通过压力测试预先确定的。示例性地,主调用端可以逐渐调大请求请求次数。在刚好满足可用性时,将此时在线推理实例的平均延迟作为预设延迟阈值。其中,预设延迟阈值可以表征能够接受的平均延迟上限。其中,满足可用性可以指的满足等待时间下,请求成功,推理实例成功返回结果的占比达到预设占比阈值,例如,占比达到99.9%。
以Lt表示预设延迟阈值,如果L-Lt<0,即,预设延迟阈值大于平均延迟,那么可以说明平均latency满足目标latency,在线服务缓存(buffer)充足。对在线服务来说,平均Latency越小越好。预设延迟阈值大于平均延迟可以说明当前用于处理在线任务的推理实例能够正常处理在线请求,延迟在可接受范围内。反之,如果即,平均延迟不小于预设延迟阈值,则说明当前用于处理在线任务的推理实例可能无法正常处理在线请求。相应地,这种情况下,投入离线推理的实例数量应该对应减少一些。因此,可以在平均延迟不小于预设延迟阈值的情况下,为数量差生成消减分量。其中,生成消减分量可以大于0。
进一步地,可以将数量差与消减分量之间的差值作为参照数量。或者,计算该差值与预设的分配系数的乘积,将该乘积作为参照数量。其中,预设的分配系数可以为α,0≤α≤1。α的取值越大,则有越多的空闲推理实例投入离线推理,相应地,在线服务的buffer就越小,当α=1时,在线服务将不保留任何缓存。
在选择目标数量时,可以控制即,其中,在/>的情况下,β′可以等于β。否则,β′可以等于0,即不存在消减分量。也就是说,β′可以基于下述公式确定:
其中,β表示预设的延迟系数,β可以>0。β的取值越大,则平均延迟增加时,投入离线推理的实例数量会越少。或者,在一种实现方式中,也可以设置β等于0,即设置消减分量为0,本公开实施例中对此不作限制。相应地,当β=0时,平均延迟的增加不会影响离线推理实例的数量,即,不考虑延迟因素时,可以设置β=0。
需要说明的是,本公开实施例中,可以按照计算周期,周期性计算每个计算周期内的目标数量,并根据该计算周期内的目标数量进行调度。例如,可以以分钟为单位,根据当前1分钟内的数据,确定下1分钟内的目标数量。
例如,下1分钟内的目标数量其中,/>表示对*进行向下取整。需要说明的是,ntotal、qtotal以及/>可以在每一计算周期内重复使用,以提高目标数量的确定效率。
本公开实施例中,在确定目标数量的过程中,基于平均延迟确定消减分量,并进一步结合数量差与消减分量之间的差值计算参照数量,从小于或等于参照数量的数值中确定一个数值作为目标数量。这样,在确定目标数量中考虑延迟因素,一定程度上可以使得所确定的目标数量更符合当前的实际情况,进而确定目标数量的准确性。
可选的,上述基于所述目标数量调整所述多个推理实例中推理实例的任务类型的步骤,具体可以包括:
步骤1021、确定所述多个推理实例中当前用于处理离线任务的推理实例的数量,作为当前离线数量。
可以统计这多个推理实例中任务类型字段的字段值当前为offline的推理实例的数量,进而得到当前离线数量。
步骤1022、在所述目标数量小于所述当前离线数量的情况下,从当前用于处理离线任务的推理实例中,确定M个推理实例作为第二待调整实例,并将所述第二待调整实例的任务类型调整为在线类型。
步骤1023、在所述目标数量大于所述当前离线数量的情况下,从当前未用于处理离线任务的推理实例中,确定M个推理实例作为第三待调整实例,并将所述第三待调整实例的任务类型调整为离线类型;所述M为所述目标数量与所述当前离线数量之间差值的绝对值。
可以先计算目标数量与当前离线数量之间差值的绝对值作为M。如果目标数量大于当前离线数量,则说明当前用于处理离线任务的推理实例的数量未达到目标数量。因此,可以从当前未用于处理离线任务的推理实例中随机确定M个推理实例,作为第三待调整实例,将各第三待调整实例的任务类型字段的字段值修改为offline。当前未用于处理离线任务的推理实例可以是在线推理实例,或者,也可以是空闲推理实例,即任务类型字段的字段值当前为空。如果目标数量小于当前离线数量,则说明当前用于处理离线任务的推理实例的数量超过了目标数量,因此,可以从当前用于处理离线任务的推理实例中随机确定M个推理实例,作为第二待调整实例,将各第二待调整实例的任务类型字段的字段值由offline修改为online。当然,如果目标数量等于当前离线数量,则可以不执行调整任务类型的操作。
需要说明的是,本公开实施例中上述多个推理实例可以是属于同一服务的推理实例。上述多个推理实例可以属于同一实例组。具体的,属于同一服务的推理实例可以具备相同的服务名称(KWS Service Name,KSN)。其中,KSN可以是对应研发运维平台管理的最小操作单元,用于将多个平台间串联的唯一标识,KSN可以表示容器云上的服务名称。本公开实施例中,可以遍历Redis中预先存储的推理实例数据,根据推理实例数据中记录的服务名称,预先将具备相同服务名称的划分至同一实例组。其中,预设时长内未进行更新的推理实例不参与分组。其中,推理实例在预设时长内未进行更新则可以说明该推理实例出现故障。推理实例进行更新可以指的是推理实例进行数据处理。针对任一实例组,可以计算该实例组中的多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量。基于该目标数量对该实例组中多个推理实例中推理实例的任务类型进行调整。
本公开实施例中,通过先确定多个推理实例中当前用于处理离线任务的推理实例的数量作为当前离线数量,根据目标数量与当前离线数量之前的大小关系,分情况进行任务类型调整,确保进行任务类型调整之后,用于处理离线任务的推理实例的数量与目标数量一致,进而确保实例调度的准确性。且基于目标数量以及当前离线数量进行调度即可,调度算法简单易用,实现成本较低。
可选的,本公开实施例中,一个离线任务可以包括多个任务分片。离线任务包括的多个任务分片可以由在离线混合处理系统中的数据管理器(Data Manager)切分得到。数据管理器可以从数据维度将离线批推理任务切分为子任务。其中,离线批推理任务即为离线任务,子任务即为任务分片。任务分片生成后可以存储内存中,进一步地,可以使用预设序列化组件(例如,cloudpickle组件)对任务分片序列化并上传到指定存储设备(例如,blobstore设备),以进行备份。还可以在Redis上进行注册,即,在Redis数据库中将离线任务与该离线任务包括的任务分片进行对应存储,以方便后续拉取任务分片。本公开实施例中,在离线混合处理系统还可以包括离线批推理任务管理器(Offiline Task Manager),Offiline Task Manager可以维护和管理离线批推理任务的元数据、进度和状态以及对外提供接口,以方便用户对离线批推理任务的元数据进行增加、删除、修改以及查询等操作。元数据的具体内容可以根据实际需求设置,示例性地,元数据可以如下表所示:
/>
/>
数据管理器进行数据分片时采用的数据分片策略可以根据实际需求预先设置。示例性地,数据分片策略可以包括按照预设设置的指定大小进行切分,或者,在离线任务中本身包括多个数据组的情况下,将每X个数据组作为一个任务分片。数据管理器的主要功能可以包括执行数据分片策略以及维护任务分片的执行状态。单个任务分片的状态可以维护在Redis数据库中,整体离线任务的执行进度可以维护在关系型数据库管理系统(例如,MySQL)数据库中。图3是根据一示例性实施例示出的一种数据管理器的结构示意图,如图3所示,在需要定义数据分片策略时,可以调用其中的应用程序编程接口(ApplicationProgramming Interface,API)层进行自定义。数据管理器可以基于预设脚本执行数据分片策略。其中,预设脚本可以是data_loader.py脚本,data_loader.py脚本可以是基于预设编程语言创建的,例如,预设编程语言可以为Python语言。同时,可以基于第一数据库以及第二数据库维护数据分片完成状态。其中,运行状态可以包括:未处理、处理中,已完成。第一数据库可以为Redis数据库,第二数据库可以为MySQL数据库。
由于离线任务的数据来源多样化且定制化程度高,因此本公开实施例中可以采用data_loader.py脚本作为数据分片策略的载体,方便实现复杂逻辑,同时方便开放给用户实现自定义数据分片策略。需要说明的是,自定义数据分片策略时可以基于data_loader.py脚本文件中预先定义的基类进行设定,基类中可以定义有所需遵循的基础规则,例如,任务分片的数量为实例数量的倍数。数据管理器可以执行data_loader.py文件将离线任务划分为任务分片,并进行下发。
数据管理器可以针对各个离线任务分别维护一个Data Manager对象,用于生成该离线任务的DataLoader对象(即,任务分片)。在针对单个离线任务进行多副本部署的情况下,即存在多个可用于对该离线任务进行切分的切分实例的情况下,响应于任务处理请求,如果当前切分实例中存在针对该离线任务的Data Manager对象,则可以直接基于该切分实例生成任务分片。如果当前切分实例中不存在针对该离线任务的Data Manager对象,则可以查询其他切分实例上是否存在针对该离线任务的Data Manager对象,如果存在,则可以路由至该其他切分实例,以基于该其他切分实例生成任务分片。当然,如果所有其他切分实例上均不存在针对该离线任务的Data Manager对象。则可以为当前切分实例注册DataManager对象,例如,在Redis数据库中为当前切分实例注册Data Manager对象,之后可以加载Data Manager对象,并基于该切分实例生成任务分片。其中,在多副本部署的情况下,数据管理器可以通过Redis数据库维护离线任务的任务标识(offline_task_id)和存在DataManager对象的切分实例地址({addr}:{port})的映射关系,以便于基于映射关系查找切分实例的地址并进行路由。示例性地,可以使用Redis的字符串(String)数据结构存储该映射关系。其中,字符串(String)数据结构可以为:键名(key)模型:data-mgr-{offline_task_id},键值(value)模型:{addr}:{port}。
相应地,本公开实施例中还可以包括下述步骤:
步骤S31、对于任务类型为离线类型的推理实例,将所处理任务分片属于同一离线任务的推理实例划分至同一实例分组。
步骤S32、对于任一所述实例分组中的任一推理实例,在所述推理实例完成对所处理任务分片的处理操作的情况下,为所述推理实例调度属于目标离线任务的未执行任务分片或待重试任务分片;所述目标离线任务是所述实例分组中推理实例所执行的离线任务,所述待重试任务分片包括在执行过程出现执行异常的任务分片。
步骤S33、通过所述推理实例对所调度的未执行任务分片或待重试任务分片进行处理。
本公开中,可以先筛选任务类型字段为offline的推理实例,接着,按照筛选出的各推理实例所处理任务分片对应的任务标识(offline_task_id)进行分组。将offline_task_id相同的推理实例划分至同一实例分组。其中,一个离线任务具备一个任务标识,属于同一离线任务的任务分片对应相同的任务标识。一个离线任务包括的多个任务分片可以具备各自的分片标识。其中,分片标识可以为data_part_key,data_part_key也可以表示为data-{task_id}-part-{part_idx}。
对于任一实例分组而言,如果该实例分组中的任一推理实例完成对所处理任务分片的处理操作的情况下,即,所处理任务分片的执行完毕的情况下,可以为该推理实例重新调度属于目标离线任务的任务分片,以确保该推理实例执行同一离线任务。具体的,可以先从数据管理器获取目标离线任务的所有已生成任务分片,然后检测任务分片中是否有需要重试的待重试任务分片。其中,待重试任务分片包括在执行过程出现执行异常的任务分片。执行过程出现执行异常可以包括执行过程中对应的推理实例变为已退出状态或执行过程中任务分片的任务类型已转为online。如果存在待重试任务分片则可以优先为该推理实例调度待重试任务分片。如果不存在待重试任务分片,则可以将新的任务分片(即,还未被执行的任务分片)调度给该推理实例。在为该推理实例调度了未执行任务分片的情况下,可以由该推理实例对该未执行任务分片进行处理,在为该推理实例调度了待重试任务分片的情况下,可以由该推理实例对该待重试任务分片进行处理。需要说明的是,调度完成后,可以同时调用数据管理器修改任务分片的状态,以及,修改推理实例数据中该推理实例对应的表示正在处理的离线任务以及任务分片的字段:offline_task_id和data_part_key字段,以保证数据的准确性。推理实例的workload_type、offline_task_id、data_part_key字段,可以均是由全局调度器配置。
当然,对于任务类型为离线类型但是不存在正在处理的数据分片的推理实例,即对应的offline_task_id字段为0的推理实例,可以查询是否有该推理实例可运行的离线任务。如果有,则为该推理实例调度属于该推理实例可运行的离线任务的任务分片。其中,如果推理实例能够满足离线任务所需的资源需求(例如,所需的模型的硬件、镜像需求),则可以将该离线任务确定为该推理实例可运行的离线任务。
由于不同离线任务所需的环境不同,本公开实施例中,将处理同一离线任务的推理实例划分至同一实例分组,并为该实例分组中的推理实例调度同一离线任务中的任务分片,确保同一推理实例执行属于同一离线任务的任务分片,进而可以避免同一推理实例反复安装不同离线任务所需的环境,提高任务分片执行效率。
需要说明的是,离线任务执行过程中可以进行断点恢复。具体的离线任务执行过程如果被中断此时会保存中断时刻任务状态,等下次执行时,可以从中断状态恢复执行,从而避免已经被执行过的任务被重复执行。
可选的,本公开实施例中还可以包括下述步骤:
步骤S41、获取当前所处非高峰时段内所述多个图形处理器的利用率以及所述多个推理实例中当前用于处理在线任务的推理实例的平均延迟。
步骤S42、在所述利用率以及所述平均延迟的增长幅度满足预设条件的情况下,重新执行所述根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量的操作。
本公开实施例中,推理实例中可以包括本地调度器(Local Scheduler),一个推理实例中可以包括一个本地调度器,本地调度器可以是推理实例内部的一个独立进程。本地调度器可以在高峰时段内进入休眠(sleep)状态,在非高峰时段内每隔10秒一次统计GPU的利用率和平均延迟等统计数据上报给全局调度器。相应地,可以通过接收上报的统计数据,实现获取当前所处非高峰时段内多个GPU的利用率以及多个推理实例中当前用于处理在线任务的推理实例的平均延迟作。其中,统计数据还可以包括其他数据,例如,CPU利用率、内存利用率以及在线请求的QPS。
全局调度器在每次接收到上报的GPU利用率以及平均延迟之后,执行一次判断GPU利用率以及平均延迟的增长幅度是否满足预设条件的操作。具体的,可以在GPU利用率的增长幅度大于第一预设阈值、平均延迟的增长幅度大于第二预设阈值的情况下,确定满足预设条件。反之,则可以确定不满足预设条件。接着,如果满足,则可以重新执行一次确定目标数量,从而重新根据目标数量调整多个推理实例中推理实例的任务类型。由于当前所需的在线推理实例数量会发生变化,因此,重新执行确定目标数量时,确定的目标数量会对应发生变化,从而一定程度上避免离线任务占用过多推理实例,导致无法满足在线任务处理需求。例如,在GPU利用率以及平均延迟的增长幅度较大,GPU利用率以及平均延迟明显上升时,当前所需的在线推理实例数量会升高,相应地,重新确定目标数量并基于目标数量调整多个推理实例中推理实例的任务类型之后,可以减少用于处理离线任务的推理实例数量,从而增加用于处理在线任务的推理实例数量。
图4是根据一示例性实施例示出的一种系统整体架构示意图,如图4所示,在离线混合处理系统中,各个部分之间的箭头指向表示主动请求链路。网页前端(Web UI)可以运行在用户浏览器环境中,用于和用户进行交互。全局调度器(Global Schduler)需要维护所有推理实例的信息,并将离线批推理任务的某个子任务调度到空闲的用于处理离线任务的推理实例上执行。微服务中的服务发现调度系统(KESS),用于接收在线查询(Onlineinference query)实现服务发现和负载均衡调度。第三数据库可以为hive blobstore等数据库,第三数据库可以用于存储待处理的数据。图中离线推理任务执行器(Offline TaskExecutor)指向第三数据库的主动请求链路表示离线推理任务执行器从第三数据库中取数据,用于计算。第一数据库中主要使用Redis的哈希(Hash)数据结构存储保存两类数据:推理实例及其状态、任务分片及其状态。其中,保存推理实例及其状态时,key可以为推理实例的实例标识:pod-{pod_id},value可以为推理实例的状态。保存任务分片及其状态时,key可以为任务分片的分片表示以及该任务分片所属离线任务的任务标识的组合表示:data-{offline_task_id}-part-{part_idx},value可以为任务分片的状态。
全局调度器中的接口服务(API Server)可以用于提供上报和查询接口,维护和管理任务分片的状态以及维护和管理推理实例的状态。全局调度器中的调度器(Scheduler)可以用于进行两阶段决策:第一阶段决定可用于离线推理的实例数。第二阶段将离线任务的任务分片调度到推理实例上。需要说明的是,可能会存在多个Scheduler,为了避免冲突可以基于Redis实现分布式锁,保证同时只有一个Scheduler运行。
本公开实施例中,本地调度器具体还可以与全局调度器进行交互来获取调度结果(即,调度决策)。图5是根据一示例性实施例示出的一种本地调度器的交互示意图,如图5所示,若调度结果由online转变为offline,即,调度决策中携带workload_type=offline,则可以部署离线,具体的,可以基于离线批推理前端,停止在线服务前部(online servingfront),并拉取离线模型、代码,准备虚拟环境,安装第三方依赖后拉起离线任务执行,并在一个任务分片执行成功后向全局调度器上报执行结果。若调度结果由offline转变为online,即,调度决策中携带workload_type=online,则可以部署在线,具体的,可以停止离线推理任务执行器(offline task executor),基于在线推理前端重新加载在线模型,并拉起online serving front以接入在线请求。
其中,离线推理任务执行器可以是推理实例内部独立进程,由本地调度器拉起,执行给定的离线任务。离线推理任务执行器可以包括推理框架,推理框架可以具备加载离线模型并运行离线推理任务的功能。推理框架本质上可以为一个执行进程。高峰期时段离线推理任务执行器可以处于退出状态。一个离线任务的处理步骤可以包括:获取并执行DataLoader代码,以读取数据、执行前处理代码、执行模型推理、执行后处理代码、执行数据回写逻辑。其中除模型推理之外的其他处理步骤可以均由用户自定义。离线推理任务执行器可以采用了异步并行和流水线化的处理方式,以提高离线任务的运行速率和资源利用率。由于每个管道(Pipeline)节点的执行速率、运算特点不相同,各节点之间可以通过队列串联,并同时基于预取(Prefetch)、多进程并发执行等技术提高运行速率和资源利用率。
图6是根据一示例性实施例示出的一种离线任务处理过程示意图,其中,任务分片执行器(DataLoader执行器)可以用于反序列化任务分片对象、执行任务分片以分批加载数据以及预取数据,针对任务分片执行器可以配置运行参数:batch size以及prefetchsize。前处理执行器可以用于并发执行前处理逻辑,针对前处理执行器可以配置运行参数:进程池数量。其中,进程池也可以为线程池。推理执行器(Inference Engine)可以用于执行模型推理,针对推理执行器可以配置运行参数:推理并发数以及其他Inference Engine配置项。后处理执行器可以用于并发执行后处理逻辑,针对后处理执行器可以配置运行参数:进程池(线程池)数量。数据回写执行器可以用于回写结果。示例性地,前处理代码可以为pre_process.py文件,模型文件可以为model.pt.etc文件,后处理代码可以为post_process.py文件,数据回写代码可以为data_saver.py文件。
以人脸检测为例,可以先读取一张人脸照片,然后前处理执行器对照片进行大小调整(resize),减均值等一系列前处理,之后送入队列(Queue),模型推理器会从Queue读数据并进行推理,推理结果可以继续放入Queue。相应地,后处理执行器可以从Queue读数据,将人脸从照片中截取并放入Queue。最后,数据回写执行器从Queue取数据,并存储在blobstore等存储介质。整个过程类似一条生产线,可以保证每个环节都有输入数据,这样每个环节都可以在工作,从而提高处理效率。具体的,异步使得在同一时刻,图6中的前处理执行器和推理执行器可以同时执行,本来两个环节是有时间前后依赖的,但是由于队列(Queue)的存在,使前处理执行器和推理执行器彼此独立,只要Queue中有数据,推理执行器就可以执行。并行可以指的是前处理执行器和推理执行器以多线程执行,以提高执行效率。
需要说明的是,本公开实施例中,可以在Web UI的指定项配置表征开启接入混合推理系统的情况下,运行本地调度器和离线推理任务执行器。否则,不运行本地调度器和离线推理任务执行器。进一步地,还可以在全局调度器的不可用时长达到预设时间阈值(例如,不可用时长达到3分钟)的情况下,将离线负载自动转为在线负载,以进一步确保在线服务能够满足延迟、吞吐、可用性等性能目标,达到所需的服务等级目标(Service LevelObjectives,SLO)。
图7是根据一示例性实施例示出的一种任务处理装置的框图,应用于计算设备,所述计算设备包括部署在多个图形处理器中的多个推理实例,所述推理实例是用于执行推理操作的实例,如图5所示,该装置50可以包括:
第一确定模块501,被配置为执行在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;所述在线推理实例数量是用于处理在线任务的推理实例的数量;所述非高峰期时段是图形处理器的利用率不高于预设利用率阈值的时段;
调整模块502,被配置为执行基于所述目标数量调整所述多个推理实例中推理实例的任务类型,以使所述多个推理实例中任务类型为离线类型的推理实例的数量,与所述目标数量一致;在任务类型为在线类型的情况下所述推理实例用于处理在线任务,在任务类型为离线类型的情况下所述推理实例用于处理离线任务。
在一种可选实施例方式中,所述装置50还包括:
第二确定模块,被配置为执行在当前时间进入预设的高峰期时段的情况下,确定所述多个推理实例中任务类型为离线类型的推理实例,得到第一待调整实例;所述高峰期时段是图形处理器的利用率高于所述预设利用率阈值的时段;
修改模块,被配置为执行将所述第一待调整实例的任务类型修改为在线类型,以控制所述多个推理实例用于处理在线任务。
在一种可选实施例方式中,所述第一确定模块501,具体被配置为执行:
根据所述计算设备当前接收到的在线查询的总数量以及单个推理实例预设时间内所能处理的在线查询数量,确定当前所需的在线推理实例数量;
根据所述多个推理实例的实例总数量与所述在线推理实例数量之间的数量差,确定所述目标数量;所述目标数量小于或等于所述数量差。
在一种可选实施例方式中,所述第一确定模块501,具体还被配置为执行:
获取所述多个推理实例中,当前用于处理在线任务的推理实例的平均延迟;所述推理实例的延迟用于表征所述推理实例从接收到在线任务处理请求至返回在线任务的处理结果所消耗的时长;
基于所述平均延迟以及预设延迟阈值,为所述数量差确定消减分量;
基于所述数量差与所述消减分量之间的差值,计算参照数量;所述参照数量小于所述数量差;
从小于或等于所述参照数量的数值中确定一个数值作为所述目标数量。
在一种可选实施例方式中,所述调整模块502,具体被配置为执行:
确定所述多个推理实例中当前用于处理离线任务的推理实例的数量,作为当前离线数量;
在所述目标数量小于所述当前离线数量的情况下,从当前用于处理离线任务的推理实例中,确定M个推理实例作为第二待调整实例,并将所述第二待调整实例的任务类型调整为在线类型;
在所述目标数量大于所述当前离线数量的情况下,从当前未用于处理离线任务的推理实例中,确定M个推理实例作为第三待调整实例,并将所述第三待调整实例的任务类型调整为离线类型;所述M为所述目标数量与所述当前离线数量之间差值的绝对值。
在一种可选实施例方式中,一个离线任务包括多个任务分片;所述装置50还包括:
划分模块,被配置为执行对于任务类型为离线类型的推理实例,将所处理任务分片属于同一离线任务的推理实例划分至同一实例分组;
调度模块,被配置为执行对于任一所述实例分组中的任一推理实例,在所述推理实例完成对所处理任务分片的处理操作的情况下,为所述推理实例调度属于目标离线任务的未执行任务分片或待重试任务分片;所述目标离线任务是所述实例分组中推理实例所执行的离线任务,所述待重试任务分片包括在执行过程出现执行异常的任务分片;
处理模块,被配置为执行通过所述推理实例对所调度的未执行任务分片或待重试任务分片进行处理。
在一种可选实施例方式中,所述装置50还包括:
获取模块,被配置为执行获取当前所处非高峰时段内所述多个图形处理器的利用率以及所述多个推理实例中当前用于处理在线任务的推理实例的平均延迟;
执行模块,被配置为执行在所述利用率以及所述平均延迟的增长幅度满足预设条件的情况下,重新执行所述根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量的操作。
综上所述,本公开实施例提供的任务处理装置,针对计算设备中部署在多个GPU中的多个推理实例,在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;非高峰期时段是图形处理器的利用率不高于预设利用率阈值的时段,在线推理实例数量是用于处理在线任务的推理实例的数量。基于目标数量调整多个推理实例中推理实例的任务类型,以使多个推理实例中任务类型为离线类型的推理实例的数量与目标数量一致;在任务类型为在线类型的情况下推理实例用于处理在线任务,在任务类型为离线类型的情况下推理实例用于处理离线任务。这样,通过在非高峰期时段内,基于目标数量直接调整推理实例的任务类型,来控制多个推理实例中当前用于处理离线任务的推理实例数量达到当前可支持的目标数量,进而一定程度上可以在确保非高峰期内正常处理离线任务的同时,提高GPU的利用率。同时,本公开实施例中通过调整任务类型即可灵活控制推理实例用于处理在线任务还是离线任务,也就是说,仅需调整推理实例的任务类型,即可调度该任务类型执行在线任务或者离线任务,进而一定程度上可以提高在离线切换的灵活性,提高切换速度。
且相较于对在线任务GPU缩容,将一部分在线任务GPU作为离线任务GPU使用的方式,本方案中从推理实例层面,通过调整任务类型即可灵活控制推理实例用于处理在线任务还是离线任务,进而一定程度上可以避免GPU被离线任务抢占,GPU资源一直被离线任务占用,导致无法后续无法及时处理在线任务的问题。
根据本公开的一个实施例,提供了一种电子设备,包括:处理器、用于存储处理器可执行指令的存储器,其中,处理器被配置为执行时实现如上述任一个实施例中的任务处理方法中的步骤。
根据本公开的一个实施例,还提供了一种存储介质,当存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一个实施例中的任务处理方法中的步骤。
根据本公开的一个实施例,还提供了一种计算机程序产品,该计算机程序产品包括可读性程序指令,可读性程序指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一个实施例中的任务处理方法中的步骤。
图8是根据一示例性实施例示出的一种用于任务处理的装置的框图。其中,装置600可以包括处理组件602、存储器604、电源组件606、多媒体组件608、音频组件610、输入/输出接口612、传感器组件614、通信组件616以及处理器620。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的任务处理方法的全部或部分步骤。在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器604,上述指令可由装置600的处理器620执行以完成上述方法。可选的,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图9是根据一示例性实施例示出的另一种用于任务处理的装置的框图。
其中,装置700可以包括处理组件722、存储器732、输入输出接口758、网络接口750以及电源组件726。装置700可以被提供为一服务器。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行上述任务处理方法。
本公开所涉及的用户信息(包括但不限于用户的设备信息、用户个人信息等)、相关数据等均为经用户授权或经各方授权后的信息。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种任务处理方法,其特征在于,应用于计算设备,所述计算设备包括部署在多个图形处理器中的多个推理实例,所述推理实例是用于执行推理操作的实例;所述方法包括:
在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;所述在线推理实例数量是用于处理在线任务的推理实例的数量;所述非高峰期时段是图形处理器的利用率不高于预设利用率阈值的时段;
基于所述目标数量调整所述多个推理实例中推理实例的任务类型,以使所述多个推理实例中任务类型为离线类型的推理实例的数量,与所述目标数量一致;在任务类型为在线类型的情况下所述推理实例用于处理在线任务,在任务类型为离线类型的情况下所述推理实例用于处理离线任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在当前时间进入预设的高峰期时段的情况下,确定所述多个推理实例中任务类型为离线类型的推理实例,得到第一待调整实例;所述高峰期时段是图形处理器的利用率高于所述预设利用率阈值的时段;
将所述第一待调整实例的任务类型修改为在线类型,以控制所述多个推理实例用于处理在线任务。
3.根据权利要求1所述的方法,其特征在于,所述根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量,包括:
根据所述计算设备当前接收到的在线查询的总数量以及单个推理实例预设时间内所能处理的在线查询数量,确定当前所需的在线推理实例数量;
根据所述多个推理实例的实例总数量与所述在线推理实例数量之间的数量差,确定所述目标数量;所述目标数量小于或等于所述数量差。
4.根据权利要求3所述的方法,其特征在于,所述根据所述多个推理实例的实例总数量与所述在线推理实例数量之间的数量差,确定所述目标数量,包括:
获取所述多个推理实例中,当前用于处理在线任务的推理实例的平均延迟;所述推理实例的延迟用于表征所述推理实例从接收到在线任务处理请求至返回在线任务的处理结果所消耗的时长;
基于所述平均延迟以及预设延迟阈值,为所述数量差确定消减分量;
基于所述数量差与所述消减分量之间的差值,计算参照数量;所述参照数量小于所述数量差;
从小于或等于所述参照数量的数值中确定一个数值作为所述目标数量。
5.根据权利要求1所述的方法,其特征在于,所述基于所述目标数量调整所述多个推理实例中推理实例的任务类型,包括:
确定所述多个推理实例中当前用于处理离线任务的推理实例的数量,作为当前离线数量;
在所述目标数量小于所述当前离线数量的情况下,从当前用于处理离线任务的推理实例中,确定M个推理实例作为第二待调整实例,并将所述第二待调整实例的任务类型调整为在线类型;
在所述目标数量大于所述当前离线数量的情况下,从当前未用于处理离线任务的推理实例中,确定M个推理实例作为第三待调整实例,并将所述第三待调整实例的任务类型调整为离线类型;所述M为所述目标数量与所述当前离线数量之间差值的绝对值。
6.根据权利要求5所述的方法,其特征在于,一个离线任务包括多个任务分片;所述方法还包括:
对于任务类型为离线类型的推理实例,将所处理任务分片属于同一离线任务的推理实例划分至同一实例分组;
对于任一所述实例分组中的任一推理实例,在所述推理实例完成对所处理任务分片的处理操作的情况下,为所述推理实例调度属于目标离线任务的未执行任务分片或待重试任务分片;所述目标离线任务是所述实例分组中推理实例所执行的离线任务,所述待重试任务分片包括在执行过程出现执行异常的任务分片;
通过所述推理实例对所调度的未执行任务分片或待重试任务分片进行处理。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取当前所处非高峰时段内所述多个图形处理器的利用率以及所述多个推理实例中当前用于处理在线任务的推理实例的平均延迟;
在所述利用率以及所述平均延迟的增长幅度满足预设条件的情况下,重新执行所述根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量的操作。
8.一种任务处理装置,其特征在于,应用于计算设备,所述计算设备包括部署在多个图形处理器中的多个推理实例,所述推理实例是用于执行推理操作的实例;所述装置包括:
第一确定模块,被配置为执行在当前时间进入预设的非高峰期时段的情况下,根据当前所需的在线推理实例数量,确定所述多个推理实例中可用于处理离线任务的推理实例的数量,得到目标数量;所述在线推理实例数量是用于处理在线任务的推理实例的数量;所述非高峰期时段是图形处理器的利用率不高于预设利用率阈值的时段;
调整模块,被配置为执行基于所述目标数量调整所述多个推理实例中推理实例的任务类型,以使所述多个推理实例中任务类型为离线类型的推理实例的数量,与所述目标数量一致;在任务类型为在线类型的情况下所述推理实例用于处理在线任务,在任务类型为离线类型的情况下所述推理实例用于处理离线任务。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的方法。
10.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备执行如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310381092.1A CN116501466A (zh) | 2023-04-11 | 2023-04-11 | 任务处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310381092.1A CN116501466A (zh) | 2023-04-11 | 2023-04-11 | 任务处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116501466A true CN116501466A (zh) | 2023-07-28 |
Family
ID=87327650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310381092.1A Pending CN116501466A (zh) | 2023-04-11 | 2023-04-11 | 任务处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501466A (zh) |
-
2023
- 2023-04-11 CN CN202310381092.1A patent/CN116501466A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bhattacharjee et al. | Barista: Efficient and scalable serverless serving system for deep learning prediction services | |
US10474504B2 (en) | Distributed node intra-group task scheduling method and system | |
CN107992359B (zh) | 一种云环境下代价感知的任务调度方法 | |
CN109324875B (zh) | 一种基于强化学习的数据中心服务器功耗管理与优化方法 | |
CN109814997B (zh) | 一种分布式自主均衡人工智能任务调度方法及系统 | |
WO2021159638A1 (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
WO2019050952A1 (en) | SYSTEMS, METHODS, AND MEDIA FOR DISTRIBUTING DATABASE INTERROGATIONS THROUGH A PAYING VIRTUAL NETWORK | |
CN103927225A (zh) | 一种多核心架构的互联网信息处理优化方法 | |
CN109783225B (zh) | 一种多租户大数据平台的租户优先级管理方法及系统 | |
CN114610474B (zh) | 一种异构超算环境下多策略的作业调度方法及系统 | |
CN112799817A (zh) | 一种微服务资源调度系统和方法 | |
CN111427675A (zh) | 一种数据处理方法、装置以及计算机可读存储介质 | |
CN115185679A (zh) | 人工智能算法的任务处理方法、装置、服务器及存储介质 | |
Jagadish Kumar et al. | Hybrid gradient descent golden eagle optimization (HGDGEO) algorithm-based efficient heterogeneous resource scheduling for big data processing on clouds | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN108595251B (zh) | 动态图更新方法、装置、存储引擎接口和程序介质 | |
WO2022169589A1 (en) | Cloud computing capacity management system using automated fine-grained admission control | |
CN114461384A (zh) | 任务执行方法、装置、计算机设备和存储介质 | |
CN106936905B (zh) | 基于openstack的Nova组件虚拟机的调度方法及其调度系统 | |
CN116974994A (zh) | 一种基于集群的高效能文件协作系统 | |
CN116501466A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN116204282A (zh) | 一种深度学习算法模型推理调度引擎架构及方法 | |
CN115952054A (zh) | 一种仿真任务资源管理方法、装置、设备及介质 | |
CN115686830A (zh) | 边缘计算资源弹性调度方法及系统 | |
Liu et al. | Online deadline-constrained scheduling of parallel applications in CPSs |
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 |