CN115495215A - 一种gpu共享方法、装置、设备及介质 - Google Patents

一种gpu共享方法、装置、设备及介质 Download PDF

Info

Publication number
CN115495215A
CN115495215A CN202211164060.8A CN202211164060A CN115495215A CN 115495215 A CN115495215 A CN 115495215A CN 202211164060 A CN202211164060 A CN 202211164060A CN 115495215 A CN115495215 A CN 115495215A
Authority
CN
China
Prior art keywords
gpu
sharing
pod
mode
information
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
CN202211164060.8A
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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202211164060.8A priority Critical patent/CN115495215A/zh
Publication of CN115495215A publication Critical patent/CN115495215A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种GPU共享方法、装置、设备及介质,涉及计算机技术领域,包括:获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;基于所述服务创建消息确定出GPU运行方式和GPU共享方式;根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。通过本申请上述的技术方案,能够实现将多个Pod调度到同一个GPU上,并且同一个GPU上可以有多个Pod并行执行,提高GPU利用率。

Description

一种GPU共享方法、装置、设备及介质
技术领域
本发明涉及计算机技术领域,特别涉及一种GPU共享方法、装置、设备及介质。
背景技术
在机器学习和深度学习中使用GPU(Graphics Processing Unit,图形处理器)提供算力已经非常普遍,典型的场景是在数据中心中,依托Kubernetes(可移植的、可扩展的开源平台)作为容器编排环境,构建出一个云环境集群来部署机器学习和深度学习服务,集群中的节点(服务器)分为不同的类型,配备有GPU的节点称为GPU节点,其他节点称为CPU节点,GPU节点负责具体的机器学习和深度学习任务,CPU节点负责集群管理、服务调度等内容。然而,由于单个GPU提供的显存、寄存器、线程等资源是很充足的,通常一个KubernetesPod并不能完全利用单个GPU的显存、寄存器、线程等资源,所以需要一种技术来实现将多个服务的多个Pod调度到同一个GPU上,从而达到GPU高利用率的目的。另外,在同一个GPU上的多个Pod(可以在Kubernetes中创建和管理的、最小的可部署的计算单元)的运行模式可以分为两种,第一种运行模式是分时调度,即同一时间只有一个Pod在进行计算,这种模式有一个缺点就是如果一个Pod不能利用GPU全部的计算核心,那么该GPU将处于一种低负载的状态,这样就会造成资源浪费;另一种运行模式是并行运行模式,即多个Pod同时进行计算,从而使GPU的核心得到更充分的利用。现有技术中,rCUDA通过劫持调用来做资源隔离,同时支持GPU资源池化。池化即是使用远程访问的形式使用GPU资源,任务使用本机的CPU和另一台机器的GPU,两者通过网络进行通信。也是因为这个原因,共享模块需要将CPU和GPU的调用分开,混合编译的程序会插入一些没有开源的CUDA API,因此需要使用作者提供的CUDA(是一种并行计算平台和应用程序编程接口(API)),分别编译程序的CPU和GPU部分。如果使用该产品,用户需要重新编译,对用户有一定的影响。Mig(多实例GPU)是英伟达官方发布的GPU共享方案,英伟达在底层硬件上对资源进行了隔离,可以完全地做到计算/通信/配置/错误的隔离。它将计算核心和显存均匀地分给GPU实例,最多支持将计算核心分7份、显存分为8份。Mig最多只能将一个GPU的计算核心分为7分、显存分为8份,不能进行更细粒度的划分。而且只有较新型号的GPU才支持Mig。MPS(多进程服务)是英伟达官方发布的GPU共享方案,它利用GPU上的Hyper Q能力,允许多个服务共享同一GPU上下文,允许不同服务的Pod的计算和数据复制操作在同一GPU上并发执行,以实现最大化GPU利用率。由于MPS(MasterProduction Schedule,主生产计划)将多个服务的Pod放在同一个GPU上下文中执行,而一旦有一个服务的Pod执行异常,此异常将会被传播到另一服务的Pod中,所以MPS无法提供安全的隔离性。
由上可见,在GPU共享的过程中,如何实现将多个Pod调度到同一个GPU上,并且同一个GPU上可以有多个Pod并行执行,提高GPU利用率是本领域有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种GPU共享方法、装置、设备及介质,能够实现将多个Pod调度到同一个GPU上,并且同一个GPU上可以有多个Pod并行执行,提高GPU利用率。其具体方案如下:
第一方面,本申请公开了一种GPU共享方法,包括:
获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;
基于所述服务创建消息确定出GPU运行方式和GPU共享方式;
根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
可选的,所述获取服务创建信息,包括:
检测本地的服务创建是否被触发;
若本地的服务创建被触发,则获取服务创建信息。
可选的,所述基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息,包括:
基于所述服务创建信息中的副本数量创建与所述副本数量相同的Pod;
基于所述服务创建信息中的注解信息为所述Pod添加环境变量信息。
可选的,所述基于所述服务创建消息确定出GPU运行方式和GPU共享方式,包括:
基于所述服务创建消息中的所述注解信息确定出GPU运行方式;其中,所述GPU运行方式包括并行运行模式和分时调度模式;
基于所述服务创建消息中的所述注解信息确定出GPU共享方式;其中,所述GPU共享方式包括服务独占GPU和服务共享GPU。
可选的,所述根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,包括:
若所述GPU运行方式为并行运行模式,则判断所述注解信息中的GPU共享值与预先获取的服务共享值是否相同,若所述注解信息中的GPU共享值与预先获取的服务共享值相同,则确定出所述GPU共享方式为服务独占GPU,然后从所有的GPU节点中筛选出GPU节点标签值为true,并且所述GPU共享方式为服务独占GPU的GPU节点作为目标GPU节点;
若所述GPU运行方式为分时调度模式,则确定出所述GPU共享方式为服务共享GPU,然后从所有的GPU节点中筛选出标签值为false,并且所述GPU共享方式为服务共享GPU的GPU节点作为目标GPU节点。
可选的,所述将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算,包括:
将所述Pod中的所述环境变量信息发送至所述目标GPU节点中的CUDA,以便所述目标GPU节点中的所述CUDA基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
可选的,所述目标GPU节点中的所述CUDA基于所述GPU运行方式对所述环境变量信息进行GPU共享计算,包括:
若所述GPU运行方式为并行运行模式,则所述CUDA利用预设的计算函数和显存申请释放函数对所述环境变量信息进行GPU共享计算;
若所述GPU运行方式为分时调度模式,则所述CUDA从服务创建信息中确定出时间占比信息,并利用所述计算函数对所述时间占比信息进行GPU共享计算。
第二方面,本申请公开了一种GPU共享装置,包括:
Pod创建模块,用于获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;
GPU运行方式确定模块,用于基于所述服务创建消息确定出GPU运行方式和GPU共享方式;
GPU共享计算模块,用于根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的GPU共享方法。
第四方面,本申请公开了一种计算机存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的GPU共享方法的步骤。
可见,本申请提供了一种GPU共享方法,包括获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;基于所述服务创建消息确定出GPU运行方式和GPU共享方式;根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。本申请基于CUDA劫持、MPS技术,能够实现将多个Pod调度到同一个GPU上,从而达到高GPU利用率的目的,并且同一个GPU上的多个Pod的显存是隔离的,用户可以选择服务在同一个GPU上的多个Pod并行执行、充分利用GPU的计算核心,或者多个Pod分时调度、交替执行,还可以选择服务独占GPU,或者和其它服务共享GPU。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种GPU共享方法流程图;
图2为本申请公开的一种GPU共享方法流程图;
图3为本申请公开的一种GPU共享方法具体架构图;
图4为本申请公开的一种CUDA劫持流程图;
图5为本申请公开的一种GPU共享装置结构示意图;
图6为本申请提供的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在机器学习和深度学习中使用GPU(Graphics Processing Unit,图形处理器)提供算力已经非常普遍,典型的场景是在数据中心中,依托Kubernetes(可移植的、可扩展的开源平台)作为容器编排环境,构建出一个云环境集群来部署机器学习和深度学习服务,集群中的节点(服务器)分为不同的类型,配备有GPU的节点称为GPU节点,其他节点称为CPU节点,GPU节点负责具体的机器学习和深度学习任务,CPU节点负责集群管理、服务调度等内容。然而,由于单个GPU提供的显存、寄存器、线程等资源是很充足的,通常一个KubernetesPod并不能完全利用单个GPU的显存、寄存器、线程等资源,所以需要一种技术来实现将多个服务的多个Pod调度到同一个GPU上,从而达到GPU高利用率的目的。另外,在同一个GPU上的多个Pod(可以在Kubernetes中创建和管理的、最小的可部署的计算单元)的运行模式可以分为两种,第一种运行模式是分时调度模式,即同一时间只有一个Pod在进行计算,这种模式有一个缺点就是如果一个Pod不能利用GPU全部的计算核心,那么该GPU将处于一种低负载的状态,这样就会造成资源浪费;另一种运行模式是并行运行模式,即多个Pod同时进行计算,从而使GPU的核心得到更充分的利用。现有技术中,rCUDA通过劫持调用来做资源隔离,同时支持GPU资源池化。池化即是使用远程访问的形式使用GPU资源,任务使用本机的CPU和另一台机器的GPU,两者通过网络进行通信。也是因为这个原因,共享模块需要将CPU和GPU的调用分开,混合编译的程序会插入一些没有开源的CUDA API,因此需要使用作者提供的CUDA(是一种并行计算平台和应用程序编程接口(API)),分别编译程序的CPU和GPU部分。如果使用该产品,用户需要重新编译,对用户有一定的影响。Mig(多实例GPU)是英伟达官方发布的GPU共享方案,英伟达在底层硬件上对资源进行了隔离,可以完全地做到计算/通信/配置/错误的隔离。它将计算核心和显存均匀地分给GPU实例,最多支持将计算核心分7份、显存分为8份。Mig最多只能将一个GPU的计算核心分为7分、显存分为8份,不能进行更细粒度的划分。而且只有较新型号的GPU才支持Mig。MPS(多进程服务)是英伟达官方发布的GPU共享方案,它利用GPU上的Hyper Q能力,允许多个服务共享同一GPU上下文,允许不同服务的Pod的计算和数据复制操作在同一GPU上并发执行,以实现最大化GPU利用率。由于MPS(Master Production Schedule,主生产计划)将多个服务的Pod放在同一个GPU上下文中执行,而一旦有一个服务的Pod执行异常,此异常将会被传播到另一服务的Pod中,所以MPS无法提供安全的隔离性。由上可见,在GPU共享的过程中,如何实现将多个Pod调度到同一个GPU上,并且同一个GPU上可以有多个Pod并行执行,提高GPU利用率是本领域有待解决的问题。本申请基于CUDA劫持、MPS技术,能够实现将多个Pod调度到同一个GPU上,从而达到高GPU利用率的目的,并且同一个GPU上的多个Pod的显存是隔离的,用户可以选择服务在同一个GPU上的多个Pod并行执行、充分利用GPU的计算核心,或者多个Pod分时调度、交替执行,还可以选择服务独占GPU,或者和其它服务共享GPU。
参见图1所示,本发明实施例公开了一种GPU共享方法,具体可以包括:
步骤S11:获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息。
本实施例中,检测本地的服务创建是否被触发,若本地的服务创建被触发,则获取服务创建信息,然后基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息。
步骤S12:基于所述服务创建消息确定出GPU运行方式和GPU共享方式。
步骤S13:根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
本实施例中,在根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点之后,将所述Pod中的所述环境变量信息发送至所述目标GPU节点中的CUDA,以便所述目标GPU节点中的所述CUDA基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
具体的,若所述GPU运行方式为并行运行模式,则所述CUDA利用预设的计算函数和显存申请释放函数对所述环境变量信息进行GPU共享计算,若所述GPU运行方式为分时调度模式,则所述CUDA从服务创建信息中确定出时间占比信息,并利用所述计算函数对所述时间占比信息进行GPU共享计算。
本实施例中,获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;基于所述服务创建消息确定出GPU运行方式和GPU共享方式;根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。本申请基于CUDA劫持、MPS技术,能够实现将多个Pod调度到同一个GPU上,从而达到高GPU利用率的目的,并且同一个GPU上的多个Pod的显存是隔离的,用户可以选择服务在同一个GPU上的多个Pod并行执行、充分利用GPU的计算核心,或者多个Pod分时调度、交替执行,还可以选择服务独占GPU,或者和其它服务共享GPU。
参见图2所示,本发明实施例公开了一种GPU共享方法,具体可以包括:
步骤S21:获取服务创建信息,基于所述服务创建信息中的副本数量创建与所述副本数量相同的Pod,基于所述服务创建信息中的注解信息为所述Pod添加环境变量信息。
本实施例中,在检测到集群中有服务被创建时,按照服务yaml文件中的副本数创建相应数量的Pod和其他一些和网络相关的资源,在创建Pod的时候,根据服务yaml中的一个注解(gpusharing/mps)来决定是否向Pod的容器内注入环境变量“MPS”,而“MPS”环境变量决定了将此服务的Pod调度到并行运行模式的GPU节点的某个GPU上,或者是调度到分时调度模式的GPU节点的某个GPU上,其中,所述GPU运行方式包括并行运行模式和分时调度模式。
步骤S22:基于所述服务创建消息中的所述注解信息确定出GPU运行方式;其中,所述GPU运行方式包括并行运行模式和分时调度模式,基于所述服务创建消息中的所述注解信息确定出GPU共享方式;其中,所述GPU共享方式包括服务独占GPU和服务共享GPU。
具体的,若所述GPU运行方式为并行运行模式,则判断所述注解信息中的GPU共享值与预先获取的服务共享值是否相同,若所述注解信息中的GPU共享值与预先获取的服务共享值相同,则确定出所述GPU共享方式为服务独占GPU,然后从所有的GPU节点中筛选出GPU节点标签值为true,并且所述GPU共享方式为服务独占GPU的GPU节点作为目标GPU节点;若所述GPU运行方式为分时调度模式,则确定出所述GPU共享方式为服务共享GPU,然后从所有的GPU节点中筛选出标签值为false,并且所述GPU共享方式为服务共享GPU的GPU节点作为目标GPU节点。
步骤S23:根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
本申请的GPU共享系统(GPUSharing)架构如图3所示,主节点:Kubernetes集群的管理节点,包含控制器模块和调度器模块;控制器:为用户创建的服务创建对应的Pod以及其它资源,并且向Pod的容器注入以下环境变量:MPS,标识服务是否采用MPS;调度器:把服务对应的Pod调度到某个GPU上,并且创建对应的vGPU;GPU节点:Kubernetes集群中安装了GPU的计算节点,此类节点上运行着一个节点代理,节点代理又包含以下子模块:配置客户端:负责向调度器注册本节点的GPU资源,同时将GPU上面运行的Pod列表信息写入文件:劫持调度器:读取配置客户端写入的Pod列表信息,完成以下功能:在分时调度模式下,负责分配时间片给Pod、并且限制显存分配;在并行运行模式下,负责限制显存分配。调度器在调度一个新创建的Pod时,会考虑以下2个条件:根据此Pod的注解(gpusharing/mps)来决定将此Pod调度到并行运行模式的GPU节点的某个GPU上、或者是调度到分时调度的GPU节点的某个GPU上;据此Pod的注解(gpusharing/group)来决定此Pod的服务独占GPU还是与其它服务共享同一个GPU。如果服务的yaml文件中没有设置这一注解,那么此服务将与其他服务共享同一个GPU;如果设置了这一注解,那么只有此注解的值相同的服务才会共享同一GPU;由以上解释可知,如果我们想让一个服务独占一个GPU,那么只需要让他的“gpusharing/group”注解是唯一的就行了(独占的含义是:假如服务1有2个Pod,记为Pod 1和Pod 2,已知Pod 1被调度到GPU节点1上面,那么GPU节点1上面就只能有服务1的Pod,其他服务的Pod不能被调度到GPU节点1上,也就是说,以后只有Pod 2有可能被调度到GPU节点1上,GPU节点2同理)。只有以上2个条件都满足的GPU节点才会成为目标GPU节点。集群中存在2种GPU节点,第一种是开启MPS的节点,这种节点会有一个标签(gpusharing/mps),标签的值为“true”,这种节点的GPU运行在并行运行模式;第二种是关闭MPS的节点,这种节点没有“gpusharing/mps”标签,或者此标签的值为“false”。劫持调度器:如果此GPU节点运行在并行运行模式下,那么劫持调度器只会负责显存的分配和限制;如果此GPU节点运行在分时调度模式下,那么劫持调度器负责分配时间片给Pod、并且限制显存分配。本申请基于CUDA劫持、MPS技术,能够实现将多个Pod调度到同一个GPU上,从而达到高GPU利用率的目的,并且同一个GPU上的多个Pod的显存是隔离的,用户可以选择服务在同一个GPU上的多个Pod并行执行、充分利用GPU的计算核心,或者多个Pod分时调度、交替执行,还可以选择服务独占GPU,或者和其它服务共享GPU。
本申请Pod的CUDA劫持流程如图4所示,判断服务创建信息中的注解信息中是否有环境变量信息MPS,若服务创建信息中的注解信息中有环境变量信息MPS,则判断所述注解信息中的GPU共享值与预先获取的服务共享值是否相同,若所述注解信息中的GPU共享值与预先获取的服务共享值相同,则确定出所述GPU共享方式为服务独占GPU,然后从所有的GPU节点中筛选出GPU节点标签值为true,并且所述GPU共享方式为服务独占GPU的GPU节点作为目标GPU节点;目标GPU节点的GPU运行方式为并行运行模式,将所述Pod中的所述环境变量信息发送至所述目标GPU节点中的CUDA,以便所述CUDA利用预设的计算函数和显存申请释放函数对所述环境变量信息进行GPU共享计算,若服务创建信息中的注解信息中没有环境变量信息MPS,则所述GPU运行方式为分时调度模式,则所述GPU运行方式为分时调度模式,则确定出所述GPU共享方式为服务共享GPU,然后从所有的GPU节点中筛选出标签值为false,并且所述GPU共享方式为服务共享GPU的GPU节点作为目标GPU节点,所述CUDA从所述环境变量信息中确定出时间占比信息,并利用所述显存申请释放函数对所述时间占比信息进行GPU共享计算。此外,本发明除了可以用在英伟达GPU上,还可以用在其他生态完善的异构芯片上。
本实施例中,获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;基于所述服务创建消息确定出GPU运行方式和GPU共享方式;根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。本申请基于CUDA劫持、MPS技术,能够实现将多个Pod调度到同一个GPU上,从而达到高GPU利用率的目的,并且同一个GPU上的多个Pod的显存是隔离的,用户可以选择服务在同一个GPU上的多个Pod并行执行、充分利用GPU的计算核心,或者多个Pod分时调度、交替执行,还可以选择服务独占GPU,或者和其它服务共享GPU。
参见图5所示,本发明实施例公开了一种GPU共享装置,具体可以包括:
Pod创建模块11,用于获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;
GPU运行方式确定模块12,用于基于所述服务创建消息确定出GPU运行方式和GPU共享方式;
GPU共享计算模块13,用于根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
本实施例中,获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;基于所述服务创建消息确定出GPU运行方式和GPU共享方式;根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。本申请基于CUDA劫持、MPS技术,能够实现将多个Pod调度到同一个GPU上,从而达到高GPU利用率的目的,并且同一个GPU上的多个Pod的显存是隔离的,用户可以选择服务在同一个GPU上的多个Pod并行执行、充分利用GPU的计算核心,或者多个Pod分时调度、交替执行,还可以选择服务独占GPU,或者和其它服务共享GPU。
本申请还包含一个架构图,主要模块介绍如下:主节点:Kubernetes集群的管理节点,包含控制器模块和调度器模块;控制器:为用户创建的服务创建对应的Pod以及其它资源,并且向Pod的容器注入以下环境变量:MPS,标识服务是否采用MPS;调度器:把服务对应的Pod调度到某个GPU上,并且创建对应的vGPU;GPU节点:Kubernetes集群中安装了GPU的计算节点,此类节点上运行着一个节点代理,节点代理又包含以下子模块:配置客户端:负责向调度器注册本节点的GPU资源,同时将GPU上面运行的Pod列表信息写入文件:劫持调度器:读取配置客户端写入的Pod列表信息,完成以下功能:在分时调度模式下,负责分配时间片给Pod、并且限制显存分配;在并行运行模式下,负责限制显存分配。调度器在调度一个新创建的Pod时,会考虑以下2个条件:根据此Pod的注解(gpusharing/mps)来决定将此Pod调度到并行运行模式的GPU节点的某个GPU上、或者是调度到分时调度的GPU节点的某个GPU上;据此Pod的注解(gpusharing/group)来决定此Pod的服务独占GPU还是与其它服务共享同一个GPU。如果服务的yaml文件中没有设置这一注解,那么此服务将与其他服务共享同一个GPU;如果设置了这一注解,那么只有此注解的值相同的服务才会共享同一GPU;由以上解释可知,如果我们想让一个服务独占一个GPU,那么只需要让他的“gpusharing/group”注解是唯一的就行了(独占的含义是:假如服务1有2个Pod,记为Pod 1和Pod 2,已知Pod 1被调度到GPU节点1上面,那么GPU 1上面就只能有服务1的Pod,其他服务的Pod不能被调度到GPU节点1上,也就是说,以后只有Pod 2有可能被调度到GPU节点1上)。只有以上2个条件都满足的GPU节点才会成为目标GPU节点。集群中存在2种GPU节点,第一种是开启MPS的节点,这种节点会有一个标签(gpusharing/mps),标签的值为“true”,这种节点的GPU运行在并行运行模式;第二种是关闭MPS的节点,这种节点没有“gpusharing/mps”标签,或者此标签的值为“false”。劫持调度器:如果此GPU节点运行在并行运行模式下,那么劫持调度器只会负责显存的分配和限制;如果此GPU节点运行在分时调度模式下,那么劫持调度器负责分配时间片给Pod、并且限制显存分配。本申请基于CUDA劫持、MPS技术,能够实现将多个Pod调度到同一个GPU上,从而达到高GPU利用率的目的,并且同一个GPU上的多个Pod的显存是隔离的,用户可以选择服务在同一个GPU上的多个Pod并行执行、充分利用GPU的计算核心,或者多个Pod分时调度、交替执行,还可以选择服务独占GPU,或者和其它服务共享GPU。
在一些具体实施例中,所述Pod创建模块11,具体可以包括:
检测模块,用于检测本地的服务创建是否被触发;
信息获取模块,用于若本地的服务创建被触发,则获取服务创建信息。
在一些具体实施例中,所述Pod创建模块11,具体可以包括:
Pod创建模块,用于基于所述服务创建信息中的副本数量创建与所述副本数量相同的Pod;
环境变量信息添加模块,用于基于所述服务创建信息中的注解信息为所述Pod添加环境变量信息。
在一些具体实施例中,所述GPU运行方式确定模块12,具体可以包括:
GPU运行方式确定模块,用于基于所述服务创建消息中的所述注解信息确定出GPU运行方式;其中,所述GPU运行方式包括并行运行模式和分时调度模式;
GPU共享方式确定模块,用于基于所述服务创建消息中的所述注解信息确定出GPU共享方式;其中,所述GPU共享方式包括服务独占GPU和服务共享GPU。
在一些具体实施例中,所述GPU运行方式确定模块12,具体可以包括:
第一目标GPU节点确定模块,用于若所述GPU运行方式为并行运行模式,则判断所述注解信息中的GPU共享值与预先获取的服务共享值是否相同,若所述注解信息中的GPU共享值与预先获取的服务共享值相同,则确定出所述GPU共享方式为服务独占GPU,然后从所有的GPU节点中筛选出GPU节点标签值为true,并且所述GPU共享方式为服务独占GPU的GPU节点作为目标GPU节点;
第二目标GPU节点确定模块,用于若所述GPU运行方式为分时调度模式,则确定出所述GPU共享方式为服务共享GPU,然后从所有的GPU节点中筛选出标签值为false,并且所述GPU共享方式为服务共享GPU的GPU节点作为目标GPU节点。
在一些具体实施例中,所述GPU共享计算模块13,具体可以包括:
环境变量信息发送模块,用于将所述Pod中的所述环境变量信息发送至所述目标GPU节点中的CUDA,以便所述目标GPU节点中的所述CUDA基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
在一些具体实施例中,所述GPU共享计算模块13,具体可以包括:
第一GPU共享计算模块,用于若所述GPU运行方式为并行运行模式,则所述CUDA利用预设的计算函数和显存申请释放函数对所述环境变量信息进行GPU共享计算;
第二GPU共享计算模块,用于若所述GPU运行方式为分时调度模式,则所述CUDA从服务创建信息中确定出时间占比信息,并利用所述计算函数对所述时间占比信息进行GPU共享计算。
图6为本申请实施例提供的一种电子设备的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的由电子设备执行的GPU共享方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中数据223的运算与处理,其可以是Windows、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的GPU共享方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括GPU共享设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
进一步的,本申请实施例还公开了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的GPU共享方法步骤。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种GPU共享方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种GPU共享方法,其特征在于,包括:
获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;
基于所述服务创建消息确定出GPU运行方式和GPU共享方式;
根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
2.根据权利要求1所述的GPU共享方法,其特征在于,所述获取服务创建信息,包括:
检测本地的服务创建是否被触发;
若本地的服务创建被触发,则获取服务创建信息。
3.根据权利要求1所述的GPU共享方法,其特征在于,所述基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息,包括:
基于所述服务创建信息中的副本数量创建与所述副本数量相同的Pod;
基于所述服务创建信息中的注解信息为所述Pod添加环境变量信息。
4.根据权利要求3所述的GPU共享方法,其特征在于,所述基于所述服务创建消息确定出GPU运行方式和GPU共享方式,包括:
基于所述服务创建消息中的所述注解信息确定出GPU运行方式;其中,所述GPU运行方式包括并行运行模式和分时调度模式;
基于所述服务创建消息中的所述注解信息确定出GPU共享方式;其中,所述GPU共享方式包括服务独占GPU和服务共享GPU。
5.根据权利要求4所述的GPU共享方法,其特征在于,所述根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,包括:
若所述GPU运行方式为并行运行模式,则判断所述注解信息中的GPU共享值与预先获取的服务共享值是否相同,若所述注解信息中的GPU共享值与预先获取的服务共享值相同,则确定出所述GPU共享方式为服务独占GPU,然后从所有的GPU节点中筛选出GPU节点标签值为true,并且所述GPU共享方式为服务独占GPU的GPU节点作为目标GPU节点;
若所述GPU运行方式为分时调度模式,则确定出所述GPU共享方式为服务共享GPU,然后从所有的GPU节点中筛选出标签值为false,并且所述GPU共享方式为服务共享GPU的GPU节点作为目标GPU节点。
6.根据权利要求1至5任一项所述的GPU共享方法,其特征在于,所述将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算,包括:
将所述Pod中的所述环境变量信息发送至所述目标GPU节点中的CUDA,以便所述目标GPU节点中的所述CUDA基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
7.根据权利要求6所述的GPU共享方法,其特征在于,所述目标GPU节点中的所述CUDA基于所述GPU运行方式对所述环境变量信息进行GPU共享计算,包括:
若所述GPU运行方式为并行运行模式,则所述CUDA利用预设的计算函数和显存申请释放函数对所述环境变量信息进行GPU共享计算;
若所述GPU运行方式为分时调度模式,则所述CUDA从服务创建信息中确定出时间占比信息,并利用所述计算函数对所述时间占比信息进行GPU共享计算。
8.一种GPU共享装置,其特征在于,包括:
Pod创建模块,用于获取服务创建信息,基于所述服务创建信息创建Pod,并为所述Pod添加环境变量信息;
GPU运行方式确定模块,用于基于所述服务创建消息确定出GPU运行方式和GPU共享方式;
GPU共享计算模块,用于根据所述GPU共享方式和所述GPU运行方式确定出目标GPU节点,将所述Pod中的所述环境变量信息发送至所述目标GPU节点,以便所述目标GPU节点基于所述GPU运行方式对所述环境变量信息进行GPU共享计算。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的GPU共享方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的GPU共享方法。
CN202211164060.8A 2022-09-23 2022-09-23 一种gpu共享方法、装置、设备及介质 Pending CN115495215A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211164060.8A CN115495215A (zh) 2022-09-23 2022-09-23 一种gpu共享方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211164060.8A CN115495215A (zh) 2022-09-23 2022-09-23 一种gpu共享方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN115495215A true CN115495215A (zh) 2022-12-20

Family

ID=84470403

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211164060.8A Pending CN115495215A (zh) 2022-09-23 2022-09-23 一种gpu共享方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN115495215A (zh)

Similar Documents

Publication Publication Date Title
CN115328663B (zh) 基于PaaS平台进行资源调度的方法、装置、设备和存储介质
CN113243005A (zh) 按需网络代码执行系统中的基于性能的硬件仿真
US10303450B2 (en) Systems and methods for a policy-driven orchestration of deployment of distributed applications
JP6658882B2 (ja) 制御装置、vnf配置先選択方法及びプログラム
US8904386B2 (en) Running a plurality of instances of an application
CN109688191B (zh) 流量调度方法及通信装置
CN108021400B (zh) 数据处理方法及装置、计算机存储介质及设备
US10025630B2 (en) Operating programs on a computer cluster
CN110389903B (zh) 测试环境部署方法和装置、电子设备和可读存储介质
CN113204353B (zh) 一种大数据平台组件部署方法及装置
US20210203714A1 (en) System and method for identifying capabilities and limitations of an orchestration based application integration
CN109347716B (zh) 消费者vnf的实例化方法及装置
CN113190282A (zh) 安卓运行环境构建的方法及装置
CN113760543A (zh) 资源管理方法、装置、电子设备及计算机可读存储介质
CN113010265A (zh) Pod的调度方法、调度器、存储插件及系统
US20200310828A1 (en) Method, function manager and arrangement for handling function calls
KR20220070020A (ko) 네트워크 자원 관리 방법, 시스템, 네트워크 디바이스 및 판독 가능한 저장 매체
US20230393880A1 (en) Virtual machine management method and apparatus, device, and readable storage medium
CN115086166A (zh) 计算系统、容器网络配置方法及存储介质
CN113986539A (zh) 实现pod固定IP的方法、装置、电子设备和可读存储介质
Tang et al. Application centric lifecycle framework in cloud
US11595493B2 (en) System and method for namespace masking in an integration flow
CN113448650A (zh) 直播功能插件加载方法、装置、设备及存储介质
CN110955415A (zh) 一种投影多平台服务适配的方法
CN115495215A (zh) 一种gpu共享方法、装置、设备及介质

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