CN116795520A - 资源调度方法、装置、电子设备和存储介质 - Google Patents
资源调度方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116795520A CN116795520A CN202210253502.XA CN202210253502A CN116795520A CN 116795520 A CN116795520 A CN 116795520A CN 202210253502 A CN202210253502 A CN 202210253502A CN 116795520 A CN116795520 A CN 116795520A
- Authority
- CN
- China
- Prior art keywords
- resource
- gpu
- sub
- resources
- scheduled
- 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 78
- 238000012544 monitoring process Methods 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 14
- 230000011218 segmentation Effects 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 6
- 239000002699 waste material Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 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/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/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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/45591—Monitoring or debugging support
-
- 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)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及虚拟化技术领域,提供一种资源调度方法、装置、电子设备和存储介质。所述方法包括:确定待执行任务的资源申请请求;基于GPU宿主机中GPU卡的第一资源得分,确定待调度的GPU宿主机,第一资源得分基于GPU卡的资源使用情况确定;基于资源申请请求,以及待调度的GPU宿主机上子GPU资源的第二资源得分,确定待调度的子GPU资源,子GPU资源是对GPU宿主机上装设的GPU卡进行虚拟化后切分得到的,第二资源得分基于子GPU资源的资源使用情况确定;将待执行任务调度至待调度的子GPU资源所对应的GPU卡上。本申请实施例提供的资源调度方法、装置、电子设备和存储介质可以提高GPU卡利用率。
Description
技术领域
本申请涉及虚拟化技术领域,具体涉及一种资源调度方法、装置、电子设备和存储介质。
背景技术
随着云计算、机器学习人工智能的兴起,图形处理器(GraphicsProcessing 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卡,能够将待执行任务分配至最适合的GPU卡上,从而进一步提高了GPU卡利用率,避免了GPU卡算力浪费。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的资源调度方法的流程示意图之一;
图2是本申请实施例提供的第二资源得分确定方法的流程示意图;
图3是本申请实施例提供的第一资源得分确定方法的流程示意图;
图4是本申请实施例提供的资源调度方法中步骤130的流程示意图;
图5是本申请实施例提供的子GPU资源确定方法的流程示意图;
图6是本申请实施例提供的子GPU资源监控方法的流程示意图之一;
图7是本申请实施例提供的子GPU资源监控方法的流程示意图之二;
图8是本申请实施例提供的资源调度装置的结构示意图;
图9是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前GPU的虚拟化方法设计复杂、硬件性能损失大且通用性差,导致很多人工智能服务的业务并不能尽用整张GPU卡的算力,GPU卡算力被浪费。
基于此,本申请实施例提供一种资源调度方法,以提高GPU资源利用率,避免GPU算力的浪费。
图1是本申请实施例提供的资源调度方法的流程示意图之一,该方法可应用于分布式计算集群,例如Kubernetes平台,进一步地,Kubernetes平台可以是笔记本电脑、云服务商的虚拟机、机架上的裸机服务器等,本申请在此不作限定。参照图1,本申请实施例提供一种资源调度方法,可以包括:
步骤110,确定待执行任务的资源申请请求。
具体地,待执行任务即需要进行资源调度的任务,例如待执行任务可以是深度学习模型的训练和推理预测任务,此类任务往往需要大量的GPU,用来支持更大的模型和数据集。
待执行任务的资源申请请求中可以携带多种信息,例如待执行任务的编号、业务类型以及申请使用的GPU资源、内存或CPU资源等。需要说明的是,本申请实施例提供的资源调度方法主要是针对其中的GPU资源进行调度。
其中,申请使用的GPU资源可以包括GPU申请容量、GPU等级或GPU类型等,此处不作具体限定,可根据实际需求灵活选择。例如,待执行任务正常运行需要型号为A的GPU卡,需要容量大小为1G等。
可以理解的是,为了提高GPU资源利用率,避免GPU算力的浪费,有必要针对每一个待执行任务的资源申请请求,调度最适合的GPU资源。
步骤120,基于GPU宿主机中GPU卡的第一资源得分,确定待调度的GPU宿主机,所述第一资源得分基于所述GPU卡的资源使用情况确定。
具体地,GPU宿主机是指装载有GPU卡的机器,每台宿主机可以包含至少一张GPU卡,可以根据GPU宿主机上每张GPU卡的资源使用情况,给GPU宿主机上使用的每张GPU卡进行打分,从而得到第一资源得分。
第一资源得分可以表征该GPU卡所在的GPU宿主机作为执行任务的机器的概率。第一资源得分越高,表明该GPU卡所在的GPU宿主机作为执行任务的机器的概率越大,越适合作为待调度的GPU宿主机;第一资源得分越低,表明该GPU卡所在的GPU宿主机作为执行任务的机器的概率越小,越不适合作为待调度的GPU宿主机。
进一步地,可以将第一资源得分最高的GPU卡所在的GPU宿主机作为待调度的GPU宿主机。
其中,GPU卡的资源使用情况具体可以包括GPU卡已使用容量、剩余容量等。
步骤130,基于所述资源申请请求,以及所述待调度的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资源。
步骤140,将所述待调度的子GPU资源所对应的GPU卡作为调度节点,以执行所述待执行任务。
具体地,待调度的子GPU资源确定以后,即可确定该子GPU资源所对应的GPU卡,并将该GPU卡作为调度节点,以执行待执行任务。
需要说明的是,待调度的子GPU资源可以是一个或多个,相应地待调度的子GPU资源所对应的GPU卡也可能是一个或多个,本申请实施例对此不作具体限定。
本申请实施例提供的资源调度方法,通过对GPU宿主机上装设的GPU卡进行虚拟化后切分,得到子GPU资源,实现了在同一个GPU卡上并列执行多个任务,减少了成本。
此外,在资源调度时采用了两级打分策略,首先对GPU宿主机中GPU卡进行打分,确定待调度的GPU宿主机;然后对待调度的GPU宿主机上子GPU资源进行打分,并结合资源申请请求,确定待调度的子GPU资源;随即根据待调度的子GPU资源确定执行任务的GPU卡,能够将待执行任务分配至最适合的GPU卡上,从而进一步提高了GPU卡利用率,避免了GPU卡算力浪费。
基于上述实施例,图2是本申请实施例提供的第二资源得分确定方法的流程示意图。参照图2,所述第二资源得分基于如下步骤确定:
步骤210,获取所述子GPU资源的资源使用情况中的第二已使用资源和第二总资源;
步骤220,基于所述第二已使用资源和第二总资源,确定所述第二资源得分。
具体地,第二资源得分可以表征该子GPU资源作为待调度的子GPU资源的概率,进一步地可以将资源使用量、空闲资源量、资源使用率或者资源剩余率等作为打分依据。以空闲资源量为例,空闲资源越多,则该子GPU资源作为待调度的子GPU资源的概率越大;空闲资源越少,则该子GPU资源作为待调度的子GPU资源的概率越小。
因此,可以对子GPU资源的资源使用情况进行监控并更新,以获取第二已使用资源和第二总资源。此处的监控可以是实时监控也可以是定时监控。
在获取第二已使用资源和第二总资源的基础上,采用预设的算法计算得到第二资源得分。
在一个实施例中,第二资源得分的计算公式如下:
Score2=mGPU(10*sum(requested)/capacity)
式中,mGPU()表示第二资源得分函数,sum(requested)表示该子GPU资源已使用的资源量之和,capacity表示该子GPU资源的总资源量。
本申请实施例提供的方法,通过子GPU资源的资源使用情况中的第二已使用资源和第二总资源,确定第二资源得分,由此可快速准确的找到子GPU资源相对充足的GPU卡。
基于上述任一实施例,图3是本申请实施例提供的第一资源得分确定方法的流程示意图。参照图3,所述第一资源得分基于如下步骤确定:
步骤310,获取所述GPU卡的资源使用情况中的第一已使用资源和第一总资源;
步骤320,基于所述第一已使用资源和第一总资源,确定所述第一资源得分。
具体地,第一资源得分可以表征该GPU卡所在的GPU宿主机作为待调度的GPU宿主机的概率,进一步地可以将该GPU卡的资源使用量、空闲资源量、资源使用率或者资源剩余率等作为打分依据。以空闲资源量为例,空闲资源越多,则该GPU卡所在的GPU宿主机作为待调度的GPU宿主机的概率越大;空闲资源越少,则该GPU卡所在的GPU宿主机作为待调度的GPU宿主机的概率越小。
因此,可以对GPU卡的资源使用情况进行监控并更新,以获取第一已使用资源和第一总资源。此处的监控可以是实时监控也可以是定时监控。
在获取第一已使用资源和第一总资源的基础上,采用预设的算法计算得到第一资源得分。
在一个实施例中,第一资源得分的计算公式如下:
Score1=GPU(10*sum(requested)/capacity)
式中,GPU()表示第一资源得分函数,sum(requested)表示该GPU卡已使用的资源量之和,capacity表示该GPU卡的总资源量。
需要说明的是,第二资源得分和第一资源得分均可通过基于Kubernetes对外开放的扩展调度器实现,例如mGPU SchedulerExtender。
本申请实施例提供的方法,通过GPU卡的资源使用情况中的第一已使用资源和第一总资源,确定第一资源得分,由此可快速准确的找到GPU卡资源相对充足的GPU宿主机。
基于上述任一实施例,图4是本申请实施例提供的资源调度方法中步骤130的流程示意图。参照图4,步骤130具体包括:
步骤131,按照所述第二资源得分从高到低的顺序,对所述子GPU资源进行排序;
步骤132,依次从所述子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资源的空闲资源量大于等于所述资源申请请求中携带的申请量。
基于上述任一实施例,图5是本申请实施例提供的子GPU资源确定方法的流程示意图。参照图5,所述子GPU资源通过如下步骤得到:
步骤510,将GPU宿主机入驻到容器化应用部署集群,得到容器化应用部署集群中的GPU节点;
步骤520,基于扩展资源插件,将所述GPU节点的资源进行切分,并注册到所述容器化应用部署集群中,得到所述子GPU资源。
具体地,容器化应用部署集群可以是Kubernetes,简称K8S,是大规模容器管理技术的开源版本。它是容器集群管理***,是一个开源的平台,利用K8S可以实现容器集群的自动化部署、自动扩缩容、滚动更新、热维护等功能。K8S具有可移植性好、可扩展性强、自动化程度高、有效节省资源等特点。
此处的扩展资源插件可以是虚拟GPU设备插件,例如可以是基于Kubernetes提供的设备插件(Device Plugin)机制实现的自定义插件mGPU Device Plugin,该插件实现的目的是为了支持GPU资源细粒度划分和调度功能。
首先将所有GPU宿主机入驻到Kubernetes集群,每一个GPU宿主机成为Kubernetes中的GPU节点。
每个Kubernetes GPU节点安装扩展资源插件mGPU DevicePlugin。
mGPU Device Plugin获取所在GPU宿主机上所有GPU卡的显存信息,例如以百兆为单位,将GPU卡单位转为GPU显存单位,切成若干份GPU资源,mGPU Device Plugin将切分后的GPU资源注册到Kubernetes机器每个GPU节点,即子GPU资源。
进一步地,扩展资源插件mGPU Device Plugin通过Kubernetes接口获取子GPU资源的使用情况,并更新子GPU资源状态、资源等信息到Kubernetes集群。至此每个Kubernetes GPU节点新增子GPU资源成功。
基于上述任一实施例,图6是本申请实施例提供的子GPU资源监控方法的流程示意图之一。参照图6,步骤140之后还包括:
步骤610,基于资源监控组件,监控所述待执行任务的子GPU资源使用量;
步骤620,在所述子GPU资源使用量超出所述申请量的情况下,基于所述资源监控组件进行告警提示。
具体地,考虑到Kubernetes集群内子GPU资源监控可视化,通过资源监控组件可以定时或实时监控Kubernetes集群内每个任务的子GPU资源消耗情况。
此处的资源监控组件可以是基于Kubernetes的资源监控插件,可以收集Kubernetes集群内子GPU资源的使用量,并对这些数据进行处理,通过可视化界面呈现,例如可以将数据以图像的形式直观表现出来。
在所监控任务的子GPU资源使用量超出GPU资源申请量的情况下,资源监控组件进行告警以提示运维人员及时进行GPU资源的调整,避免任务执行失败。需要说明的是,待执行任务的资源申请请求中携带申请量,资源监控组件可以通过Kubernetes接口获取该申请量。
本申请实施例提供的方法,通过监控组件对子GPU资源使用量进行监控,并在子GPU资源使用量超出GPU资源申请量的情况下进行告警提示,提高了GPU资源利用率的同时,提高了任务执行效率。
基于上述任一实施例,图7是本申请实施例提供的子GPU资源监控方法的流程示意图之二。参照图7,步骤610具体包括:
步骤611,获取所述待执行任务的进程号;
步骤612,基于所述进程号,查询所述待执行任务进程的子GPU资源使用量。
具体地,资源监控组件可以通过数据交换接口,例如Docker接口获取待执行任务的进程号,然后通过Nvidia接口根据获得的进程号查询进程占用的子GPU资源使用量,具体可以基于关键字匹配的方式查询得到。
基于上述任一实施例,本申请实施例提供一种资源调度方法,所述方法包括:
S1,将所有GPU宿主机入驻到Kubernetes集群,成为KubernetesGPU节点。
S2,通过自研Kubernetes对外开放的扩展资源插件mGPU DevicePlugin注册子GPU资源到Kubernetes集群,即将每台Kubernetes GPU节点的原始GPU卡资源切成若干份子GPU资源,从而极大扩充了原始GPU卡的资源。
S3,通过自研Kubernetes对外开放的扩展调度器mGPU SchedulerExtender,实现GPU宿主机中GPU卡的第一资源打分、GPU宿主机上子GPU资源的第二资源打分,然后注册扩展调度器mGPUScheduler Extender到Kubernetes集群。
S4,当AI服务向Kubernetes集群申请GPU资源时,将AI服务调度在Kubernetes集群中最优GPU宿主机的最优GPU卡上。
S5,考虑到Kubernetes集群内mGPU资源监控可视化,通过自研资源监控组件定时监控Kubernetes集群内每个AI服务子GPU资源消耗情况。
下面对本申请实施例提供的资源调度装置进行描述,下文描述的资源调度装置与上文描述的资源调度方法可相互对应参照。
基于上述任一实施例,图8为本申请实施例提供的资源调度装置的结构示意图。参照图8,该资源调度装置包括:请求确定单元810、宿主机确定单元820、资源确定单元830和GPU卡调度单元840。其中,
请求确定单元810,用于确定待执行任务的资源申请请求;
宿主机确定单元820,用于基于GPU宿主机中GPU卡的第一资源得分,确定待调度的GPU宿主机,所述第一资源得分基于所述GPU卡的资源使用情况确定;
资源确定单元830,用于基于所述资源申请请求,以及所述待调度的GPU宿主机上子GPU资源的第二资源得分,确定待调度的子GPU资源,所述子GPU资源是对GPU宿主机上装设的GPU卡进行虚拟化后切分得到的,所述第二资源得分基于所述子GPU资源的资源使用情况确定;
GPU卡调度单元840,用于将所述待调度的子GPU资源所对应的GPU卡作为调度节点,以执行所述待执行任务。
本申请实施例提供的资源调度装置,通过对GPU宿主机上装设的GPU卡进行虚拟化后切分,得到子GPU资源,实现了在同一个GPU卡上并列执行多个任务,减少了成本。
此外,在资源调度时采用了两级打分策略,首先对GPU宿主机中GPU卡进行打分,确定待调度的GPU宿主机;然后对待调度的GPU宿主机上子GPU资源进行打分,并结合资源申请请求,确定待调度的子GPU资源;随即根据待调度的子GPU资源确定执行任务的GPU卡,能够将待执行任务分配至最适合的GPU卡上,从而进一步提高了GPU卡利用率,避免了GPU卡算力浪费。
基于上述任一实施例,本申请实施例提供的资源调度装置还包括第二资源得分确定单元,用于:
获取所述子GPU资源的资源使用情况中的第二已使用资源和第二总资源;
基于所述第二已使用资源和第二总资源,确定所述第二资源得分。
基于上述任一实施例,本申请实施例提供的资源调度装置还包括第一资源得分确定单元,用于:
获取所述GPU卡的资源使用情况中的第一已使用资源和第一总资源;
基于所述第一已使用资源和第一总资源,确定所述第一资源得分。
基于上述任一实施例,资源确定单元830进一步用于:
按照所述第二资源得分从高到低的顺序,对所述子GPU资源进行排序;
依次从所述子GPU资源中选取所述待调度的子GPU资源,直至所述待调度的子GPU资源的空闲资源量大于等于所述资源申请请求中携带的申请量。
基于上述任一实施例,本申请实施例提供的资源调度装置还包括子GPU资源创建单元,用于:
将GPU宿主机入驻到容器化应用部署集群,得到容器化应用部署集群中的GPU节点;
基于扩展资源插件,将所述GPU节点的资源进行切分,并注册到所述容器化应用部署集群中,得到所述子GPU资源。
基于上述任一实施例,本申请实施例提供的资源调度装置还包括子GPU资源监控单元,用于:
基于资源监控组件,监控所述待执行任务的子GPU资源使用量;
在所述子GPU资源使用量超出所述申请量的情况下,基于所述资源监控组件进行告警提示。
基于上述任一实施例,子GPU资源监控单元进一步用于:
获取所述待执行任务的进程号;
基于所述进程号,查询所述待执行任务进程的子GPU资源使用量。
图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(CommunicationInterface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的计算机程序,以执行资源调度方法,例如包括:确定待执行任务的资源申请请求;基于GPU宿主机中GPU卡的第一资源得分,确定待调度的GPU宿主机,所述第一资源得分基于所述GPU卡的资源使用情况确定;基于所述资源申请请求,以及所述待调度的GPU宿主机上子GPU资源的第二资源得分,确定待调度的子GPU资源,所述子GPU资源是对GPU宿主机上装设的GPU卡进行虚拟化后切分得到的,所述第二资源得分基于所述子GPU资源的资源使用情况确定;将所述待调度的子GPU资源所对应的GPU卡作为调度节点,以执行所述待执行任务。
此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各实施例所提供的资源调度方法,例如包括:确定待执行任务的资源申请请求;基于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卡作为调度节点,以执行所述待执行任务。
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种资源调度方法,其特征在于,包括:
确定待执行任务的资源申请请求;
基于GPU宿主机中GPU卡的第一资源得分,确定待调度的GPU宿主机,所述第一资源得分基于所述GPU卡的资源使用情况确定;
基于所述资源申请请求,以及所述待调度的GPU宿主机上子GPU资源的第二资源得分,确定待调度的子GPU资源,所述子GPU资源是对GPU宿主机上装设的GPU卡进行虚拟化后切分得到的,所述第二资源得分基于所述子GPU资源的资源使用情况确定;
将所述待调度的子GPU资源所对应的GPU卡作为调度节点,以执行所述待执行任务。
2.根据权利要求1所述的资源调度方法,其特征在于,所述第二资源得分基于如下步骤确定:
获取所述子GPU资源的资源使用情况中的第二已使用资源和第二总资源;
基于所述第二已使用资源和第二总资源,确定所述第二资源得分。
3.根据权利要求1所述的资源调度方法,其特征在于,所述第一资源得分基于如下步骤确定:
获取所述GPU卡的资源使用情况中的第一已使用资源和第一总资源;
基于所述第一已使用资源和第一总资源,确定所述第一资源得分。
4.根据权利要求1所述的资源调度方法,其特征在于,所述基于所述资源申请请求,以及所述待调度的GPU宿主机上子GPU资源的第二资源得分,确定待调度的子GPU资源,包括:
按照所述第二资源得分从高到低的顺序,对所述子GPU资源进行排序;
依次从所述子GPU资源中选取所述待调度的子GPU资源,直至所述待调度的子GPU资源的空闲资源量大于等于所述资源申请请求中携带的申请量。
5.根据权利要求1所述的资源调度方法,其特征在于,所述子GPU资源通过如下步骤得到:
将GPU宿主机入驻到容器化应用部署集群,得到容器化应用部署集群中的GPU节点;
基于扩展资源插件,将所述GPU节点的资源进行切分,并注册到所述容器化应用部署集群中,得到所述子GPU资源。
6.根据权利要求1-5任一项所述的资源调度方法,其特征在于,所述将所述待调度的子GPU资源所对应的GPU卡作为调度节点,以执行所述待执行任务,之后还包括:
基于资源监控组件,监控所述待执行任务的子GPU资源使用量;
在所述子GPU资源使用量超出所述申请量的情况下,基于所述资源监控组件进行告警提示。
7.根据权利要求6所述的资源调度方法,其特征在于,所述基于资源监控组件,监控所述待执行任务的子GPU资源使用量,包括:
获取所述待执行任务的进程号;
基于所述进程号,查询所述待执行任务进程的子GPU资源使用量。
8.一种资源调度装置,其特征在于,包括:
请求确定单元,用于确定待执行任务的资源申请请求;
宿主机确定单元,用于基于GPU宿主机中GPU卡的第一资源得分,确定待调度的GPU宿主机,所述第一资源得分基于所述GPU卡的资源使用情况确定;
资源确定单元,用于基于所述资源申请请求,以及所述待调度的GPU宿主机上子GPU资源的第二资源得分,确定待调度的子GPU资源,所述子GPU资源是对GPU宿主机上装设的GPU卡进行虚拟化后切分得到的,所述第二资源得分基于所述子GPU资源的资源使用情况确定;
GPU卡调度单元,用于将所述待调度的子GPU资源所对应的GPU卡作为调度节点,以执行所述待执行任务。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述的资源调度方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的资源调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210253502.XA CN116795520A (zh) | 2022-03-15 | 2022-03-15 | 资源调度方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210253502.XA CN116795520A (zh) | 2022-03-15 | 2022-03-15 | 资源调度方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116795520A true CN116795520A (zh) | 2023-09-22 |
Family
ID=88048448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210253502.XA Pending CN116795520A (zh) | 2022-03-15 | 2022-03-15 | 资源调度方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795520A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421123A (zh) * | 2023-11-03 | 2024-01-19 | 摩尔线程智能科技(上海)有限责任公司 | 一种gpu资源调整方法及***、电子设备和存储介质 |
-
2022
- 2022-03-15 CN CN202210253502.XA patent/CN116795520A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421123A (zh) * | 2023-11-03 | 2024-01-19 | 摩尔线程智能科技(上海)有限责任公司 | 一种gpu资源调整方法及***、电子设备和存储介质 |
CN117421123B (zh) * | 2023-11-03 | 2024-04-19 | 摩尔线程智能科技(上海)有限责任公司 | 一种gpu资源调整方法及***、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11392843B2 (en) | Utilizing a machine learning model to predict a quantity of cloud resources to allocate to a customer | |
US8464267B2 (en) | Virtual machine packing method using scarcity | |
EP3798930A2 (en) | Machine learning training resource management | |
CN102473134B (zh) | 虚拟硬盘的管理服务器及管理方法、管理程序 | |
CN113377540A (zh) | 集群资源调度方法及装置、电子设备和存储介质 | |
US20160357610A1 (en) | Techniques to allocate configurable computing resources | |
US9438529B1 (en) | Computing process analysis by metrics profiling | |
US20200026576A1 (en) | Determining a number of nodes required in a networked virtualization system based on increasing node density | |
WO2016040699A1 (en) | Computing instance launch time | |
US10255124B1 (en) | Determining abnormal conditions of host state from log files through Markov modeling | |
CN111143039B (zh) | 一种虚拟机的调度方法、装置及计算机存储介质 | |
CN112162891B (zh) | 服务器集群中的性能测试方法及相关设备 | |
US9306814B1 (en) | Providing instance availability information | |
CN110597635A (zh) | 图形处理资源分配方法、装置、计算机设备及存储介质 | |
CN110162396A (zh) | 内存回收方法、装置、***和存储介质 | |
CN112799596A (zh) | 一种存储资源的扩容控制方法、装置及电子设备 | |
CN116795520A (zh) | 资源调度方法、装置、电子设备和存储介质 | |
EP3798931A1 (en) | Machine learning training resource management | |
US20220342738A1 (en) | Optimized diagnostics plan for an information handling system | |
US20190173770A1 (en) | Method and system for placement of virtual machines using a working set computation | |
US20190114079A1 (en) | Apparatus for managing disaggregated memory and method thereof | |
US11159402B1 (en) | Virtual machine import/export risk assessment | |
CN114675927A (zh) | 服务实例部署方法、装置、电子设备及存储介质 | |
CN116089477B (zh) | 分布式训练方法及*** | |
CN109408230B (zh) | 基于能耗优化的Docker容器部署方法及*** |
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 |