CN109101342A - 分布式作业协调控制方法、装置、计算机设备及存储介质 - Google Patents
分布式作业协调控制方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109101342A CN109101342A CN201810805446.XA CN201810805446A CN109101342A CN 109101342 A CN109101342 A CN 109101342A CN 201810805446 A CN201810805446 A CN 201810805446A CN 109101342 A CN109101342 A CN 109101342A
- Authority
- CN
- China
- Prior art keywords
- pod
- parameter server
- reservoir
- job
- training process
- 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
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了分布式作业协调控制方法、装置、计算机设备及存储介质,其中方法可包括:位于参数服务器进程所在容器中的第一job_coordinator进程启动,进行自旋同步,直到作业中的所有参数服务器Pod均为运行状态,为所在容器中的参数服务器进程分配唯一编号,启动所在容器中的参数服务器进程,并控制作业返回状态;位于训练进程所在容器中的第二job_coordinator进程启动,进行自旋同步,直到作业中的所有训练进程Pod均为运行状态,为所在容器中的训练进程分配唯一编号,启动所在容器中的训练进程,建立训练进程与作业中的所有参数服务器进程的链接,并控制作业返回状态。应用本发明所述方案,能够提升资源利用率并简化实现逻辑等。
Description
【技术领域】
本发明涉及计算机应用技术,特别涉及分布式作业协调控制方法、装置、计算机设备及存储介质。
【背景技术】
在分布式作业如分布式机器学习作业和分布式深度学习作业中,使用的模型越来越大,相应地,数据量也在不断的增加,这样虽然提高了学习的准确性,但是也增加了训练时间,最常用的方法是使用大规模的机器集群进行并行训练。
一个分布式机器学习作业或分布式深度学习作业中通常包括若干个参数服务器进程和若干个训练进程,训练进程需要和所有参数服务器进程进行通信,训练进程从参数服务器进程下载模型参数,并将训练后的模型参数更新到参数服务器进程中。
传统的分布式机器学习作业和分布式深度学习作业中,通常基于信息传递接口(MPI,Message Passing Interface)协议来实现参数服务器进程和训练进程的通信和控制,或者,利用一个单独的Master进程来协调参数服务器进程和训练进程。
但是,前一种方式中,需要机器学习算法和深度学习框架本身内部依赖MPI,并在算法或框架内部实现MPI的控制逻辑,不能对作业进行有效的隔离,从而存在资源利用率不高的问题。
后一种方式中,由于需要单独实现Master,而且参数服务器进程和训练进程与Master的通信过程需要单独实现,因此实现逻辑比较复杂。
【发明内容】
有鉴于此,本发明提供了分布式作业协调控制方法、装置、计算机设备及存储介质,能够提升资源利用率并简化实现逻辑。
具体技术方案如下:
一种分布式作业协调控制方法,包括:
位于参数服务器进程所在容器中的第一job_coordinator进程启动,进行自旋同步,直到作业中的所有参数服务器Pod均为运行状态,所述参数服务器Pod为参数服务器进程所在容器所在的Pod;
所述第一job_coordinator进程为所在容器中的参数服务器进程分配唯一编号;
所述第一job_coordinator进程启动所在容器中的参数服务器进程,并控制作业返回状态。
一种分布式作业协调控制方法,包括:
位于训练进程所在容器中的第二job_coordinator进程启动,进行自旋同步,直到作业中的所有训练进程Pod均为运行状态,所述训练进程Pod为训练进程所在容器所在的Pod;
所述第二job_coordinator进程为所在容器中的训练进程分配唯一编号;
所述第二job_coordinator进程启动所在容器中的训练进程,建立所述训练进程与所述作业中的所有参数服务器进程的链接,并控制作业返回状态。
一种分布式作业协调控制装置,包括:第一控制单元、第二控制单元以及第三控制单元;
所述第一控制单元,用于当所在装置启动后,进行自旋同步,直到作业中的所有参数服务器Pod均为运行状态,所述参数服务器Pod为参数服务器进程所在容器所在的Pod;
所述第二控制单元,用于为所在容器中的参数服务器进程分配唯一编号;
所述第三控制单元,用于启动所在容器中的参数服务器进程,并控制作业返回状态。
一种分布式作业协调控制装置,包括:第四控制单元、第五控制单元和第六控制单元;
所述第四控制单元,用于当所在装置启动后,进行自旋同步,直到作业中的所有训练进程Pod均为运行状态,所述训练进程Pod为训练进程所在容器所在的Pod;
所述第五控制单元,用于为所在容器中的训练进程分配唯一编号;
所述第六控制单元,用于启动所在容器中的训练进程,建立所述训练进程与所述作业中的所有参数服务器进程的链接,并控制作业返回状态。
一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如以上所述的方法。
基于上述介绍可以看出,采用本发明所述方案,可基于容器来实现分布式作业的协调控制,从而对作业进行了有效的隔离,进而提升了资源利用率,另外,不需要单独实现Master,从而简化了实现逻辑等。
【附图说明】
图1为本发明所述分布式作业协调控制方法第一实施例的流程图。
图2为本发明所述第一job_coordinator进程进行自旋同步的方法实施例的流程图。
图3为本发明所述分布式作业协调控制方法第二实施例的流程图。
图4为本发明所述分布式作业协调控制装置第一实施例的组成结构示意图。
图5为本发明所述分布式作业协调控制装置第二实施例的组成结构示意图。
图6示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
【具体实施方式】
一个分布式机器学习作业或分布式深度学习作业中通常包括若干个参数服务器进程和若干个训练进程,训练进程需要和所有参数服务器进程进行通信,训练进程从参数服务器进程下载模型参数,并将训练后的模型参数更新到参数服务器进程中。
本发明所述方案中,可利用容器和Kubernetes来协调控制作业的启动和运行状态等。由于一个作业的所有容器所在的Pod对于Kubernetes来说是没有任何差异的,是可以同时或者按任意顺序被Kubernetes调度的,因此需要有一定的机制来实现作业的协调控制。
Kubernete是开源的大规模容器集群管理系统,为容器化应用提供了资源调试、部署、服务发现、扩展机制等功能。
Pod是Kubernetes的基本操作单元,是最小的可创建、调试和管理的部署单元,把相关的一个或多个容器构成一个Pod,通常Pod里的容器运行相同的应用。
为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案进行进一步说明。
显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明所述分布式作业协调控制方法第一实施例的流程图。如图1所示,包括以下具体实现方式。
在101中,位于参数服务器进程所在容器中的第一job_coordinator进程启动,进行自旋同步,直到作业中的所有参数服务器Pod均为运行状态,参数服务器Pod为参数服务器进程所在容器所在的Pod。
在102中,第一job_coordinator进程为所在容器中的参数服务器进程分配唯一编号。
在103中,第一job_coordinator进程启动所在容器中的参数服务器进程,并控制作业返回状态。
本实施例中,一个Pod中可以包括一个容器,每个容器中可分别包括job_coordinator进程和作业进程,作业进程可为参数服务器进程或训练进程。
分布式作业在运行时通常需要指定所需的参数服务器进程和训练进程,Kubernetes可为各进程所在容器所在的Pod分配资源,如中央处理单元(CPU,CentralProcessing Unit)、内存、图形处理器(GPU,Graphics Processing Unit)等,并负责将Pod启动起来,成功启动后Pod的状态为运行(running)状态,Pod运行后会初始化容器,并执行容器中的CMD,如CMD=“sh job_coordinator”,启动job_coordinator进程。
为与后续出现的训练进程所在容器中的job_coordinator进程进行区别,本实施例中,将参数服务器进程所在容器中的job_coordinator进程称为第一job_coordinator进程。
第一job_coordinator进程启动后,可首先进行自旋同步(sync),直到作业中的所有参数服务器Pod均为运行状态。
图2为本发明所述第一job_coordinator进程进行自旋同步的方法实施例的流程图。如图2所示,包括以下具体实现方式。
在201中,获取所有参数服务器Pod的状态。
第一job_coordinator进程可初始化运行环境,以自旋的方式调用Kubernetes的接口(API Server),如用label_selector=‘job-pserver=作业id’作为条件,查询所有参数服务器Pod的状态。
在202中,确定是否存在不为运行状态的Pod,若是,则执行203,否则,执行206。
只要有一个Pod不为运行状态,则可执行203。
在203中,确定是否达到最大同步时间,若是,则执行204,否则,执行205。
在204中,退出作业。
在205中,休眠预定时长,之后重复执行201。
预定时长的具体取值可根据实际需要而定,如10s。
在206中,继续下一阶段的处理。
假设最大同步时间为50s,那么经过50s之后,若仍未达到所有参数服务器Pod均为运行状态,则可退出作业,本次作业失败,否则,当所有参数服务器Pod均为运行状态后,可继续下一阶段的处理。
上述处理方式类似于在第一job_coordinator进程中设置了一个同步等待点,当所有参数服务器进程对应的第一job_coordinator进程均到达等待点后再继续下一阶段的处理,从而达到所有第一job_coordinator进程之间相互等待的效果。
当所有参数服务器Pod均为运行状态后,第一job_coordinator进程可为所在容器中的参数服务器进程分配唯一编号。
比如,第一job_coordinator进程可获取所有参数服务器Pod的IP,根据获取到的IP确定出所在容器中的参数服务器进程的编号。
第一job_coordinator进程可调用Kubernetes的接口,查询出所有参数服务器Pod的IP,并可将获取到的所有IP通过export的方式注入到环境变量中,Pod的IP和Pod中的容器的IP相同。
第一job_coordinator进程可将获取到的所有IP按预定规则进行排序,进而可根据所在参数服务器Pod的IP的排序位置确定出所在容器中的参数服务器进程的编号。按照何种规则对所有IP进行排序不作限制,比如,可按照常用的字符串排序规则对所有IP进行排序,但所有第一job_coordinator进程均需要遵循统一的排序规则。
第一job_coordinator进程可将所在参数服务器Pod的IP的排序位置作为所在容器中的参数服务器进程的编号。比如共有10个IP参与排序,那么对于排在第二位的IP,其对应的参数服务器Pod中的参数服务器进程的编号则可为2。
可利用编号来标识/区分不同的参数服务器进程,如在通信过程中可利用携带的编号来区分出数据来自于哪个参数服务器进程等。
之后,第一job_coordinator进程可启动所在容器中的参数服务器进程,并控制作业返回状态。
第一job_coordinator进程可启动所在容器中的参数服务器进程,如执行pythontrain.py,启动参数服务器进程。
参数服务器进程启动后,第一job_coordinator进程可获取参数服务器进程出现错误时返回的错误码,并将错误码通过所在容器反馈给Kubernetes,以便Kubernetes控制出现错误的参数服务器进程重启,若当重启次数达到预定阈值时仍未正常启动,则可确定作业失败。
参数服务器进程如果一直正常运行则不会返回状态码,只有当参数服务器进程出现错误时才会将错误码返回给第一job_coordinater进程,进而返回给容器,由容器以事件(event)方式反馈给Kubernetes,Kubernetes中的JobController可控制参数服务器进程重启,当重启预定次数后仍未正常启动,则可确定作业失败,并可退出所有作业的Pod(包括参数服务器Pod和训练进程Pod)及释放资源等。
以上是对参数服务器进程一侧的协调控制逻辑所作的说明,以下对训练进程一侧的协调控制逻辑进行说明。
图3为本发明所述分布式作业协调控制方法第二实施例的流程图。如图3所示,包括以下具体实现方式。
在301中,位于训练进程所在容器中的第二job_coordinator进程启动,进行自旋同步,直到作业中的所有训练进程Pod均为运行状态,训练进程Pod为训练进程所在容器所在的Pod。
在302中,第二job_coordinator进程为所在容器中的训练进程分配唯一编号。
在303中,第二job_coordinator进程启动所在容器中的训练进程,建立训练进程与作业中的所有参数服务器进程的链接,并控制作业返回状态。
本实施例中,一个Pod中可以包括一个容器,每个容器中可分别包括job_coordinator进程和作业进程,作业进程可为参数服务器进程或训练进程。
为与前述出现的参数服务器进程所在容器中的job_coordinator进程进行区别,本实施例中,将训练进程所在容器中的job_coordinator进程称为第二job_coordinator进程。
第二job_coordinator进程启动后,还可先通过自旋的方式调用Kubernetes的接口,待确定作业中的所有参数服务器Pod均为运行状态后,可获取(查询出)所有参数服务器Pod的IP,注入到环境变量中,参数服务器Pod为参数服务器进程所在容器所在的Pod。
之后,第二job_coordinator进程可进行自旋同步,如执行以下预定处理:获取作业中的所有训练进程Pod的状态;若存在不为运行状态的Pod,则休眠,经过预定时长后,重复执行所述预定处理,直到所有训练进程Pod均为运行状态。具体实现方式与图2中所示的第一job_coordinator进程进行自旋同步的方式类似,只是将图2中的参数服务器Pod替换为了训练进程Pod。
当所有训练进程Pod均为运行状态后,第二job_coordinator进程可为所在容器中的训练进程分配唯一编号。
比如,第二job_coordinator进程可获取所有训练进程Pod的IP,根据获取到的IP确定出所在容器中的训练进程的编号。
第二job_coordinator进程可调用Kubernetes的接口,查询出所有训练进程Pod的IP,Pod的IP和Pod中的容器的IP相同。之后,第二job_coordinator进程可将获取到的所有IP按预定规则进行排序,进而可根据所在训练进程Pod的IP的排序位置确定出所在容器中的训练进程的编号。
可利用编号来标识/区分不同的训练进程,如在通信过程中可利用携带的编号来区分出数据来自于哪个训练进程等。
之后,第二job_coordinator进程可启动所在容器中的训练进程,并可从环境变量中获取所有参数服务器Pod的IP,根据获取到的IP建立训练进程与所有参数服务器进程的socket链接。如果能够正常建立所有socket链接并能够正常通信,则继续下一阶段的处理,否则,确定作业失败。
第二job_coordinator进程还可控制作业返回状态。第二job_coordinator进程可获取所在容器中的训练进程的运行码,并将运行码通过所在容器反馈给Kubernetes,以便Kubernetes根据运行码进行状态管理和资源分配。
若训练进程正常结束,则运行码为0,否则为非0的值,第二job_coordinator进程可将训练进程的运行码返回给容器,由容器反馈给Kubernetes,最终由Kubernetes中的JobController来根据运行码控制作业的最终状态,并负责所有Pod的退出和释放资源,即进行状态管理和资源分配。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
总之,采用本发明方法实施例所述方案,可基于容器来实现分布式作业的协调控制,从而对作业进行了有效的隔离,进而提升了资源利用率,另外,不需要单独实现Master,从而简化了实现逻辑等。
以上是关于方法实施例的介绍,以下通过装置实施例,对本发明所述方案进行进一步说明。
图4为本发明所述分布式作业协调控制装置第一实施例的组成结构示意图。如图4所示,包括:第一控制单元401、第二控制单元402以及第三控制单元403。
第一控制单元401,用于当所在装置启动后,进行自旋同步,直到作业中的所有参数服务器Pod均为运行状态,参数服务器Pod为参数服务器进程所在容器所在的Pod。
第二控制单元402,用于为所在容器中的参数服务器进程分配唯一编号。
第三控制单元403,用于启动所在容器中的参数服务器进程,并控制作业返回状态。
第一控制单元401可执行以下预定处理:获取所有参数服务器Pod的状态,若存在不为运行状态的Pod,则休眠,经过预定时长后,重复执行所述预定处理,直到所有参数服务器Pod均为运行状态。
当所有参数服务器Pod均为运行状态后,第二控制单元402可为所在容器中的参数服务器进程分配唯一编号。
比如,第二控制单元402可获取所有参数服务器Pod的IP,根据获取到的IP确定出所在容器中的参数服务器进程的编号。
较佳地,第二控制单元402可将获取到的所有IP按预定规则进行排序,根据所在参数服务器Pod的IP的排序位置确定出所在容器中的参数服务器进程的编号。
之后,第三控制单元403可启动所在容器中的参数服务器进程,并控制作业返回状态。
参数服务器进程启动后,第三控制单元403可获取所在容器中的参数服务器进程出现错误时返回的错误码,将错误码通过所在容器反馈给Kubernetes,以便Kubernetes控制出现错误的参数服务器进程重启,若当重启次数达到预定阈值时仍未正常启动,可确定作业失败。
图5为本发明所述分布式作业协调控制装置第二实施例的组成结构示意图。如图5所示,包括:第四控制单元501、第五控制单元502和第六控制单元503。
第四控制单元501,用于当所在装置启动后,进行自旋同步,直到作业中的所有训练进程Pod均为运行状态,训练进程Pod为训练进程所在容器所在的Pod。
第五控制单元502,用于为所在容器中的训练进程分配唯一编号。
第六控制单元503,用于启动所在容器中的训练进程,建立训练进程与作业中的所有参数服务器进程的链接,并控制作业返回状态。
其中,第四控制单元501在进行自旋同步之前,还可在确定作业中的所有参数服务器Pod均为运行状态后,获取所有参数服务器Pod的IP,注入到环境变量中,参数服务器Pod为参数服务器进程所在容器所在的Pod。
之后,第四控制单元501可进行自旋同步,如执行以下预定处理:获取所有训练进程Pod的状态;若存在不为运行状态的Pod,则休眠,经过预定时长后,重复执行预定处理,直到所有训练进程Pod均为运行状态。
当所有训练进程Pod均为运行状态后,第五控制单元502可为所在容器中的训练进程分配唯一编号。
比如,第五控制单元获502可获取所有训练进程Pod的IP,根据获取到的IP确定出所在容器中的训练进程的编号。
较佳地,第五控制单元502可将获取到的所有IP按预定规则进行排序,根据所在训练进程Pod的IP的排序位置确定出所在容器中的训练进程的编号。
之后,第六控制单元503可启动所在容器中的训练进程,并可从环境变量中获取所有参数服务器Pod的IP,根据获取到的IP建立训练进程与所有参数服务器进程的socket链接。
第六控制单元503还可获取所在容器中的训练进程的运行码,将运行码通过所在容器反馈给Kubernetes,以便Kubernetes根据运行码进行状态管理和资源分配。通常来说,若训练进程正常结束,则运行码为0,否则为非0的值。
图4和图5所示装置实施例的具体工作流程请参照前述方法实施例中的相关说明,不再赘述。
总之,采用本发明装置实施例所述方案,可基于容器来实现分布式作业的协调控制,从而对作业进行了有效的隔离,进而提升了资源利用率,另外,不需要单独实现Master,从而简化了实现逻辑等。
图6示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图6显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器(处理单元)16,存储器28,连接不同系统组件(包括存储器28和处理器16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图6所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现图1或图3所示实施例中的方法。
本发明同时公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时将实现如图1或图3所示实施例中的方法。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法等,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (24)
1.一种分布式作业协调控制方法,其特征在于,包括:
位于参数服务器进程所在容器中的第一job_coordinator进程启动,进行自旋同步,直到作业中的所有参数服务器Pod均为运行状态,所述参数服务器Pod为参数服务器进程所在容器所在的Pod;
所述第一job_coordinator进程为所在容器中的参数服务器进程分配唯一编号;
所述第一job_coordinator进程启动所在容器中的参数服务器进程,并控制作业返回状态。
2.根据权利要求1所述的方法,其特征在于,
所述进行自旋同步包括:
所述第一job_coordinator进程执行以下预定处理:
获取所有参数服务器Pod的状态;
若存在不为运行状态的Pod,则休眠,经过预定时长后,重复执行所述预定处理,直到所有参数服务器Pod均为运行状态。
3.根据权利要求1所述的方法,其特征在于,
所述第一job_coordinator进程为所在容器中的参数服务器进程分配唯一编号包括:
所述第一job_coordinator进程获取所有参数服务器Pod的IP,根据获取到的IP确定出所在容器中的参数服务器进程的编号。
4.根据权利要求3所述的方法,其特征在于,
所述根据获取到的IP确定出所在容器中的参数服务器进程的编号包括:
将获取到的所有IP按预定规则进行排序;
根据所在参数服务器Pod的IP的排序位置确定出所在容器中的参数服务器进程的编号。
5.根据权利要求1所述的方法,其特征在于,
所述控制作业返回状态包括:
所述第一job_coordinator进程获取所在容器中的参数服务器进程出现错误时返回的错误码;
所述第一job_coordinator进程将所述错误码通过所在容器反馈给Kubernetes,以便所述Kubernetes控制出现错误的参数服务器进程重启。
6.一种分布式作业协调控制方法,其特征在于,包括:
位于训练进程所在容器中的第二job_coordinator进程启动,进行自旋同步,直到作业中的所有训练进程Pod均为运行状态,所述训练进程Pod为训练进程所在容器所在的Pod;
所述第二job_coordinator进程为所在容器中的训练进程分配唯一编号;
所述第二job_coordinator进程启动所在容器中的训练进程,建立所述训练进程与所述作业中的所有参数服务器进程的链接,并控制作业返回状态。
7.根据权利要求6所述的方法,其特征在于,
所述进行自旋同步之前,进一步包括:
所述第二job_coordinator进程确定所述作业中的所有参数服务器Pod均为运行状态后,获取所有参数服务器Pod的IP,注入到环境变量中,所述参数服务器Pod为参数服务器进程所在容器所在的Pod;
所述建立所述训练进程与所述作业中的所有参数服务器进程的链接包括:
所述第二job_coordinator进程从环境变量中获取所有参数服务器Pod的IP,根据获取到的IP建立所述训练进程与所有参数服务器进程的socket链接。
8.根据权利要求6所述的方法,其特征在于,
所述进行自旋同步包括:
所述第二job_coordinator进程执行以下预定处理:
获取所有训练进程Pod的状态;
若存在不为运行状态的Pod,则休眠,经过预定时长后,重复执行所述预定处理,直到所有训练进程Pod均为运行状态。
9.根据权利要求6所述的方法,其特征在于,
所述第二job_coordinator进程为所在容器中的训练进程分配唯一编号包括:
所述第二job_coordinator进程获取所有训练进程Pod的IP,根据获取到的IP确定出所在容器中的训练进程的编号。
10.根据权利要求9所述的方法,其特征在于,
所述根据获取到的IP确定出所在容器中的训练进程的编号包括:
将获取到的所有IP按预定规则进行排序;
根据所在训练进程Pod的IP的排序位置确定出所在容器中的训练进程的编号。
11.根据权利要求6所述的方法,其特征在于,
所述控制作业返回状态包括:
所述第二job_coordinator进程获取所在容器中的训练进程的运行码;
所述第二job_coordinator进程将所述运行码通过所在容器反馈给Kubernetes,以便所述Kubernetes根据所述运行码进行状态管理和资源分配。
12.一种分布式作业协调控制装置,其特征在于,包括:第一控制单元、第二控制单元以及第三控制单元;
所述第一控制单元,用于当所在装置启动后,进行自旋同步,直到作业中的所有参数服务器Pod均为运行状态,所述参数服务器Pod为参数服务器进程所在容器所在的Pod;
所述第二控制单元,用于为所在容器中的参数服务器进程分配唯一编号;
所述第三控制单元,用于启动所在容器中的参数服务器进程,并控制作业返回状态。
13.根据权利要求12所述的装置,其特征在于,
所述第一控制单元执行以下预定处理:
获取所有参数服务器Pod的状态;
若存在不为运行状态的Pod,则休眠,经过预定时长后,重复执行所述预定处理,直到所有参数服务器Pod均为运行状态。
14.根据权利要求12所述的装置,其特征在于,
所述第二控制单元获取所有参数服务器Pod的IP,根据获取到的IP确定出所在容器中的参数服务器进程的编号。
15.根据权利要求14所述的装置,其特征在于,
所述第二控制单元将获取到的所有IP按预定规则进行排序,根据所在参数服务器Pod的IP的排序位置确定出所在容器中的参数服务器进程的编号。
16.根据权利要求12所述的装置,其特征在于,
所述第三控制单元获取所在容器中的参数服务器进程出现错误时返回的错误码,将所述错误码通过所在容器反馈给Kubernetes,以便所述Kubernetes控制出现错误的参数服务器进程重启。
17.一种分布式作业协调控制装置,其特征在于,包括:第四控制单元、第五控制单元和第六控制单元;
所述第四控制单元,用于当所在装置启动后,进行自旋同步,直到作业中的所有训练进程Pod均为运行状态,所述训练进程Pod为训练进程所在容器所在的Pod;
所述第五控制单元,用于为所在容器中的训练进程分配唯一编号;
所述第六控制单元,用于启动所在容器中的训练进程,建立所述训练进程与所述作业中的所有参数服务器进程的链接,并控制作业返回状态。
18.根据权利要求17所述的装置,其特征在于,
所述第四控制单元进一步用于,在进行自旋同步之前,当确定所述作业中的所有参数服务器Pod均为运行状态后,获取所有参数服务器Pod的IP,注入到环境变量中,所述参数服务器Pod为参数服务器进程所在容器所在的Pod;
所述第六控制单元从环境变量中获取所有参数服务器Pod的IP,根据获取到的IP建立所述训练进程与所有参数服务器进程的socket链接。
19.根据权利要求17所述的装置,其特征在于,
所述第四控制单元执行以下预定处理:
获取所有训练进程Pod的状态;
若存在不为运行状态的Pod,则休眠,经过预定时长后,重复执行所述预定处理,直到所有训练进程Pod均为运行状态。
20.根据权利要求17所述的装置,其特征在于,
所述第五控制单元获取所有训练进程Pod的IP,根据获取到的IP确定出所在容器中的训练进程的编号。
21.根据权利要求20所述的装置,其特征在于,
所述第五控制单元将获取到的所有IP按预定规则进行排序,根据所在训练进程Pod的IP的排序位置确定出所在容器中的训练进程的编号。
22.根据权利要求17所述的装置,其特征在于,
所述第六控制单元获取所在容器中的训练进程的运行码,将所述运行码通过所在容器反馈给Kubernetes,以便所述Kubernetes根据所述运行码进行状态管理和资源分配。
23.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~11中任一项所述的方法。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810805446.XA CN109101342B (zh) | 2018-07-20 | 2018-07-20 | 分布式作业协调控制方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810805446.XA CN109101342B (zh) | 2018-07-20 | 2018-07-20 | 分布式作业协调控制方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109101342A true CN109101342A (zh) | 2018-12-28 |
CN109101342B CN109101342B (zh) | 2020-07-10 |
Family
ID=64847050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810805446.XA Active CN109101342B (zh) | 2018-07-20 | 2018-07-20 | 分布式作业协调控制方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109101342B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110300192A (zh) * | 2019-05-17 | 2019-10-01 | 北京瀚海星云科技有限公司 | 一种根据ip分配表更新分布式训练任务连接参数的方法 |
CN110688230A (zh) * | 2019-10-17 | 2020-01-14 | 广州文远知行科技有限公司 | 一种同步训练方法、装置、计算机设备和存储介质 |
CN110781001A (zh) * | 2019-10-23 | 2020-02-11 | 广东浪潮大数据研究有限公司 | 一种基于Kubernetes的容器环境变量查看方法 |
CN111625420A (zh) * | 2020-05-21 | 2020-09-04 | 浪潮电子信息产业股份有限公司 | 一种分布式训练任务处理方法、装置、设备及存储介质 |
CN112527446A (zh) * | 2019-09-19 | 2021-03-19 | 北大方正集团有限公司 | 时区同步方法、设备及终端设备 |
CN112631727A (zh) * | 2020-12-26 | 2021-04-09 | 中国农业银行股份有限公司 | 一种容器组pod的监控方法及装置 |
CN113656175A (zh) * | 2021-08-18 | 2021-11-16 | 北京百度网讯科技有限公司 | 基于分布式系统训练模型的方法、设备及程序产品 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105897946A (zh) * | 2016-04-08 | 2016-08-24 | 北京搜狐新媒体信息技术有限公司 | 一种访问地址的获取方法及系统 |
CN106850621A (zh) * | 2017-02-07 | 2017-06-13 | 南京云创大数据科技股份有限公司 | 一种基于容器云技术快速搭建Hadoop集群的方法 |
CN107368369A (zh) * | 2017-06-27 | 2017-11-21 | 中国联合网络通信集团有限公司 | 分布式容器管理方法及系统 |
CN107515776A (zh) * | 2017-07-18 | 2017-12-26 | 深信服科技股份有限公司 | 业务不间断升级方法、待升级节点和可读存储介质 |
KR101848450B1 (ko) * | 2017-02-06 | 2018-04-12 | 국민대학교산학협력단 | 도커 기반의 매니코어 관리 방법 및 이를 수행하는 도커 기반의 매니코어 관리 장치 |
CN108062246A (zh) * | 2018-01-25 | 2018-05-22 | 北京百度网讯科技有限公司 | 用于深度学习框架的资源调度方法和装置 |
CN108287723A (zh) * | 2016-12-30 | 2018-07-17 | 华为技术有限公司 | 一种应用交互方法、装置、物理机及系统 |
-
2018
- 2018-07-20 CN CN201810805446.XA patent/CN109101342B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105897946A (zh) * | 2016-04-08 | 2016-08-24 | 北京搜狐新媒体信息技术有限公司 | 一种访问地址的获取方法及系统 |
CN108287723A (zh) * | 2016-12-30 | 2018-07-17 | 华为技术有限公司 | 一种应用交互方法、装置、物理机及系统 |
KR101848450B1 (ko) * | 2017-02-06 | 2018-04-12 | 국민대학교산학협력단 | 도커 기반의 매니코어 관리 방법 및 이를 수행하는 도커 기반의 매니코어 관리 장치 |
CN106850621A (zh) * | 2017-02-07 | 2017-06-13 | 南京云创大数据科技股份有限公司 | 一种基于容器云技术快速搭建Hadoop集群的方法 |
CN107368369A (zh) * | 2017-06-27 | 2017-11-21 | 中国联合网络通信集团有限公司 | 分布式容器管理方法及系统 |
CN107515776A (zh) * | 2017-07-18 | 2017-12-26 | 深信服科技股份有限公司 | 业务不间断升级方法、待升级节点和可读存储介质 |
CN108062246A (zh) * | 2018-01-25 | 2018-05-22 | 北京百度网讯科技有限公司 | 用于深度学习框架的资源调度方法和装置 |
Non-Patent Citations (2)
Title |
---|
PEI-HSUAN TSAI.ETL: "distributed analytics in fog computing platforms using tensorflow and Kubernetes", 《2017 19TH ASIA-PACIFIC NETWORK OPERATIONS AND MANAGEMENT SYMPOSIUM》 * |
VICTOR MEDEL.ETL: "Modelling performance & resource management in Kubernetes", 《2016 IEEE/ACE 9TH INTERNATIONAL CONFERENCE ON UTILITY AND CLOUD COMPUTING》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110300192A (zh) * | 2019-05-17 | 2019-10-01 | 北京瀚海星云科技有限公司 | 一种根据ip分配表更新分布式训练任务连接参数的方法 |
CN110300192B (zh) * | 2019-05-17 | 2021-09-14 | 深圳致星科技有限公司 | 一种根据ip分配表更新分布式训练任务连接参数的方法 |
CN112527446A (zh) * | 2019-09-19 | 2021-03-19 | 北大方正集团有限公司 | 时区同步方法、设备及终端设备 |
CN110688230A (zh) * | 2019-10-17 | 2020-01-14 | 广州文远知行科技有限公司 | 一种同步训练方法、装置、计算机设备和存储介质 |
CN110688230B (zh) * | 2019-10-17 | 2022-06-24 | 广州文远知行科技有限公司 | 一种同步训练方法、装置、计算机设备和存储介质 |
CN110781001A (zh) * | 2019-10-23 | 2020-02-11 | 广东浪潮大数据研究有限公司 | 一种基于Kubernetes的容器环境变量查看方法 |
CN110781001B (zh) * | 2019-10-23 | 2023-03-28 | 广东浪潮大数据研究有限公司 | 一种基于Kubernetes的容器环境变量查看方法 |
CN111625420A (zh) * | 2020-05-21 | 2020-09-04 | 浪潮电子信息产业股份有限公司 | 一种分布式训练任务处理方法、装置、设备及存储介质 |
CN112631727A (zh) * | 2020-12-26 | 2021-04-09 | 中国农业银行股份有限公司 | 一种容器组pod的监控方法及装置 |
CN112631727B (zh) * | 2020-12-26 | 2024-02-23 | 中国农业银行股份有限公司 | 一种容器组pod的监控方法及装置 |
CN113656175A (zh) * | 2021-08-18 | 2021-11-16 | 北京百度网讯科技有限公司 | 基于分布式系统训练模型的方法、设备及程序产品 |
CN113656175B (zh) * | 2021-08-18 | 2022-07-08 | 北京百度网讯科技有限公司 | 基于分布式系统训练模型的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109101342B (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109101342A (zh) | 分布式作业协调控制方法、装置、计算机设备及存储介质 | |
US9916175B2 (en) | Multi-session zero client device and network for transporting separated flows to device sessions via virtual nodes | |
CN106385329B (zh) | 资源池的处理方法、装置和设备 | |
CN109032706A (zh) | 智能合约执行方法、装置、设备和存储介质 | |
CN110098946B (zh) | 虚拟化网元设备的部署方法以及装置 | |
CN109032806A (zh) | 容器的服务调度方法和装置 | |
CN105593773A (zh) | 用于虚拟分布式控制系统的自动委托的系统和方法 | |
CN101765225A (zh) | 一种虚拟化的集群管理方法和集群节点 | |
US20210373928A1 (en) | Method, system and apparatus for sharing of fpga board by multiple virtual machines | |
CN104580399A (zh) | 一种基于OpenStack和Spice的云桌面实现方法 | |
CN105468429A (zh) | 一种高效虚拟化集群管理方法和集群节点 | |
CN112256414A (zh) | 一种连接多种计算存储引擎的方法及系统 | |
CN108170417B (zh) | 一种在mesos集群中集成高性能的作业调度框架的方法和装置 | |
CN110221840A (zh) | 应用程序的功能实现方法及装置、设备及存储介质 | |
CN113377493A (zh) | 一种容器云仿真系统及其设计方法 | |
CN117130571A (zh) | 基于多核异构系统的显示方法、设备、芯片、存储介质 | |
CN102652307B (zh) | 用于计算机架构的即插即用支持的方法以及系统 | |
CN115964128A (zh) | 一种异构gpu资源管理和调度方法和系统 | |
CN110221902A (zh) | 一种基于虚拟机的数据传输方法及相关装置 | |
CN113110920B (zh) | 区块链系统的运行方法、装置、设备和存储介质 | |
CN115480910A (zh) | 多集群资源管理方法、装置及电子设备 | |
CN110018782A (zh) | 一种数据读/写方法及相关装置 | |
CN108415779A (zh) | 用于通过主机结构接口的队列管理的技术 | |
EP1102444A2 (en) | Dynamic configuration definition in an SNA gateway | |
CN107133105B (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 |