CN116069481A - 一种共享gpu资源的容器调度系统及调度方法 - Google Patents
一种共享gpu资源的容器调度系统及调度方法 Download PDFInfo
- Publication number
- CN116069481A CN116069481A CN202310354096.0A CN202310354096A CN116069481A CN 116069481 A CN116069481 A CN 116069481A CN 202310354096 A CN202310354096 A CN 202310354096A CN 116069481 A CN116069481 A CN 116069481A
- Authority
- CN
- China
- Prior art keywords
- gpu
- container
- resource
- task
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012544 monitoring process Methods 0.000 claims description 11
- 238000013473 artificial intelligence Methods 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 6
- 230000003044 adaptive effect Effects 0.000 claims description 2
- 238000013508 migration Methods 0.000 abstract description 6
- 230000005012 migration Effects 0.000 abstract description 6
- 239000002699 waste material Substances 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 39
- XQMVBICWFFHDNN-UHFFFAOYSA-N 5-amino-4-chloro-2-phenylpyridazin-3-one;(2-ethoxy-3,3-dimethyl-2h-1-benzofuran-5-yl) methanesulfonate Chemical compound O=C1C(Cl)=C(N)C=NN1C1=CC=CC=C1.C1=C(OS(C)(=O)=O)C=C2C(C)(C)C(OCC)OC2=C1 XQMVBICWFFHDNN-UHFFFAOYSA-N 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 239000004020 conductor Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000003032 molecular docking Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G06F9/505—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 considering the load
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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
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资源由系统外部在各应用平台进行复用,将导致服务器的反复初始化及迁移,造成人工损耗以及时间的浪费的问题,本发明考虑从计算任务移植方面进行GPU资源的共享,在GPU资源池上构建容器系统,通过将各个平台的任务容器化后调度到提供的资源池GPU节点上,实现异构平台间GPU资源共享,提高整体平台的GPU资源利用率可满足云计算、大数据、人工智能和高性能计算场景平台的快速灵活部署实施。
Description
技术领域
本发明属于图形处理器资源调度领域,尤其涉及一种共享GPU资源的容器调度系统及调度方法。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
随着现实场景中各应用领域对计算需求的提升,图形处理器(GPU)资源凭借其强大的计算能力、高内存宽带和海量数据级并行计算模型等优势,得到了数据中心不同应用平台的广泛应用,使得GPU集群的规模不断扩大。但由于GPU昂贵的价格,在数据中心中属于不同计算应用平台争取的稀缺性资源。若采取公平分配原则,由于各平台的GPU资源使用情况各不相同,当某一平台GPU资源不满足平台需求的同时,其余应用平台GPU资源可能存在闲置情况,将造成GPU资源的浪费。
基于此情况,考虑各平台共享彼此GPU资源来提升数据中心整体的GPU资源利用率。若从物理级节点考虑,各平台GPU计算节点隶属于某一资源调度系统,调度系统架构以及技术组件各不相同,不支持彼此之间GPU资源的共享。若考虑将GPU资源由系统外部在各应用平台进行复用,将导致服务器的反复初始化及迁移,造成人工损耗以及时间的浪费。
发明内容
为了解决上述背景技术中存在的至少一项技术问题,本发明提供一种共享GPU资源的容器调度系统及调度方法,其考虑从计算任务移植方面进行GPU资源的共享。在GPU资源池上构建容器系统,通过将各个平台的任务容器化后调度到提供的资源池GPU节点上,实现异构平台间GPU资源共享,提高整体平台的GPU资源利用率。
为了实现上述目的,本发明采用如下技术方案:
本发明的第一个方面提供一种共享GPU资源的容器调度系统,包括:
容器化模块,其被配置为:获取多个异构应用平台的GPU任务信息,并将GPU任务容器化;
容器调度模块,其被配置为:接收各个平台的GPU容器任务,根据所需资源大小,形成容器任务队列;接收GPU资源管理模块反馈的GPU信息,将容器调度到相应的GPU节点,执行容器任务;
GPU资源管理模块,其被配置为:监控GPU资源使用情况,将GPU资源根据GPU卡的属性形成资源管理队列,接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源。
进一步地,GPU资源管理模块中,所述接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源,具体包括:
读取资源队列第一位的GPU资源信息,并锁定当前资源GPU节点;
判断当前锁定GPU资源是否满足任务需求,若满足,在锁定的GPU资源中,根据调度策略选取GPU节点,否则读取资源队列下一位的GPU资源信息,释放原来锁定的GPU节点资源,直到队列为空;
锁定资源队列最后一位的GPU资源,读取GPU资源信息;
根据任务请求与锁定的GPU资源信息,上线不少于所需GPU卡数量的GPU节点,锁定上线节点。
进一步地,所述系统还包括容器任务反馈模块,其被配置为:监控容器任务执行情况,接收应用平台的任务查询请求,将任务情况反馈到客户指定的目录,并在容器任务完成后,将任务结果反馈到客户指定目录。
进一步地,所述多个异构应用平台包括:高性能计算应用平台、云计算应用平台和人工智能应用平台。
进一步地,所述共享GPU资源的容器调度系统部署在Kubernetes集群上,包括控制节点和计算节点,所述控制节点和计算节点连接至同一个私有子网,所述私有子网通过路由器连接到公共网络,以便节点相互访问和访问外部互联网。
本发明的第二个方面提供一种共享GPU资源的容器调度方法,包括如下步骤:
获取多个异构应用平台的GPU任务信息,并将GPU任务容器化;
接收各个平台的GPU容器任务,根据所需资源大小,形成容器任务队列;
接收反馈的GPU信息,将容器调度到相应的GPU节点,执行容器任务;
监控GPU资源使用情况,将GPU资源根据GPU卡的属性形成资源管理队列,接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源。
进一步地,调度单位为GPU卡,根据GPU资源利用情况与容器所需GPU卡的数量,通过调度策略,选择适应的GPU卡,根据容器任务所需GPU卡信息为容器指定GPU资源。
进一步地,所述GPU资源使用情况包括:GPU资源信息的品牌,GPU资源信息的版本,GPU资源信息中GPU卡的数量,GPU资源信息的节点信息。
进一步地,所述接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源,具体包括:
读取资源队列第一位的GPU资源信息,并锁定当前资源GPU节点;
判断当前锁定GPU资源是否满足任务需求,若满足,在锁定的GPU资源中,根据调度策略选取GPU节点,否则读取资源队列下一位的GPU资源信息,释放原来锁定的GPU节点资源,直到队列为空;
锁定资源队列最后一位的GPU资源,读取GPU资源信息;
根据任务请求与锁定的GPU资源信息,上线不少于所需GPU卡数量的GPU节点,锁定上线节点。
进一步地,针对容器任务需求的GPU之间的平均数据传输长度构建数据传输时间损失函数。
与现有技术相比,本发明的有益效果是:
1、本发明考虑从计算任务移植方面进行GPU资源的共享,可以解决GPU资源在不同应用平台间的共享,明从计算任务容器化的角度满足计算任务的移植需求,容器通过将应用程序及其库、配置文件和其他依赖项封装在一起来确保环境兼容性,从而使用户能够在集群之间轻松移动和部署程序,根据各应用平台GPU任务对GPU资源的需求灵活调度,从而提升整体平台的GPU资源利用率。
2、本发明的GPU资源的共享主要利用各应用平台适配的容器管理组件将GPU任务容器化,然后将容器在各平台与系统间进行移植,通过在系统对GPU资源的统一调度完成容器任务,可满足云计算、大数据、人工智能和高性能计算场景平台的快速灵活部署实施。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为本发明实施例一提供的共享GPU容器调度系统框架图;
图2为本发明实施例一提供的异构平台中的GPU任务容器化及调度框架图;
图3为本发明实施例一提供的共享GPU容器调度系统GPU资源调度流程图;
图4为本发明实施例二提供的高性能应用平台中的GPU任务容器化及调度流程图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
为了解决背景技术提及的技术问题,本发明考虑从计算任务移植方面进行GPU资源的共享,计算的移动性意味着能够包含整个软件堆栈,从数据文件到库堆栈,并且可靠性将其从一个系统移动到另一个系统;计算的移动性是可重复科学以及一致和持续部署应用程序的重要组成部分。
本发明从计算任务容器化的角度满足计算任务的移植需求。容器通过将应用程序及其库、配置文件和其他依赖项封装在一起来确保环境兼容性,从而使用户能够在集群之间轻松移动和部署程序。随着Singularity、Magnum等技术的出现,各平台内GPU任务容器化具有可行性,计算的移动性得到保证。综上所述,本发明提出一种共享GPU的容器调度系统和调度方法。
实施例一
如图1是共享GPU容器调度系统框架图,共享GPU容器调度系统搭建于共享GPU资源池上,由Kubernetes集群构建,用来接收并调度各平台的GPU任务容器,灵活分配GPU资源,以完成GPU任务。
本实施例提供一种共享GPU容器调度系统,作为共享GPU资源的核心系统,包括容器适配层、容器调度层、配置管理层、GPU资源管理层,主要由配置管理模块,GPU资源管理模块,容器调度模块,容器任务反馈模块和容器化模块等构成。
各个模块所在层和具体负责的功能如下:
如图1所示,容器化模块和容器任务反馈模块位于容器适配层,容器化模块主要对接应用平台;
所述容器化模块,其被配置为:获取异构平台的GPU任务信息,并将GPU任务调度应用平台各自的容器组件中进行容器化,最后将容器化后的GPU容器任务发送到系统的容器调度模块。
所述容器任务反馈模块,其被配置为:监控容器任务执行情况,接收应用平台的任务查询请求,将任务情况反馈到客户指定的目录,并在容器任务完成后,将任务结果反馈到客户指定目录。
容器调度模块位于容器调度层,其被配置为:接收应用平台的GPU容器任务,形成各平台统一容器任务队列, 接收GPU资源管理模块反馈的GPU信息,将容器调度到相应的GPU节点,执行容器任务;
配置管理模块位于配置管理层,其被配置为:配置管理平台调度信息和相关参数设置;系统配置信息设置和软件环境配置信息存储以及整个系统平台的管理。
GPU资源管理模块位于GPU资源管理层,作为GPU资源分配模块,其被配置为:监控GPU资源使用情况,将GPU资源根据GPU卡数量、品牌及版本形成资源管理队列,并接收容器调度模块发送的资源请求,根据容器请求信息和调度策略,选择容器任务所需的GPU卡,并将GPU卡的相关节点信息发送到容器调度模块,为容器指定GPU资源。
本实施例中,所述异构应用平台包括三个,分别为高性能计算应用平台、云计算应用平台和人工智能应用平台。
图2是异构平台中的GPU任务容器化及调度框架图,本实施将共享GPU容器调度系统部署在Kubernetes集群上。
Kubernetes 集群包括 Master 和 Minion 两种类型的节点,Master为控制节点,Minion为计算节点。
Master节点上部署控制集群的大部分组件:kube-apiserver、kube-controller、manager、kube-scheduler、etcd 等,用来处理 Kubernetes API请求,管理集群中常规任务的后台进程,调度 Kubernetes 集群中部署的最小单元模型 pod,提供存储Kubernetes集群的数据信息的键值对存储服务。
Master节点上部署控制集群的大部分组件:kube-apiserver、kube-controller、manager、kube-scheduler、etcd 等,用来处理 Kubernetes API请求,管理集群中常规任务的后台进程,调度 Kubernetes 集群中部署的最小单元模型 pod,提供存储Kubernetes集群的数据信息的键值对存储服务。
Minion节点用于维护 pod 的运行时环境,实现监视已分配的 pod、加载 volume、下载密钥、启动运行 pod 中的容器、报告pod运行状态、创建镜像备份等功能。
在 Kubernetes 集群中,所有的 master 和 minions 都连接到一个私有的Neutron 子网,该子网又通过路由器连接到公共网络。这允许节点相互访问和访问外部互联网。
所述GPU资源管理模块中,接收容器调度模块发送的资源请求,根据容器请求信息和调度策略,选择容器任务所需的GPU卡,并将GPU卡的相关节点信息发送到容器调度模块,为容器指定GPU资源,具体包括:
针对高性能计算应用平台,系统对接的高性能计算应用平台部署的集群为Slurm集群,由管理节点、计算节点和登录节点组成 ,登录节点将客户任务申请发送到管理节点,管理节点控制进程 slurmctld负责资源状态维护、资源分配、作业调度、作业管理控制等,根据任务请求信息中是否需要GPU资源区分任务,将满足此类限制的任务发送到配置Singularity容器组件的计算节点,由Singularity容器用从Container Library和 DockerHub等外部资源下载和组装现有容器对 GPU任务进行容器化,转化为Singularity ImageFile(SIF)格式,然后通过rsync、scp、gridftp、http、NFS 等配合使用的方式传输(和存储)容器到系统的管理节点。
管理节点将接收的容器进行统一管理并分配到计算节点执行任务,任务完成后,将任务结果发送到集群客户指定的目录。
针对云计算应用平台,系统对接的云计算应用平台部署为OpenStack集群,集群采用内部Magnum组件在平台内部搭建Kubernetes集群对GPU任务进行容器化。
使用 Magnum架构实现 Kubernetes集群创建的核心在于 Magnum的两个组件:Magnum API和 Magnum Conductor。
Magnum API负责接收创建 Kubernetes集群的请求,Magnum Conductor负责执行创建 Kubernetes集群的操作,通过与 OpenStack和容器编排引擎的交互操作提供容器服务。
Magnum API和 Magnum Conductor两者之间的通信通过 RabbitMQ 服务的 RPC(Remote Procedure Call,远程服务调用)队列完成。
Magnum API对接收到的GPU任务进行解析后经过RPC队列将操作集群的消息传递到Magnum Conductor组件进行处理,与集群模板相关的操作会直接与数据库进行交互实现。
Magnum Conductor接收到与操作集群相关的消息后,通过其三大核心资源进行后续处理,包括heattemplate、handlers和database等,完成容器化。通过Magnum搭建的Kubernetes集群在Service上面再加一层Ingress做反向代理,通过HTTP服务,提供域名和URL路径对外暴露服务。
针对人工智能应用平台,系统对接的人工智能应用平台由于本身部署的Kubernetes集群为容器编排集群,无需对GPU任务进行额外容器化,只需在任务请求中区分GPU任务并发送到Minion节点。
Minion节点上部署着 kubelet、kube-proxy 等组件,用于维护 pod 的运行时环境,kubele是pod的代理服务,能够通过apiserver或本地配置实现监视已分配的 pod、加载volume、下载密钥、启动运行 pod 中的容器、报告pod运行状态、创建镜像备份等功能。
kube-proxy 能够通过在主机节点上维护一个网络规则和连接转发来实现Kubernetes抽象出的服务概念,底层通过iptables实现流量转发。集群中创建的所有Kubernetes pod 和服务都连接到一个私有容器网络,默认情况下是 Flannel,一个在Neutron 私有子网之上运行的覆盖网络。
pod 和服务从这个容器网络分配 IP 地址,它们可以相互访问和访问外部互联网。
但是,无法从外部网络访问这些 IP 地址。为了在外部发布服务端点以便可以从外部网络访问服务,Kubernetes 提供了外部负载均衡器功能,这是通过简单地在服务清单中指定属性“type:LoadBalancer”来完成的。
在创建服务时,Kubernetes 会在服务前面添加一个外部负载均衡器,这样服务在容器网络上除了内部 IP 地址之外,还有一个外部 IP 地址;然后可以使用此外部 IP 地址访问服务端点,系统可以通过访问外部IP地址接收容器任务。
图3 是共享GPU容器调度系统GPU资源调度流程图,具体步骤如下所示:
步骤1:GPU资源管理模块监控GPU资源信息,由于GPU资源池中,品牌、版本不同,根据每个品牌及版本剩余的GPU卡数量从小到大形成资源队列,转到步骤2。
步骤2:GPU资源管理模块读取容器调度模块发送的容器任务请求,转到步骤3。
步骤3:读取资源队列第一位的GPU资源信息,并锁定当前资源GPU节点,避免与其他任务冲突,转到步骤4。
步骤4:判断当前锁定GPU资源是否满足任务需求,若满足转到步骤5,否则转到步骤6。
步骤5:在锁定的GPU资源中,根据调度策略选取GPU节点,将GPU节点信息发送到容器调度模块
步骤6:读取资源队列下一位的GPU资源信息,释放原来锁定的GPU节点资源,锁定当前资源GPU节点,转到步骤4,若队列为空转到步骤7。
步骤7:锁定资源队列最后一位的GPU资源,读取GPU资源信息,转到步骤8。
步骤8:根据任务请求与锁定的GPU资源信息,上线不少于所需GPU卡数量的GPU节点,锁定上线节点,转到步骤5。
GPU资源管理模块收集GPU资源信息时,若节点的1张GPU卡已绑定至某个容器,则表示该张GPU卡的资源被占用。使用GPU时,不同的容器不能共享 GPU,这意味着每个容器将独占整个 GPU。如果集群的不同节点上存在不同的GPU类型,则需要通过节点标签和节点选择器配置调度器,以区分不同GPU类型的节点。GPU资源管理模块根据集群中剩余GPU资源中GPU品牌、版本不同,按资源从小到大形成GPU资源队列。
具体实现中,待上线的GPU节点需根据调度策略从锁定的GPU资源中选择合适的GPU节点,GPU节点的硬件规格要求是与锁定节点GPU版本与品牌一致,即待上线GPU节点与锁定GPU节点规格要求是同构架构,用来避免资源池污染(若在同一个服务分配中,有不同种类的GPU,集群将不能进行正常工作)。
经过上述容器调度和GPU资源调度步骤后,系统可以保证异构应用平台之间的GPU资源共享,从而提升数据中心整体的GPU资源利用率。
实施例二
本实施例提供一种共享GPU容器调度方法,包括如下步骤:
步骤1:获取多个异构应用平台的GPU任务信息,用数组表示,即,,其中,
n表示应用平台数量,每个应用平台的GPU任务信息用一个元组表示,具体如下:
其中,表示GPU任务所属应用平台类型,表示GPU任务所在平台的容器类型,表示GPU任务所需GPU卡总量,表示GPU任务客户指定的接收任务结果目录。
步骤2:对接各个平台的容器组件接口,接收各个平台的GPU容器任务,通过接受容器的任务信息,根据所需资源大小,形成容器任务队列(资源所需GPU资源由低向高排序)。
针对接收的各平台的容器任务,根据接受的容器任务信息需要依次执行以下操作步骤:
1)接收各平台容器化模块发送的容器任务,根据所需GPU资源,从小到大形成容器队列,转到步骤2)
2)读取容器队列第一位的任务信息,转到步骤3)
3)提交GPU资源请求,转到步骤4)
4)接收发送的GPU资源信息,转到步骤5)
5)读取GPU资源中GPU品牌,版本及节点信息,将GPU容器发送到指定GPU节点,转到步骤6)
6)执行容器任务,更新资源列表,转到步骤7)
7)若容器任务队列还存在待执行的容器任务,转到步骤2),否则结束。
步骤3:接收反馈的GPU信息,将容器调度到相应的GPU节点,执行容器任务。
步骤4:监控GPU资源使用情况,将GPU资源根据GPU卡的属性形成资源管理队列,接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源。
本实施例中,调度单位为GPU卡,根据GPU资源利用情况与容器所需GPU卡的数量,通过调度策略,选择合适的GPU卡,将容器任务所需GPU卡信息发送到容器调度模块,为容器指定GPU资源。若节点的1张GPU卡已绑定至某个容器,则表示该张GPU卡被占用。
步骤4中,首先,调度系统中的GPU资源管理模块会监控资源池的GPU资源信息,用表示,其中,
brand表示GPU品牌,
version表示GPU版本,每个品牌及版本的GPU资源信息用一个元组表示,具体如下:
其中,表示GPU资源信息的品牌,表示GPU资源信息的版本,G表示GPU资源信息中GPU卡的数量,表示GPU资源信息的节点信息。
集群的不同节点上存在不同的GPU类型和品牌,则需要通过节点标签和节点选择器配置调度器,以区分不同 GPU类型的节点,形成GPU资源队列GQ(资源队列根据剩余GPU资源从低向高排序)。
所述接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源,具体包括:
1)GPU资源管理模块监控GPU资源信息,根据每个品牌及版本剩余的GPU卡数量从小到大形成资源队列,转到步骤2);
2)GPU资源管理模块读取容器调度模块发送的容器任务请求,转到步骤3);
3)读取资源队列第一位的GPU资源信息,并锁定当前资源GPU节点,避免与其他任务冲突,转到步骤4);
4)判断当前锁定GPU资源是否满足任务需求,若满足转到步骤5),否则转到步骤6);
5)在锁定的GPU资源中,根据调度策略选取GPU节点,将GPU节点信息发送到容器调度模块;
6)读取资源队列下一位的GPU资源信息,释放原来锁定的GPU节点资源,锁定当前资源GPU节点,转到步骤4),若队列为空转到步骤7);
7)锁定资源队列最后一位的GPU资源,读取GPU资源信息,转到步骤8);
8)根据任务请求与锁定的GPU资源信息,上线不少于所需GPU卡数量的GPU节点,锁定上线节点,转到步5);
当队列中资源被选中时,在当前GPU资源中信息选取合适的GPU节点。针对任务需求不同,在资源队列的选中资源选中,优先选择数据传输时间最短的节点。
针对容器任务需求的GPU之间的平均数据传输长度构建数据传输时间损失函数。
具体来说数据传输时间损失函数为:
式中,代表GPU 任务需要GPU 总数目,代表GPU容器任务分配的GPU节点的数量,代表在第节点上GPU的数量。代表GPU任务分配的第节点中GPU资源需要跨节点数据传输的GPU数量。
上述操作步骤中待上线的GPU节点的选择是依据锁定的GPU资源,上线的GPU节点硬件规格要求是与锁定节点GPU版本与品牌一致,即GPU规格要求是同构架构。
系统的任务信息反馈模块实时监控任务的执行情况,当接收任务查询命令时,向GPU任务信息中客户指定的目录反馈实时任务信息。并在任务结束后,将任务结果发送到客户的指定目录。
上述技术方案的优势在于,可以解决GPU资源在不同应用平台间的共享,根据各应用平台GPU任务对GPU资源的需求灵活调度,从而提升整体平台的GPU资源利用率。GPU资源的共享主要利用各应用平台适配的容器管理组件将GPU任务容器化,然后将容器在各平台与系统间进行移植,通过在系统对GPU资源的统一调度完成容器任务,可满足云计算、大数据、人工智能和高性能计算场景平台的快速灵活部署实施。
与人工智能应用平台部署的Kubernetes集群和在云计算应用平台由OpenStack集群组件Magnum组件平台内构建的Kubernetes集群容器相比,高性能计算应用平台部署的Slurm集群采用的Singularity与系统部署Kubernetes集群差异性较大,故以图4高性能应用平台中的GPU任务容器化及调度流程进一步说明。
步骤1:获取高性能应用平台客户发送的任务请求信息,其主要目的是对接高性能计算平台的管理节点;
调用高性能计算平台Slurm集群接口,利用主节点中slurmctld进行作业管理控制以及作业调度。
步骤2:对任务中请求GPU计算资源的任务进行标记,并发送到具有Singularity容器组件节点,创建Singularity容器,进行容器化;
步骤3:对接Singularity接口,接收高性能应用平台发送的容器任务;
步骤4:将接收的容器根据所需GPU资源,从小到大形成容器任务队列;
步骤5:读取容器队列排行第一位的容器任务信息,将任务请求发送到GPU资源管理模块;
步骤6:容器调度模块接收来自GPU资源管理模块反馈的GPU资源信息,如GPU卡的位置路径、版本、品牌以及相关节点信息;
步骤7:根据提供的GPU资源信息,将容器调度到指定的GPU节点。
为了在 Kubernetes 集群中完全启用 Singularity 支持,在每个 Kubernetes节点上安装 Singularity-CRI。但是,可以选择拥有一个具有多个容器运行时的异构集群。在这种情况下,只应集成专用的 Kubernetes 节点,其余节点不应进行任何更改。更新资源列表。
步骤8:执行容器任务;
步骤9:若容器队列不为空,则转向步骤5,否则结束容器调度流程。
在具体实现中,Singularity-CRI 由两个独立的服务组成:runtime 和 image,它们分别实现了 K8s RuntimeService 和 ImageService。要使 Kubernetes 与Singularity-CRI 一起工作,需要几个步骤:
(1)创建 Singularity-CRI ,Singularity-CRI 服务使用默认配置和日志级别
(2)服务修改 kubelet 配置,Kubelet 需要重新配置才能连接到 Singularity-CRI。如果更改listenSocket了 Singularity-CRI 配置,要确保将其传递给 kubelet 而不是默认的/var/run/singularity.sock。
(3)使用新配置重启 kubelet,完成节点的这些步骤后,考虑将其配置为使用Singularity 作为容器运行时。
Singularity-CRI 附带内置的 NVIDIA GPU 设备插件。如果节点有任何可以用NVML 发现的 GPU,它将自动在 Kubernetes 中注册。在执行Singularity容器之外容器,如云计算应用平台和人工智能应用平台发送的容器时,无需额外的组件,对于AMD GPU设备插件,Kubernetes 节点只须预先安装 AMD GPU 的 Linux 驱动,而对于 NVIDIA GPUs,Kubernetes 的节点须预先安装 NVIDIA 驱动,并Kubernetes 的节点必须预先安装nvidia-docker 2.0,Docker 的默认运行时必须设置为nvidia-container-runtime,而不是runc,NVIDIA 驱动版本不低于 384.81。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种共享GPU资源的容器调度系统,其特征在于,包括:
容器化模块,其被配置为:获取多个异构应用平台的GPU任务信息,并将GPU任务容器化;
容器调度模块,其被配置为:接收各个平台的GPU容器任务,根据所需资源大小,形成容器任务队列;接收GPU资源管理模块反馈的GPU信息,将容器调度到相应的GPU节点,执行容器任务;
GPU资源管理模块,其被配置为:监控GPU资源使用情况,将GPU资源根据GPU卡的属性形成资源管理队列,接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源。
2.根据权利要求1所述的一种共享GPU资源的容器调度系统,其特征在于,GPU资源管理模块中,所述接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源,具体包括:
读取资源队列第一位的GPU资源信息,并锁定当前资源GPU节点;
判断当前锁定GPU资源是否满足任务需求,若满足,在锁定的GPU资源中,根据调度策略选取GPU节点,否则读取资源队列下一位的GPU资源信息,释放原来锁定的GPU节点资源,直到队列为空;
锁定资源队列最后一位的GPU资源,读取GPU资源信息;
根据任务请求与锁定的GPU资源信息,上线不少于所需GPU卡数量的GPU节点,锁定上线节点。
3.根据权利要求1所述的一种共享GPU资源的容器调度系统,其特征在于,所述系统还包括容器任务反馈模块,其被配置为:监控容器任务执行情况,接收应用平台的任务查询请求,将任务情况反馈到客户指定的目录,并在容器任务完成后,将任务结果反馈到客户指定目录。
4.根据权利要求1所述的一种共享GPU资源的容器调度系统,其特征在于,所述多个异构应用平台包括:高性能计算应用平台、云计算应用平台和人工智能应用平台。
5.根据权利要求1所述的一种共享GPU资源的容器调度系统,其特征在于,所述共享GPU资源的容器调度系统部署在Kubernetes集群上,包括控制节点和计算节点,所述控制节点和计算节点连接至同一个私有子网,所述私有子网通过路由器连接到公共网络,以便节点相互访问和访问外部互联网。
6.一种共享GPU资源的容器调度方法,其特征在于,包括如下步骤:
获取多个异构应用平台的GPU任务信息,并将GPU任务容器化;
接收各个平台的GPU容器任务,根据所需资源大小,形成容器任务队列;
接收反馈的GPU信息,将容器调度到相应的GPU节点,执行容器任务;
监控GPU资源使用情况,将GPU资源根据GPU卡的属性形成资源管理队列,接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源。
7.根据权利要求6所述的一种共享GPU资源的容器调度方法,其特征在于,调度单位为GPU卡,根据GPU资源利用情况与容器所需GPU卡的数量,通过调度策略,选择适应的GPU卡,根据容器任务所需GPU卡信息为容器指定GPU资源。
8.根据权利要求6所述的一种共享GPU资源的容器调度方法,其特征在于,所述GPU资源使用情况包括:GPU资源信息的品牌,GPU资源信息的版本, GPU资源信息中GPU卡的数量,GPU资源信息的节点信息。
9.根据权利要求6所述的一种共享GPU资源的容器调度方法,其特征在于,所述接收发送的资源请求,基于容器请求信息和调度策略,选择容器任务所需的GPU卡,并根据GPU卡的相关节点信息为容器指定GPU资源,具体包括:
读取资源队列第一位的GPU资源信息,并锁定当前资源GPU节点;
判断当前锁定GPU资源是否满足任务需求,若满足,在锁定的GPU资源中,根据调度策略选取GPU节点,否则读取资源队列下一位的GPU资源信息,释放原来锁定的GPU节点资源,直到队列为空;
锁定资源队列最后一位的GPU资源,读取GPU资源信息;
根据任务请求与锁定的GPU资源信息,上线不少于所需GPU卡数量的GPU节点,锁定上线节点。
10.根据权利要求6所述的一种共享GPU资源的容器调度方法,其特征在于,针对容器任务需求的GPU之间的平均数据传输长度构建数据传输时间损失函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310354096.0A CN116069481B (zh) | 2023-04-06 | 2023-04-06 | 一种共享gpu资源的容器调度系统及调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310354096.0A CN116069481B (zh) | 2023-04-06 | 2023-04-06 | 一种共享gpu资源的容器调度系统及调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116069481A true CN116069481A (zh) | 2023-05-05 |
CN116069481B CN116069481B (zh) | 2023-07-18 |
Family
ID=86180583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310354096.0A Active CN116069481B (zh) | 2023-04-06 | 2023-04-06 | 一种共享gpu资源的容器调度系统及调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116069481B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795219A (zh) * | 2019-10-24 | 2020-02-14 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 适用于多种计算框架的资源调度方法及系统 |
CN112698947A (zh) * | 2020-12-31 | 2021-04-23 | 山东省计算中心(国家超级计算济南中心) | 一种基于异构应用平台的gpu资源弹性调度方法 |
US20210191780A1 (en) * | 2020-09-30 | 2021-06-24 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method and apparatus for processing development machine operation task, device and storage medium |
CN113157413A (zh) * | 2021-04-16 | 2021-07-23 | 上海交通大学 | 基于服务质量需求的深度学习任务资源优化配置方法及系统 |
CN115129449A (zh) * | 2022-06-24 | 2022-09-30 | 浪潮通信技术有限公司 | 共享gpu的资源调度方法及装置 |
CN115391035A (zh) * | 2022-08-22 | 2022-11-25 | 北京计算机技术及应用研究所 | 一种异构计算资源协同管理调度的方法 |
-
2023
- 2023-04-06 CN CN202310354096.0A patent/CN116069481B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795219A (zh) * | 2019-10-24 | 2020-02-14 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 适用于多种计算框架的资源调度方法及系统 |
US20210191780A1 (en) * | 2020-09-30 | 2021-06-24 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method and apparatus for processing development machine operation task, device and storage medium |
CN112698947A (zh) * | 2020-12-31 | 2021-04-23 | 山东省计算中心(国家超级计算济南中心) | 一种基于异构应用平台的gpu资源弹性调度方法 |
CN113157413A (zh) * | 2021-04-16 | 2021-07-23 | 上海交通大学 | 基于服务质量需求的深度学习任务资源优化配置方法及系统 |
CN115129449A (zh) * | 2022-06-24 | 2022-09-30 | 浪潮通信技术有限公司 | 共享gpu的资源调度方法及装置 |
CN115391035A (zh) * | 2022-08-22 | 2022-11-25 | 北京计算机技术及应用研究所 | 一种异构计算资源协同管理调度的方法 |
Non-Patent Citations (2)
Title |
---|
HARICHANE ISHAK ET AL.: "KubeSC‐RTP: Smart scheduler for Kubernetes platform on CPU‐GPU heterogeneous systems", 《 CONCURRENCY AND COMPUTATION: PRACTICE AND EXPERIENCE》 * |
卢林通: "基于异构计算平台的容器调度和部署研究", 《知网》 * |
Also Published As
Publication number | Publication date |
---|---|
CN116069481B (zh) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10778798B2 (en) | Remote service access in a container management system | |
US10949239B2 (en) | Application deployment in a container management system | |
US20200351337A1 (en) | Resource Allocation and Provisioning in a Multi-Tier Edge-Cloud Virtualization Environment | |
US11392422B1 (en) | Service-managed containers for container orchestration service | |
CN109150987B (zh) | 基于主机层和容器层的两层式容器集群弹性扩容方法 | |
CN107493191B (zh) | 一种集群节点及自调度容器集群系统 | |
WO2021227999A1 (zh) | 云计算服务系统和方法 | |
CN103414761A (zh) | 一种基于Hadoop架构的移动终端云资源调度方法 | |
CN112231049A (zh) | 基于kubernetes的计算设备共享方法、装置、设备及存储介质 | |
CN110311948B (zh) | 容器/容器组间的通信方法及基于此的容器云网络系统 | |
CN110166507B (zh) | 多资源调度方法和装置 | |
KR20210096259A (ko) | 컴퓨팅 리소스 할당 | |
CN110308987B (zh) | 一种更新容器云上分布式训练任务连接参数的方法 | |
CN110308986A (zh) | 基于优化调度的容器云上分布式训练数据通信的方法 | |
WO2020108337A1 (zh) | 一种cpu资源调度方法及电子设备 | |
CN112631680B (zh) | 微服务容器调度系统、方法、装置和计算机设备 | |
CN117076133B (zh) | 云游戏平台异构资源分配方法、计算机装置及存储介质 | |
JP2024501005A (ja) | コンテナクラスタのための管理方法および装置 | |
CN116069481B (zh) | 一种共享gpu资源的容器调度系统及调度方法 | |
CN115987872A (zh) | 一种基于资源路由的云系统 | |
KR101997602B1 (ko) | 디바이스 양방향 m2m 리소스 관리 방법 | |
CN110300192A (zh) | 一种根据ip分配表更新分布式训练任务连接参数的方法 | |
CN114615268A (zh) | 基于Kubernetes集群的服务网络、监控节点、容器节点及设备 | |
CN112346853A (zh) | 用于分布应用的方法和设备 | |
CN115714747B (zh) | 基于Kubernetes的集群内部网络流量优化方法、设备、系统及介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |