资源调度方法、系统、电子设备及计算机存储介质
文献发布时间:2023-06-19 10:43:23
技术领域
本申请涉及容器化技术领域,尤其是涉及一种资源调度方法、系统、电子设备及计算机存储介质。
背景技术
随着人工智能、图像识别、神经网络等新型技术的应用越来越广泛,对GPU(Graphics Processing Unit,图形处理器)卡资源的需求越来越大,而在通过GPU资源进行深度学习的过程中需要人工干预的方式进行分配和调度,以使得GPU资源能够得到有效应用,但是目前的GPU机器往往是多个GPU卡集成,无法对一台GPU机器上的单个GPU卡进行精细分配和调度,从而利用GPU卡对训练数据进行深度学习和训练。
发明内容
本申请旨在至少解决现有技术中存在的技术问题之一。为此,本申请提出一种资源调度方法,能够对GPU机器上的单个GPU卡资源进行精细分配和调度,提高GPU资源利用率。
本申请还提出一种具有上述资源调度方法的资源调度系统。
本申请还提出一种具有上述资源调度方法的电子设备。
本申请还提出一种具有上述资源调度方法的计算机可读存储介质。
根据本申请的第一方面实施例的资源调度方法,包括:获取多个资源设备的资源应用状态;
根据多个资源设备的资源应用状态确定进行调配的资源设备;
通过所述资源设备获取训练数据,并为所述资源设备的处理器部署容器镜像;
通过所述容器镜像调度所述资源设备的处理器对所述训练数据进行训练。
根据本申请实施例的资源调度方法,至少具有如下有益效果:通过获取多个资源设备的资源应用状态,根据资源设备的资源应用状态确定进行调配的资源设备,通过确定的资源设备获取训练数据,并为资源设备的处理器部署容器精细,通过容器镜像调度资源设备的处理器对训练数据进行训练,能够对GPU机器上的单个GPU卡资源进行精细分配和调度,提高GPU资源利用率。
根据本申请的一些实施例,所述容器镜像由容器对象生成,所述容器对象通过下列方法得到:
构建所述容器对象的依赖环境;
基于所述依赖环境将应用组件和应用软件部署在所述容器对象上,所述应用软件基于所述应用软件所依赖的运行环境进行部署。
根据本申请的一些实施例,所述为所述资源设备的处理器部署容器镜像,包括:
根据所述处理器的处理器类型和所述容器对象生成所述容器镜像;
为对应的所述设备器部署所述容器镜像。
根据本申请的一些实施例,所述通过所述资源设备获取训练数据,包括:
下发获取指令给所述资源设备,以使所述资源设备根据所述获取指令从文件数据库获取对应的训练数据。
根据本申请的一些实施例,所述通过所述容器镜像调度所述资源设备的处理器对所述训练数据进行训练,包括:
通过所述容器镜像获取所述资源设备的多个处理器;
为所述多个处理器配置对应的身份标识;
根据所述身份标识调度对应的处理器对所述训练数据进行训练。
根据本申请的一些实施例,所述下发获取指令给所述资源设备,包括:
下发所述获取指令给所述资源设备的处理器部署的容器镜像,由所述容器镜像根据所述获取指令调度所述处理器获取对应的训练数据。
根据本申请的一些实施例,还包括:
若无法根据所述多个资源设备的资源应用状态确定资源设备,则基于多个资源设备的资源应用状态进行队列处理,等待获取进行资源调度的所述资源设备。
根据本申请的第二方面实施例的资源调度系统,包括:
获取模块,所述获取模块用于获取获取多个资源设备的资源应用状态;
确定模块,所述确定模块用于根据多个资源设备的资源应用状态确定进行调配的资源设备;
处理模块,所述处理模块用于通过所述资源设备获取训练数据,并为所述资源设备的处理器部署容器镜像;
调度模块,所述调度模块用于通过所述容器镜像调度所述资源设备的处理器对所述训练数据进行训练。
根据本申请实施例的资源调度系统,至少具有如下有益效果:通过获取模块获取多个资源设备的资源应用状态,确定模块根据资源设备的资源应用状态确定进行调配的资源设备,处理模块通过确定的资源设备获取训练数据,并为资源设备的处理器部署容器精细,调度模块通过容器镜像调度资源设备的处理器对训练数据进行训练,能够对GPU机器上的单个GPU卡资源进行精细分配和调度,提高GPU资源利用率。
根据本申请的第三方面实施例的电子设备,包括:至少一个处理器,以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行所述指令时实现如第一方面所述的资源调度方法。
根据本申请的电子设备,至少具有如下有益效果:通过执行第一方面实施例中提到的资源调度方法,能够对GPU机器上的单个GPU卡资源进行精细分配和调度,提高GPU资源利用率。
根据本申请的第四方面实施例的计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面所述的资源调度方法。
根据本申请的计算机可读存储介质,至少具有如下有益效果:通过执行第一方面实施例中提到的资源调度方法,能够对GPU机器上的单个GPU卡资源进行精细分配和调度,提高GPU资源利用率。
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
图1为本申请实施例中资源调配方法的一具体流程示意图;
图2为本申请实施例中资源调配方法的步骤300的一具体流程示意图;
图3为本申请实施例中资源调配方法的一具体应用实例图;
图4为本申请实施例中资源调配方法的步骤300的另一具体流程示意图;
图5为本申请实施例中资源调配方法的步骤400的一具体流程示意图;
图6为本申请实施例中资源调配系统的一具体模块示意图。
附图标记:
获取模块100、确定模块200、处理模块300、调度模块400。。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
需要说明的是,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同流程图中的顺序执行所示出或描述的步骤。如果涉及到“若干”,其含义是一个以上,如果涉及到“多个”,其含义是两个以上,如果涉及到“以下”,均应理解为包括本数。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本申请的实施例,并且除非另外要求,否则不会对本申请的范围施加限制。大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
需要说明的是,如无特殊说明,在实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
随着人工智能、图像识别、神经网络等新型技术的应用越来越广泛,对GPU(Graphics Processing Unit,图形处理器)卡资源的需求越来越大,而在通过GPU资源进行深度学习的过程中需要人工干预的方式进行分配和调度,以使得GPU资源能够得到有效应用,但是目前的GPU机器往往是多个GPU卡集成,无法对一台GPU机器上的单个GPU卡进行精细分配和调度,从而利用GPU卡对训练数据进行深度学习和训练。
基于此,本申请实施例提供了一种资源调度方法、系统、电子设备及计算机存储介质,能够对GPU机器上的单个GPU卡资源进行精细分配和调度,提高GPU资源利用率。
需要说明的是,本申请实施例中所提到的资源调度方法及资源调度系统适用于对GPU资源的调配,并不局限于本申请实施例中所提到的应用于深度学习领域,本申请实施例仅以深度学习作为实例进行解释。
第一方面,本申请实施例提供了一种资源调度方法。
在一些实施例中,参照图1,示出了本申请实施例中资源调度方法的流程示意图。其具体包括步骤:
S100,获取多个资源设备的资源应用状态;
S200,根据多个资源设备的资源应用状态确定进行调配的资源设备;
S300,通过资源设备获取训练数据,并为资源设备的处理器部署容器镜像;
S400,通过容器镜像调度资源设备的处理器对训练数据进行训练。
在步骤S100中,获取服务器集群中的多个资源设备的资源应用状态,其中资源设备是指可用于进行训练的集群设备,在实际应用中,可以通过AI平台对服务器集群中的资源设备进行查询,获取对应的应用状态;AI平台具有统一管控服务器集群的能力;服务器集群中包括多个资源设备,同时进行工作;而资源应用状态是指当前资源设备的工作状态,通过资源应用状态能够判断当前资源设备处于工作中或者处于空闲中。
在一些实施例中,如果通过AI平台查询服务器集群中的资源设备的资源应用状态,即当前不存在空闲的资源设备,则基于多个资源设备的资源应用状态即具体的工作状态进行队列处理,队列处理是指对资源设备进行排队等待,等待初心空闲的资源设备进行资源调配。
在步骤S200中,当获取到多个资源设备的资源应用状态后,可以根据资源应用状态确定需要进行调配的资源设备,具体地说,根据资源应用状态确定当前服务器集群中处于空闲的资源设备,从而确定该资源设备可以进行调配。
在步骤S300中,通过调配的资源设备获取需要进行训练的训练数据,并且为当前资源设备的处理器部署容器镜像。容器镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
在一些实施例中,通过资源设备获取训练数据,具体为通过AI平台下发获取指令给资源设备,以使资源设备根据获取指令从文件数据库获取对应的训练数据。具体地说,通过AI平台开始训练任务,从而下发获取指令给资源设备,其中获取指令用于告知资源设备需要进行训练的训练数据,资源设备会根据该获取指令到文件服务器中下载对应的训练数据。
在一些实施例中,容器镜像由容器对象生成,其中容器对象参考图2所示的方法得到,具体包括步骤:
S310,构建容器对象的依赖环境;
S320,基于依赖环境将应用组件和应用软件部署在容器对象上。
在步骤S310和步骤S320中,应用容器化技术,通过编写容器对象的依赖环境,将需要使用的应用组件和应用软件部署在构建好依赖环境的容器对象上,其中应用组件是指应用平台系统等,应用软件则是指该应用组件所需要的依赖的应用软件;应用软件在安装使用时需要基于各自所依赖的运行环境进行部署。在实际应用中,参考图3,应用组件为人工智能应用平台,而其中人工智能应用所需要的应用软件则为TensorFlow,OpenCV,jieba库、Flask等软件,而这些应用软件需要与对应的运行环境进行集成部署,从而将应用组件和应用软件安装在容器上,生成本申请实施例中所需要的容器对象。其中TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现;OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库;jieba库是一款优秀的Python第三方中文分词库;Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2,Flask使用BSD授权。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能,Flask没有默认使用的数据库、窗体验证工具。
需要说明的是,通过将容器镜像部署在处理器上,可以在后续快速移除对运行环境的影响,回滚原有的运行环境。
在一些实施例中,容器镜像通过构建成的容器对象生成,具体通过如图4所示的方法获得,具体包括步骤:
S330,根据处理器的处理器类型和容器对象生成容器镜像;
S340,为对应的设备器部署容器镜像。
在步骤S330和步骤S340中,获取资源设备上的处理器数量以及处理器的类型,需要说明的是,资源设备上包括若干个处理器,处理器为GPU卡,并且在实际应用中不同的GPU卡的类型不同,即不同的GPU卡的出厂厂商不同;由于出厂商不同,在实际进行容器镜像部署时,需要根据不同的出厂厂商生成对应的容器镜像,以使该容器镜像能够正确地对GPU卡进行调用。
在本申请实施例中,通过为资源设备的多个处理器部署对应的容器镜像,使得能够实现对GPU卡资源进行一对一的访问和调配。并且使得各个GPU卡资源所对应的容器镜像实现资源隔离,不会对其他容器镜像造成干扰,从而导致在人工智能运行过程中发生资源抢占的问题,GPU卡资源仅在各自容器镜像中进行人工智能训练;并且,通过容器化技术,将需要运行在不同环境的人工智能应用部署到不同的容器中,容器中安装其所需要的软件和组件,容器外部的运行环境一致,以解决不同运行环境在同一台物理机运行的问题。
在一些实施例中,通过AI平台下发获取指令给资源设备具体为通过AI平台下发获取指令给资源设备上对应的处理器部署的容器镜像,由容器镜像根据获取指令调度资源设备的处理器去获取对应的训练数据。在实际应用中,通过AI平台下发的获取指令是传递到资源设备的处理器部署的容器镜像中的人工智能应用平台,该人工智能应用平台能够根据接收到的获取指令,调用处理器进行训练数据的获取,即从文件服务器处去下载训练数据。
在步骤S400中,可以通过容器镜像调度资源设备的处理器对训练数据进行训练,在实际应用中,容器镜像中的人工智能应用平台与AI平台建立通信连接,AI平台可以直接通过容器镜像中的人工智能应用平台去调度对应的处理器。
在一些实施例中,参考图5,步骤S400具体还包括步骤:
S410,通过容器镜像获取资源设备的多个处理器;
S420,为多个处理器配置对应的身份标识;
S430,根据身份标识调度对应的处理器对训练数据进行训练。
在步骤S410中,当容器镜像部署在对应的处理器上后,容器镜像可以对处理器进行资源访问,确定当前处理器的数据,例如资源占用情况、处理器类型等,AI平台与容器镜像通过API接口进行连接,容器镜像在正常运行时,通过API接口查询资源设备所拥有的处理器及处理器的数量。
在步骤S420中,通过获取的处理器及处理器对应的信息,为不同的多个处理器配置对应的身份标识,其中身份标识是指处理器的编号,用于对处理器进行识别。在实际应用中,对GPU卡进行编号处理,使得GPU卡有对应的编号,方便对GPU卡进行识别及身份确定。
在步骤S430中,当容器镜像在运行时,AI平台可以通过获取到各个GPU卡的应用情况,通过GPU卡的编号指定对应的GPU卡对训练数据进行训练,在实际应用中,可以直接指定多个GPU卡资源分别对训练数据进行训练,从而保证多线程进行人工智能训练,提高对数据训练的高效性。
需要说明的是,本申请实施例中是通过AI平台进行管控和管理,而容器镜像中的人工智能应用平台则是用于接收AI平台的指令,从而对GPU卡资源进行调配。
在本申请实施例中,通过获取多个资源设备的资源应用状态,根据资源设备的资源应用状态确定进行调配的资源设备,通过确定的资源设备获取训练数据,并为资源设备的处理器部署容器精细,通过容器镜像调度资源设备的处理器对训练数据进行训练,能够对GPU机器上的单个GPU卡资源进行精细分配和调度,提高GPU资源利用率。
第三方面,本申请实施例还提供了一种用于执行第一方面实施例中的资源调配方法的资源调配系统。
在一些实施例中,参考图6,示出了本申请实施例中资源调度系统的模块示意图。其具体包括:获取模块100、确定模块200、处理模块300和调度模块400;
其中,所述获取模块100用于获取获取多个资源设备的资源应用状态;
所述确定模块200用于根据多个资源设备的资源应用状态确定进行调配的资源设备;
所述处理模块300用于通过所述资源设备获取训练数据,并为所述资源设备的处理器部署容器镜像;
所述调度模块400用于通过所述容器镜像调度所述资源设备的处理器对所述训练数据进行训练。
需要说明的是,本申请实施例中所提到的各个功能模块,其具体应用及功能描述已在第一方面实施例中详细说明,故在此不做赘述。
在本申请实施例中,通过获取模块100获取多个资源设备的资源应用状态,确定模块200根据资源设备的资源应用状态确定进行调配的资源设备,处理模块300通过确定的资源设备获取训练数据,并为资源设备的处理器部署容器精细,调度模块400通过容器镜像调度资源设备的处理器对训练数据进行训练,能够对GPU机器上的单个GPU卡资源进行精细分配和调度,提高GPU资源利用率。
第三方面,本申请实施例还提供了一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器;
其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行第一方面实施例中的资源调配方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序,如本申请第一方面实施例中的资源调配方法。处理器通过运行存储在存储器中的非暂态软件程序以及指令,从而实现上述第一方面实施例中的资源调配方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储执行上述第一方面实施例中的资源调配方法。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现上述第一方面实施例中的资源调配方法所需的非暂态软件程序以及指令存储在存储器中,当被一个或者多个处理器执行时,执行上述第一方面实施例中的资源调配方法。
第四方面,本申请实施例还提供了计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于:执行第一方面实施例中的资源调配方法;
在一些实施例中,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个控制处理器执行,例如,被第三方面实施例的电子设备中的一个处理器执行,可使得上述一个或多个处理器执行上述第一方面实施例中的资源调配方法。
以上所描述的设备实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
在本说明书的描述中,参考术语“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。
- 资源调度方法、系统、电子设备及计算机存储介质
- 资源调度方法、装置、电子设备以及计算机可读存储介质