CN115129449A - 共享gpu的资源调度方法及装置 - Google Patents
共享gpu的资源调度方法及装置 Download PDFInfo
- Publication number
- CN115129449A CN115129449A CN202210730980.5A CN202210730980A CN115129449A CN 115129449 A CN115129449 A CN 115129449A CN 202210730980 A CN202210730980 A CN 202210730980A CN 115129449 A CN115129449 A CN 115129449A
- Authority
- CN
- China
- Prior art keywords
- gpu
- shared
- video memory
- scheduler
- memory resources
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种共享GPU的资源调度方法及装置,所述方法包括:将GPU添加到Kubernetes中;在Kubernetes中部署GPU扩展调度器,基于GPU扩展调度器获取GPU显存资源总量信息;基于Kubernetes中每个运行节点所需的GPU显存资源和GPU显存资源总量信息,通过GPU扩展调度器确定GPU分配结果;确定Kubernetes中具有共享GPU需求的运行节点,并确定GPU共享资源;调用Kubernetes,在具有共享GPU需求的运行节点上构建pod,基于GPU分配结果,在pod中下发GPU共享资源。本发明通过零侵入式架构设计方法实现GPU显存的共享调度,提高GPU的资源利用率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种共享GPU的资源调度方法及装置。
背景技术
以容器为应用运行载体的Kubernetes平台目前在人工智能(AI,ArtificialIntelligence)和机器学习领域得到了广泛应用。在机器学习领域,为了用海量数据训练更好的模型,并加速整个内容分发流程,企业的IT系统需要具备快速和高效调用管理大规模图形处理器(GPU,Graphics Processing Unit)资源的能力。同时,由于算力资源十分昂贵,出于成本控制,也需要最大化GPU的资源利用率。
为了提高GPU硬件资源的利用率,需要在单张显卡上运行多个容器,并在多个容器间隔离GPU应用。Kubernetes原生支持容器请求GPU资源,但是一个GPU只能分配给一个容器,多个容器之间不能共享GPU。GPU不能共享,算力不能切分,导致GPU资源的浪费。
因此,如何隔离GPU显存和算力,实现GPU显存的共享调度,提高GPU的资源利用率,成为业界亟需解决的问题。
发明内容
针对现有技术存在的问题,本发明提供一种共享GPU的资源调度方法方法及装置。
第一方面,本发明提供一种共享GPU的资源调度方法,包括:
将图形处理器GPU添加到Kubernetes集群中;
在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
可选地,根据本发明提供的一种共享GPU的资源调度方法,在所述Kubernetes集群中部署GPU扩展调度器,包括:
在所述Kubernetes集群的原始调度器上部署GPU共享调度插件和GPU设备插件。
可选地,根据本发明提供的一种共享GPU的资源调度方法,基于所述GPU扩展调度器,获取GPU显存资源总量信息,包括:
控制所述GPU设备插件向kubelet组件上报GPU显存资源总量信息;
控制所述kubelet组件将所述GPU显存资源总量信息上报至集群接口服务器Kubernetes API Server;
向所述Kubernetes API Server获取所述GPU显存资源总量信息。
可选地,根据本发明提供的一种共享GPU的资源调度方法,基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果,包括:
基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,控制所述GPU共享调度插件对GPU进行条件过滤,获取所述GPU分配结果。
可选地,根据本发明提供的一种共享GPU的资源调度方法,基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源,包括:
基于所述GPU分配结果,通过所述GPU共享调度插件绑定所述pod和GPU;
在确定所述Kubelet组件接收到所述pod和GPU的绑定事件的情况下,控制所述Kubelet组件在所述pod对应的运行节点上创建pod实体,并在所述pod实体中下发所述GPU共享资源。
可选地,根据本发明提供的一种共享GPU的资源调度方法,将图形处理器GPU加入到Kubernetes集群中之前,还包括:
在所述GPU上安装Nvidia驱动和Nvidia-Docker2组件。
第二方面,本发明还提供一种共享GPU的资源调度装置,包括:
添加模块,用于将图形处理器GPU添加到Kubernetes集群中;
部署模块,用于在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
第一确定模块,用于获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
第二确定模块,用于确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
调用模块,用于调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述共享GPU的资源调度方法。
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述共享GPU的资源调度方法。
第五方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面所述共享GPU的资源调度方法。
本发明提供的共享GPU的资源调度方法及装置,通过在Kubernetes集群的原有调度系统上部署GPU扩展调度器,并基于GPU扩展调度器为Kubernetes集群中的容器调度GPU显存资源,基于零侵入式架构设计方法隔离GPU显存和算力,实现GPU显存的共享调度,提高GPU的资源利用率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的共享GPU的资源调度方法的流程示意图;
图2是本发明提供的共享GPU的资源调度的架构示意图;
图3是本发明提供的共享GPU的资源调度装置的结构示意图;
图4是本发明提供的电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图4描述本发明提供的共享GPU的资源调度方法及装置。
图1是本发明提供的共享GPU的资源调度方法的流程示意图,如图1所示,该方法包括:
步骤100,将图形处理器GPU添加到Kubernetes集群中;
步骤110,在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
步骤120,获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
步骤130,确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
步骤140,调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
具体地,为了克服现有的Kubernetes原生不支持多个容器之间共享GPU资源的缺陷,本发明通过在Kubernetes集群原有调度系统上部署GPU扩展调度器,并基于GPU扩展调度器为Kubernetes集群中的容器调度GPU显存资源,基于零侵入式架构设计方法隔离GPU显存和算力,实现GPU显存的共享调度,提高GPU的资源利用率。
可选地,可以先确定待加入的GPU服务器,然后将待加入的GPU服务器加入Kubernetes集群。
可选地,可以利用Kubernetes Scheduler Extender扩展机制,修改Kubernetes的默认调度器Scheduler,扩展调度器功能,以在Kubernetes的原始调度系统上部署GPU扩展调度器。
可选地,可以基于GPU扩展调度器,获取GPU显存资源总量信息。
可选地,可以获取Kubernetes集群中每个运行节点所需的GPU显存资源。
可选地,可以基于每个运行节点所需的GPU显存资源和GPU显存资源总量信息,通过控制GPU扩展调度器确定GPU分配结果。
可选地,可以将GPU分配结果通过注解记录到Pod Spec以供后续使用。
可选地,可以扩展Kubernetes调度器功能,负责在全局调度器判断节点上单个GPU卡是否能够提供足够的GPU显存,并且将GPU的分配结果通过注解记录到Pod Spec以供后续使用。
可选地,可以确定Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源,然后调用Kubernetes集群,在具有共享GPU需求的运行节点上构建容器组pod,并基于GPU分配结果,在容器组pod中下发GPU共享资源。
可选地,在本发明实施例中,包括GPU资源发现上报、GPU资源管理调度、GPU显存隔离和GPU显存分配。
本发明提供的共享GPU的资源调度方法,通过在Kubernetes集群的原有调度系统上部署GPU扩展调度器,并基于GPU扩展调度器为Kubernetes集群中的容器调度GPU显存资源,基于零侵入式架构设计方法隔离GPU显存和算力,实现GPU显存的共享调度,提高GPU的资源利用率。
可选地,在所述Kubernetes集群中部署GPU扩展调度器,包括:
在所述Kubernetes集群的原始调度器上部署GPU共享调度插件和GPU设备插件。
具体地,可以在Kubernetes集群的原始调度器上部署GPU共享调度插件和GPU设备插件。
例如,通过命令kubectl create-f schd-extender.yaml部署GPU共享调度插件schd-extender。
例如,通过命令kubectl create-f device-plugin.yaml部署GPU设备插件device-plugin。
可选地,如果Kubernete集群不是新搭建的,并且Kubernete集群之前已经安装了nvidia-device-plugin,则首先需要将该nvidia-device-plugin删除,然后再部署GPU设备插件device-plugin。
可选地,为了将GPU程序调度到带有GPU的服务器,则可以为GPU服务器打标签,例如share-mem=true。
可以理解地是,通过为GPU服务器打标签,可以将GPU与CPU(Central ProcessingUnit/Processor,中央处理器)区分开来。
可选地,基于所述GPU扩展调度器,获取GPU显存资源总量信息,包括:
控制所述GPU设备插件向kubelet组件上报GPU显存资源总量信息;
控制所述kubelet组件将所述GPU显存资源总量信息上报至集群接口服务器Kubernetes API Server;
向所述Kubernetes API Server获取所述GPU显存资源总量信息。
具体地,可以基于Device Plugin机制,在节点上将GPU显存资源总量上报给kubelet组件,进一步由kubelet组件将GPU显存资源总量上报给Kubernetes API Serve。
可选地,基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果,包括:
基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,控制所述GPU共享调度插件对GPU进行条件过滤,获取所述GPU分配结果。
具体地,可以基于Kubernetes集群中的每个运行节点所需的GPU显存资源和GPU显存资源总量信息,控制GPU共享调度插件对GPU进行条件过滤,获取GPU分配结果。
具体地,可以利用Kubernetes Scheduler Extender扩展机制,修改Kubernetes的默认Scheduler。调度器根据节点的GPU显存进行条件过滤,并且将GPU的分配结果通过注解记录到Pod Spec以供后续使用。
例如,可以将小于运行节点所需的GPU显存资源的GPU服务器过滤掉。
可选地,基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源,包括:
基于所述GPU分配结果,通过所述GPU共享调度插件绑定所述pod和GPU;
在确定所述Kubelet组件接收到所述pod和GPU的绑定事件的情况下,控制所述Kubelet组件在所述pod对应的运行节点上创建pod实体,并在所述pod实体中下发所述GPU共享资源。
具体地,可以基于GPU分配结果,通过GPU共享调度插件绑定所述容器组pod和GPU,然后在确定Kubelet组件接收到pod和GPU的绑定事件的情况下,控制Kubelet组件在pod对应的运行节点上创建pod实体,并在pod实体中下发GPU共享资源。
可选地,当pod和节点绑定的事件被Kubelet组件接收到后,Kubelet组件就会在节点上创建真正的Pod实体,在该过程中,Kubelet组件会调用GPU Device Plugin的Collect方法,Collect方法的参数是pod申请的gpu-mem(GPU显存),通过API调用,获得Pod的Spec配置,根据Scheduler Extender的调度决策运行对应的Pod。
可选地,可以编写测试两个Pod配置文件,如下:
pod1.yaml配置:
pod2.yaml配置:
可选地,可以通过命令kubectl create-f pod1.yaml和kubectl create-fpod2.yaml启动容器,启动成功后进入容器可以查看到GPU显存占用率。
可选地,将图形处理器GPU加入到Kubernetes集群中之前,还包括:
在所述GPU上安装Nvidia驱动和Nvidia-Docker2组件。
具体地,在将GPU服务器加入到Kubernetes集群中之前,在GPU服务器上安装Nvidia-Driver以及Nvidia-Docker2,同时将docker的默认运行时设置为nvidia。
可以理解的是,由于Nvidia驱动需要内核编译,所以在安装Nvidia驱动之前需要先安装gcc(GNU Compiler Collection,GNU编译器套件)和内核源码。
可选地,可以通过yum源,安装Nvidia-Docker2,安装完Nvidia-Docker2需要重新加载docker,可以检查docker的daemon.json里面默认启动引擎是否已经被替换成了nvidia,也可以通过docker info命令查看运行时刻使用的runC是否是Nvidia的runC。
图2是本发明提供的共享GPU的资源调度的架构示意图,如图2所示,在本发明实施例中,采用零侵入式架构设计,通过Scheduler Extender及Nvidia-Docker2 ContainerRuntime为容器提供GPU显存资源,可以提高GPU综合利用率,有效做到昂贵算力平民化。
可选地,在本发明实施例中,Kubernetes集群支持对节点上的AMD和NVIDIAGPU(图形处理单元)进行管理,本发明实施例主要是基于NVIDIAGPU为例进行介绍。
可以理解的是,本发明实施例提供的共享GPU的资源调度方法,通过对GPU显存共享容器虚拟化,可以有效提升GPU的使用效率,降低单位使用成本。
本发明提供的共享GPU的资源调度方法,通过在Kubernetes集群的原有调度系统上部署GPU扩展调度器,并基于GPU扩展调度器为Kubernetes集群中的容器调度GPU显存资源,基于零侵入式架构设计方法隔离GPU显存和算力,实现GPU显存的共享调度,提高GPU的资源利用率。
下面对本发明提供的共享GPU的资源调度装置进行描述,下文描述的共享GPU的资源调度装置与上文描述的共享GPU的资源调度方法可相互对应参照。
图3是本发明提供的共享GPU的资源调度装置的结构示意图,如图3所示,该装置包括:添加模块310、部署模块320、第一确定模块330、第二确定模块340和调用模块350;其中:
添加模块310用于将图形处理器GPU添加到Kubernetes集群中;
部署模块320用于在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
第一确定模块330用于获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
第二确定模块340用于确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
调用模块350用于调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
具体地,本发明实施例提供的共享GPU的资源调度装置,可以通过添加模块310将图形处理器GPU添加到Kubernetes集群中;然后通过部署模块320在Kubernetes集群中部署GPU扩展调度器,并基于GPU扩展调度器,获取GPU显存资源总量信息;接着通过第一确定模块330获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于每个运行节点所需的GPU显存资源和GPU显存资源总量信息,通过GPU扩展调度器确定GPU分配结果;进一步通过第二确定模块340确定Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;最后通过调用模块350调用Kubernetes集群,在具有共享GPU需求的运行节点上构建容器组pod,并基于GPU分配结果,在容器组pod中下发GPU共享资源。
本发明提供的共享GPU的资源调度装置,通过在Kubernetes集群的原有调度系统上部署GPU扩展调度器,并基于GPU扩展调度器为Kubernetes集群中的容器调度GPU显存资源,基于零侵入式架构设计方法隔离GPU显存和算力,实现GPU显存的共享调度,提高GPU的资源利用率。
在此需要说明的是,本发明实施例提供的上述共享GPU的资源调度装置,能够实现上述共享GPU的资源调度方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
图4是本发明提供的电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行上述各方法所提供的共享GPU的资源调度方法,该方法包括:
将图形处理器GPU添加到Kubernetes集群中;
在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的共享GPU的资源调度方法,该方法包括:
将图形处理器GPU添加到Kubernetes集群中;
在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的共享GPU的资源调度方法,该方法包括:
将图形处理器GPU添加到Kubernetes集群中;
在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种共享GPU的资源调度方法,其特征在于,包括:
将图形处理器GPU添加到Kubernetes集群中;
在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
2.根据权利要求1所述的共享GPU的资源调度方法,其特征在于,在所述Kubernetes集群中部署GPU扩展调度器,包括:
在所述Kubernetes集群的原始调度器上部署GPU共享调度插件和GPU设备插件。
3.根据权利要求2所述的共享GPU的资源调度方法,其特征在于,基于所述GPU扩展调度器,获取GPU显存资源总量信息,包括:
控制所述GPU设备插件向kubelet组件上报GPU显存资源总量信息;
控制所述kubelet组件将所述GPU显存资源总量信息上报至集群接口服务器Kubernetes API Server;
向所述Kubernetes API Server获取所述GPU显存资源总量信息。
4.根据权利要求2所述的共享GPU的资源调度方法,其特征在于,基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果,包括:
基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,控制所述GPU共享调度插件对GPU进行条件过滤,获取所述GPU分配结果。
5.根据权利要求3所述的共享GPU的资源调度方法,其特征在于,基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源,包括:
基于所述GPU分配结果,通过所述GPU共享调度插件绑定所述pod和GPU;
在确定所述Kubelet组件接收到所述pod和GPU的绑定事件的情况下,控制所述Kubelet组件在所述pod对应的运行节点上创建pod实体,并在所述pod实体中下发所述GPU共享资源。
6.根据权利要求1-5任一项所述的共享GPU的资源调度方法,其特征在于,将图形处理器GPU加入到Kubernetes集群中之前,还包括:
在所述GPU上安装Nvidia驱动和Nvidia-Docker2组件。
7.一种共享GPU的资源调度装置,其特征在于,包括:
添加模块,用于将图形处理器GPU添加到Kubernetes集群中;
部署模块,用于在所述Kubernetes集群中部署GPU扩展调度器,并基于所述GPU扩展调度器,获取GPU显存资源总量信息;
第一确定模块,用于获取Kubernetes集群中每个运行节点所需的GPU显存资源,并基于所述每个运行节点所需的GPU显存资源和所述GPU显存资源总量信息,通过所述GPU扩展调度器确定GPU分配结果;
第二确定模块,用于确定所述Kubernetes集群中具有共享GPU需求的运行节点,并确定GPU共享资源;
调用模块,用于调用所述Kubernetes集群,在所述具有共享GPU需求的运行节点上构建容器组pod,并基于所述GPU分配结果,在所述容器组pod中下发所述GPU共享资源。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述共享GPU的资源调度方法。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述共享GPU的资源调度方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述共享GPU的资源调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210730980.5A CN115129449A (zh) | 2022-06-24 | 2022-06-24 | 共享gpu的资源调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210730980.5A CN115129449A (zh) | 2022-06-24 | 2022-06-24 | 共享gpu的资源调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115129449A true CN115129449A (zh) | 2022-09-30 |
Family
ID=83379108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210730980.5A Pending CN115129449A (zh) | 2022-06-24 | 2022-06-24 | 共享gpu的资源调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115129449A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069481A (zh) * | 2023-04-06 | 2023-05-05 | 山东省计算中心(国家超级计算济南中心) | 一种共享gpu资源的容器调度系统及调度方法 |
-
2022
- 2022-06-24 CN CN202210730980.5A patent/CN115129449A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069481A (zh) * | 2023-04-06 | 2023-05-05 | 山东省计算中心(国家超级计算济南中心) | 一种共享gpu资源的容器调度系统及调度方法 |
CN116069481B (zh) * | 2023-04-06 | 2023-07-18 | 山东省计算中心(国家超级计算济南中心) | 一种共享gpu资源的容器调度系统及调度方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795219B (zh) | 适用于多种计算框架的资源调度方法及系统 | |
CN111880936B (zh) | 资源调度方法、装置、容器集群、计算机设备和存储介质 | |
CN112463375B (zh) | 一种数据处理的方法和装置 | |
CN110389843B (zh) | 一种业务调度方法、装置、设备及可读存储介质 | |
CN112035238B (zh) | 任务调度处理方法、装置、集群系统及可读存储介质 | |
CN112000463B (zh) | 一种基于cuda的gpu资源分配方法、系统、终端及存储介质 | |
CN114741207A (zh) | 一种基于多维度组合并行的gpu资源调度方法和系统 | |
CN110580195B (zh) | 一种基于内存热插拔的内存分配方法和装置 | |
CN104243617A (zh) | 一种异构集群中面向混合负载的任务调度方法及系统 | |
CN103914287A (zh) | 基于插件机制的软件系统及其实现方法 | |
CN115617364B (zh) | Gpu虚拟化部署方法、系统、计算机设备和存储介质 | |
CN114706690B (zh) | 一种Kubernetes容器共享GPU方法及系统 | |
CN113377493A (zh) | 一种容器云仿真系统及其设计方法 | |
CN114466070A (zh) | 中间件系统、服务请求处理方法、电子设备及存储介质 | |
CN115048216A (zh) | 一种人工智能集群的资源管理调度方法、装置和设备 | |
CN115129449A (zh) | 共享gpu的资源调度方法及装置 | |
CN112114958A (zh) | 资源隔离方法、分布式平台、计算机设备和存储介质 | |
CN116578416B (zh) | 一种基于gpu虚拟化的信号级仿真加速方法 | |
CN117519972A (zh) | Gpu资源管理方法及装置 | |
CN115964176B (zh) | 云计算集群调度方法、电子设备和存储介质 | |
CN114168294B (zh) | 编译资源分配方法、装置、电子设备及存储介质 | |
CN115167985A (zh) | 一种虚拟化的算力提供方法及系统 | |
CN113407305A (zh) | 一种任务部署方法、装置、电子设备及存储介质 | |
CN118502965B (zh) | 加速卡分配方法、装置和人工智能平台 | |
CN114157566B (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 |