CN117009028A - 容器组的调度方法、装置、电子设备及存储介质 - Google Patents
容器组的调度方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117009028A CN117009028A CN202211424408.2A CN202211424408A CN117009028A CN 117009028 A CN117009028 A CN 117009028A CN 202211424408 A CN202211424408 A CN 202211424408A CN 117009028 A CN117009028 A CN 117009028A
- Authority
- CN
- China
- Prior art keywords
- gpu
- time
- resource
- bandwidth
- historical
- 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
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000012549 training Methods 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 description 48
- 230000006870 function Effects 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000013473 artificial intelligence Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- YHXISWVBGDMDLQ-UHFFFAOYSA-N moclobemide Chemical compound C1=CC(Cl)=CC=C1C(=O)NCCN1CCOCC1 YHXISWVBGDMDLQ-UHFFFAOYSA-N 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000012417 linear regression Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241001123248 Arma Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000005311 autocorrelation function Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000011160 research 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- 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/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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- 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
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
本申请涉及云计算技术领域,公开了一种容器组的调度方法、装置、电子设备及存储介质,该方法包括:若存在待调度到第一图形处理器GPU上的待调度容器组,获取第一GPU对应的资源预测数据;根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和待调度容器组的带宽需求量,确定待调度容器组的调度时间;调度时间位于第一时间点之后,第一时间点是指第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的时间点;在调度时间将待调度容器组调度至第一GPU,以使待调度容器组利用第一GPU中的资源进行任务处理。本申请可以缩短容器组的等待时长,提升GPU的资源利用率。
Description
技术领域
本申请涉及云计算技术领域,更具体地,涉及一种容器组的调度方法、装置、电子设备及存储介质。
背景技术
在以容器组为最小管理单元的容器化的集群系统中,在集群系统中的资源紧张的情况下,一般是图形处理器(graphics processing unit,GPU)上运行的容器组成功终止后,才将等待的容器组调度到图形处理器上运行,这样对于等待的容器组来说,等待时间较长。
发明内容
鉴于上述问题,本申请实施例提出了一种容器组的调度方法、装置、电子设备及存储介质,以解决相关技术中容器组等待的时间较长的问题。
根据本申请实施例的一个方面,提供了一种容器组的调度方法,包括:若存在待调度到第一图形处理器GPU上的待调度容器组,获取所述第一GPU对应的资源预测数据,所述资源预测数据包括第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值;根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和所述待调度容器组的带宽需求量,确定所述待调度容器组的调度时间;所述调度时间位于第一时间点之后,所述第一时间点是指所述第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的时间点;在所述调度时间将所述待调度容器组调度至所述第一GPU,以使所述待调度容器组利用所述第一GPU中的资源进行任务处理。
根据本申请实施例的一个方面,提供了一种容器组的调度装置,包括:资源预测数据获取模块,用于若存在待调度到第一图形处理器GPU上的待调度容器组,获取所述第一GPU对应的资源预测数据,所述资源预测数据包括第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值;调度时间确定模块,用于根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和所述待调度容器组的带宽需求量,确定所述待调度容器组的调度时间;所述调度时间位于第一时间点之后,所述第一时间点是指所述第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的时间点;调度模块,用于在所述调度时间将所述待调度容器组调度至所述第一GPU,以使所述待调度容器组利用所述第一GPU中的资源进行任务处理。
在一些实施例中,调度时间确定模块,包括:第一时间点确定单元,用于根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值,确定所述第一时间点;第一确定单元,用于根据所述第一GPU在所述第一时间点之后的多个时间点对应的带宽使用参数的预测值,确定所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值;第二确定单元,用于根据所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值和所述待调度容器组的带宽需求量,确定所述调度时间,所述第一GPU在所述调度时间对应的带宽剩余量的预测值不低于所述带宽需求量。
在另一些实施例中,所述资源预测数据还包括第一GPU在第一时间段中多个时间点分别对应的第一资源使用参数的预测值,所述第一资源使用参数包括显存使用参数和计算资源使用参数中的至少一项;调度时间确定模块,包括:第一时间点确定单元,用于根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值,确定所述第一时间点;第一确定单元,用于根据所述第一GPU在所述第一时间点之后的多个时间点对应的带宽使用参数的预测值,确定所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值;第三确定单元,用于根据所述第一GPU在所述第一时间点之后的多个时间点对应的第一资源使用参数的预测值,确定所述第一GPU在第一时间点之后的多个时间点分别对应的第一资源剩余量的预测值;第四确定单元,用于根据所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值和分别对应的第一资源剩余量的预测值、所述待调度容器组的带宽需求量和第一资源需求量,确定所述调度时间;其中,所述第一GPU在所述调度时间对应的带宽剩余量的预测值不低于所述带宽需求量,且所述第一GPU在所述调度时间之后第一时长所对应第一资源剩余量的预测值不低于所述第一资源需求量。
在一些实施例中,容器组的调度装置,还包括:第一获取模块,用于获取所述第一GPU的带宽性能参数;第一时长确定模块,用于根据所述第一GPU的带宽性能参数和所述待调度容器组的带宽需求量,确定所述第一时长。
在一些实施例中,容器组的调度装置,还包括:第二获取模块,用于获取所述第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数;预测模块,用于根据所述第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数进行使用参数预测,获得所述第一GPU在第一时间段中各时间点对应的资源使用参数的预测值;所述资源使用参数至少包括带宽使用参数。
在一些实施例中,所述历史使用参数包括历史带宽使用参数、历史显存使用参数和历史计算资源使用参数;预测模块进一步被配置为:根据所述第一GPU在第一时间段之前的多个时间点分别对应的历史带宽使用参数、分别对应的历史显存使用参数和分别对应的历史计算资源使用参数,进行带宽使用参数预测,获得第一GPU在第一时间段中各时间点对应的带宽使用参数的预测值。
在一些实施例中,预测模块,进一步被配置为:由资源使用参数预测模型根据所述第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数进行使用参数预测,输出所述第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值。
在一些实施例中,容器组的调度装置,还包括:第三获取模块,用于获取训练数据,所述训练数据包括多个训练样本,所述训练样本包括历史资源使用参数序列和与所述历史资源使用参数序列相关联的第一历史时间点的历史资源使用参数,所述历史资源使用参数序列包括样本GPU在历史时间段中多个时间点的历史资源使用参数,所述第一历史时间点是所述历史时间段之后的时间点;第二预测模块,用于由所述资源使用参数预测模型根据所述历史资源使用参数序列进行资源使用参数预测,输出所述第一历史时间点的预测资源使用参数;预测损失计算模块,用于根据所述第一历史时间点的预测资源使用参数和所述第一历史时间点的历史资源使用参数,计算预测损失;参数调整模块,用于根据所述预测损失调整所述资源使用参数预测模型的参数,直至达到训练结束条件。
在一些实施例中,所述训练样本还包括所述历史资源使用参数序列所来源样本GPU的性能参数;第二预测模块进一步被配置为:由所述资源使用参数预测模型根据所述历史资源使用参数序列和所述历史资源使用参数序列所来源样本GPU的性能参数,进行资源使用参数预测,输出所述第一历史时间点的预测资源使用参数;预测模块进一步被配置为:由资源使用参数预测模型根据第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数和所述第一GPU的性能参数,进行使用参数预测,输出所述第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值。
在一些实施例中,容器组的调度装置,还包括:第四获取模块,用于获取所述第一GPU的资源剩余量;第二调度模块,用于若所述第一GPU的资源剩余量满足所述待调度容器组的资源需求条件,将所述待调度容器组调度至所述第一GPU;若所述第一GPU的资源剩余量不满足所述待调度容器组的资源需求条件,执行所述获取所述第一GPU对应的资源预测数据的步骤。
在一些实施例中,调度模块进一步被配置为:若达到所述调度时间,获取所述第一GPU的带宽剩余量;若所述第一GPU的带宽剩余量不低于所述待调度容器组的带宽需求量,将所述待调度容器组调度至所述第一GPU。
根据本申请实施例的一个方面,提供了一种电子设备,包括:处理器;存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如上所述的容器组的调度方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被处理器执行时,实现如上所述的容器组的调度方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上所述的容器组的调度方法。
在本申请的方案中,对于待调度到第一图形处理器GPU上的待调度容器组,根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和待调度容器组的带宽需求量,来为待调度容器组确定调度时间,并保证调度时间是位于第一GPU的带宽使用参数的下一个预测值峰值所在时间点之后,这样,之后按照调度时间将待调度容器组调度至第一GPU,可以保证是在第一GPU的带宽使用参数的非峰值时间段将待调度容器组调度至第一GPU,即实现了容器组的错峰调度。
此外,鉴于容器组在GPU上运行过程中不同阶段主要消耗的资源不同,即在第一阶段主要消耗带宽,第二阶段主要消耗显存和计算资源,在本申请中,为待调度容器组确定的调度时间位于第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的第一时间点之后,可以实现在第一GPU上运行的容器组主要消耗显存和计算资源的阶段将新的待调度容器组调度到第一GPU上,由于新的待调度容器组调度到第一GPU上主要消耗带宽,而消耗显存和计算资源较少,因此,在第一GPU上运行的容器组主要消耗显存和计算资源的阶段将新的待调度容器组调度到第一GPU上并不会影响已运行容器组中处理任务的执行。而且,相较于现有技术中在GPU上已运行容器组结束运行后才将新的容器组调度到GPU上,采用本申请的方式,可以缩短待调度容器组的等待时长,进而,可以提升GPU的资源利用率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请一实施例的本申请的应用场景的示意图。
图2是根据本申请的一个实施例示出的容器组的调度方法的流程图。
图3是图2对应实施例的步骤220在一实施例中的流程图。
图4是根据本申请另一实施例示出的容器组的调度方法的流程图。
图5是根据本申请一实施例示出的对资源使用参数预测模型进行训练的流程图。
图6是根据本申请一具体实施例示出Kubernetes系统中pod的调度方法的流程图。
图7是根据本申请一实施例示出的容器组的调度装置的框图。
图8示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在对本申请的方案进行具体说明之前,对本申请涉及的术语进行如下解释:
Kubernetes:也称为K8s,是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。
Pod:是在Kubernetes中创建和管理的、最小的可部署的计算单元。Pod是一组容器,一个pod中的容器共享存储、网络以及运行容器的声明。Pod中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。Pod被调度在集群中的节点上运行。Pod会保持在该节点上运行,直到Pod结束执行、Pod对象被删除、Pod因资源不足而被驱逐或者节点失效为止。
SM(Streaming Multiprocessor,流式多处理器):是图形处理器中的计算单元。其包括多个流处理器(streaming processor,SP)和其他的存储资源、共享内存和存储器。
图1是根据本申请一实施例的本申请的应用场景的示意图。如图1所示,该应用场景包括集群系统110和第一设备120。集群系统110包括主节点111和多个从节点(图1中示例性示出了第一从节点112和第二从节点113),各从节点上部署了图形处理器GPU,各GPU上可以运行一个或者多个容器组。主节点111用于进行资源调度,具体的,其可以按照本申请的方法将容器组调度到从节点中的GPU中运行。
第一设备120是指处理任务发起方所在的设备;其可以是应用程序的应用服务器、或者应用的客户端所在的终端、车载设备、智能音响等,在此不进行具体限定。第一设备120所发起的处理任务可以是人脸识别任务、图像分类任务、文本分类任务、语音识别任务、音频编码任务、视频解码任务等,在此不进行具体限定。
集群系统110中的主节点111还负责与外部设备进行通信。主节点111在接收到第一设备120发起的任务处理请求后,根据任务处理请求所申请的资源需求量和各从节点中GPU的剩余资源量,为任务处理请求分配可用的GPU,之后,可以请求为任务处理请求所指示处理任务创建容器组。之后,可以主节点111可以按照本申请的方法进行容器组的调度,以将待调度的容器组调度到从节点中的GPU中运行,以利用GPU中的资源进行任务处理。图1中示例性示出了第一从节点112的GPU中运行的容器组I和容器组II,以及第二从节点113的GPU中运行的容器组III。从节点在所运行的容器组结束运行后,可以向主节点111返回任务处理结果,并由主节点111向第一设备120发送任务处理结果。
在具体实施例中,可以请求集群系统处理人工智能相关的处理任务,人工智能相关的处理任务例如语音识别任务、图像识别任务、文本分类任务、三维重建任务等,以充分利用集群系统中的资源。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。当然,与人工智能相关的处理任务并不限于上文所列列举的。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2是根据本申请的一个实施例示出的容器组的调度方法的流程图,该方法可以由具备处理能力的电子设备执行,例如服务器等。本方案可以应用于集群系统中的主节点,该主节点可以按照本申请的方法将容器组调度到集群系统中从节点上的图形处理器上进行处理,集群系统例如Kubernetes系统。参照图2所示,该方法至少包括步骤210至230,详细介绍如下:
步骤210,若存在待调度到第一图形处理器GPU上的待调度容器组,获取第一GPU对应的资源预测数据,资源预测数据包括第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值。
第一图形处理器可以是容器化的集群系统中任一从节点上部署的图形处理器。如上所描述,在集群系统中,主节点在接收到任务处理请求后,为任务处理请求分配可用的GPU,并对应请求为任务处理请求创建容器组,这样,相当于将容器组与任务处理请求所对应的处理任务相绑定,之后,在GPU上运行容器组的过程即为执行所绑定的处理任务的过程。容器组可以是Kubernetes系统中的pod,本申请的方案可以应用于Kubernetes系统中的主节点。
在集群系统中的资源较紧张的情况下,由于各GPU上资源有限,为各GPU分配的容器组可能不能同时都调度到GPU上运行,而存在部分容器组在GPU上运行,部分容器组等待被调度。本申请中的待调度容器组即为等待被调度到第一GPU上的容器组。
在一些实施例中,为了便于有效对各GPU对应的等待被调度的容器组进行管理,可以分别为各GPU建立消息队列,并将等待被调度的容器组的容器组标识添加到对应的消息队列中,从而,在步骤210中,如果第一GPU对应的消息队列不为空,则表明存在待调度到第一图形处理器GPU上的待调度容器组,并且,可以按照消息队列中各容器组的排列顺序,顺次按照本申请的方法将容器组调度到第一GPU上运行。
带宽使用参数是指用于表征第一GPU上带宽使用情况的参数。在具体实施例中,带宽使用参数可以是带宽使用量、带宽利用率等。在本申请中,第一时间段是指当前时间点之后的一段时间。第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值可以是根据第一GPU在第一时间段之前的多个时间点对应的带宽使用参数的实际值进行预测得到的,换言之,通过历史时间段内的实际的带宽使用参数来预测在之后的未来时间段内的带宽使用参数。
步骤220,根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和待调度容器组的带宽需求量,确定待调度容器组的调度时间;调度时间位于第一时间点之后,第一时间点是指第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的时间点。
容器组可以运行在图形处理器上,以利用GPU提供的资源处理容器组所绑定的处理任务。对于容器组所绑定的处理任务来说,在对该处理任务进行处理的过程中,第一个阶段是先从主机中加载数据,第二个阶段是利用加载的数据进行计算和存储处理结果。可以看出,在第一个阶段主要消耗的是GPU的带宽,而显存和计算资源消耗较少;在第二个阶段主要消耗的的GPU上的显存和计算资源,而消耗带宽较少。
第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的时间点,也可以理解为第一GPU在第一时间段内的带宽使用参数的预测值中,距离当前时间点最近的预测值峰值所在的时间点。待调度容器组的带宽需求量是指待调度容器组所绑定的处理任务执行所需要的带宽。
在第一GPU本身的带宽占用率较高且不能运行其他的容器组的情况下,在当前时间至到达带宽使用参数的下一个峰值的这一时间段内,该第一GPU上的带宽使用参数呈递增趋势,因此,该时间段内第一GPU上没有足够的带宽提供给新的容器组,即该段时间内无法将新的容器组调度到第一GPU上。而在第一GPU的带宽使用参数达到峰值之后,第一GPU的带宽使用参数开始递减。如果第一GPU的带宽使用参数呈递减趋势,表明第一GPU上运行的容器组中部分进入到第二个阶段,此时,第一GPU才有可能为新的容器组提供带宽。因此,在本申请中,在第一时间段中第一时间点之后的时间段中为待调度容器组确定调度时间。
由于第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值可以反映第一GPU的带宽使用参数在第一时间段内的变化趋势,由此,可以根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值确定第一GPU的带宽使用参数的下一个峰值预测值所在的时间点(即第一时间点)。
根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和待调度容器组的带宽需求量,可以在第一GPU的带宽使用参数的预测值呈非递增趋势(具体可以是呈递减趋势或者递减之后基本维持不变)的时间段中选取一个第一GPU上可用带宽满足带宽需求量的时间段作为待调度容器组的调度时间。
在本申请中,为待调度容器组确定的调度时间位于带宽使用参数的峰值预测值所在时间点(即第一时间点)之后,这样,可以保证在调度时间内第一GPU的带宽使用参数的预测值呈非递增趋势。为待调度容器组所确定的调度时间也可以理解为第一GPU的带宽使用参数的非峰值时间段,这样,如果后续按照所确定的调度时间将待调度容器组调度到第一GPU上,实现在第一GPU的非带宽使用参数的峰值阶段将将待调度容器组调度到第一GPU上,即实现了容器组的错峰调度。
在本申请中,利用容器组在GPU上运行过程中不同阶段主要消耗的资源不同的特点,从而,利用GPU上的带宽使用参数的变化趋势来确定待调度容器组的调度时间,这样,可以充分利用部分容器组在第一GPU上的第二个阶段消耗带宽较少,将新的容器组调度到第一GPU上,此时新的容器组调度到第一GPU上也主要是消耗第一GPU上的带宽,而不是第一GPU上的显存和计算资源。
在一些实施例中,步骤220包括:根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值,确定第一时间点;根据第一GPU在第一时间点之后的多个时间点对应的带宽使用参数的预测值,确定第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值;根据第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值和待调度容器组的带宽需求量,确定调度时间,第一GPU在调度时间对应的带宽剩余量的预测值不低于带宽需求量。
如上所描述,带宽使用参数的预测值反映的是第一GPU上带宽的被利用情况,在此基础上,可以根据第一GPU上可供利用的最大带宽和第一GPU上带宽的被利用情况,确定第一GPU上的带宽剩余量。第一GPU上的带宽剩余量也可以理解为第一GPU上的可用带宽量。具体的,基于第一GPU上带宽使用参数的预测值,可以确定第一GPU上各时间点的带宽占用量,将第一GPU上可供利用的最大带宽与第一GPU上一时间点的带宽占用量相减,得到第一GPU在该时间点上的带宽剩余量的预测值。
由于是根据第一GPU上的带宽使用参数的预测值来确定第一GPU上的带宽剩余量,而不是第一GPU上带宽使用参数的实际值,因此,将根据第一GPU上的带宽使用参数的预测值所确定第一GPU上的带宽剩余量的值称为带宽剩余量的预测值。
如上所描述,期于在带宽使用参数的非递增时间段中将新的容器组调度到第一GPU上,因此,在确定第一GPU的带宽使用参数的预测值的下一峰值所在时间点(即第一时间点),不需要关注第一GPU在第一时间段中第一时间点之前的时间点的带宽使用参数的情况下,而仅关注第一GPU在第一时间段中第一时间点之后时间点的带宽使用参数的情况下,这样,可以减少数据处理量。
在具体实施例中,可以将第一时间段中第一时间点之后第一GPU所对应带宽剩余量的预测值不小于待调度容器组的带宽需求量的首个时间点确定为调度时间。
在如上的实施例中,第一GPU在调度时间中各时间点对应的带宽剩余量的预测值不低于带宽需求量,可以保证在调度时间中任一时间点调度到第一GPU上,第一GPU上剩余带宽可以满足待调度容器组上任务的带宽需要。
在另一些实施例中,资源预测数据还包括第一GPU在第一时间段中多个时间点分别对应的第一资源使用参数的预测值,第一资源使用参数包括显存使用参数和计算资源使用参数中的至少一项;其中,第一GPU在第一时间段中多个时间点分别对应的第一资源使用参数的预测值可以是根据第一GPU在第一时间段之前的多个历史时间点分别对应的资源使用情况(至少包括第一资源的使用情况)来进行预测得到的。在本实施例中,如图3所示,步骤220包括:
步骤310,根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值,确定第一时间点。
步骤320,根据第一GPU在第一时间点之后的多个时间点对应的带宽使用参数的预测值,确定第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值。
如上所描述,可以结合第一GPU可提供的最大带宽和第一GPU在第一时间点之后各时间点对应的带宽使用参数的预测值,来对应确定第一GPU在第一时间点之后各时间点分别对应的带宽剩余量的预测值。
步骤330,根据第一GPU在第一时间点之后的多个时间点对应的第一资源使用参数的预测值,确定第一GPU在第一时间点之后的多个时间点分别对应的第一资源剩余量的预测值。
同理,可以根据第一GPU上第一资源的最大可提供量和第一GPU在第一时间点之后多个时间点对应的第一资源使用参数的预测值,来确定第一GPU在第一时间点之后各时间点对应的第一资源剩余量的预测值。
若第一资源使用参数包括显存使用参数,在步骤330中,可以根据第一GPU对应的最大显存和第一GPU在第一时间点之后各时间点对应的显存使用参数的预测值,确定第一GPU在第一时间点之后各时间点对应的显存剩余量的预测值。
若第一资源使用参数包括计算资源使用参数,在步骤330中,可以根据第一GPU可提供的计算资源最大值和第一GPU在第一时间点之后各时间点对应的计算资源使用参数的预测值,确定第一GPU在第一时间点之后各时间点对应的计算资源剩余量的预测值。
步骤340,根据第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值和分别对应的第一资源剩余量的预测值、待调度容器组的带宽需求量和第一资源需求量,确定调度时间;其中,第一GPU在调度时间对应的带宽剩余量的预测值不低于带宽需求量,且第一GPU在调度时间之后第一时长所对应第一资源剩余量的预测值不低于第一资源需求量。
待调度容器组的第一资源需求量是指执行待调度容器组所对应处理任务所需要第一资源的量。若用t表示调度时间中的任一时间点,第一时长为T,则第一GPU在时间点(t+T)对应的第一资源剩余量的预测值不低于第一资源需求量。
如上所描述,对于在GPU上运行的容器组来说,在第一阶段结束之后,在第二阶段主要消耗GPU上的显存和/或计算资源。同理,对于待调度容器组来说,其在被调度到第一GPU上完成第一计算的数据传输后,也会进入到主要消耗GPU上的显存和/或计算资源的第二阶段,如果在待调度容器组第一阶段结束后,第一GPU上的可用显存和/或可用计算资源不能满足待调度容器组的显存需要和/或计算资源的需求,则可能会导致待调度容器组在第一GPU上无法正常运行。
因此,在本实施例中,结合根据第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值和分别对应的第一资源剩余量的预测值、待调度容器组的带宽需求量和第一资源需求量,来确定调度时间,并保证第一GPU在调度时间对应的带宽剩余量的预测值不低于带宽需求量,且第一GPU在调度时间之后第一时长所对应第一资源剩余量的预测值不低于第一资源需求量。
第一时长相当于预留给待调度容器组在调度到第一GPU上后主要进行消耗带宽的时长。由于第一GPU在调度时间中的时间点之后第一时长所对应第一资源剩余量的预测值不低于第一资源需求量,因此,在按照调度时间将待调度容器组调度到第一GPU后的第一时长后,第一GPU上的第一资源剩余量的预测值可以满足待调度容器组在第二阶段的第一资源的需求,进而,理论上可以保证按照调度时间待调度容器组调度到第一GPU后,待调度容器组可以在第一GPU上正常运行。
在一些实施例中,第一时长可以是预先设定的。其中,针对不同的GPU,所设定的第一时长可以相同也可以不同,在此不进行具体限定。
在另一些实施例中,第一时长可以是根据第一GPU的带宽性能参数和待调度容器的待调度容器组的带宽需求量来针对性确定的。在一些实施例中,可以按照如下的步骤确定第一时长:获取第一GPU的带宽性能参数;根据第一GPU的带宽性能参数和待调度容器组的带宽需求量,确定第一时长。
第一GPU的带宽性能参数可以是显存位宽。显存位宽是指一个时钟周期内能传输数据的位数(bit),显存位宽位数越大则瞬间所能传输的数据量越大。待调度容器组的带宽需求量可以反映待调度容器组所绑定处理任务的数据传输量的大小,即,带宽需求量越大,数据传输量越大。因此,可以根据第一GPU的带宽性能参数和待调度容器组的带宽需求量,确定第一时长。在一些实施例中,可以将待调度容器组的带宽需求量与第一GPU的带宽性能参数的商与偏置参数的和作为第一时长,其中,偏置参数可以是预先设定的。
在本实施例中,结合第一GPU自身的带宽性能参数和待调度容器组的带宽需求量来针对性确定第一时长,可以保证所确定的第一时长与第一GPU自身的数据传输性能相适应,进而保证为调度容器所确定的调度时间的准确性。
在一些实施例中,由于不同类型的处理任务主要消耗的资源不同,处理任务的类型包括计算密集型和数据密集型。属于计算密集型的处理任务主要消耗的是计算资源,属于数据密集型的处理任务主要消耗的是内存或者GPU的显存。
在该种情况下,若待调度容器组所绑定的处理任务属于计算密集型的任务,在图3对应的实施例中,可以结合第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值和分别对应的计算资源剩余量的预测值、待调度容器组的带宽需求量和计算资源需求量,来确定为待调度容器组确定调度时间;对应的,第一GPU在调度时间中各时间点对应的带宽剩余量的预测值不低于带宽需求量,且第一GPU在调度时间中的时间点之后第一时长所对应计算资源剩余量的预测值不低于待调度容器组的计算资源需求量。
若待调度容器组所绑定的处理任务属于数据密集型的任务,在图3对应的实施例中,可以结合第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值和分别对应的显存剩余量的预测值、待调度容器组的带宽需求量和显存需求量,来确定为待调度容器组确定调度时间;对应的,第一GPU在调度时间中各时间点对应的带宽剩余量的预测值不低于带宽需求量,且第一GPU在调度时间中的时间点之后第一时长所对应显存剩余量的预测值不低于待调度容器组的显存需求量。
步骤230,在调度时间将待调度容器组调度至第一GPU,以使待调度容器组利用第一GPU中的资源进行任务处理。
在一些实施例中,可以在时间达到调度时间的情况下,将待调度容器组调度至第一GPU。
在一些实施例中,由于第一GPU中可能存在临时的突发情况,为了避免因第一GPU中出现临时的突发情况导致待调度容器组调度到第一GPU中无法正常运行,可以在时间达到调度时间的情况下,对第一GPU中的剩余带宽量进行二次确认。在本实施例中,步骤230包括:若达到调度时间,获取第一GPU的带宽剩余量;若第一GPU的带宽剩余量不低于待调度容器组的带宽需求量,将待调度容器组调度至第一GPU。
也就是说,在达到调度时间的情况下,实时获取第一GPU中实际的带宽剩余量,如果第一GPU中实际的带宽剩余量不低于待调度容器组的带宽需求量,表明当前第一GPU可以满足运行待调度容器的带宽要求。反之,如果第一GPU中实际的带宽剩余量低于待调度容器组的带宽需求量,可以对调度时间进行修正,例如在现有的调度时间的基础上,叠加第二时长,作为待调度容器的新的调度时间。
在具体实施例中,如果待调度至第一GPU的待调度容器组为多个,可以分别按照如上步骤210-230的过程,顺次为各待调度容器组确定对应的调度时间,并在对应的调度时间将待调度容器组调度至第一GPU中运行。
在本申请的方案中,对于待调度到第一图形处理器GPU上的待调度容器组,根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和待调度容器组的带宽需求量,来为待调度容器组确定调度时间,并保证调度时间是位于第一GPU的带宽使用参数的下一个预测值峰值所在时间点之后,这样,之后按照调度时间将待调度容器组调度至第一GPU,可以保证是在第一GPU的带宽使用参数的非峰值时间段将待调度容器组调度至第一GPU,即实现了容器组的错峰调度。
此外,鉴于容器组在GPU上运行过程中不同阶段主要消耗的资源不同,即在第一阶段主要消耗带宽,第二阶段主要消耗显存和计算资源,在本申请中,为待调度容器组确定的调度时间位于第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的第一时间点之后,可以实现在第一GPU上运行的容器组主要消耗显存和计算资源的阶段将新的待调度容器组调度到第一GPU上,由于新的待调度容器组调度到第一GPU上主要消耗带宽,而消耗显存和计算资源较少,因此,在第一GPU上运行的容器组主要消耗显存和计算资源的阶段将新的待调度容器组调度到第一GPU上并不会影响已运行容器组中处理任务的执行。而且,相较于现有技术中在GPU上已运行容器组结束运行后才将新的容器组调度到GPU上,采用本申请的方式,可以缩短待调度容器组的等待时长,进而,可以提升GPU的资源利用率。而且,在一定范围内,可以实现将资源需求超过单个GPU的多个容器组调度到同一GPU上。
图4是根据本申请另一实施例示出的容器组的调度方法的流程图,如图4所示,相较于图2对应的实施例,在图4对应的实施例中,该方法还包括:
步骤410,获取第一GPU的资源剩余量。
步骤420,判断第一GPU的资源剩余量是否满足待调度容器组的资源需求条件;若满足,则执行步骤430,将待调度容器组调度至第一GPU。若不满足,则执行步骤210。
第一GPU的资源剩余量包括第一GPU中各项资源的剩余量,具体的,包括第一GPU中的带宽剩余量、显存剩余量和计算资源剩余量。待调度容器组的资源需求条件用于指示待调度容器组所申请的资源需求量,具体的,包括带宽需求量、显存需求量和计算资源需求量。
在一些实施例中,如果第一GPU的带宽剩余量不小于待调度容器组的带宽需求量、第一GPU的显存剩余量不小于待调度容器组的显存需求量、第一GPU的计算资源剩余量不小于待调度容器组的计算资源需求量这三者均满足,则确定第一GPU的资源剩余量满足待调度容器组的资源需求条件;反之,若上述三个条件中存在至少一个条件不满足,则确定第一GPU的资源剩余量不满足待调度容器组的资源需求条件。
在另一些实施例中,考虑到待调度容器组被调度到第一GPU上后,主要消耗带宽,因此,在步骤420中,可以主要考量第一GPU上的带宽剩余量,即,若第一GPU上的带宽剩余量不低于待调度容器组的带宽需求量,则视为满足待调度容器组的资源需求条件,反之,如果第一GPU上的带宽剩余量低于待调度容器组的带宽需求量,则视为不满足待调度容器组的资源需求条件。
在如上的实施例中,若确定存在待调度到第一GPU的待调度容器组的情况下,先根据第一GPU中实时的资源剩余量和该待调度容器组的资源需求条件,确定当前第一GPU中的资源是否满足运行该待调度容器组,如果满足,则可以直接将该待调度容器组调度到第一GPU中;反之,如果不满足,则可以按照步骤210-230的过程来该待调度容器组的调度时间,实现了根据第一GPU中实时的资源剩余量来针对性地调度待调度容器组,整体上可以提高容器组的调度效率和第一GPU中的资源利用率。
在一些实施例中,步骤210之前,该方法还包括:获取第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数;根据第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数进行使用参数预测,获得第一GPU在第一时间段中各时间点对应的资源使用参数的预测值;资源使用参数至少包括带宽使用参数。
在一些实施例中,针对各项资源使用参数的预测,例如针对带宽使用参数的预测,可以利用第一GPU在第一时间段之前的多个时间点分别对应的历史带宽使用参数来预测得到该第一GPU在第一时间段中各时间点对应的带宽使用参数。同理,针对显存使用参数或者计算资源使用参数的预测,可以利用第一GPU在第一时间段之前的多个时间点分别对应的历史显存使用参数(或者历史计算资源使用参数)来预测得到该第一GPU在第一时间段中各时间点对应的显存使用参数(或者计算资源使用参数)。
在另一些实施例中,由于GPU中三种资源的消耗具有一定的内在联系,例如上文中所描述的,先是带宽消耗达到峰值,然后再是显存或者计算资源消耗达到峰值,因此,还可以利用第一GPU在第一时间段之前的三种资源的使用情况来综合预测各资源使用参数。
即,利用第一GPU在第一时间段之前的多个时间点分别对应的历史带宽使用参数、分别对应的显存使用参数和分别对应的计算资源使用参数,进行带宽使用参数预测,获得第一GPU在第一时间段中各时间点对应的带宽使用参数的预测值。
同理,如果是需要预测显存使用参数,利用第一GPU在第一时间段之前的多个时间点分别对应的历史带宽使用参数、分别对应的显存使用参数和分别对应的计算资源使用参数,进行显存使用参数预测,获得第一GPU在第一时间段中各时间点对应的显存使用参数的预测值。针对计算资源使用参数的预测类似,在此不再赘述。
在一些实施例中,由资源使用参数预测模型根据第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数进行使用参数预测,输出第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值。
在一些实施例中,不同的资源使用参数可以共用一个资源使用参数预测模型来进行预测。
在另一些实施例中,可以针对不同类型的资源使用参数分别构建一个资源使用参数预测模型,即,分别构建一个用于预测带宽使用参数的带宽使用参数预测模型、构建一个用于预测显存使用参数预测的显存使用参数预测模型、一个用于预测计算资源预测的计算资源预测模型。这样,可以使得不同的资源使用参数预测模型所进行的资源使用参数预测更具有针对性。在该种情况下,针对一资源使用参数选用对应的资源使用参数预测模型进行预测。
其中,资源使用参数预测模型可以是机器学习模型、深度学习模型、线性回归模型等,机器学习模型例如随机森林模型、多层感知机等,深度学习模型例如通过全连接网络、循环神经网络、卷积神经网络等构建的模型。线性回归模型例如ARMA模型(Auto-Regressive Moving Average Model,自回归滑动平均模型)、ARIMA模型(Auto-regressiveIntegrated Moving Average model,差分整合移动平均自回归模型,又称为整合移动平均自回归模型)等,在此不进行具体限定。
现以资源使用参数预测模型为ARIMA模型为例,来对预测带宽使用参数预测的过程进行具体说明。具体的,获取第一GPU在第一时间段之前的带宽使用参数序列,该带宽使用参数序列包括第一GPU在第一时间段之前多个时间点的带宽使用参数
具体的,先通过自相关函数来进行相关性计算,以确定用于预测的第一时间段之前的历史带宽使用参数序列的稳定性,其中,历史带宽使用参数序列是将第一GPU在第一时间段之前的多个历史带宽使用参数按照时间先后顺序进行排列得到的。可以按照如下的公式进行相关性计算:
其中,Yi表示时间点i之前的多个历史带宽使用参数排列组合得到的第一历史带宽使用参数序列;Yi+k表示时间点(i+k)之前的多个历史带宽使用参数排列得到的第二历史带宽使用参数序列;ρk表示第一历史带宽使用参数序列Yi与第二历史带宽使用参数序列Yi+k之间的相关性;是预设时间窗口内多个历史带宽使用参数的平均值,其中,n为预设时间窗口内所包括历史带宽使用参数的数量。
如果所计算得到的相关性ρk大于零,表明历史带宽使用参序列是稳定的,之后,可以利用一阶的差分整合移动平均自回归模型(ARIMA)进一步预测未来时间点的带宽使用参数。具体的,一阶的差分整合移动平均自回归模型可以表示为如下的公式2:
其中,表示所预测到时间点t对应的带宽使用参数,Yt-1是指时间点t-1之前的多个时间点对应的历史带宽使用参数排列组合得到的历史带宽使用参数序列。其中,φ1和μ是一阶的差分整合移动平均自回归模型的参数,其可以通过训练确定。可以理解的是,针对其他资源使用参数,可以按照如上类似的过程进行预测确定。如果所计算得到的相关性小于零,可以对历史上带宽序列进行差分处理,然后将差分处理所得到的序列再次计算相关性,以保证用于进行带宽使用参数预测的序列是稳定的序列。
为了保证资源使用参数预测模型所预测到资源使用参数的准确性,可以预先将资源使用参数预测模型进行训练。训练过程可以如图5所示,包括步骤510-步骤540,详细介绍如下:
步骤510,获取训练数据,训练数据包括多个训练样本,训练样本包括历史资源使用参数序列和与历史资源使用参数序列相关联的第一历史时间点的历史资源使用参数,历史资源使用参数序列包括样本GPU在历史时间段中多个时间点的历史资源使用参数,第一历史时间点是历史时间段之后的时间点。
样本GPU是指历史资源使用参数序列所来源的GPU。其中,历史资源使用参数序列和第一历史时间点的历史资源使用参数可以是面向样本GPU进行资源使用参数采集得到的。
在一些实施例中,可以实时采集样本GPU的资源使用参数,并按照采集时间由先到后的顺序将针对同一样本GPU在多个时间点采集的资源使用参数进行组合,得到初始资源使用参数序列。然后,通过预设长度的窗口在初始资源使用参数序列中进行滑动,将位于预设长度的窗口内的资源使用参数子序列作为历史资源使用参数序列,并将预设长度的窗口中最后一个资源使用参数的下一个资源使用参数作为与该历史资源使用参数序列相关联的第一历史时间点的历史资源使用参数。通过滑动窗口,可以对应构建多个训练样本。当然,训练样本可以来自多个不同的样本GPU。对于来自不同样本GPU的初始资源使用参数序列,可以按照上述的类似的过程构建训练样本。
步骤520,由资源使用参数预测模型根据历史资源使用参数序列进行资源使用参数预测,输出第一历史时间点的预测资源使用参数。
步骤530,根据第一历史时间点的预测资源使用参数和第一历史时间点的历史资源使用参数,计算预测损失。
在步骤530中,通过为资源使用参数预测模型设定的损失函数来根据第一历史时间点的预测资源使用参数和第一历史时间点的历史资源使用参数计算预测损失。损失函数可以是均方误差损失函数、绝对值损失函数、Huber损失函数、交叉熵损失函数等,在此不进行具体限定。
步骤540,根据预测损失调整资源使用参数预测模型的参数,直至达到训练结束条件。
预测损失表征了第一历史时间点的预测资源使用参数与第一历史时间点的历史资源使用参数之间的差异,如果根据预测损失确定二者的差异较大,此时资源使用参数预测模型的预测准确度较低。反向调整资源使用参数预测模型的参数,之后,通过调整参数后的资源使用参数预测模型重新按照如上的步骤520重新进行预测,并根据重新获得第一历史时间点的预测资源使用参数和第一历史时间点的历史资源使用参数计算预测损失,直至重新计算到的预测损失小于损失阈值。
针对每一训练样本,均按照如上的过程对资源使用参数预测模型进行训练。训练结束条件可以是资源使用参数预测模型的损失函数收敛、资源使用参数预测模型的参数迭代次数达到次数阈值、资源使用参数预测模型的预测准确率达到准确率阈值等,在此不进行具体限定。
通过如上的训练过程,资源使用参数预测模型可以学习到资源使用参数在时序上的内在联系,即学习到GPU在先的资源使用参数序列与在后的资源使用参数之间的关联关系,从而,训练结束后,资源使用参数预测模型可以准确地根据GPU在先的多个时间点下的资源使用参数预测GPU在未来时间点下的资源使用参数。
在一些实施例中,由于性能的差异,不同性能的GPU的资源消耗情况存在差异,因此,为了保证资源使用参数预测模型可以兼容不同性能的GPU准确进行资源使用参数预测,还可以将GPU的性能参数也输入到资源使用参数预测模型中以用于预测资源使用参数。
在本实施例中,训练样本还包括历史资源使用参数序列所来源样本GPU的性能参数;对应的,步骤420,包括:由资源使用参数预测模型根据历史资源使用参数序列和历史资源使用参数序列所来源样本GPU的性能参数,进行资源使用参数预测,输出第一历史时间点的预测资源使用参数。
换言之,在本实施例中,训练过程中,资源使用参数预测模型的输入除了历史资源使用参数序列外,还包括历史资源使用参数序列所来源样本GPU的性能参数。GPU的性能参数可以包括计算吞吐量、显存大小、显存位宽、显存带宽、显存频率、像素填充率、纹理填充率和功率中的一项或者多项。
通过将历史资源使用参数序列和历史资源使用参数序列所来源样本GPU的性能参数用于训练资源使用参数预测模型,训练之后,资源使用参数预测模型可以学习到GPU的性能参数与GPU的资源使用参数之间的关联关系,从而,后续可以面向不同的GPU准确预测资源使用参数。
在该种情况下,在资源使用参数预测模型进行线上应用过程中,资源使用参数预测模型的输入包括GPU的性能参数。即,在步骤210之前,按照如下的步骤针对第一GPU进行资源使用参数预测:由资源使用参数预测模型根据第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数和第一GPU的性能参数,进行使用参数预测,输出第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值。
在本实施例中,将第一GPU的性能参数也用于进行资源使用参数预测,参考了第一GPU的性能对资源消耗的影响,资源使用参数预测过程中参考的信息更多,可以进一步提升所预测到资源使用参数的准确性,进而保证基于所预测到资源使用参数的预测值为待调度容器组所确定调度时间的准确性和有效性。
本申请的方案可以应用于Kubernetes系统的主节点中,该主节点可以按照本申请的方法将各GPU的待调度POD调度到对应的GPU中。图6是根据本申请一具体实施例示出Kubernetes系统中pod的调度方法的流程图。如图6所示,包括步骤610-步骤690,详细介绍如下:
步骤610,kube-apiserver接收多个Pod创建请求。
kube-apiserver是运行在Kubernetes系统的主节点中的组件,其是Kubernetes系统控制的入口程序,控制着kubernetes中核心资源的变化。Pod创建请求是根据外部设备发起的任务处理请求对应生成的。
步骤620,kube-apiserver向kubelet发送调度请求。
kubelet是Kubernetes系统的从节点中的组件,其主要负责pod中各容器的生命周期管理。
步骤630,kubelet向GPU调度插件发送调度请求。
GPU调度插件是将主节点中的gpu manager进行修改得到的插件。
步骤640,采集器实时采集GPU的资源使用参数。
在具体实施例中,可以通过通过python中的nvml库编写一个采集器,用于收集和记录Kubernetes系统中各GPU的资源使用参数,资源使用参数可以是SM利用率、显存利用率、带宽利用率(包括传输带宽利用率和接收带宽利用率),并将收集到的资源使用参数存入时序数据库中。
步骤650,根据采集器采集的GPU的资源使用参数进行带宽使用参数预测。
具体预测各GPU在未来的第一时间段中多个时间点的带宽使用参数,当然,可以也可以预测显存使用参数、以及计算资源使用参数(例如SM利用率)等。具体预测的过程参见上文描述,在此不再赘述。
步骤660,根据带宽使用参数的预测值确定pod的调度时间。
在步骤660中,先基于各GPU的设备信息确定pod所要绑定的GPU。具体的,其可以根据GPU的剩余资源、pod的资源要求量、以及GPU的通讯开销来综合选择可用的GPU。并将所确定的GPU与pod进行绑定。其中,若一pod与一GPU相绑定,则该pod之后是被调度到该GPU上运行。
之后,可以获取pod所要绑定的GPU的带宽使用参数的预测值来为该pod确定调度时间。具体确定调度时间的过程参见上文步骤220的实现过程,在此不再赘述。
步骤670,GPU设备插件将调度信息返回给kubelet。
其中,调度信息包括pod中各容器的环境变量、挂载信息、设备信息等
设备信息例如容器名,容器的镜像地址,容器需要的计算资源、显存、带宽等资源,容器的入口命令,容器的入口参数等,挂在信息例如容器要挂载的Pod数据卷等。
步骤680,Kubelet向容器运行时发送调度信息,以用于创建容器组。
步骤690,按照调度时间将pod调度到GPU。
在Kubernetes系统中存在pod抢占的情况,pod抢占是指在资源压力较大时从集群中删除现有的pod,为更高优先级的等待中pod腾出空间。将本申请的方案应用于Kubernetes系统中,由于针对性为各等待的pod确定调度时间,不需要按照pod的优先级来调度pod,可以有效减少pod抢占情况的发生,而且,能有效避免pod等待时间过长的情况的发生,可以有效提升Kubernetes系统中GPU的利用率。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的方法。对于本申请装置实施例中未披露的细节,请参照本申请上述方法实施例。
图7是根据本申请一实施例示出的容器组的调度装置的框图,该容器组的调度装置可以配置于集群系统中的主节点,用于执行本申请所提供的容器组的调度方法。如图7所示,该容器组的调度装置包括:资源预测数据获取模块710,用于若存在待调度到第一图形处理器GPU上的待调度容器组,获取第一GPU对应的资源预测数据,资源预测数据包括第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值;调度时间确定模块720,用于根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和待调度容器组的带宽需求量,确定待调度容器组的调度时间;调度时间位于第一时间点之后,第一时间点是指第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的时间点;调度模块730,用于在调度时间将待调度容器组调度至第一GPU,以使待调度容器组利用第一GPU中的资源进行任务处理。
在一些实施例中,调度时间确定模块720,包括:第一时间点确定单元,用于根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值,确定第一时间点;第一确定单元,用于根据第一GPU在第一时间点之后的多个时间点对应的带宽使用参数的预测值,确定第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值;第二确定单元,用于根据第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值和待调度容器组的带宽需求量,确定调度时间,第一GPU在调度时间对应的带宽剩余量的预测值不低于带宽需求量。
在另一些实施例中,资源预测数据还包括第一GPU在第一时间段中多个时间点分别对应的第一资源使用参数的预测值,第一资源使用参数包括显存使用参数和计算资源使用参数中的至少一项;调度时间确定模块720,包括:第一时间点确定单元,用于根据第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值,确定第一时间点;第一确定单元,用于根据第一GPU在第一时间点之后的多个时间点对应的带宽使用参数的预测值,确定第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值;第三确定单元,用于根据第一GPU在第一时间点之后的多个时间点对应的第一资源使用参数的预测值,确定第一GPU在第一时间点之后的多个时间点分别对应的第一资源剩余量的预测值;第四确定单元,用于根据第一GPU在第一时间点之后多个时间点分别对应的带宽剩余量的预测值和分别对应的第一资源剩余量的预测值、待调度容器组的带宽需求量和第一资源需求量,确定调度时间;其中,第一GPU在调度时间对应的带宽剩余量的预测值不低于带宽需求量,且第一GPU在调度时间之后第一时长所对应第一资源剩余量的预测值不低于第一资源需求量。
在一些实施例中,容器组的调度装置,还包括:第一获取模块,用于获取第一GPU的带宽性能参数;第一时长确定模块,用于根据第一GPU的带宽性能参数和待调度容器组的带宽需求量,确定第一时长。
在一些实施例中,容器组的调度装置,还包括:第二获取模块,用于获取第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数;预测模块,用于根据第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数进行使用参数预测,获得第一GPU在第一时间段中各时间点对应的资源使用参数的预测值;资源使用参数至少包括带宽使用参数。
在一些实施例中,历史使用参数包括历史带宽使用参数、历史显存使用参数和历史计算资源使用参数;预测模块进一步被配置为:根据第一GPU在第一时间段之前的多个时间点分别对应的历史带宽使用参数、分别对应的历史显存使用参数和分别对应的历史计算资源使用参数,进行带宽使用参数预测,获得第一GPU在第一时间段中各时间点对应的带宽使用参数的预测值。
在一些实施例中,预测模块,进一步被配置为:由资源使用参数预测模型根据第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数进行使用参数预测,输出第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值。
在一些实施例中,容器组的调度装置,还包括:第三获取模块,用于获取训练数据,训练数据包括多个训练样本,训练样本包括历史资源使用参数序列和与历史资源使用参数序列相关联的第一历史时间点的历史资源使用参数,历史资源使用参数序列包括样本GPU在历史时间段中多个时间点的历史资源使用参数,第一历史时间点是历史时间段之后的时间点;第二预测模块,用于由资源使用参数预测模型根据历史资源使用参数序列进行资源使用参数预测,输出第一历史时间点的预测资源使用参数;预测损失计算模块,用于根据第一历史时间点的预测资源使用参数和第一历史时间点的历史资源使用参数,计算预测损失;参数调整模块,用于根据预测损失调整资源使用参数预测模型的参数,直至达到训练结束条件。
在一些实施例中,训练样本还包括历史资源使用参数序列所来源样本GPU的性能参数;第二预测模块进一步被配置为:由资源使用参数预测模型根据历史资源使用参数序列和历史资源使用参数序列所来源样本GPU的性能参数,进行资源使用参数预测,输出第一历史时间点的预测资源使用参数;预测模块进一步被配置为:由资源使用参数预测模型根据第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数和第一GPU的性能参数,进行使用参数预测,输出第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值。
在一些实施例中,容器组的调度装置,还包括:第四获取模块,用于获取第一GPU的资源剩余量;第二调度模块,用于若第一GPU的资源剩余量满足待调度容器组的资源需求条件,将待调度容器组调度至第一GPU;若第一GPU的资源剩余量不满足待调度容器组的资源需求条件,执行获取第一GPU对应的资源预测数据的步骤。
在一些实施例中,调度模块进一步被配置为:若达到调度时间,获取第一GPU的带宽剩余量;若第一GPU的带宽剩余量不低于待调度容器组的带宽需求量,将待调度容器组调度至第一GPU。
图8示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图8示出的电子设备的计算机系统800仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。该电子设备可以是集群系统中主节点所在的设备,例如主节点所在的服务器,用于执行本申请所提供的容器组的调度方法。
如图8所示,计算机系统800包括中央处理单元(Central Processing Unit,CPU)801,其可以根据存储在只读存储器(Read-Only Memory,ROM)802中的程序或者从存储部分808加载到随机访问存储器(Random Access Memory,RAM)803中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 803中,还存储有系统操作所需的各种程序和数据。CPU801、ROM802以及RAM 803通过总线804彼此相连。输入/输出(Input/Output,I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载计算机可读指令,当该计算机可读存储指令被处理器执行时,实现上述任一实施例中的方法。
根据本申请实施例的一个方面,提供了计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述任一实施例中的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (15)
1.一种容器组的调度方法,其特征在于,包括:
若存在待调度到第一图形处理器GPU上的待调度容器组,获取所述第一GPU对应的资源预测数据,所述资源预测数据包括第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值;
根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和所述待调度容器组的带宽需求量,确定所述待调度容器组的调度时间;所述调度时间位于第一时间点之后,所述第一时间点是指所述第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的时间点;
在所述调度时间将所述待调度容器组调度至所述第一GPU,以使所述待调度容器组利用所述第一GPU中的资源进行任务处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和所述待调度容器组的带宽需求量,确定所述待调度容器组的调度时间,包括:
根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值,确定所述第一时间点;
根据所述第一GPU在所述第一时间点之后的多个时间点对应的带宽使用参数的预测值,确定所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值;
根据所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值和所述待调度容器组的带宽需求量,确定所述调度时间,所述第一GPU在所述调度时间对应的带宽剩余量的预测值不低于所述带宽需求量。
3.根据权利要求1所述的方法,其特征在于,所述资源预测数据还包括第一GPU在第一时间段中多个时间点分别对应的第一资源使用参数的预测值,所述第一资源使用参数包括显存使用参数和计算资源使用参数中的至少一项;
所述根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和所述待调度容器组的带宽需求量,确定所述待调度容器组的调度时间,包括:
根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值,确定所述第一时间点;
根据所述第一GPU在所述第一时间点之后的多个时间点对应的带宽使用参数的预测值,确定所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值;
根据所述第一GPU在所述第一时间点之后的多个时间点对应的第一资源使用参数的预测值,确定所述第一GPU在第一时间点之后的多个时间点分别对应的第一资源剩余量的预测值;
根据所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值和分别对应的第一资源剩余量的预测值、所述待调度容器组的带宽需求量和第一资源需求量,确定所述调度时间;其中,所述第一GPU在所述调度时间对应的带宽剩余量的预测值不低于所述带宽需求量,且所述第一GPU在所述调度时间之后第一时长所对应第一资源剩余量的预测值不低于所述第一资源需求量。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一GPU在所述第一时间点之后多个时间点分别对应的带宽剩余量的预测值和分别对应的第一资源剩余量的预测值、所述待调度容器组的带宽需求量和第一资源需求量,确定所述调度时间之前,所述方法还包括:
获取所述第一GPU的带宽性能参数;
根据所述第一GPU的带宽性能参数和所述待调度容器组的带宽需求量,确定所述第一时长。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述获取所述第一GPU对应的资源预测数据之前,所述方法还包括:
获取所述第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数;
根据所述第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数进行使用参数预测,获得所述第一GPU在第一时间段中各时间点对应的资源使用参数的预测值;所述资源使用参数至少包括带宽使用参数。
6.根据权利要求5所述的方法,其特征在于,所述历史使用参数包括历史带宽使用参数、历史显存使用参数和历史计算资源使用参数;
所述根据所述第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数进行使用参数预测,获得所述第一GPU在第一时间段中各时间点对应的资源使用参数的预测值,包括:
根据所述第一GPU在第一时间段之前的多个时间点分别对应的历史带宽使用参数、分别对应的历史显存使用参数和分别对应的历史计算资源使用参数,进行带宽使用参数预测,获得第一GPU在第一时间段中各时间点对应的带宽使用参数的预测值。
7.根据权利要求5所述的方法,其特征在于,所述根据所述第一GPU在第一时间段之前的多个时间点分别对应的历史资源使用参数进行使用参数预测,获得所述第一GPU在第一时间段中各时间点对应的资源使用参数的预测值,包括:
由资源使用参数预测模型根据所述第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数进行使用参数预测,输出所述第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值。
8.根据权利要求7所述的方法,其特征在于,所述由资源使用参数预测模型根据所述第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数进行使用参数预测,输出所述第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值之前,所述方法还包括:
获取训练数据,所述训练数据包括多个训练样本,所述训练样本包括历史资源使用参数序列和与所述历史资源使用参数序列相关联的第一历史时间点的历史资源使用参数,所述历史资源使用参数序列包括样本GPU在历史时间段中多个时间点的历史资源使用参数,所述第一历史时间点是所述历史时间段之后的时间点;
由所述资源使用参数预测模型根据所述历史资源使用参数序列进行资源使用参数预测,输出所述第一历史时间点的预测资源使用参数;
根据所述第一历史时间点的预测资源使用参数和所述第一历史时间点的历史资源使用参数,计算预测损失;
根据所述预测损失调整所述资源使用参数预测模型的参数,直至达到训练结束条件。
9.根据权利要求8所述的方法,其特征在于,所述训练样本还包括所述历史资源使用参数序列所来源样本GPU的性能参数;
所述由所述资源使用参数预测模型根据所述历史资源使用参数序列进行资源使用参数预测,输出所述第一历史时间点的预测资源使用参数,包括:
由所述资源使用参数预测模型根据所述历史资源使用参数序列和所述历史资源使用参数序列所来源样本GPU的性能参数,进行资源使用参数预测,输出所述第一历史时间点的预测资源使用参数;
所述由资源使用参数预测模型根据所述第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数进行使用参数预测,输出所述第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值,包括:
由资源使用参数预测模型根据第一GPU在第一时间段之前的多个历史时间点分别对应的历史资源使用参数和所述第一GPU的性能参数,进行使用参数预测,输出所述第一GPU在第一时间段中多个时间点分别对应的资源使用参数的预测值。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述第一GPU的资源剩余量;
若所述第一GPU的资源剩余量满足所述待调度容器组的资源需求条件,将所述待调度容器组调度至所述第一GPU;
若所述第一GPU的资源剩余量不满足所述待调度容器组的资源需求条件,执行所述获取所述第一GPU对应的资源预测数据的步骤。
11.根据权利要求1所述的方法,其特征在于,所述在所述调度时间将所述待调度容器组调度至所述第一GPU,包括:
若达到所述调度时间,获取所述第一GPU的带宽剩余量;
若所述第一GPU的带宽剩余量不低于所述待调度容器组的带宽需求量,将所述待调度容器组调度至所述第一GPU。
12.一种容器组的调度装置,其特征在于,包括:
资源预测数据获取模块,用于若存在待调度到第一图形处理器GPU上的待调度容器组,获取所述第一GPU对应的资源预测数据,所述资源预测数据包括第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值;
调度时间确定模块,用于根据所述第一GPU在第一时间段中多个时间点对应的带宽使用参数的预测值和所述待调度容器组的带宽需求量,确定所述待调度容器组的调度时间;所述调度时间位于第一时间点之后,所述第一时间点是指所述第一时间段中第一GPU的带宽使用参数的下一个预测值峰值所在的时间点;
调度模块,用于在所述调度时间将所述待调度容器组调度至所述第一GPU,以使所述待调度容器组利用所述第一GPU中的资源进行任务处理。
13.一种电子设备,其特征在于,包括:
处理器;
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如权利要求1-11中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机可读指令,其特征在于,当所述计算机可读指令被处理器执行时,实现如权利要求1-11中任一项所述的方法。
15.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211424408.2A CN117009028A (zh) | 2022-11-14 | 2022-11-14 | 容器组的调度方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211424408.2A CN117009028A (zh) | 2022-11-14 | 2022-11-14 | 容器组的调度方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117009028A true CN117009028A (zh) | 2023-11-07 |
Family
ID=88566153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211424408.2A Pending CN117009028A (zh) | 2022-11-14 | 2022-11-14 | 容器组的调度方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117009028A (zh) |
-
2022
- 2022-11-14 CN CN202211424408.2A patent/CN117009028A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11640528B2 (en) | Method, electronic device and computer readable medium for information processing for accelerating neural network training | |
WO2021133253A1 (en) | Method and apparatus for predicting energy consumption, and device and storage medium thereof | |
US11429434B2 (en) | Elastic execution of machine learning workloads using application based profiling | |
CN111198754B (zh) | 一种任务调度方法及装置 | |
US11829888B2 (en) | Modifying artificial intelligence models using model fragments | |
CN112068957A (zh) | 资源分配方法、装置、计算机设备及存储介质 | |
CN111580974B (zh) | Gpu实例分配方法、装置、电子设备和计算机可读介质 | |
CN115033340A (zh) | 一种宿主机的选择方法及相关装置 | |
CN108268936B (zh) | 用于存储卷积神经网络的方法和装置 | |
CN117009028A (zh) | 容器组的调度方法、装置、电子设备及存储介质 | |
CN109783236A (zh) | 用于输出信息的方法和装置 | |
CN114741198A (zh) | 视频流处理方法及装置、电子设备、计算机可读介质 | |
CN117544635A (zh) | 一种资源管理方法、装置、设备及存储介质 | |
CN115454620A (zh) | 负载预测方法、装置、电子设备及存储介质 | |
CN112156453B (zh) | 实例自适应调整方法、装置、计算机可读存储介质及设备 | |
CN114816742A (zh) | 请求处理方法、装置、电子设备及存储介质 | |
US10937121B2 (en) | Memory management for complex image analysis | |
CN115080197A (zh) | 计算任务调度方法、装置、电子设备和存储介质 | |
CN115700482A (zh) | 任务执行方法及装置 | |
CN113760497A (zh) | 一种调度任务配置方法和装置 | |
CN113361677A (zh) | 神经网络模型的量化方法和装置 | |
CN111709787B (zh) | 用于生成用户留存时间的方法、装置、电子设备和介质 | |
CN115348324B (zh) | 一种最优化调度策略的确定方法及装置和电子设备 | |
US11836531B2 (en) | Method, device, and program product for managing computing system | |
CN115118780B (zh) | 获取资源分配模型的方法、资源分配方法及对应装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |