CN111679891B - 容器复用方法、装置、设备以及存储介质 - Google Patents
容器复用方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN111679891B CN111679891B CN202010817867.1A CN202010817867A CN111679891B CN 111679891 B CN111679891 B CN 111679891B CN 202010817867 A CN202010817867 A CN 202010817867A CN 111679891 B CN111679891 B CN 111679891B
- Authority
- CN
- China
- Prior art keywords
- configuration information
- container
- job task
- task
- working state
- 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.)
- Active
Links
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/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/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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请的一个或多个实施例提出容器复用方法、装置、设备以及存储介质。其中,上述方法可以包括,确定第一JOB任务包括的各容器的工作状态。然后,当上述各容器的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务。
Description
技术领域
本申请涉及计算机技术,具体涉及容器复用方法、装置、设备以及存储介质。
背景技术
在容器领域的相关技术中,容器可能需要根据配置信息多次执行同一JOB任务(同一JOB任务是指需要相同运行环境的JOB任务)。而执行JOB任务需要干净的执行环境,因此,当执行完毕该JOB任务后,该JOB任务包括的容器将会释放资源(比如,CPU、内存等资源),而当下一次执行该JOB任务时,上述容器又需要重新获取资源。
可见,在多次执行该JOB任务的过程中,上述容器将会不断重复执行资源的释放与获取的过程,从而导致该JOB任务执行效率低,甚至还可能由于上述容器无法获取到资源而导致该JOB任务无法继续执行。
发明内容
有鉴于此,本申请至少公开一种容器复用方法,上述方法包括:
确定第一JOB任务包括的各容器的工作状态;
当上述各容器的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务。
在示出的一实施例中,上述将获取的配置信息分发至上述各容器,以使各容器基于上述获取的配置信息执行上述第一JOB任务,包括:
将获取的配置信息分发至上述各容器,以使上述各容器将自身工作状态置为繁忙,并启动后台线程,以使上述后台线程基于上述获取的配置信息执行上述第一JOB任务。
在示出的一实施例中,各容器基于上述获取的配置信息执行上述第一JOB任务之后,还包括:
上述各容器将自身工作状态置为空闲。
在示出的一实施例中,上述各容器将自身工作状态置为空闲,包括:
上述各容器周期性检查自身对应的后台线程是否结束,如果是,则将自身工作状态置为空闲。
在示出的一实施例中,在确定第一JOB任务包括的各容器的工作状态之前,上述方法还包括:
通过第二JOB任务该任务确定若干用于执行上述第一JOB任务的配置信息;
根据若干用于执行上述第一JOB任务的配置信息,生成上述预先配置的配置信息集合。
在示出的一实施例中,上述第一JOB任务嵌套于上述第二JOB任务。
在示出的一实施例中,上述第一JOB任务为自动化机器学习中的模型评估任务;上述第二JOB任务为自动化学习中的超参数优化任务。
在示出的一实施例中,上述第一JOB任务为最大并发任务。
在示出的一实施例中,参与上述第一JOB任务的节点包括WORKER工作节点,以及PARAMETER SERVER参数服务节点;上述方法还包括:
如果上述第一JOB任务包括的各容器或者上述WORKER工作节点的工作状态为空闲,则将运行在上述PARAMETER SERVER参数服务节点中的容器对应的线程关闭。
在示出的一实施例中,上述第一JOB任务和/或上述第二JOB任务为KUBENETES JOB任务。
在示出的一实施例中,上述确定与第一JOB任务包括的各容器的工作状态,包括:
确定第一JOB任务包括的各POD的工作状态;其中,上述POD包括若干容器;
上述当上述各容器的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务,包括:
当上述各POD的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各POD,以使上述各POD基于上述获取的配置信息执行上述第一JOB任务。
本申请还提出一种容器复用装置,上述装置包括:
第一确定模块,确定第一JOB任务包括的各容器的工作状态;
分发模块,当上述各容器的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务。
在示出的一实施例中,上述分发模块,包括:
将获取的配置信息分发至上述各容器,以使上述各容器将自身工作状态置为繁忙,并启动后台线程,以使上述后台线程基于上述获取的配置信息执行上述第一JOB任务。
在示出的一实施例中,上述装置还包括:
第二确定模块,通过第二JOB任务该任务确定若干用于执行上述第一JOB任务的配置信息;
生成模块,根据若干用于执行上述第一JOB任务的配置信息,生成上述预先配置的配置信息集合。
在示出的一实施例中,上述第一JOB任务嵌套于上述第二JOB任务。
在示出的一实施例中,上述第一JOB任务为自动化机器学习中的模型评估任务;上述第二JOB任务为自动化学习中的超参数优化任务。
在示出的一实施例中,上述第一JOB任务为最大并发任务。
在示出的一实施例中,参与上述第一JOB任务的节点包括WORKER工作节点,以及PARAMETER SERVER参数服务节点;
上述装置还包括:
关闭模块,如果上述第一JOB任务包括的各容器或者上述WORKER工作节点的工作状态为空闲,则将运行在上述PARAMETER SERVER参数服务节点中的容器对应的线程关闭。
在示出的一实施例中,上述第一JOB任务和/或上述第二JOB任务为KUBENETES JOB任务。
在示出的一实施例中,上述确定模块,包括:
确定第一JOB任务包括的各POD的工作状态;其中,上述POD包括若干容器;上述分发模块,包括:
当上述各POD的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各POD,以使上述各POD基于上述获取的配置信息执行上述第一JOB任务。
本申请还提出一种计算机可读存储介质,上述存储介质存储有计算机程序,上述计算机程序用于执行上述任一实施例示出的容器复用方法。
本申请还提出一种容器复用设备,上述设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,上述处理器通过运行上述可执行指令以实现上述任一实施例示出的容器复用方法。
由上述方案可知,由于上述主节点在检测到各容器的工作状态为空闲时,可以从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务,因此,在第一JOB任务在执行完毕后,上述第一JOB任务包括的各容器不会释放资源,而是根据新的配置信息继续执行上述第一JOB任务,从而使上述容器在多次执行同一JOB任务时无需重复执行资源的释放与获取的步骤,提升了JOB任务执行效率,避免由于无法获取到资源而导致JOB任务无法继续执行。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请一个或多个实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请示出的一种容器复用方法的方法流程图;
图2为本申请示出的超参数优化方法的方法流程图;
图3为本申请示出的参与第一JOB任务的节点的架构示意图;
图4为本申请示出的一种超参数优化方法的方法流程图;
图5为本申请示出的一种容器复用装置的结构图;
图6为本申请示出的一种容器复用设备的硬件结构图。
具体实施方式
下面将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。
在容器领域的相关技术中,容器可能需要根据配置信息多次执行同一JOB任务(同一JOB任务是指需要相同运行环境的JOB任务)。而执行JOB任务需要干净的执行环境,因此,当执行完毕该JOB任务后,该JOB任务包括的容器将会释放资源(比如,CPU、内存等资源),而当下一次执行该JOB任务时,上述容器又需要重新获取资源。
可见,在多次执行该JOB任务的过程中,上述容器将会不断重复执行资源的释放与获取的过程,从而导致该JOB任务执行效率低,甚至还可能由于上述容器无法获取到资源而导致该JOB任务无法继续执行。
例如,在AUTOML(Auto Machine Learning,自动机器学习)过程中,通常需要根据被评估模型的模型参数(相当于前述配置信息)频繁的启动分布式训练任务(相当于前述JOB任务),来对构建的模型进行模型评估。
目前,在每次执行完该分布式训练任务后,容器均会释放诸如CPU、GPU、内存等资源。然后,在启动下次分布式训练任务前,该容器又会重新获取上述资源以继续执行上述分布式训练任务。不难发现,该容器执行该分布式训练任务的效率很低,甚至还可能由于无法获取到资源而导致该分布式训练任务无法继续执行。
基于此,本申请提出一种容器复用方法。该方法通过确定JOB任务包括的容器的工作状态来灵活调度上述容器,从而使上述容器在多次执行同一JOB任务时无需重复执行资源的释放与获取的步骤,提升该JOB任务执行效率,避免由于无法获取到资源而导致该JOB任务无法继续执行。
请参见图1,图1为本申请示出的一种容器复用方法的方法流程图。
如图1上述,上述方法可以包括:
S102,确定第一JOB任务包括的各容器的工作状态;
S104,当上述各容器的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务。
上述方法可以应用于参与上述第一JOB任务的任一节点设备。
可以理解的是,当上述第一JOB任务为诸如分布式执行任务时(即在多节点执行相同任务),参与JOB任务的众多节点设备中,通常会存在主节点设备。此时,上述方法可以应用于上述主节点设备(除上述主节点设备以外的节点设备,在本申请中被称为其它节点设备)。以下以上述第一JOB任务为分布式任务,执行主体为主节点设备(简称主节点)为例进行说明。
需要说明的是,上述主节点以及其它节点可以是任意电子设备。例如,个人计算机,笔记本,PAD终端等。上述主节点以及其它节点可以搭载操作系统(例如,LINUX系统、WINDOWS系统等),以使该节点可以通过运行容器执行JOB任务。
上述容器,具体是指上述第一JOB任务包括的容器。在执行JOB任务时,上述容器需要获取执行上述第一JOB任务所需的配置信息。在获取到上述配置信息后,上述容器可以通过启动线程执行该JOB任务。
在本申请中,上述容器可以维护自身的工作状态。当需要执行JOB任务时,上述容器可以将自身工作状态维护为繁忙,当执行完毕JOB任务时,上述容器可以将自身工作状态维护为空闲。
在实际应用中,当需要执行JOB任务时(在获取到配置信息时),上述容器可以将自身工作状态置为繁忙,并启动后台线程,以使上述后台线程基于上述获取的配置信息执行上述第一JOB任务。当执行完毕JOB任务时,上述容器可以周期性检查自身对应的后台线程是否结束,如果是,则将自身工作状态置为空闲。
在维护自身工作状态时,上述容器可以向容器管理系统发送相关指令,以使容器管理系统中维护该容器的工作状态。需要说明的是,本申请并不限定容器维护自身工作状态的方法。
在本申请中,容器可以查询确定任一容器的工作状态。
例如,容器可以通过向容器管理系统发送查询目标容器工作状态的指令,从而确定目标容器的工作状态。
需要说明的是,JOB任务包括的容器数量可以是一个或多个,在本申请中不作限定。另一方面,上述容器可以是DOCKER容器、COREOS容器等,在此不作先。
在分布式任务中,参与该第一JOB任务的节点均可以通过搭载容器管理程序(例如,KUBENETES、YARN、MESOS等)来管理上述容器,在执行分布式任务时,各节点可以通过运行各自搭载的容器,以完成该分布式任务。
需要说明的是,在不同的容器管理程序中,对容器的管理方式并不相同。例如,在KUBENETES(以下简称K8S)中,通常通过管理POD(POD是指一个或多个容器的组合,在POD中,所有容器都被统一调度)来管理容器。可以理解的是,本申请记载的任一容器复用方法也可以适用于POD复用。
上述配置信息,具体是指执行第一JOB任务所需的信息。在重复执行上述第一JOB任务时,每次执行所需的配置信息通常是不同的。
例如,在AUTOML程序的超参数优化环节中,上述第一JOB任务可以是指模型估计,此时执行模型估计所需的配置信息可以是本次待估计模型对应的超参数。而在下一次重复执行该第一JOB任务时,可能是对另一个待估计模型进行模型评估,所以执行该第一JOB任务所需的配置信息(超参数)可能不同。
上述配置信息集合,具体用于存储上述配置信息。
在一种方式中,上述配置信息可以是预先配置好的集合,此时,在重复执行上述第一JOB任务时,执行从该配置信息集合中获取配置信息即可。
在另一种方式中,上述配置信息可以是通过与上述第一JOB任务不同的第二JOB任务生成的。其中,上述第一JOB任务还可以嵌套于上述第二JOB任务。
此时,可以先启动第二JOB任务,并通过该任务确定若干用于执行上述第一JOB任务的配置信息。
在确定若干配置信息后,可以根据若干用于执行上述第一JOB任务的配置信息,生成上述预先配置的配置信息集合。
在得到上述配置信息集合后,可以启动上述第一JOB任务。
例如,在AUTOML程序的超参数优化环节中,上述第一JOB任务可以是指模型估计,上述第二JOB任务可以是指超参数优化任务。首先参与第二JOB任务的节点可以启动上述第二JOB任务,通过预设的算法(例如,超参数优化算法)获得若干超参数配置信息。然后,上述节点可以将获得的若干超参数配置信息加入到配置信息集合中(上述配置信息集合可以是队列或栈等形式)。然后可以依次从上述配置信息集合中获取超参数配置信息,并启动上述第一JOB任务,以对由上述超参数构成的模型进行模型评估。重复执行上述步骤,即可完成上述超参数优化环节。
在本申请示出的容器复用方法中,上述主节点可以执行S102,确定第一JOB任务包括的各容器的工作状态。
在实际应用中,上述主节点可以周期性地通过访问容器管理系统来获取上述各容器的工作状态。
例如,在AUTOML中,上述第一JOB任务可以是指模型评估任务。在获取第一JOB任务包括的各容器的工作状态时,上述主节点可以周期性地向容器管理系统发送查询上述各容器工作状态的指令。当上述容器管理系统接收到该指令后,可以将各容器的工作状态返回至上述主节点。
在确定各容器的工作状态后,当上述各容器的工作状态为空闲时,上述主节点可以执行S104,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务。
在实际应用中,当上述各容器的工作状态为空闲时,说明上述第一JOB任务被执行完毕。此时,上述主节点可以通过运行自身搭载的容器,从配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器。各容器在接收到配置信息后,可以启动后台线程,完成上述第一JOB任务。
例如,在AUTOML中,上述第一JOB任务可以是指模型评估任务,上述配置信息集合可以是指超参数配置信息集合。当上述各容器的工作状态为空闲时,上述主节点可以通过运行自身搭载的容器,从超参数配置信息集合中获取超参数配置信息,并将获取的超参数配置信息分发至上述各容器。各容器在接收到该超参数配置信息后,可以启动后台线程,完成上述第一JOB任务。
由上述方案可知,由于上述主节点在检测到各容器的工作状态为空闲时,可以从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务,因此,在第一JOB任务在执行完毕后,上述第一JOB任务包括的各容器不会释放资源,而是根据新的配置信息继续执行上述第一JOB任务,从而使上述容器在多次执行同一JOB任务时无需重复执行资源的释放与获取的步骤,提升了JOB任务执行效率,避免由于无法获取到资源而导致JOB任务无法继续执行。
以下以AUTOML中的超参数优化环节为例进行实施例说明。
上述超参数优化环节通过K8S开源软件实施。以下以POD代替容器进行实施例说明。
在上述超参数优化环节中,超参数优化任务可以是第二JOB任务,模型估计任务可以是第一JOB任务,且模型估计任务是分布式训练任务。上述第一JOB任务和/或上述第二JOB任务为KUBENETES JOB任务(以下简称JOB任务)。
请参见图2,图2为本申请示出的超参数优化方法的方法流程图。
如图2所示,在启动超参数优化环节后,负责该环节的节点将启动上述第二JOB任务,先构建超参数配置信息集合(以下简称TRIAL队列,其中每一超参数配置信息被称为TRIAL)。在完成上述TRIAL队列后,上述节点可以启动上述第一JOB任务,对上述TRIAL下的模型进行模型评估。在针对上述TRIAL队列中包括的所有TRIAL完成模型评估后,可以继续获取TRIAL,重复执行上述第一JOB任务。
请参见图3,图3为本申请示出的参与第一JOB任务的节点的架构示意图。
如图3所示,节点1-5通过节点6相互连接。
其中,节点1为负责该超参数优化环节的节点,在得到超参数优化指令后,该节点1将会发起上述第二JOB任务,以及上述第一JOB任务。
节点1-4为负责执行模型评估的WORKER工作节点(以下简称WK节点)。其中节点1为主节点,节点2、3、4位其他节点。各WK节点分别包括若干POD,通过该POD可以完成模型评估功能。
节点5为PARAMETER SERVER参数服务节点(以下简称PS节点)。该节点5负责存储待评估模型需要的参数,在启动模型评估时,需要先从节点5获取本次训练所需的模型参数。该PS节点包括若干POD,通过个POD可以完成参数服务功能。
需要提醒的是,模型参数与超参数不同,不能混淆。模型参数指的诸如模型函数对应的参数,在模型评估过程中是不断变化的。而超参数指的是诸如学习率,正则化系数等定义模型结构的超参,在模型评估过程中不发生变化。
节点6搭载了负责跨进程共享的分布式服务系统(例如,ZOOKEEPER,REDIS,ETCD等)。节点1-5可以通过与节点6交互获取其它节点中的资源。
例如,在分发TRIAL时,当主节点1获取到TRIAL后,可以将该TRIAL上传至节点6搭载的ZOOKEEPER系统,其它节点可以通过诸如订阅消息的方式从上述ZOOKEEPER系统获取该TRIAL。
需要说明的是,上述架构示意图仅为示意性的,在实际应用中可以根据实际需求构建不同的架构,在此不作限定。
以下结合附图3与附图4说明实施例。
请参见图4,图4为本申请示出的一种超参数优化方法的方法流程图。
当节点1得到超参数优化指令后,可以执行S402,启动上述第二JOB任务。
在一实施例中,为了减少JOB任务占用空间,上述节点1可以启动一个只包含单个POD的JOB任务。
具体地,该节点1可以调用预先设置的超参数优化算法(例如,网格搜索法、随机采样法等),得到N个TRIAL。
在得到上述N个TRIAL后,上述节点1可以执行S404,将该N个TRIAL加入TRIAL队列中。
在构建好TRIAL队列后,该节点1可以执行S406,启动上述第一JOB任务。
在一实施例中,为了高效完成上述第一JOB任务,可以最大并发的申请CORE个JOB子任务,构成上述第一JOB任务。
其中,每个JOB子任务包括4个WK节点(即图3中的节点1-4),以及1个PS(即图3中的节点5)。
此时,各节点执行一次第一JOB任务,实际为执行CORE个JOB子任务。
需要说明的是,当完成一次超参数优化环节后,上述节点1还可以重复执行上述S402-S406步骤,直至获得符合要求的超参数配置信息。在本实施例中,为了方便说明实施例,假设节点1至执行一次超参数优化环节,即只执行一次第二JOB任务。
当节点1启动上述第一JOB任务后,节点1-4将根据自身节点角色执行不同的步骤。
节点1由于是主节点,因此除了负责模型评估以外,还负责监控其他节点搭载的POD的工作状态,并根据POD的工作状态对POD实现调度。
具体地,节点1可以执行S408,确定第一JOB任务包括的各POD的工作状态;其中,上述POD包括若干容器。
在实际应用中,节点1可以先将自身工作状态初始化为空闲,然后周期性地向POD管理系统发送查询节点2-4搭载的POD工作状态的指令。当上述POD管理系统接收到该指令后,可以将节点2-4搭载的POD的工作状态返回至上述主节点。
当上述各POD的工作状态为空闲时,上述节点1可以从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各POD,以使上述各POD基于上述获取的配置信息执行上述第一JOB任务。
在实际应用中,当上述各POD的工作状态为空闲时,上述节点1可以从TRIAL队列中获取TRIAL,并将该TRIAL上传至节点6搭载的分布式服务系统。
节点2、3、4可以通过订阅消息的方式从上述分布式服务系统中获取上述TRIAL,以执行上述第一JOB任务。
在获取TRIAL后,各节点搭载的POD将开始执行是第一JOB任务。具体地,各POD将自身工作状态置为繁忙,并启动后台线程。通过上述后台线程,上述POD可以基于上述获取的TRIAL执行上述第一JOB任务。
节点1-4在开始执行第一JOB任务后,将周期性检测启动的后台线程是否结束,如果是,则将自身节点搭载的POD的工作状态置为空闲。
由上述方案可知,由于上述节点1在检测到各POD的工作状态为空闲时,可以从TRIAL队列中获取TRIAL,并将获取的TRIAL分发至上述各POD,以使上述各POD基于上述获取的配置信息执行上述第一JOB任务,因此,在第一JOB任务在执行完毕后,上述第一JOB任务包括的各POD不会释放资源,而是根据新的TRIAL继续执行上述第一JOB任务,从而使上述POD在多次执行同一JOB任务时无需重复执行资源的释放与获取的步骤,提升了JOB任务执行效率,避免由于无法获取到资源而导致JOB任务无法继续执行。
在一实施例中,当上述TRIAL队列中不包括任何TRIAL时,上述第二JOB任务即可以认为执行完毕,此时,上述第一以及第二JOB任务包括的POD均可以释放资源,而由于PS节点通常属于常驻节点,因此其对应的线程不会自动结束(既不会自动释放资源)。
在上述情形下,为了PS节点可以释放资源,如果上述第一JOB任务包括的各POD或者上述WK节点的工作状态为空闲,则将运行在上述PS节点中的POD对应的线程关闭,从而使PS节点释放资源。
与上述任一实施例相对应的,本申请还提出一种容器复用装置
请参见图5,图5为本申请示出的一种容器复用装置的结构图。
如图5所示,本申请还提出一种容器复用装置500,上述装置500包括:
第一确定模块510,确定第一JOB任务包括的各容器的工状态;
分发模块520,当上述各容器的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各容器,以使上述各容器基于上述获取的配置信息执行上述第一JOB任务。
在示出的一实施例中,上述分发模块520,包括:
将获取的配置信息分发至上述各容器,以使上述各容器将自身工作状态置为繁忙,并启动后台线程,以使上述后台线程基于上述获取的配置信息执行上述第一JOB任务。
在示出的一实施例中,上述装置500还包括:
第二确定模块530,通过第二JOB任务该任务确定若干用于执行上述第一JOB任务的配置信息;
生成模块540,根据若干用于执行上述第一JOB任务的配置信息,生成上述预先配置的配置信息集合。
在示出的一实施例中,上述第一JOB任务嵌套于上述第二JOB任务。
在示出的一实施例中,上述第一JOB任务为自动化机器学习中的模型评估任务;上述第二JOB任务为自动化学习中的超参数优化任务。
在示出的一实施例中,上述第一JOB任务为最大并发任务。
在示出的一实施例中,参与上述第一JOB任务的节点包括WORKER工作节点,以及PARAMETER SERVER参数服务节点;
上述装置500还包括:
关闭模块,如果上述第一JOB任务包括的各容器或者上述WORKER工作节点的工作状态为空闲,则将运行在上述PARAMETER SERVER参数服务节点中的容器对应的线程关闭。
在示出的一实施例中,上述第一JOB任务和/或上述第二JOB任务为KUBENETES JOB任务。
在示出的一实施例中,上述确定模块,包括:
确定第一JOB任务包括的各POD的工作状态;其中,上述POD包括若干容器;上述分发模块520,包括:
当上述各POD的工作状态为空闲时,从预先配置的配置信息集合中获取配置信息,并将获取的配置信息分发至上述各POD,以使上述各POD基于上述获取的配置信息执行上述第一JOB任务。
本申请示出的容器复用装置的实施例可以应用于容器复用设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请示出的一种容器复用设备的硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6所示的一种容器复用设备,上述设备可以包括:处理器。
用于存储处理器可执行指令的存储器。
其中,上述处理器通过运行上述可执行指令以实现上述任一实施例示出的容器复用方法。
本申请提出一种计算机可读存储介质,上述存储介质存储有计算机程序,上述计算机程序用于执行上述任一实施例示出的容器复用方法。
本领域技术人员应明白,本申请一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本申请一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(可以包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请中的“和/或”表示至少具有两者中的其中一个,例如,“A和/或B”可以包括三种方案:A、B、以及“A和B”。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的行为或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本申请中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、可以包括本申请中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本申请中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本申请中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。上述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机可以包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件可以包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将可以包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质可以包括所有形式的非易失性存储器、媒介和存储器设备,例如可以包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本申请包含许多具体实施细节,但是这些不应被解释为限制任何公开的范围或所要求保护的范围,而是主要用于描述特定公开的具体实施例的特征。本申请内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上上述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上上述仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。
Claims (16)
1.一种容器复用方法,所述方法包括:
通过第二JOB任务确定若干用于执行第一JOB任务的配置信息;其中,所述第一JOB任务为自动化机器学习中的模型评估任务;所述第二JOB任务为自动化机器学习中的超参数优化任务;
根据所述若干用于执行第一JOB任务的配置信息,生成配置信息集合;
确定执行所述第一JOB任务的各容器的工作状态;
当所述各容器的工作状态均为空闲时,从所述配置信息集合中获取配置信息,并将获取的配置信息分发至所述各容器,以使所述各容器基于所述获取的配置信息完成下一轮模型评估任务。
2.根据权利要求1所述的方法,所述将获取的配置信息分发至所述各容器,以使各容器基于所述获取的配置信息执行所述第一JOB任务,包括:
将获取的配置信息分发至所述各容器,以使所述各容器将自身工作状态置为繁忙,并启动后台线程,以使所述后台线程基于所述获取的配置信息执行所述第一JOB任务。
3.根据权利要求2所述的方法,各容器基于所述获取的配置信息执行所述第一JOB任务之后,还包括:
所述各容器将自身工作状态置为空闲。
4.根据权利要求3所述的方法,所述各容器将自身工作状态置为空闲,包括:
所述各容器周期性检查自身对应的后台线程是否结束,如果是,则将自身工作状态置为空闲。
5.根据权利要求1所述的方法,所述第一JOB任务为最大并发任务。
6.根据权利要求1-5任一所述的方法,参与所述第一JOB任务的节点包括WORKER工作节点,以及PARAMETER SERVER参数服务节点;
所述方法还包括:
如果所述第一JOB任务包括的各容器或者所述WORKER工作节点的工作状态为空闲,则将运行在所述PARAMETER SERVER参数服务节点中的容器对应的线程关闭。
7.根据权利要求1-5任一所述的方法,所述第一JOB任务和/或所述第二JOB任务为KUBENETES JOB任务。
8.根据权利要求7所述的方法,所述确定所述第一JOB任务包括的各容器的工作状态,包括:
确定所述第一JOB任务包括的各POD的工作状态;其中,所述POD包括若干容器;
所述当所述各容器的工作状态为空闲时,从所述配置信息集合中获取配置信息,并将获取的配置信息分发至所述各容器,以使所述各容器基于所述获取的配置信息执行所述第一JOB任务,包括:
当所述各POD的工作状态为空闲时,从所述配置信息集合中获取配置信息,并将获取的配置信息分发至所述各POD,以使所述各POD基于所述获取的配置信息执行所述第一JOB任务。
9.一种容器复用装置,所述装置包括:
第二确定模块,通过第二JOB任务确定若干用于执行第一JOB任务的配置信息;其中,所述第一JOB任务为自动化机器学习中的模型评估任务;所述第二JOB任务为自动化机器学习中的超参数优化任务;
生成模块,根据所述若干用于执行第一JOB任务的配置信息,生成配置信息集合;
第一确定模块,确定执行所述第一JOB任务的各容器的工作状态;
分发模块,当所述各容器的工作状态均为空闲时,从所述配置信息集合中获取配置信息,并将获取的配置信息分发至所述各容器,以使所述各容器基于所述获取的配置信息完成下一轮模型评估任务。
10.根据权利要求9所述的装置,所述分发模块,包括:
将获取的配置信息分发至所述各容器,以使所述各容器将自身工作状态置为繁忙,并启动后台线程,以使所述后台线程基于所述获取的配置信息执行所述第一JOB任务。
11.根据权利要求9所述的装置,所述第一JOB任务为最大并发任务。
12.根据权利要求9-11任一所述的装置,参与所述第一JOB任务的节点包括WORKER工作节点,以及PARAMETER SERVER参数服务节点;
所述装置还包括:
关闭模块,如果所述第一JOB任务包括的各容器或者所述WORKER工作节点的工作状态为空闲,则将运行在所述PARAMETER SERVER参数服务节点中的容器对应的线程关闭。
13.根据权利要求9-11任一所述的装置,所述第一JOB任务和/或所述第二JOB任务为KUBENETES JOB任务。
14.根据权利要求9所述的装置,所述确定模块,包括:
确定所述第一JOB任务包括的各POD的工作状态;其中,所述POD包括若干容器;
所述分发模块,包括:
当所述各POD的工作状态为空闲时,从所述配置信息集合中获取配置信息,并将获取的配置信息分发至所述各POD,以使所述各POD基于所述获取的配置信息执行所述第一JOB任务。
15.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行:
通过第二JOB任务确定若干用于执行第一JOB任务的配置信息;其中,所述第一JOB任务为自动化机器学习中的模型评估任务;所述第二JOB任务为自动化机器学习中的超参数优化任务;
根据所述若干用于执行第一JOB任务的配置信息,生成配置信息集合;
确定执行所述第一JOB任务的各容器的工作状态;
当所述各容器的工作状态均为空闲时,从所述配置信息集合中获取配置信息,并将获取的配置信息分发至所述各容器,以使所述各容器基于所述获取的配置信息完成下一轮模型评估任务。
16.一种容器复用设备,所述设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现:
通过第二JOB任务确定若干用于执行第一JOB任务的配置信息;其中,所述第一JOB任务为自动化机器学习中的模型评估任务;所述第二JOB任务为自动化机器学习中的超参数优化任务;
根据所述若干用于执行第一JOB任务的配置信息,生成配置信息集合;
确定执行所述第一JOB任务的各容器的工作状态;
当所述各容器的工作状态均为空闲时,从所述配置信息集合中获取配置信息,并将获取的配置信息分发至所述各容器,以使所述各容器基于所述获取的配置信息完成下一轮模型评估任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010817867.1A CN111679891B (zh) | 2020-08-14 | 2020-08-14 | 容器复用方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010817867.1A CN111679891B (zh) | 2020-08-14 | 2020-08-14 | 容器复用方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111679891A CN111679891A (zh) | 2020-09-18 |
CN111679891B true CN111679891B (zh) | 2020-12-04 |
Family
ID=72438622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010817867.1A Active CN111679891B (zh) | 2020-08-14 | 2020-08-14 | 容器复用方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111679891B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112165622B (zh) * | 2020-09-23 | 2023-06-27 | 上海网达软件股份有限公司 | 一种单Pod多协程视频文件转码方法及系统 |
CN113114715B (zh) * | 2021-02-24 | 2024-01-23 | 网宿科技股份有限公司 | 一种基于边缘计算的调度方法及边缘设备集群 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191778B1 (en) * | 2015-11-16 | 2019-01-29 | Turbonomic, Inc. | Systems, apparatus and methods for management of software containers |
CN108874549B (zh) * | 2018-07-19 | 2021-02-02 | 北京百度网讯科技有限公司 | 资源复用方法、装置、终端和计算机可读存储介质 |
CN109885389B (zh) * | 2019-02-19 | 2021-07-16 | 浪潮云信息技术股份公司 | 一种基于容器的并行深度学习调度训练方法及系统 |
CN110287003B (zh) * | 2019-06-28 | 2020-04-21 | 北京九章云极科技有限公司 | 资源的管理方法和管理系统 |
-
2020
- 2020-08-14 CN CN202010817867.1A patent/CN111679891B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111679891A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190332523A1 (en) | Data-Driven Scheduling of Automated Software Program Test Suites | |
CN111679891B (zh) | 容器复用方法、装置、设备以及存储介质 | |
CN115328663B (zh) | 基于PaaS平台进行资源调度的方法、装置、设备和存储介质 | |
US9053240B2 (en) | Computer program testing | |
CN109976771B (zh) | 一种应用的部署方法及装置 | |
US11526276B2 (en) | Upgrade management method and scheduling node, and storage system | |
CN110928653B (zh) | 跨集群任务的执行方法、装置、计算机设备和存储介质 | |
CN103309738A (zh) | 用户作业调度方法及装置 | |
CN109656725B (zh) | 消息消费者切换方法、装置、存储介质及电子设备 | |
CN103593242A (zh) | 基于Yarn框架的资源共享控制系统 | |
CN104156263A (zh) | 芯片部件管理任务中断方法、芯片及包括所述芯片的组件 | |
CN111045810B (zh) | 一种任务调度处理方法及装置 | |
CN113835865A (zh) | 一种任务部署方法和装置、电子设备和存储介质 | |
CN104199739A (zh) | 一种基于负载均衡的推测式Hadoop调度方法 | |
CN113434284A (zh) | 一种隐私计算服务端设备、系统及任务调度方法 | |
CN104298565A (zh) | 一种初始化端口的方法及装置 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
CN111240824A (zh) | 一种cpu资源调度方法及电子设备 | |
CN111143063B (zh) | 任务的资源预约方法及装置 | |
US9671779B2 (en) | Method and system for filtering lot schedules using a previous schedule | |
CN109189580B (zh) | 一种基于多核平台的多任务开发模型及其方法 | |
US10255155B2 (en) | Scheduler | |
US20230168940A1 (en) | Time-bound task management in parallel processing environment | |
US9639636B1 (en) | Algorithmically driven selection of parallelization technique for running model simulation | |
CN113852554A (zh) | 一种数据传输方法、装置及设备 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40037390 Country of ref document: HK |