CN115658332A - 一种gpu共享方法及装置、电子设备和存储介质 - Google Patents

一种gpu共享方法及装置、电子设备和存储介质 Download PDF

Info

Publication number
CN115658332A
CN115658332A CN202211688258.6A CN202211688258A CN115658332A CN 115658332 A CN115658332 A CN 115658332A CN 202211688258 A CN202211688258 A CN 202211688258A CN 115658332 A CN115658332 A CN 115658332A
Authority
CN
China
Prior art keywords
gpu
resource
target
working node
node
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
Application number
CN202211688258.6A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202211688258.6A priority Critical patent/CN115658332A/zh
Publication of CN115658332A publication Critical patent/CN115658332A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本公开涉及计算机技术领域,公开了一种GPU共享方法及装置、电子设备和存储介质,所述方法包括:接收Kubernetes中的目标pod发送的GPU共享资源申请;基于所述GPU共享资源申请,采用预设调度策略,将所述目标pod与所述Kubernetes中的目标工作节点进行绑定,其中,所述目标工作节点上运行有可进行资源共享的物理GPU设备;基于所述目标工作节点,为所述目标pod分配GPU共享资源。本公开实施例中单个pod可以在一个物理GPU设备上申请部分GPU共享资源,从而实现不同pod之间共享一个物理GPU设备,在Kubernetes中有效提高了GPU利用率。

Description

一种GPU共享方法及装置、电子设备和存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种GPU共享方法及装置、电子设备和存储介质。
背景技术
Kubernetes是一个可移植、可扩展的开源平台,用于管理容器化的应用。Kubernetes的目标是让部署容器化的应用简单并且高效,并提供了应用部署、规划、更新和维护的机制。pod是Kubernetes中的最小单元,容器包括在pod中。为了在Kubernetes中提高GPU利用率,需要在pod之间实现GPU共享。
发明内容
本公开提出了一种GPU共享方法及装置、电子设备和存储介质的技术方案。
根据本公开的一方面,提供了一种GPU共享方法,包括:接收Kubernetes中的目标pod发送的GPU共享资源申请;基于所述GPU共享资源申请,采用预设调度策略,将所述目标pod与所述Kubernetes中的目标工作节点进行绑定,其中,所述目标工作节点上运行有可进行资源共享的物理GPU设备;基于所述目标工作节点,为所述目标pod分配GPU共享资源。
在一种可能的实现方式中,所述Kubernetes中包括多个工作节点,所述目标工作节点为所述多个工作节点中的一个;所述方法还包括:针对任意一个工作节点,接收GPU设备插件组件发送的GPU资源注册信息,其中,所述GPU资源注册信息包括:物理GPU设备对应的可进行资源共享的GPU资源名;基于所述GPU资源注册信息,将可进行资源共享的物理GPU设备添加至所述工作节点。
在一种可能的实现方式中,存在多个可进行资源共享的物理GPU设备;所述方法还包括:在多个可进行资源共享的物理GPU设备中出现异常不可用物理GPU设备时,接收所述GPU设备插件组件发送的GPU资源更新信息,其中,所述GPU资源更新信息为在所述GPU资源注册信息中,去除掉所述异常不可用物理GPU设备对应的可进行资源共享的GPU资源名之后的信息。
在一种可能的实现方式中,所述基于所述GPU共享资源申请,采用预设调度策略,将所述目标pod与所述Kubernetes中的目标工作节点进行绑定,包括:针对任意一个所述工作节点,基于所述工作节点上运行的可进行资源共享的物理GPU设备对应的GPU资源总量及其已用GPU资源量,确定所述工作节点对应的空闲GPU资源量;基于所述GPU共享资源申请指示的GPU共享资源申请量,以及每个所述工作节点对应的空闲GPU资源量,确定多个有效工作节点,其中,所述有效工作节点对应的空闲GPU资源量大于或等于所述GPU共享资源申请量;利用GPU共享调度插件采用所述预设调度策略,从所述多个有效工作节点中,确定所述目标工作节点;将所述目标pod与所述目标工作节点进行绑定。
在一种可能的实现方式中,所述采用预设调度策略,从所述多个有效工作节点中,确定所述目标工作节点,包括:在所述多个有效工作节点中过滤掉不可调度工作节点,其中,所述不可调度工作节点上运行的任意一个可进行资源共享的物理GPU设备对应的空闲GPU资源量小于所述GPU共享资源申请量;利用所述GPU共享调度插件采用所述预设调度策略,从所述不可调度工作节点以外的其它有效工作节点中,确定所述目标工作节点。
在一种可能的实现方式中,所述方法还包括:在将所述目标pod与所述目标工作节点进行绑定之后,对所述目标工作节点进行锁定。
在一种可能的实现方式中,所述方法还包括:在为所述目标pod分配所述GPU共享资源之后,对所述目标工作节点进行解锁。
在一种可能的实现方式中,所述GPU共享资源包括显存资源和计算资源。
根据本公开的一方面,提供了一种GPU共享装置,包括:接收模块,用于接收Kubernetes中的目标pod发送的GPU共享资源申请;节点绑定模块,用于基于所述GPU共享资源申请,采用预设调度策略,将所述目标pod与所述Kubernetes中的目标工作节点进行绑定,其中,所述目标工作节点上运行有可进行资源共享的物理GPU设备;资源分配模块,用于基于所述目标工作节点,为所述目标pod分配GPU共享资源
根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
在本公开实施例中,接收Kubernetes中的目标pod发送的GPU共享资源申请;基于GPU共享资源申请,采用预设调度策略,将目标pod与Kubernetes中的目标工作节点进行绑定,其中,目标工作节点上运行有可进行资源共享的物理GPU设备;基于目标工作节点,为目标pod分配GPU共享资源。相比于单个pod只能对整数个物理GPU设备进行资源申请,本公开实施例中单个pod可以在一个物理GPU设备上申请部分GPU共享资源,从而实现不同pod之间共享一个物理GPU设备,在Kubernetes中有效提高了GPU利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开实施例的一种GPU共享方法的流程图。
图2示出根据本公开实施例的确定目标工作节点的示意图。
图3示出根据本公开实施例的GPU共享的示意图。
图4示出根据本公开实施例的一种GPU共享装置的框图。
图5示出根据本公开实施例的一种电子设备的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
相关技术中,使用最为广泛的物理GPU设备,在Kubernetes容器平台上提供了对应的扩展能力。Extended Resource和Device Plugin是目前比较常见的扩展硬件的方式。通过自定义资源n.com/gpu,以及扩展Device Plugin接口,实现了诸如如下功能:在Kubernetes集群的工作节点上暴露GPU设备、维护GPU设备健康列表、支持在Kubernetes容器平台上运行申明n.com/gpu资源的负载。但是,该方案的主要局限是,仅支持整数个物理GPU设备的资源申请,也即单个pod上运行的负载会独占一个或者多个物理GPU设备。由于物理GPU设备是很昂贵的设备,且大部分情况下(例如,在深度学习模型预测场景下),一个pod上的负载无法充分利用单个物理GPU设备的所有GPU资源,因此,仅支持整个物理GPU设备的资源申请会造成大量的GPU资源浪费。为了在Kubernetes中提高GPU利用率,应该使得多个pod能够在互不影响的情况下尽可能的共享单个物理GPU设备。
本公开实施例提供了一种GPU共享方法,可以应用于Kubernetes,并在Kubernetes中实现多个pod在互不影响的情况下共享单个物理GPU设备,从而有效提高GPU利用率。下面对本公开实施例的GPU共享方法进行详细描述。
图1示出根据本公开实施例的一种GPU共享方法的流程图。该方法可以应用于云原生场景下的Kubernetes。如图1所示,该方法包括:
在步骤S11中,接收Kubernetes中的目标pod发送的GPU共享资源申请。
Pod是Kubernetes中的最小单元,接收Kubernetes中的目标pod发送的GPU共享资源申请。GPU共享资源申请用于指示目标pod仅需要申请一个物理GPU设备中的部分GPU资源,而不是对整个物理GPU设备进行独占。
在步骤S12中,基于GPU共享资源申请,采用预设调度策略,将目标pod与Kubernetes中的目标工作节点进行绑定,其中,目标工作节点上运行有可进行资源共享的物理GPU设备。
在接收到目标pod发送的GPU共享资源申请之后,采用预设调度策略,将目标pod与Kubernetes中运行有可进行资源共享的物理GPU设备的目标工作节点进行绑定。后文会结合本公开可能的实现方式,对如何采用预设调度策略将目标pod与目标工作节点进行绑定进行详细描述,此处不作赘述。
在步骤S13中,基于目标工作节点,为目标pod分配GPU共享资源。
在将目标pod与目标工作节点进行绑定之后,目标节点上运行的可进行资源共享的物理GPU设备,可以为目标pod分配其所需的GPU共享资源。
根据本公开的实施例,单个pod可以在一个物理GPU设备上申请部分GPU共享资源,从而实现不同pod之间共享一个物理GPU设备,在Kubernetes中有效提高了GPU利用率。
在一种可能的实现方式中,GPU共享资源包括显存资源和计算资源。
物理GPU设备对应的可进行资源共享的GPU共享资源包括显存资源和计算资源。
在一种可能的实现方式中,Kubernetes中包括多个工作节点,目标工作节点为多个工作节点中的一个;该方法还包括:针对任意一个工作节点,接收GPU设备插件组件发送的GPU资源注册信息,其中,GPU资源注册信息包括:物理GPU设备对应的可进行资源共享的GPU资源名;基于GPU资源注册信息,将可进行资源共享的物理GPU设备添加至工作节点。
根据预设配置,对可进行资源共享的物理GPU设备进行虚拟化。例如,针对计算资源,将单个可进行资源共享的物理GPU设备的计算资源划分为16份,虚拟化出16个虚拟GPU设备;针对显存资源,以1GiB为单位,将单个可进行资源共享的物理GPU设备的总显存量除以1GiB,虚拟化出多个虚拟GPU设备。
Kubernetes中包括多个工作节点(Node),每个工作节点都会启动Kubelet进程,Kubelet会在Kubernetes API Server上注册工作节点的信息。针对任意一个工作节点,基于GPU设备插件(GPU Device Plugin)组件与工作节点之间的通信,将可进行资源共享的物理GPU设备添加至工作节点,即将物理GPU设备对应的可进行资源共享的计算资源/显存资源,注册到Kubernetes集群。
这里的GPU设备插件组件用于实现向Kubernetes集群注册GPU资源。例如,可进行资源共享的物理GPU设备,基于GPU设备插件组件,向一个工作节点上的Kubelet发送GPU资源注册信息,GPU资源注册信息中包括资源名:显存资源的资源名和计算资源的资源名。
在一种可能的实现方式中,存在多个可进行资源共享的物理GPU设备;该方法还包括:在多个可进行资源共享的物理GPU设备中出现异常不可用物理GPU设备时,接收GPU设备插件组件发送的GPU资源更新信息,其中,GPU资源更新信息为在GPU资源注册信息中,去除掉异常不可用物理GPU设备对应的可进行资源共享的GPU资源名之后的信息。
GPU设备插件组件还负责维护物理GPU设备的健康状态,在某一工作节点上运行的多个可进行资源共享的物理GPU设备中出现异常不可用物理GPU设备时,GPU设备插件组件需要重新确定可进行资源共享的GPU资源信息,即在GPU资源注册信息中去除掉异常不可用物理GPU设备对应的可进行资源共享的GPU资源名之后得到的GPU资源更新信息,并向工作节点上的Kubelet发送GPU资源更新信息,以更新Kubernetes集群资源。
在一种可能的实现方式中,基于GPU共享资源申请,采用预设调度策略,将目标pod与Kubernetes中的目标工作节点进行绑定,包括:针对任意一个工作节点,基于工作节点上运行的可进行资源共享的物理GPU设备对应的GPU资源总量及其已用GPU资源量,确定工作节点对应的空闲GPU资源量;基于GPU共享资源申请指示的GPU共享资源申请量,以及每个工作节点对应的空闲GPU资源量,确定多个有效工作节点,其中,有效工作节点对应的空闲GPU资源量大于或等于GPU共享资源申请量;利用GPU共享调度插件采用预设调度策略,从多个有效工作节点中,确定目标工作节点;将目标pod与目标工作节点进行绑定。
针对任意一个工作节点,基于工作节点上运行的可进行资源共享的物理GPU设备对应的GPU资源总量及其已用GPU资源量,确定工作节点对应的空闲GPU资源量;在工作节点对应的空闲GPU资源量大于或等于目标pod所需的GPU共享资源申请量时,该工作节点才能够作为有效工作工作节点,否则为无效工作节点;进而GPU共享调度(GPU ShareScheduler)组件采用预设调度策略将目标pod调度至多个有效工作节点中的目标工作节点。
其中,预设调度策略可以是spread调度策略,也可以是binpack调度策略,还可以根据实际情况采用其它调度策略,本公开对此不作具体限定。
图2示出根据本公开实施例的确定目标工作节点的示意图。如图2所示,目标pod0发送GPU共享资源申请,目标pod所需的GPU共享显存资源申请量为4096MB。
如图2所示,Kubernetes集群中包括三个工作节点:工作节点1(运行有物理GPU设备0和物理GPU设备1)、工作节点2(运行有物理GPU设备2和物理GPU设备3)、工作节点3(运行有物理GPU设备4和物理GPU设备5)。
针对工作节点1:物理GPU设备0对应的GPU显存资源总量为8192MB,为pod1分配GPU显存资源量6144MB,即已用GPU显存资源量为6144MB,因此,物理GPU设备0对应的空闲GPU显存资源量为2048MB(如图2中所示GPU0:总量:8192MB;空闲量:2048MB);物理GPU设备1对应的GPU显存资源总量为8192MB,为pod2分配GPU显存资源量6144MB,即已用GPU显存资源量为6144MB,因此,物理GPU设备1对应的空闲GPU显存资源量为2048MB(如图2中所示GPU1:总量:8192MB;空闲量:2048MB)。综上,工作节点1对应的空闲GPU显存资源量为4096MB。
针对工作节点2:物理GPU设备2对应的GPU显存资源总量为8192MB,全部处于空闲状态,因此,物理GPU设备2对应的空闲GPU显存资源量为8192MB(如图2中所示GPU2:总量:8192MB;空闲量:8192MB);物理GPU设备3对应的GPU显存资源总量为8192MB,为pod3分配GPU显存资源量8192MB,即已用GPU显存资源量为8192MB,因此,物理GPU设备3对应的空闲GPU显存资源量为0MB(如图2中所示GPU3:总量:8192MB;空闲量:0MB)。综上,工作节点2对应的空闲GPU显存资源量为8192MB。
针对工作节点3:物理GPU设备4对应的GPU显存资源总量为8192MB,为pod4分配GPU显存资源量8192MB,即已用GPU显存资源量为8192MB,因此,物理GPU设备4对应的空闲GPU显存资源量为0MB(如图2中所示GPU4:总量:8192MB;空闲量:0MB);物理GPU设备5对应的GPU显存资源总量为8192MB,为pod5分配GPU显存资源量8192MB,即已用GPU显存资源量为8192MB,因此,物理GPU设备5对应的空闲GPU显存资源量为0MB(如图2中所示GPU5:总量:8192MB;空闲量:0MB)。综上,工作节点3对应的空闲GPU显存资源量为0MB。
工作节点1对应的空闲GPU显存资源量4096MB等于目标pod所需的GPU共享显存资源申请量4096MB,工作节点2对应的空闲GPU显存资源量8192MB大于目标pod所需的GPU共享显存资源申请量4096MB,因此,工作节点1和工作节点2确定为有效工作节点。
在一种可能的实现方式中,采用预设调度策略,从多个有效工作节点中,确定目标工作节点,包括:在多个有效工作节点中过滤掉不可调度工作节点,其中,不可调度工作节点上运行的任意一个可进行资源共享的物理GPU设备对应的空闲GPU资源量小于GPU共享资源申请量;利用GPU共享调度插件采用预设调度策略,从不可调度工作节点以外的其它有效工作节点中,确定目标工作节点。
如果一个有效工作节点上运行的任意一个可进行资源共享的物理GPU设备对应的空闲GPU资源量均小于GPU共享资源申请量,为了满足目标pod的GPU共享资源申请量,需要利用该有效工作节点上运行的多个物理GPU设备为其分配GPU资源,这显然不符合单个pod不想独占一个物理GPU设备的期望,因此,将这样的有效工作节点确定为不可调度工作节点。利用GPU共享调度插件采用预设调度策略,从不可调度工作节点以外的其它有效工作节点中,确定目标工作节点。
以上述图2为例,如图2所示,有效工作节点1上运行的可进行资源共享的物理GPU设备0和物理GPU设备1对应的空闲GPU资源量均小于GPU共享资源申请量,因此,将有效工作节点1确定为不可调度工作节点。此时,有效工作节点仅剩下工作节点2一个,因此,直接将有效工作节点2确定为目标工作节点。
在过滤掉不可调度工作节点的有效工作节点的个数为多个时,可以利用GPU共享调度插件采用预设调度策略,从不可调度工作节点以外的多个有效工作节点中,确定目标工作节点。采用预设调度策略确定目标工作节点的过程,可以参考相关技术中预设调度策略的工作机制,本公开对此不作具体限定。
在一种可能的实现方式中,该方法还包括:在将目标pod与目标工作节点进行绑定之后,对目标工作节点进行锁定。
在一种可能的实现方式中,该方法还包括:在为目标pod分配GPU共享资源之后,对目标工作节点进行解锁。
在将目标pod与目标工作节点进行绑定之后对目标工作节点进行锁定,并在为目标pod分配GPU共享资源之后对目标工作节点进行解锁,从而使得在为目标pod调度目标工作节点以及分配GPU共享资源的过程中,目标工作节点仅对应目标pod的工作负载,从而在Kubernetes集群中存在大量目标pod的工作负载时,不会出现GPU共享资源分配失败的问题。
图3示出根据本公开实施例的GPU共享的示意图。如图3所示,步骤1,注册。工作节点上的Kubelet在Kubernetes API服务(Kubernetes API Server)上注册工作节点的信息,进而基于GPU设备插件组件与工作节点中的Kubelet之间的通信,将可进行资源共享的物理GPU设备(GPU0和GPU1)添加至工作节点。
步骤2,上报节点资源。Kubelet基于Kubernetes API Server,将节点上运行的物理GPU设备的GPU资源注册到Kubernetes集群。
步骤3,过滤节点。在接收到目标pod向Kubernetes API Server发送的GPU共享资源申请后,基于GPU共享资源申请,过滤掉无效工作节点以及有效工作节点中的不可调度工作节点。
步骤4,修补GPU索引(Patch GPU index)。GPU共享调度组件从不可调度工作节点以外的其它有效工作节点中确定目标工作节点,并基于Patch命令对其GPU资源进行动态更新。
步骤5,绑定并锁定目标工作节点。将目标pod与目标工作节点进行绑定,并对目标工作节点进行锁定。
步骤6,查询GPU索引。查询目标工作节点上运行的可进行资源共享的物理GPU设备对应的GPU资源。
步骤7,分配。基于目标工作节点上运行的可进行资源共享的物理GPU设备对应的GPU资源,为目标pod分配GPU共享资源。具体的,为目标pod上的运行负载打上相应的共享GPU资源环境变量。
步骤8,解锁目标工作节点。
步骤9,创建容器。在目标pod中创建运行负载的容器,该容器运行负载时可以调用对应的GPU共享资源。
图3中所示GPU共享过程的具体过程可以参考上述相关实施例的具体描述,此处不作赘述。
在本公开实施例中,接收Kubernetes中的目标pod发送的GPU共享资源申请;基于GPU共享资源申请,采用预设调度策略,将目标pod与Kubernetes中的目标工作节点进行绑定,其中,目标工作节点上运行有可进行资源共享的物理GPU设备;基于目标工作节点,为目标pod分配GPU共享资源。相比于单个pod只能对整数个物理GPU设备进行资源申请,本公开实施例中单个pod可以在一个物理GPU设备上申请部分GPU共享资源,从而实现不同pod之间共享一个物理GPU设备,在Kubernetes中有效提高了GPU利用率。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了GPU共享装置、电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种GPU共享方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图4示出根据本公开实施例的一种GPU共享装置的框图。如图4所示,装置40包括:
接收模块41,用于接收Kubernetes中的目标pod发送的GPU共享资源申请;
节点绑定模块42,用于基于GPU共享资源申请,采用预设调度策略,将目标pod与Kubernetes中的目标工作节点进行绑定,其中,目标工作节点上运行有可进行资源共享的物理GPU设备;
资源分配模块43,用于基于目标工作节点,为目标pod分配GPU共享资源。
在一种可能的实现方式中,Kubernetes中包括多个工作节点,目标工作节点为多个工作节点中的一个;
装置40还包括:注册模块,用于:
针对任意一个工作节点,接收GPU设备插件组件发送的GPU资源注册信息,其中,GPU资源注册信息包括:物理GPU设备对应的可进行资源共享的GPU资源名;
基于GPU资源注册信息,将可进行资源共享的物理GPU设备添加至工作节点。
在一种可能的实现方式中,存在多个可进行资源共享的物理GPU设备;
装置40还包括:
更新模块,用于在多个可进行资源共享的物理GPU设备中出现异常不可用物理GPU设备时,接收GPU设备插件组件发送的GPU资源更新信息,其中,GPU资源更新信息为在GPU资源注册信息中,去除掉异常不可用物理GPU设备对应的可进行资源共享的GPU资源名之后的信息。
在一种可能的实现方式中,节点绑定模块42用于:
针对任意一个工作节点,基于工作节点上运行的可进行资源共享的物理GPU设备对应的GPU资源总量及其已用GPU资源量,确定工作节点对应的空闲GPU资源量;
基于GPU共享资源申请指示的GPU共享资源申请量,以及每个工作节点对应的空闲GPU资源量,确定多个有效工作节点,其中,有效工作节点对应的空闲GPU资源量大于或等于GPU共享资源申请量;
利用GPU共享调度插件采用预设调度策略,从多个有效工作节点中,确定目标工作节点;
将目标pod与目标工作节点进行绑定。
在一种可能的实现方式中,节点绑定模块42用于:
在多个有效工作节点中过滤掉不可调度工作节点,其中,不可调度工作节点上运行的任意一个可进行资源共享的物理GPU设备对应的空闲GPU资源量小于GPU共享资源申请量;
利用GPU共享调度插件采用预设调度策略,从不可调度工作节点以外的其它有效工作节点中,确定目标工作节点。
在一种可能的实现方式中,装置40还包括:
锁定模块,用于在将目标pod与目标工作节点进行绑定之后,对目标工作节点进行锁定。
在一种可能的实现方式中,装置40还包括:
解锁模块,用于在为目标pod分配GPU共享资源之后,对目标工作节点进行解锁。
在一种可能的实现方式中,GPU共享资源包括显存资源和计算资源。
该方法与计算机系统的内部结构存在特定技术关联,且能够解决如何提升硬件运算效率或执行效果的技术问题(包括减少数据存储量、减少数据传输量、提高硬件处理速度等),从而获得符合自然规律的计算机系统内部性能改进的技术效果。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
电子设备可以被提供为服务器或其它形态的设备。
图5示出根据本公开实施例的一种电子设备的框图。参照图5,电子设备1900可以被提供为一服务器或终端设备。参照图5,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows ServerTM),苹果公司推出的基于图形用户界面操作系统(Mac OS XTM),多用户多进程的计算机操作系统(UnixTM),自由和开放原代码的类Unix操作系统(LinuxTM),开放原代码的类Unix操作系统(FreeBSDTM)或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (11)

1.一种GPU共享方法,其特征在于,包括:
接收Kubernetes中的目标pod发送的GPU共享资源申请;
基于所述GPU共享资源申请,采用预设调度策略,将所述目标pod与所述Kubernetes中的目标工作节点进行绑定,其中,所述目标工作节点上运行有可进行资源共享的物理GPU设备;
基于所述目标工作节点,为所述目标pod分配GPU共享资源。
2.根据权利要求1所述的方法,其特征在于,所述Kubernetes中包括多个工作节点,所述目标工作节点为所述多个工作节点中的一个;
所述方法还包括:
针对任意一个工作节点,接收GPU设备插件组件发送的GPU资源注册信息,其中,所述GPU资源注册信息包括:物理GPU设备对应的可进行资源共享的GPU资源名;
基于所述GPU资源注册信息,将可进行资源共享的物理GPU设备添加至所述工作节点。
3.根据权利要求2所述的方法,其特征在于,存在多个可进行资源共享的物理GPU设备;
所述方法还包括:
在多个可进行资源共享的物理GPU设备中出现异常不可用物理GPU设备时,接收所述GPU设备插件组件发送的GPU资源更新信息,其中,所述GPU资源更新信息为在所述GPU资源注册信息中,去除掉所述异常不可用物理GPU设备对应的可进行资源共享的GPU资源名之后的信息。
4.根据权利要求2所述的方法,其特征在于,所述基于所述GPU共享资源申请,采用预设调度策略,将所述目标pod与所述Kubernetes中的目标工作节点进行绑定,包括:
针对任意一个所述工作节点,基于所述工作节点上运行的可进行资源共享的物理GPU设备对应的GPU资源总量及其已用GPU资源量,确定所述工作节点对应的空闲GPU资源量;
基于所述GPU共享资源申请指示的GPU共享资源申请量,以及每个所述工作节点对应的空闲GPU资源量,确定多个有效工作节点,其中,所述有效工作节点对应的空闲GPU资源量大于或等于所述GPU共享资源申请量;
利用GPU共享调度插件采用所述预设调度策略,从所述多个有效工作节点中,确定所述目标工作节点;
将所述目标pod与所述目标工作节点进行绑定。
5.根据权利要求4所述的方法,其特征在于,所述采用预设调度策略,从所述多个有效工作节点中,确定所述目标工作节点,包括:
在所述多个有效工作节点中过滤掉不可调度工作节点,其中,所述不可调度工作节点上运行的任意一个可进行资源共享的物理GPU设备对应的空闲GPU资源量小于所述GPU共享资源申请量;
利用所述GPU共享调度插件采用所述预设调度策略,从所述不可调度工作节点以外的其它有效工作节点中,确定所述目标工作节点。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
在将所述目标pod与所述目标工作节点进行绑定之后,对所述目标工作节点进行锁定。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在为所述目标pod分配所述GPU共享资源之后,对所述目标工作节点进行解锁。
8.根据权利要求1所述的方法,其特征在于,所述GPU共享资源包括显存资源和计算资源。
9.一种GPU共享装置,其特征在于,包括:
接收模块,用于接收Kubernetes中的目标pod发送的GPU共享资源申请;
节点绑定模块,用于基于所述GPU共享资源申请,采用预设调度策略,将所述目标pod与所述Kubernetes中的目标工作节点进行绑定,其中,所述目标工作节点上运行有可进行资源共享的物理GPU设备;
资源分配模块,用于基于所述目标工作节点,为所述目标pod分配GPU共享资源。
10.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1至8中任意一项所述的方法。
11.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至8中任意一项所述的方法。
CN202211688258.6A 2022-12-28 2022-12-28 一种gpu共享方法及装置、电子设备和存储介质 Pending CN115658332A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211688258.6A CN115658332A (zh) 2022-12-28 2022-12-28 一种gpu共享方法及装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211688258.6A CN115658332A (zh) 2022-12-28 2022-12-28 一种gpu共享方法及装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN115658332A true CN115658332A (zh) 2023-01-31

Family

ID=85023536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211688258.6A Pending CN115658332A (zh) 2022-12-28 2022-12-28 一种gpu共享方法及装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN115658332A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117421123A (zh) * 2023-11-03 2024-01-19 摩尔线程智能科技(上海)有限责任公司 一种gpu资源调整方法及系统、电子设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108769254A (zh) * 2018-06-25 2018-11-06 星环信息科技(上海)有限公司 基于抢占式调度的资源共享使用方法、系统及设备
CN110764901A (zh) * 2019-09-17 2020-02-07 阿里巴巴集团控股有限公司 基于gpu资源的数据处理方法、电子设备及系统
CN111475303A (zh) * 2020-04-08 2020-07-31 苏州浪潮智能科技有限公司 一种gpu共享调度、单机多卡方法、系统及装置
CN111506404A (zh) * 2020-04-07 2020-08-07 上海德拓信息技术股份有限公司 一种基于Kubernetes的共享GPU调度方法
CN111538586A (zh) * 2020-01-23 2020-08-14 中国银联股份有限公司 集群gpu资源管理调度系统、方法以及计算机可读存储介质
US20220283869A1 (en) * 2019-11-28 2022-09-08 Zte Corporation Resource Scheduling Method, Apparatus and System

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108769254A (zh) * 2018-06-25 2018-11-06 星环信息科技(上海)有限公司 基于抢占式调度的资源共享使用方法、系统及设备
CN110764901A (zh) * 2019-09-17 2020-02-07 阿里巴巴集团控股有限公司 基于gpu资源的数据处理方法、电子设备及系统
US20220283869A1 (en) * 2019-11-28 2022-09-08 Zte Corporation Resource Scheduling Method, Apparatus and System
CN111538586A (zh) * 2020-01-23 2020-08-14 中国银联股份有限公司 集群gpu资源管理调度系统、方法以及计算机可读存储介质
CN111506404A (zh) * 2020-04-07 2020-08-07 上海德拓信息技术股份有限公司 一种基于Kubernetes的共享GPU调度方法
CN111475303A (zh) * 2020-04-08 2020-07-31 苏州浪潮智能科技有限公司 一种gpu共享调度、单机多卡方法、系统及装置

Cited By (2)

* Cited by examiner, † Cited by third party
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
CN111966500B (zh) 资源调度方法、装置、电子设备及存储介质
EP3761170A1 (en) Virtual machine creation method and apparatus
US9602335B2 (en) Independent network interfaces for virtual network environments
CN102571698B (zh) 一种虚拟机访问权限的控制方法、系统及装置
CN113641457B (zh) 容器创建方法、装置、设备、介质及程序产品
US20100293269A1 (en) Inventory management in a computing-on-demand system
CN109218356B (zh) 管理服务器上有状态应用的方法和设备
CN111722933A (zh) 分布式进程之间的死锁解决
CN115658332A (zh) 一种gpu共享方法及装置、电子设备和存储介质
CN111294220B (zh) 基于nginx的网络隔离配置方法和装置
CN116436968A (zh) 一种服务网格通信方法、系统、装置以及存储介质
CN107682573B (zh) 高并发外呼方法、系统、设备及存储介质
CN115150268A (zh) Kubernetes集群的网络配置方法、装置、及电子设备
CN107562510B (zh) 一种应用实例的管理方法及管理设备
CN116032614A (zh) 容器网络微隔离方法、装置、设备和介质
CN113904871B (zh) 网络切片的接入方法、pcf实体、终端和通信系统
CN113220432B (zh) 多云互联方法、装置、设备、存储介质及产品
CN115618409A (zh) 数据库云服务生成方法、装置、设备及可读存储介质
CN115442129A (zh) 一种管理集群访问权限的方法、装置和系统
CN115185637A (zh) PaaS组件管理端和虚拟机代理的通信方法及装置
CN113904859A (zh) 安全组源组信息管理方法、装置、存储介质及电子设备
CN115826845A (zh) 存储资源的分配方法和装置、存储介质、电子装置
CN112616153A (zh) 容器处理方法、装置、计算机设备和存储介质
US9184996B2 (en) Thin client system, management server, client environment management method and program
US10824476B1 (en) Multi-homed computing instance processes

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