多个GPU动态分配方法及系统技术方案

技术编号:27741124 阅读:15 留言:0更新日期:2021-03-19 13:34
本发明专利技术属于GPU虚拟化领域,具体涉及一种多个GPU动态分配方法及系统,通过虚拟GPU设备插件将多个GPU中每一块的显存资源抽象为预设份额,从而将物理GPU进行虚拟化,并对虚拟化后的每GPU进行节点注释,从而能根据使用需求对有节点注释的容器完成对GPU的分配,从而可帮助用户在有限数量的物理GPU背景下,满足多人独占GPU的需求,使得资源充分利用并有效降低硬件投入成本。

【技术实现步骤摘要】
多个GPU动态分配方法及系统
本专利技术涉及GPU虚拟化领域,具体涉及一种多个GPU动态分配方法。
技术介绍
随着近几年云计算、机器学习人工智能的兴起,GPU以成为必不可少的加速硬件,同时kubernetes+docker架构的普及,docker中使用GPU普遍存在于各个解决方案中。现有技术中,GPU挂载到容器中使用,是独占的模式,无法让用户共享使用同一块GPU,即便是NVIDIA提供的虚拟GPU(vGPU)解决方案,也局限于借助虚拟机实现,无法与kubernetes融合在一起。上述问题是目前亟待解决的。
技术实现思路
本专利技术所要解决的技术问题是提供一种多个GPU动态分配方法及系统。本专利技术解决其技术问题所采用的技术方案是:提供一种多个GPU动态分配方法,包括:依据虚拟GPU设备插件将多个GPU中每一块的显存资源抽象为预设份额,从而将物理GPU进行虚拟化;获取过滤条件以及绑定条件;依据过滤条件,过滤出满足调度需求的节点;依据绑定条件将对应的容器绑定到过滤后的node对应的虚拟化GPU上,并进行节点注释;依据设备插件对具有节点注释的容器完成对多个GPU的分配。在其中一个实施例中,所述依据设备插件对具有节点注释的容器完成对多个GPU的分配的方法包括:获取当前节点上所有处于等待状态的节点;过滤出等待状态的节点中有申请资源的节点;过滤出等待状态的节点中已经被调度程序扩展器进行绑定过的节点;过滤出还未被分配的节点;将未分配的节点根据绑定(Bind)时间进行升序排序;从未分配的节点中遍历挑选第一个要申请的资源和此次分配(Allocate)传入相等的节点,从而完成对GPU的分配。在其中一个实施例中,所述从未分配的节点中遍历挑选第一个要申请的资源和此次分配(Allocate)传入相等的节点,从而完成对GPU的分配的方法还包括:通过NvidiagRPC服务模块的注册(Register)功能,连接kubelet并向kubelet注册该插件;依据NvidiagRPC服务模块提供启动和停止功能,初始化并启动gRPC服务;使用分配(Allocate)功能,调用GPU调度程序分配资源并将分配结果设置到容器中,从而完成对GPU的分配。在其中一个实施例中,在所述依据设备插件对具有节点注释的容器完成对多个GPU的分配之后还包括:在对应的具有对具有节点注释的容器中的虚拟化GPU使用完成后,通过NvidiagRPC服务模块的停止功能,停止gRPC服务并释放相应资源。在其中一个实施例中,多个GPU动态分配方法还包括:监控虚拟GPU的使用状况;依据使用状况清理已经不在存活的虚拟GPU的配置。在其中一个实施例中,所述多个GPU动态分配方法还包括对GPU的显存资源使用进行模式判定,依据模式判定结果对GPU的显存资源分配结果进行核验。本专利技术还提供了一种多个GPU动态分配系统,包括:资源定义模块,适于依据虚拟GPU设备插件将多个GPU中每一块的显存资源抽象为预设份额,从而将物理GPU进行虚拟化;获取模块,适于获取过滤条件以及绑定条件;过滤模块,适于依据过滤条件,过滤出满足调度需求的节点;绑定模块,适于依据绑定条件将对应的容器绑定到过滤后的node对应的虚拟化GPU上,并进行节点注释;分配模块,适于依据设备插件对具有节点注释的容器完成对多个GPU的分配。本专利技术还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有一个或一个以上的指令,所述一个或一个以上的指令内的权限管理装置的处理器执行时实现如上述的多个GPU动态分配方法。本专利技术还提供了一种电子设备,包括存储器和处理器;所述存储器中存储有至少一条程序指令;所述处理器,通过加载并执行所述至少一条程序指令以实现如上述的多个GPU动态分配方法。本专利技术的有益效果是:本专利技术提供了一种多个GPU动态分配方法及系统,通过虚拟GPU设备插件将多个GPU中每一块的显存资源抽象为预设份额,从而将物理GPU进行虚拟化,并对虚拟化后的每GPU进行节点注释,从而能根据使用需求对有节点注释的容器完成对GPU的分配,从而可帮助用户在有限数量的物理GPU背景下,满足多人独占GPU的需求,使得资源充分利用并有效降低硬件投入成本。附图说明下面结合附图和实施例对本专利技术作进一步说明。图1是本专利技术所提供的多个GPU动态分配方法的流程图。图2是本专利技术所提供的多个GPU动态分配方法的原理框图。图3是本专利技术所提供的电子设备的部分原理框图。具体实施方式现在结合附图对本专利技术作详细的说明。此图为简化的示意图,仅以示意方式说明本专利技术的基本结构,因此其仅显示与本专利技术有关的构成。请参阅图1,图1提供了一种多个GPU动态分配方法。多个GPU动态分配方法通过虚拟GPU设备插件将多个GPU中每一块的显存资源抽象为预设份额,从而将物理GPU进行虚拟化,并对虚拟化后的每GPU进行节点注释,从而能根据使用需求对有节点注释的容器完成对GPU的分配,从而可帮助用户在有限数量的物理GPU背景下,满足多人独占GPU的需求,使得资源充分利用并有效降低硬件投入成本。具体来说,多个GPU动态分配方法包括以下步骤:S110:依据虚拟GPU设备插件将多个GPU中每一块的显存资源抽象为预设份额,从而将物理GPU进行虚拟化。其中,预设份额为100,以百分比的形式对每一块的显存资源进行划分。具体来说,虚拟GPU设备插件(vgpu-device-plugin)是基于Kubernetes提供的设备插件(DevicePlugin)机制实现的自定义插件,该插件实现的目的是为了支持GPU资源细粒度划分和调度功能。该插件主要分为两部分:其中一部分为对接Kubernetes的设备插件(DevicePlugin)机制实现,另一部分则是进行虚拟GPU(vGPU)管理的虚拟GPU管理程序(vGPUManager)。定义如下:最大可用(limits):platform.ai/vgpu-memory:30默认分配(requests):platform.ai/vgpu-memory:30其中,30表示使用一块物理GPU的30%显存,具体值根据使用需求进行设定。S120:获取过滤条件以及绑定条件。具体来说,过滤条件以及绑定条件是自定义输入,用于筛选出符合条件的GPU。S130:依据过滤条件,过滤出满足调度需求的节点。S140:依据绑定条件将对应的容器绑定到过滤后的node对应的虚拟化GPU上,并进行节点注释。S150:依据设备插件对具有节点注释的容器完成对多个GPU的分配。具体来说,步骤S150包括以下步骤:S151:获取当前节点上所有处于等待状态的节点;S152:过滤出等待状态本文档来自技高网...

【技术保护点】
1.一种多个GPU动态分配方法,其特征在于,包括:/n依据虚拟GPU设备插件将多个GPU中每一块的显存资源抽象为预设份额,从而将物理GPU进行虚拟化;/n获取过滤条件以及绑定条件;/n依据过滤条件,过滤出满足调度需求的节点;/n依据绑定条件将对应的容器绑定到过滤后的node对应的虚拟化GPU上,并进行节点注释;/n依据设备插件对具有节点注释的容器完成对多个GPU的分配。/n

【技术特征摘要】
1.一种多个GPU动态分配方法,其特征在于,包括:
依据虚拟GPU设备插件将多个GPU中每一块的显存资源抽象为预设份额,从而将物理GPU进行虚拟化;
获取过滤条件以及绑定条件;
依据过滤条件,过滤出满足调度需求的节点;
依据绑定条件将对应的容器绑定到过滤后的node对应的虚拟化GPU上,并进行节点注释;
依据设备插件对具有节点注释的容器完成对多个GPU的分配。


2.如权利要求1所述的多个GPU动态分配方法,其特征在于,所述依据设备插件对具有节点注释的容器完成对多个GPU的分配的方法包括:
获取当前节点上所有处于等待状态的节点;
过滤出等待状态的节点中有申请资源的节点;
过滤出等待状态的节点中已经被调度程序扩展器进行绑定过的节点;
过滤出还未被分配的节点;
将未分配的节点根据绑定时间进行升序排序;
从未分配的节点中遍历挑选第一个要申请的资源和此次分配传入相等的节点,从而完成对GPU的分配。


3.如权利要求2所述的多个GPU动态分配方法,其特征在于,所述从未分配的节点中遍历挑选第一个要申请的资源和此次分配传入相等的节点,从而完成对GPU的分配的方法包括:
通过NvidiagRPC服务模块的注册功能,连接kubelet并向kubelet注册该插件;
依据NvidiagRPC服务模块提供启动和停止功能,初始化并启动gRPC服务;
使用分配功能,调用GPU调度程序分配资源并将分配结果设置到容器中,从而完成对GPU的分配。


4.如权利要求3所述的多个GPU动态分配方法,其特征在于,在所述依据设备插件对具有节点注释的容器完成对多个GPU的分配之...

【专利技术属性】
技术研发人员:蔡飞顾海林
申请(专利权)人:南京飞灵智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1