CN114565502A - Gpu资源管理方法、调度方法、装置、电子设备及存储介质 - Google Patents
Gpu资源管理方法、调度方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114565502A CN114565502A CN202210219719.9A CN202210219719A CN114565502A CN 114565502 A CN114565502 A CN 114565502A CN 202210219719 A CN202210219719 A CN 202210219719A CN 114565502 A CN114565502 A CN 114565502A
- Authority
- CN
- China
- Prior art keywords
- gpu
- node
- pod
- management
- working
- 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
Images
Classifications
-
- 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
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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
-
- 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资源管理技术领域,提供了一种GPU资源管理方法、调度方法、装置、电子设备及存储介质,所述GPU资源管理方法包括:利用管理Pod对工作节点上的GPU卡进行检测;若检测到GPU卡,则利用管理Pod获取工作节点的GPU资源;将工作节点的GPU资源发送至主节点,以使主节点对GPU资源进行调度。本发明实施例通过利用内置有GPU卡驱动组件的管理Pod自动对工作节点上的GPU卡进行检测,并将检测到的GPU卡的GPU资源发送至主节点,以便由主节点对GPU资源进行调度,从而简化了GPU卡资源的管理和使用过程,实现了GPU卡资源的自动管理和调度。
Description
技术领域
本发明涉及GPU资源管理技术领域,具体而言,涉及一种GPU资源管理方法、调度方法、装置、电子设备及存储介质。
背景技术
图形处理器GPU(Graphics Processing Unit,GPU)资源是云计算领域一种成本昂贵的计算资源,广泛应用于深度学习、图形图像处理、视频编解码、图形数据库、高性能计算、分子建模、基因组学等工作场景。
在基于Kubernetes集群的云平台中,Kubernetes集群中的每个工作节点上的GPU资源均需要在各自工作节点上安装对应的GPU卡的驱动程序,才能检测到该GPU卡的GPU资源,GPU资源的管理和使用过程过于繁琐。
发明内容
本发明的目的在于提供了一种GPU资源管理方法、调度方法、装置、电子设备及存储介质,其能够简化GPU卡资源的管理和使用过程,实现GPU卡资源的自动管理和调度。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供一种GPU资源管理方法,应用于Kubernetes集群中的工作节点,所述Kubernetes集群还包括主节点,所述主节点与所述工作节点通信连接,所述工作节点运行有管理Pod,所述管理Pod内置有GPU卡驱动组件,所述方法包括:利用所述管理Pod对所述工作节点上的GPU卡进行检测;若检测到GPU卡,则利用所述管理Pod获取所述工作节点的GPU资源;利用所述管理Pod将所述工作节点的GPU资源发送至所述主节点,以使所述主节点对所述GPU资源进行调度。
进一步地,所述方法还包括:
当所述工作节点的GPU卡的工作状态发生变化时,利用所述管理Pod对所述工作节点上的GPU卡重新检测;
统计重新检测到的GPU卡的GPU资源,得到所述工作节点的当前GPU资源;
将所述工作节点的当前GPU资源同步至所述主节点,以指示所述主节点对所述工作节点的GPU资源进行更新。
进一步地,所述工作节点运行有多个已创建的应用Pod,所述方法还包括:
获取每一所述应用Pod的GPU资源配置;
根据每一所述应用Pod的GPU资源配置,对所述工作节点的GPU资源进行隔离,以使每一所述应用Pod均可获取每一所述应用Pod的GPU资源配置所需的GPU资源。
进一步地,所述检测到的GPU卡为多个,所述利用所述管理Pod获取所述工作节点的GPU资源的步骤包括:
获取检测到的每一所述GPU卡的GPU资源;
对所有检测到的所述GPU卡的GPU资源进行统计,得到所述工作节点的GPU资源。
第二方面,本发明实施例提供一种GPU资源调度方法,应用于Kubernetes集群中的主节点,所述Kubernetes集群还包括工作节点,所述工作节点与所述主节点通信连接,所述工作节点运行有管理Pod,所述管理Pod内置有GPU卡驱动组件,所述方法包括:
接收所述工作节点发送的所述工作节点的GPU资源,其中,所述工作节点运行有管理Pod,所述工作节点的GPU资源是所述工作节点利用所述管理Pod对所述工作节点上安装的GPU卡进行检测,并在检测到GPU卡时利用所述管理Pod获取的;对所述GPU资源进行调度。
进一步地,所述工作节点为多个,所述对所述GPU资源进行调度的步骤包括:
接收应用Pod创建命令,其中,所述应用Pod创建命令包括待创建应用Pod的GPU资源配置;
基于所述应用Pod创建命令,获取每一所述工作节点的GPU资源;
从所有所述工作节点的GPU资源中确定满足所述GPU资源配置的目标GPU资源;
将所述应用Pod调度至所述目标GPU资源所属的目标工作节点,以使所述目标工作节点创建并运行所述待创建应用Pod。
进一步地,所述方法还包括:
接收新的工作节点上报的用于申请加入至所述Kubernetes集群的加入请求;
基于所述加入请求,将所述管理Pod调度至所述新的工作节点,以使所述新的工作节点创建并运行所述管理Pod,并将所述新的工作节点利用所述管理Pod获取的所述新的工作节点的GPU资源发送至所述主节点。
第三方面,本发明实施例提供一种GPU资源管理装置,应用于Kubernetes集群中的工作节点,所述Kubernetes集群还包括主节点,所述主节点与所述工作节点通信连接,所述工作节点运行有管理Pod,所述管理Pod内置有GPU卡驱动组件,所述装置包括:管理模块,用于利用所述管理Pod对所述工作节点上的GPU卡进行检测;所述管理模块,还用于若检测到GPU卡,则利用所述管理Pod获取所述工作节点的GPU资源;发送模块,用于利用所述管理Pod将所述工作节点的GPU资源发送至所述主节点,以使所述主节点对所述GPU资源进行调度。
第四方面,本发明实施例提供一种GPU资源调度装置,应用于Kubernetes集群中的主节点,所述Kubernetes集群还包括工作节点,所述工作节点与所述主节点通信连接,所述工作节点运行有管理Pod,所述管理Pod内置有GPU卡驱动组件,所述装置包括:接收模块,用于接收所述工作节点发送的所述工作节点的GPU资源,其中,所述工作节点运行有管理Pod,所述工作节点的GPU资源是所述工作节点利用所述管理Pod对所述工作节点上安装的GPU卡进行检测,并在检测到GPU卡时利用所述管理Pod获取的;调度模块,用于对所述GPU资源进行调度。
第五方面,本发明实施例还提供了一种电子设备,包括处理器和存储器;所述存储器用于存储程序;所述处理器用于在执行所述程序时,实现上述第一方面中的GPU资源管理方法,或者实现上述第二方面中的GPU资源调度方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面中的GPU资源管理方法,或者实现上述第二方面中的GPU资源调度方法。
相对于现有技术,本发明实施例提供GPU资源管理方法、调度方法、装置、电子设备及存储介质,所述GPU资源管理方法应用于Kubernetes集群中的工作节点,工作节点运行有管理Pod,管理Pod内置有GPU卡驱动组件,工作节点利用管理Pod对工作节点的GPU卡进行检测,若检测到GPU卡,利用管理Pod获取工作节点的GPU资源,并将工作节点的GPU资源发送至主节点,使主节点对GPU资源进行调度,本发明实施例利用内置有GPU卡驱动组件的管理Pod自动对工作节点上的GPU卡进行检测,并将检测到的GPU卡的GPU资源发送至主节点,以便由主节点对GPU资源进行调度,从而简化了GPU卡资源的管理和使用过程,实现了GPU卡资源的自动管理和调度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的Kubernetes集群的示例图。
图2为本发明实施例提供的电子设备的方框示意图。
图3为本发明实施例提供的一种GPU资源管理方法的流程示例图。
图4为本发明实施例提供的另一种GPU资源管理方法的流程示例图。
图5为本发明实施例提供的另一种GPU资源管理方法的流程示例图。
图6为本发明实施例提供的另一种GPU资源管理方法的流程示例图。
图7为本发明实施例提供的一种GPU资源调度方法的流程示例图。
图8为本发明实施例提供的另一种GPU资源调度方法的流程示例图。
图9为本发明实施例提供的另一种GPU资源调度方法的流程示例图。
图10示出了本发明实施例提供的一个具体的Kubernetes集群的示例图。
图11示出了本发明实施例提供的node1上的GPU卡故障时GPU资源的示例图。
图12示出了本发明实施例提供的node1上的GPU卡为两个时GPU资源的示例图。
图13示出了本发明实施例提供的node4上的GPU资源的示例图。
图14示出了本发明实施例提供的GPU资源管理装置的方框示意图。
图15示出了本发明实施例提供的GPU资源调度装置的方框示意图。
图标:10-主节点;20-工作节点;30-电子设备;31-处理器;32-存储器;33-总线;100-GPU资源管理装置;110-管理模块;120-发送模块;200-GPU资源调度装置;210-接收模块;220-调度模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
Kubernetes集群是部署了Kubernetes的计算机集群,Kubernetes是一个开源的,用于管理云平台中多个计算机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,请参考图1,图1为本发明实施例提供的Kubernetes集群的示例图,图1中,Kubernetes集群包括主节点10和多个工作节点20。主节点10调度和部署Kubernetes集群上的应用,具体来说,主节点10负责编排工作节点上运行容器的所有相关信息,工作节点20运行主节点10调度和部署的应用,具体来说,工作节点20有效运行Kubernetes集群所管理容器,在Kubernetes集群中,Pod是可以创建和管理Kubernetes计算的最小可部署单元,需要在Kubernetes集群中运行的应用通常以Pod的形式创建并运行,一个Pod代表着Kubernetes集群中运行的一个进程。主节点10采集工作节点20和运行在工作节点20上运行的Pod的信息以对工作节点20及其上运行的Pod进行管理,工作节点20负责运行Pod,一个Pod只能运行在一个工作节点上,但是一个Pod可以有多个副本,每一副本只能运行在不同的工作节点上。
主节点10和工作节点20均可以是物理设备或者虚拟机,主节点10可以独立于工作节点20,也可以和Kubernetes集群中任一工作节点20共用同一个物理设备或者虚拟机。
为了使Kubernetes集群中部署的应用Pod可以正常使用GPU资源,通常工作节点20上安装有GPU卡,GPU卡通常指焊接有GPU的显卡,GPU是显卡的“心脏”,决定了显卡的大部分性能,现有技术中,工作节点20上新***GPU卡时,需要用户在工作节点20上手动安装该GPU卡的驱动程序,当驱动程序需要升级时,也需要用户人工介入进行手动升级,由此,工作节点20才能正确识别该GPU卡,在GPU卡被识别后,工作节点20上的Pod才可以正常使用该GPU卡的GPU资源。这种GPU资源的管理和使用过程由于过多地需要人工介入,GPU资源的管理和使用过程过于繁琐。
有鉴于此,本发明实施例提供一种GPU资源管理方法、调度方法、装置、电子设备及存储介质,用于简化GPU资源的管理和使用过程,下面将对其进行详细描述。
请参照图2,图2为本发明实施例提供的电子设备30的方框示意图,电子设备30可以是图1中的主节点10或者工作节点20,电子设备30包括处理器31、存储器32、总线33。处理器31、存储器32通过总线33通信。
处理器31可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器31中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器31可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器32用于存储程序,例如,本发明实施例中的GPU资源管理装置或者GPU资源调度装置,GPU资源管理装置或者GPU资源调度装置包括至少一个可以软件或固件(firmware)的形式存储于存储器32中的软件功能模块,处理器31在接收到执行指令后,执行所述程序以实现本发明实施例中的GPU资源管理方法或者GPU资源调度方法。
存储器32可能包括高速随机存取存储器(RAM:Random Access Memory),也可能还包括非易失存储器(non-volatile memory)。可选地,存储器32可以是内置于处理器31中的存储装置,也可以是独立于处理器31的存储装置。
总线33可以是ISA总线、PCI总线或EISA总线等。图2仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
在图1和图2的基础上,本发明实施例还提供了一种应用于图1中工作节点20和图2中的电子设备30的GPU资源管理方法,请参照图3,图3为本发明实施例提供的一种GPU资源管理方法的流程示例图,该方法包括以下步骤:
步骤S101,利用管理Pod对工作节点上的GPU卡进行检测。
在本实施例中,管理Pod是用于管理工作节点20上GPU卡的GPU资源的专用Pod,每一个工作节点20均可以在新加入Kubernetes集群时由主节点10指示自动创建一个管理Pod,以便由该管理Pod管理该工作节点20上的GPU资源。管理Pod用于检测GPU卡,并在检测到GPU卡时获取工作节点的GPU资源,最后将GPU资源发送至主节点。
在本实施例中,一个工作节点20上的GPU卡可以是一个或者多个,管理Pod会对工作节点20上的所有GPU卡进行检测。
步骤S102,若检测到GPU卡,则利用管理Pod获取工作节点的GPU资源。
在本实施例中,管理Pod在检测到GPU卡时,会获取工作节点的GPU资源,在本实施例中,若工作节点20上只要一个GPU卡,则该工作节点20的GPU资源为该GPU卡的GPU资源,若工作节点20上有多个GPU卡,则该工作节点20的GPU资源为多个GPU卡的GPU资源之和,GPU资源包括、但不限于算力资源和显存资源,算力资源用于表示GPU卡的GPU计算能力,显存资源用于表示GPU卡在进行计算时可以使用的显示存储器的资源大小,通常情况下,GPU算力资源越大,显存资源越大,GPU卡的性能越高。
步骤S103,利用管理Pod将工作节点的GPU资源发送至主节点,以使主节点对GPU资源进行调度。
在本实施例中,工作节点20的管理Pod负责将本工作节点的GPU资源发送至主节点10,主节点10负责对GPU资源进行统一调度,即为需要GPU资源的应用Pod调度所需的GPU资源,以便在合适的工作节点20上创建应用Pod。
本发明实施例提供的上述方法,利用内置有GPU卡驱动组件的管理Pod自动对工作节点上的GPU卡进行检测,并将检测到的GPU卡的GPU资源发送至主节点,以便由主节点对GPU资源进行调度,从而简化了GPU卡资源的管理和使用过程,实现了GPU卡资源的自动管理和调度。
在图3的基础上,本发明实施例还提供了一种GPU卡为多个时获取工作节点的GPU资源的实现方式,请参照图4,图4为本发明实施例提供的另一种GPU资源管理方法的流程示例图,步骤S102包括以下子步骤:
子步骤S1021,获取检测到的每一GPU卡的GPU资源。
子步骤S1022,对所有检测到的GPU卡的GPU资源进行统计,得到工作节点的GPU资源。
在本实施例中,若GPU资源可以包括算力资源和显存资源中的至少一种,若GPU资源包括算力资源和显存资源,则管理Pod会对工作节点上的GPU卡的算力资源和显存资源分布进行统计,工作节点的GPU资源包括统计得到的算力资源和显存资源。
在本实施例中,为了支持GPU卡的热插拔,即当工作节点上的GPU卡发生变化时,保证工作节点上运行的应用Pod不会被中断,从而不影响应用Pod上正常业务的运行,本发明实施例还提供了一种当工作节点的GPU卡的工作状态发生变化时,自动对GPU资源进行更新的实现方式,请参照图5,图5为本发明实施例提供的另一种GPU资源管理方法的流程示例图,该方法还包括以下步骤:
步骤S111,当工作节点的GPU卡的工作状态发生变化时,利用管理Pod对工作节点上的GPU卡重新检测。
在本实施例中,工作节点20的GPU卡的工作状态发生变化可以包括:正常的GPU卡被拔走导致GPU卡的状态变为不可用,正常的GPU卡发生故障导致GPU卡的状态变为不可用,新的GPU卡***工作节点,该新的GPU卡的状态变为可用状态,发生故障的GPU卡故障恢复,重新变为可用状态等,也就是说,工作节点20的GPU卡的工作状态发生变化会导致该工作节点20的GPU资源发生变化,此时,需要利用管理Pod重新检测该工作节点20的所有GPU卡。
步骤S112,统计重新检测到的GPU卡的GPU资源,得到工作节点的当前GPU资源。
在本实施例中,工作节点20的当前GPU资源为当前检测到的工作节点的GPU卡的GPU资源的统计结果,例如,当前检测的工作节点20上有3个GPU卡,每个GPU卡的显存资源为28GB,则该工作节点20的当前显存资源为28GB*3=84GB。
步骤S113,将工作节点的当前GPU资源同步至主节点,以指示主节点对工作节点的GPU资源进行更新。
在本实施例中,主节点会将工作节点的GPU资源记录在数据库中,或者记录在本地,当工作节点的GPU资源发生变化时,会根据接收到的当前的GPU资源更新之前记录在数据库或者本地的该工作节点的GPU资源。
本发明实施例提供的上述方法,除了可以支持GPU卡的热插拔,同时在GPU卡的驱动需要升级时,只需要更新管理Pod中的GPU卡驱动组件,由主节点自动对工作节点上运行的管理Pod进行更新,显著提高了GPU卡维护效率,节约了维护成本。
在本实施例中,同一个工作节点可以运行多个应用Pod,多个应用Pod可以共享该工作节点的GPU资源,为了使得多个应用Pod在使用同一个工作节点的GPU资源时既不会相互影响,又避免GPU资源在被多个应用Pod共享时因上下文切换带来的性能消耗,影响应用Pod的运行效率,本发明实施例还提供了另一种GPU资源管理方法,请参照图6,图6为本发明实施例提供的另一种GPU资源管理方法的流程示例图,该方法还包括以下步骤:
步骤S121,获取每一应用Pod的GPU资源配置。
在本实施例中,应用Pod可以是用户部署在Kubernetes集群中的应用对应的Pod,应用Pod可以使用工作节点的GPU资源,一个工作节点20上可以同时运行多个不同的应用Pod,多个应用Pod可以共享该工作节点20上的GPU资源。
在本实施例中,应用Pod的GPU资源配置用于表征该应用Pod所需的GPU资源,GPU资源配置可以由用户在发起创建应用Pod的请求时根据实际运行的应用场景进行指定。
步骤S122,根据每一应用Pod的GPU资源配置,对工作节点的GPU资源进行隔离,以使每一应用Pod均可获取每一应用Pod的GPU资源配置所需的GPU资源。
在本实施例中,GPU资源可以采用不同的隔离方式进行隔离,隔离方式包括软隔离和硬隔离,以硬隔离为例,对于NVIDIA GPU卡而言,其GPU资源中的算力资源的硬隔离,可以通过使用包括但不限于NVIDIA多进程服务MPS(Multi-Process Server,MPS)等方式实现。显存资源的硬隔离使用包括但不限于虚拟内存地址映射,统一计算设备架构CUDA(ComputeUnified Device Architecture,CUDA)请求拦截处理技术手段实现。
需要说明的是,本发明实施例提供的上述方法可以在应用Pod运行时为应用Pod分配GPU资源时使用。
在本实施例中,为了提高所有工作节点的GPU资源的利用效率,为Kubernetes集群中的应用Pod调度更合理的GPU资源,本发明实施例还提供了一种应用于Kubernetes集群的主节点10的GPU资源调度方法,请参照图7,图7为本发明实施例提供的一种GPU资源调度方法的流程示例图,该方法包括以下步骤:
步骤S201,接收工作节点发送的工作节点的GPU资源,其中,工作节点运行有管理Pod,工作节点的GPU资源是工作节点利用管理Pod对工作节点上安装的GPU卡进行检测,并在检测到GPU卡时利用管理Pod获取的。
在本实施例中,当工作节点20可以周期性地将本节点的GPU资源发送至主节点10,也可以是在检测到GPU资源发生变化时,将当前最新检测到的GPU资源发送至主节点10。具体工作节点20通过管理Pod获取GPU资源的方式在前述实施例中已有详细描述,此处不再赘述。
步骤S202,对GPU资源进行调度。
在本实施例中,主节点10对GPU资源进行调度可以是为待创建的应用Pod分配所需的GPU资源,以便在合适的工作节点20上创建该应用Pod,也可以是在工作节点20上的GPU卡发生变化后不能满足其上运行的应用Pod的需求时,自动为该工作节点20上的应用Pod调度满足其需求的GPU资源,从而可以将该工作节点20上的应用Pod自动转移到其他工作节点20上运行,或者是工作节点20上新创建应用Pod时,工作节点20上可用GPU资源和已用GPU资源发生了变化。
在图7的基础上,本发明实施例还提供了一种对GPU资源进行调度的具体实现方式,请参照图8,图8为本发明实施例提供的另一种GPU资源调度方法的流程示例图,步骤S202包括以下子步骤:
子步骤S2021,接收应用Pod创建命令,其中,应用Pod创建命令包括待创建应用Pod的GPU资源配置。
在本实施例中,用户需要创建应用Pod时,需要向主节点10发送应用Pod创建命令,该应用Pod创建命令中包括待创建应用Pod的GPU资源配置。
子步骤S2022,基于应用Pod创建命令,获取每一工作节点的GPU资源。
在本实施例中,每一工作节点的GPU资源可以包括每一工作节点的可用GPU资源,或者包括每一工作节点的总GPU资源和已使用GPU资源,主节点10在接收工作节点20发送的GPU资源时,可以将其存储至本地或者预设数据库中,当主节点10接收到应用Pod创建命令时,可以从本地或者预设数据库中获取每一工作节点的GPU资源。
子步骤S2023,从所有工作节点的GPU资源中确定满足GPU资源配置的目标GPU资源。
在本实施例中,作为一种具体实施方式,主节点10不但将每一工作节点的GPU资源进行了存储,同时还将每一工作节点的GPU资源的使用情况进行存储,根据工作节点的GPU资源及已使用GPU资源,可以判断该工作节点可用的GPU资源是否满足待创建应用Pod的GPU资源配置的要求。
在本实施例中,若满足GPU资源配置的工作节点的GPU资源为多个时,可以按照预设原则从多个满足要求的工作节点的GPU资源中确定目标GPU资源,预设原则可以是随机原则,或者是根据满足要求的工作节点的可用GPU资源的大小,从中选择最大的或者最小的进行确定等。
子步骤S2024,将所述应用Pod调度至目标GPU资源所属的目标工作节点,以使目标工作节点创建并运行待创建应用Pod。
在本实施例中,作为一种具体实现方式,主节点确定目标工作节点后,会将待创建应用Pod相关的配置项(该配置项包括GPU资源配置、待创建应用Pod所需创建的个数等其他创建和运行该待创建应用Pod相关的配置)写入至主节点和目标工作节点均可以访问的数据库中,目标工作节点可以通过轮询该数据库,以检测是否有创建和运行Pod的需求,一旦在数据库中发现待创建应用Pod的配置项,则按照该配置项在本地创建并运行该待创建应用Pod。
本发明实施例提供的上述方法,可以自动根据各工作节点的GPU资源在应用Pod创建时确定满足其GPU资源配置的目标工作节点。
在本实施例中,若新的工作节点加入至Kubernetes集群中,为了使其上的GPU卡快速进入就绪状态,及时提供GPU资源服务,本发明实施例还提供了另一种GPU资源调度方法,请参照图9,图9为本发明实施例提供的另一种GPU资源调度方法的流程示例图,该方法还包括以下步骤:
步骤S211,接收新的工作节点上报的用于申请加入至Kubernetes集群的加入请求。
步骤S212,基于加入请求,将管理Pod调度至新的工作节点,以使新的工作节点创建并运行管理Pod,并将新的工作节点利用管理Pod获取的新的工作节点的GPU资源发送至主节点。
在本实施例中,为了实现工作节点的GPU资源的自动管理,可以将实现GPU资源自动管理的程序预先部署在Kubernetes集群,以便在Kubernetes集群中以Pod方式运行GPU资源自动管理的程序。能够实现GPU资源自动管理的Pod即是管理Pod,通过配置,可以使Kubernetes集群在检测到新的工作节点加入时,自动将管理Pod调度至新的工作节点,以使新的工作节点创建并运行该管理Pod,实现新的工作节点的GPU资源的自动管理。
本实施例提供的上述方法,通过为新加入的工作节点自动创建管理Pod,使得新加入的工作节点的GPU资源的自动发现和自动发送至主节点等自动管理,实现了快速拓扑增减具有GPU资源的工作节点,满足了工作节点的现在拓扑,大幅度降低了企业成本。
为了更清楚地说明上述实施例中的GPU资源管理方法,本发明实施例结合具体应用场景的具体实施方式为例进行说明,如图10所示,图10示出了本发明实施例提供的一个具体的Kubernetes集群的示例图,图10中的Kubernetes集群包括一个主节点10和3个工作节点20:node1~node3,各工作节点20上的实现方式是一样的,以其中一个工作节点20(node1)为例,该工作节点20上插有一张显卡,该显卡的算力资源为100,显存资源为14,该工作节点20上运行的管理Pod包括U-GPU-Device、U-Work-Que、U-SM、U-Memory、Pre-hook、runC、NVIDIA Driver、libnvidia-containerCLI这几个功能组件,当管理Pod运行时,会启动这几个功能组件。
U-GPU-Device组件检测工作节点20是否有GPU卡,如果检测到GPU卡则将GPU资源以算力与显存两个维度上报给Kubernetes集群的主节点10,图10中示出了主节点得到了正确的node1的GPU资源:算力资源为100,显存资源为14。
当主节点10接收到创建应用Pod的创建命令后,根据每一工作节点的GPU资源为应用Pod调度GPU资源,把创建命令发送至目标工作节点,U-GPU-Device组件在接收该创建命令后,将该应用Pod的GPU的申请规格(即GPU资源配置)作为参数传递给U-SM组件、U-Memory组件,U-GPU-Device组件将通过调用runC组件创建该Pod,当然,也可以使用docker-shim、containerd、containerd-shim、cri-O、conmon等组件代替runC组件,如果Pod创建成功,则将Pod名称+时间戳作为标识加入到U-Work-Que组件的预设队列中,并使用pre-hook的方式注入脚本调用libnvidia-container CLI对创建的Pod进行标志flag设置,以便对使用GPU资源的应用Pod进行环境变量的设置,设置有标志的Pod才具有使用GPU资源的使用资格,标志flag包括但不限于NVIDIA_DRIVER_CAPABILITIES、NVIDIA_VISIBLE_DEVICES、NVIDIA-DRIVER-PATH等标志,其中,NVIDIA_DRIVER_CAPABILITIES标志用于判断容器需要被映射的NVIDIA驱动库,NVIDIA_VISIBLE_DEVICES标志用于判断是否会分配GPU卡,以及挂载的GPU卡的ID,NVIDIA-DRIVER-PATH标志用于表示GPU卡的驱动路径。
U-SM组件与U-Memory组件根据接收到的参数信息,进行GPU资源中算力资源与显存资源的硬隔离,其中算力硬隔离通过使用包括但不限于NVIDIA MPS等方式实现。显存的硬隔离使用包括但不限于虚拟内存地址映射,CUDA请求拦截处理技术手段实现。
U-Work-Que组件用于对需要共享node1的GPU资源的多个应用Pod进行管理,使多个Pod共享node1的GPU资源,实现多个Pod对GPU卡进行并发的安全隔离的访问,且不会存在GPU上下文切换带来的性能消耗。
当node1上的GPU卡故障时,node1会通过管理Pod及时将本节点最新的GPU资源同步至主节点,基于图10的应用场景,请参照图11,图11示出了本发明实施例提供的node1上的GPU卡故障时GPU资源的示例图,由图11可以看出,主节点获知的node1的GPU资源已经归零了。
当node1上的GPU卡故障恢复,且还有另一张新的GPU卡***时,node1会通过管理Pod将其最新的GPU资源同步至主节点,基于图10的应用场景,请参照图12,图12示出了本发明实施例提供的node1上的GPU卡为两个时GPU资源的示例图,由图12可以看出,主节点获取node1的GPU资源为两张GPU卡资源之和:即算力资源为200,显存资源为28。
当新的node4加入Kubernetes集群时,主节点会指示node4创建管理Pod,该管理Pod会将检测的node4上的GPU卡的资源发送至主节点10,基于图10的应用场景,请参照图13,图13示出了本发明实施例提供的node4上的GPU资源的示例图,由图13可以看出,node4上只有一张GPU卡,主节点获取node4的GPU资源:算力资源为100,显存资源为14。
需要说明的是,上图10~图13中只示出了其中有GPU卡的工作节点的GPU资源,没有GPU卡的工作节点上仍然运行有管理Pod,以便在***GPU卡时可以及时自动检测到GPU卡并获取GPU资源,再将GPU资源同步至主节点10,图10~图13中未一一表示出来。
为了执行上述实施例及各个可能的实施方式中的相应步骤,下面给出一种GPU资源管理装置100的实现方式。请参照图14,图14示出了本发明实施例提供的GPU资源管理装置100的方框示意图。需要说明的是,本实施例所提供的GPU资源管理装置100,应用于图1中Kubernetes集群中的工作节点20和图2中电子设备30,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及指出。
GPU资源管理装置100包括管理模块110和发送模块120。
管理模块110,用于利用管理Pod对工作节点上的GPU卡进行检测。
管理模块110,还用于若检测到GPU卡,则利用管理Pod获取工作节点的GPU资源。
进一步地,管理模块110具体还用于:当工作节点的GPU卡的工作状态发生变化时,利用管理Pod对工作节点上的GPU卡重新检测;统计重新检测到的GPU卡的GPU资源,得到工作节点的当前GPU资源;将工作节点的当前GPU资源同步至主节点,以指示主节点对工作节点的GPU资源进行更新。
进一步地,工作节点运行有多个已创建的应用Pod,管理模块110具体还用于:获取每一应用Pod的GPU资源配置;根据每一应用Pod的GPU资源配置,对工作节点的GPU资源进行隔离,以使每一应用Pod均可获取每一应用Pod的GPU资源配置所需的GPU资源。
进一步地,检测到的GPU卡为多个,管理模块110具体还用于:获取检测到的每一GPU卡的GPU资源;对所有检测到的GPU卡的GPU资源进行统计,得到工作节点的GPU资源。
发送模块120,用于利用所述管理Pod将工作节点的GPU资源发送至主节点,以使主节点对GPU资源进行调度。
为了执行上述实施例及各个可能的实施方式中的相应步骤,下面给出一种GPU资源调度装置200的实现方式。请参照图15,图15示出了本发明实施例提供的GPU资源调度装置200的方框示意图。需要说明的是,本实施例所提供的GPU资源调度装置200,应用于图1中Kubernetes集群中的主节点10和图2中电子设备30,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及指出。
GPU资源调度装置200包括接收模块210和调度模块220。
接收模块210,用于接收新的工作节点上报的用于申请加入至Kubernetes集群的加入请求。
调度模块220,用于基于加入请求,向新的工作节点发送管理Pod创建命令,以使新的工作节点执行管理Pod创建命令创建并运行管理Pod,并将新的工作节点利用管理Pod获取的新的工作节点的GPU资源发送至主节点。
进一步地,工作节点为多个,调度模块220具体用于:接收应用Pod创建命令,其中,应用Pod创建命令包括待创建应用Pod的GPU资源配置;基于应用Pod创建命令,获取每一工作节点的GPU资源;从所有工作节点的GPU资源中确定满足GPU资源配置的目标GPU资源;将所述应用Pod调度至目标GPU资源所属的目标工作节点,以使目标工作节点创建并运行待创建应用Pod。
进一步地,调度模块220具体还用于:接收新的工作节点上报的用于申请加入至Kubernetes集群的加入请求;基于加入请求,将管理Pod调度至新的工作节点,以使新的工作节点创建并运行管理Pod,并将新的工作节点利用管理Pod获取的新的工作节点的GPU资源发送至主节点。
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述的GPU资源管理方法,或者实现上述的GPU资源调度方法。
综上所述,本发明实施例提供了一种GPU资源管理方法、调度方法、装置、电子设备及存储介质,所述GPU资源管理方法包括:利用管理Pod对工作节点上的GPU卡进行检测;若检测到GPU卡,则利用管理Pod获取工作节点的GPU资源;利用所述管理Pod将工作节点的GPU资源发送至主节点,以使主节点对GPU资源进行调度。相对于现有技术,本发明实施例通过利用内置有GPU卡驱动组件的管理Pod自动对工作节点上的GPU卡进行检测,并将检测到的GPU卡的GPU资源发送至主节点,以便由主节点对GPU资源进行调度,从而简化了GPU卡资源的管理和使用过程,实现了GPU卡资源的自动管理和调度。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种GPU资源管理方法,其特征在于,应用于Kubernetes集群中的工作节点,所述Kubernetes集群还包括主节点,所述主节点与所述工作节点通信连接,所述工作节点运行有管理Pod,所述管理Pod内置有GPU卡驱动组件,所述方法包括:
利用所述管理Pod对所述工作节点上的GPU卡进行检测;
若检测到GPU卡,则利用所述管理Pod获取所述工作节点的GPU资源;
利用所述管理Pod将所述工作节点的GPU资源发送至所述主节点,以使所述主节点对所述GPU资源进行调度。
2.如权利要求1所述的GPU资源管理方法,其特征在于,所述方法还包括:
当所述工作节点的GPU卡的工作状态发生变化时,利用所述管理Pod对所述工作节点上的GPU卡重新检测;
统计重新检测到的GPU卡的GPU资源,得到所述工作节点的当前GPU资源;
将所述工作节点的当前GPU资源同步至所述主节点,以指示所述主节点对所述工作节点的GPU资源进行更新。
3.如权利要求1所述的GPU资源管理方法,其特征在于,所述工作节点运行有多个已创建的应用Pod,所述方法还包括:
获取每一所述应用Pod的GPU资源配置;
根据每一所述应用Pod的GPU资源配置,对所述工作节点的GPU资源进行隔离,以使每一所述应用Pod均可获取每一所述应用Pod的GPU资源配置所需的GPU资源。
4.如权利要求1所述的GPU资源管理方法,其特征在于,所述检测到的GPU卡为多个,所述利用所述管理Pod获取所述工作节点的GPU资源的步骤包括:
获取检测到的每一所述GPU卡的GPU资源;
对所有检测到的所述GPU卡的GPU资源进行统计,得到所述工作节点的GPU资源。
5.一种GPU资源调度方法,其特征在于,应用于Kubernetes集群中的主节点,所述Kubernetes集群还包括工作节点,所述工作节点与所述主节点通信连接,所述工作节点运行有管理Pod,所述管理Pod内置有GPU卡驱动组件,所述方法包括:
接收所述工作节点发送的所述工作节点的GPU资源,其中,所述工作节点运行有管理Pod,所述工作节点的GPU资源是所述工作节点利用所述管理Pod对所述工作节点上安装的GPU卡进行检测,并在检测到GPU卡时利用所述管理Pod获取的;
对所述GPU资源进行调度。
6.如权利要求5所述的GPU资源调度方法,其特征在于,所述工作节点为多个,所述对所述GPU资源进行调度的步骤包括:
接收应用Pod创建命令,其中,所述应用Pod创建命令包括待创建应用Pod的GPU资源配置;
基于所述应用Pod创建命令,获取每一所述工作节点的GPU资源;
从所有所述工作节点的GPU资源中确定满足所述GPU资源配置的目标GPU资源;
将所述应用Pod调度至所述目标GPU资源所属的目标工作节点,以使所述目标工作节点创建并运行所述待创建应用Pod。
7.如权利要求5所述的GPU资源调度方法,其特征在于,所述方法还包括:
接收新的工作节点上报的用于申请加入至所述Kubernetes集群的加入请求;
基于所述加入请求,将所述管理Pod调度至所述新的工作节点,以使所述新的工作节点创建并运行所述管理Pod,并将所述新的工作节点利用所述管理Pod获取的所述新的工作节点的GPU资源发送至所述主节点。
8.一种GPU资源管理装置,其特征在于,应用于Kubernetes集群中的工作节点,所述Kubernetes集群还包括主节点,所述主节点与所述工作节点通信连接,所述工作节点运行有管理Pod,所述管理Pod内置有GPU卡驱动组件,所述装置包括:
管理模块,用于利用所述管理Pod对所述工作节点上的GPU卡进行检测;
所述管理模块,还用于若检测到GPU卡,则利用所述管理Pod获取所述工作节点的GPU资源;
发送模块,用于利用所述管理Pod将所述工作节点的GPU资源发送至所述主节点,以使所述主节点对所述GPU资源进行调度。
9.一种GPU资源调度装置,其特征在于,应用于Kubernetes集群中的主节点,所述Kubernetes集群还包括工作节点,所述工作节点与所述主节点通信连接,所述工作节点运行有管理Pod,所述管理Pod内置有GPU卡驱动组件,所述装置包括:
接收模块,用于接收所述工作节点发送的所述工作节点的GPU资源,其中,所述工作节点运行有管理Pod,所述工作节点的GPU资源是所述工作节点利用所述管理Pod对所述工作节点上安装的GPU卡进行检测,并在检测到GPU卡时利用所述管理Pod获取的;
调度模块,用于对所述GPU资源进行调度。
10.一种电子设备,其特征在于,包括处理器和存储器;所述存储器用于存储程序;所述处理器用于在执行所述程序时,实现如权利要求1-4中任一项所述的GPU资源管理方法,或者实现如权利要求5-7中任一项所述的GPU资源调度方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-4中任一项所述的GPU资源管理方法,或者实现如权利要求5-7中任一项所述的GPU资源调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210219719.9A CN114565502A (zh) | 2022-03-08 | 2022-03-08 | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210219719.9A CN114565502A (zh) | 2022-03-08 | 2022-03-08 | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114565502A true CN114565502A (zh) | 2022-05-31 |
Family
ID=81717820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210219719.9A Pending CN114565502A (zh) | 2022-03-08 | 2022-03-08 | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114565502A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115423675A (zh) * | 2022-11-03 | 2022-12-02 | 北京蔚领时代科技有限公司 | 一种gpu热插拔方法、装置、电子设备及存储介质 |
CN115562878A (zh) * | 2022-12-06 | 2023-01-03 | 苏州浪潮智能科技有限公司 | Gpu计算资源的管理方法、装置、电子设备及可读存储介质 |
-
2022
- 2022-03-08 CN CN202210219719.9A patent/CN114565502A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115423675A (zh) * | 2022-11-03 | 2022-12-02 | 北京蔚领时代科技有限公司 | 一种gpu热插拔方法、装置、电子设备及存储介质 |
CN115562878A (zh) * | 2022-12-06 | 2023-01-03 | 苏州浪潮智能科技有限公司 | Gpu计算资源的管理方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11704144B2 (en) | Creating virtual machine groups based on request | |
CN110737442A (zh) | 一种边缘应用管理方法及*** | |
CN109150987B (zh) | 基于主机层和容器层的两层式容器集群弹性扩容方法 | |
CN109376197B (zh) | 一种数据同步方法、服务器及计算机存储介质 | |
CN114565502A (zh) | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 | |
CN113067850B (zh) | 一种多云场景下的集群编排*** | |
CN111338774A (zh) | 分布式定时任务调度***及计算装置 | |
CN111858045A (zh) | 一种多任务gpu资源调度方法、装置、设备及可读介质 | |
CN105357042A (zh) | 一种高可用集群***及其主节点和从节点 | |
CN114706690B (zh) | 一种Kubernetes容器共享GPU方法及*** | |
CN112698838A (zh) | 多云容器部署***及其容器部署方法 | |
CN116800616B (zh) | 虚拟化网络设备的管理方法及相关装置 | |
CN116339927B (zh) | 设备确定方法、装置、存储介质及电子装置 | |
CN104657240B (zh) | 多内核操作***的失效控制方法及装置 | |
CN112306640A (zh) | 容器分配方法及其装置、设备、介质 | |
CN114615268B (zh) | 基于Kubernetes集群的服务网络、监控节点、容器节点及设备 | |
CN112527561B (zh) | 基于物联网云存储的数据备份方法及装置 | |
CN110471767B (zh) | 一种设备的调度方法 | |
KR20150137766A (ko) | 가상머신 스택 생성 시스템 및 방법 | |
CN110572276B (zh) | 一种部署方法、装置、设备及存储介质 | |
CN115048190B (zh) | 虚拟机快照管理方法、***及计算机可读介质 | |
CN117931379A (zh) | 用于边缘计算的集群部署方法、装置、***、设备及介质 | |
CN116846944A (zh) | 数据采集方法、装置、设备及存储介质 | |
CN109413011B (zh) | 公共服务资源申请方法、相关设备及*** | |
CN117806674A (zh) | 分布式存储集群部署方法、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |