CN112364897A - 分布式训练方法及装置、存储介质及电子设备 - Google Patents

分布式训练方法及装置、存储介质及电子设备 Download PDF

Info

Publication number
CN112364897A
CN112364897A CN202011167096.2A CN202011167096A CN112364897A CN 112364897 A CN112364897 A CN 112364897A CN 202011167096 A CN202011167096 A CN 202011167096A CN 112364897 A CN112364897 A CN 112364897A
Authority
CN
China
Prior art keywords
container
node
nodes
deep learning
node list
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
Application number
CN202011167096.2A
Other languages
English (en)
Other versions
CN112364897B (zh
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.)
Dawning Information Industry Beijing Co Ltd
Original Assignee
Dawning Information Industry Beijing 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 Dawning Information Industry Beijing Co Ltd filed Critical Dawning Information Industry Beijing Co Ltd
Priority to CN202011167096.2A priority Critical patent/CN112364897B/zh
Priority claimed from CN202011167096.2A external-priority patent/CN112364897B/zh
Publication of CN112364897A publication Critical patent/CN112364897A/zh
Application granted granted Critical
Publication of CN112364897B publication Critical patent/CN112364897B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Image Analysis (AREA)

Abstract

本申请涉及深度学习技术领域,提供一种分布式训练方法及装置、存储介质及电子设备。其中,分布式训练方法包括:导入节点列表,节点列表包括集群中多个节点的地址信息;控制节点列表中的节点获取安装有深度学习框架的容器镜像,并利用容器镜像在节点上创建容器;控制创建好的容器执行深度学习框架下的训练任务。该方法通过导入节点列表,自动在节点列表中指定的节点上完成容器的创建并利用创建好的容器执行深度学习框架下的训练任务。也就是说,在集群中部署深度学习框架进行模型训练时,用户仅需配置一下导入节点列表中的节点地址,其余步骤均可自动完成,其操作简单高效。

Description

分布式训练方法及装置、存储介质及电子设备
技术领域
本发明涉及深度学习技术领域,具体而言,涉及一种分布式训练方法及装置、存储介质及电子设备。
背景技术
目前,深度学习技术在图像和语音识别、自然语言处理、推荐和个性化等领域都存在广泛应用。然而,很多深度学习任务中使用的神经网络模型由于结构复杂且包含大量参数,因此其训练过程伴随大量计算资源的消耗,往往要借助于分布式训练的方式才能在合理的时间内完成。现有的一些深度学习框架(例如,TensorFlow,Pytorch等)虽然能支持模型的分布式训练,但其在分布式环境中部署时,需要手动输入大量命令进行配置,因此效率低下。
发明内容
本申请实施例的目的在于提供一种分布式训练方法及装置、存储介质及电子设备,以改善上述技术问题。
为实现上述目的,本申请提供如下技术方案:
第一方面,本申请实施例提供一种分布式训练方法,包括:导入节点列表,所述节点列表包括集群中多个节点的地址信息;控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器;控制创建好的容器执行所述深度学习框架下的训练任务。
上述方法通过导入节点列表,自动在节点列表中指定的节点上完成容器的创建并利用创建好的容器执行深度学习框架下的训练任务。也就是说,在集群中部署深度学习框架进行模型训练时,用户仅需配置一下导入节点列表中的节点地址,其余步骤均可自动完成,其操作简单高效。并且,该方法通过容器化的方式部署深度学习框架,由于容器是一种轻量级的虚拟化技术,因此非常适合于封装对性能敏感的训练任务。
在第一方面的一种实现方式中,所述容器镜像中还安装有高性能计算网络的运行库,所述容器在执行所述深度学习框架下的训练任务时利用所述高性能计算网络进行相互之间的通信。
为加快训练过程中各节点之间数据传输速度,可以在集群中采用高性能计算网络(例如,Omni-Path Architecture(简称OPA)网络、Infiniband网络等),为支持容器在高性能计算网络中进行通信,在制作容器镜像时需相应地安装该高性能计算网络的运行库。
在第一方面的一种实现方式中,所述节点列表还包括所述多个节点的类型信息,所述导入节点列表,包括:根据设定好的通信模式导入对应的节点列表;其中,所述通信模式是指所述容器在执行所述深度学习框架下的训练任务时,为实现相互之间的数据传输而采用的通信方式,所述节点列表中包含的所述类型信息与所述深度学习框架在所述通信模式下进行训练时采用的节点架构相对应;所述控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,包括:控制所述节点列表中的节点获取与其类型信息对应的容器镜像,所述容器镜像中安装有所述深度学习框架以及所述通信模式的运行库。
在深度学习框架下进行训练时,不同的通信模式往往绑定不同节点架构,而在不同的节点架构下节点可能分为不同的类型,从而节点列表的内容也有所区别。上述实现方式可支持深度学习框架采用多种不同的模式进行通信,并根据实际设定的通信模式自动导入对应的节点列表,其适用范围广,自动化程度高。
在第一方面的一种实现方式中,所述通信模式包括远程过程调用(RemoteProcedure Call,简称RPC)模式,所述节点架构为参数服务器-工作服务器架构,所述参数服务器是指在训练过程中用于存储模型参数的服务器,所述工作服务器是指在训练过程中用于计算参数梯度的服务器,所述节点的类型信息用于指示该节点为部署所述参数服务器的参数节点,或者,部署所述工作服务器的工作节点;控制所述节点列表中的节点获取与其类型信息对应的容器镜像,包括:控制所述节点列表中的参数节点获取参数容器镜像,其中,所述参数容器镜像是指作为所述参数服务器的运行环境的容器镜像,所述参数容器镜像中安装有所述深度学习框架以及所述RPC模式的运行库;以及,控制所述节点列表中的工作节点获取工作容器镜像,其中,所述工作容器镜像是指作为所述工作服务器的运行环境的容器镜像,所述工作容器镜像中安装有所述深度学习框架以及所述RPC模式的运行库。
采用RPC模式时,节点架构为参数服务器-工作服务器架构(ps-worker架构),从而节点列表中也分为参数节点和工作节点两种类型(当然,同一节点可以既是参数节点又是工作节点),两种节点上分别用于部署承载有参数服务器的参数容器以及承载有工作服务器的工作容器,通过节点列表中给出的节点类型信息可以准确地在节点上获取对应类型的容器镜像(参数容器镜像、工作容器镜像)并创建对应类型的容器(参数容器、工作容器)。
在第一方面的一种实现方式中,所述通信模式包括消息传递接口(MessagePassing Interface,简称MPI)模式,所述容器镜像中安装有所述深度学习框架、MPI模式的运行库以及高性能计算网络的运行库,所述控制创建好的容器执行所述深度学习框架下的训练任务,包括:在创建好的各容器之间建立安全外壳协议(Secure Shell,简称SSH)无密码连接;设置在所述MPI模式下利用所述高性能计算网络进行容器间通信时要使用的通信模块,所述通信模块的类型与所述高性能计算网络的类型相对应;控制创建好的容器基于设置好的通信模块执行所述深度学习框架下的训练任务。
采用MPI模式时,在节点上创建好容器后,首先设置容器间的SSH无密码访问,这是进行MPI通信的基础,然后设置MPI针对当前的高性能计算网络所要使用的通信模块,MPI底层支持不同类型的通信模块,根据集群中采用的高性能计算网络的类型选择合适的通信模块可实现针对网络的通信优化。
在第一方面的一种实现方式中,若所述高性能计算网络为OPA网络,则所述通信模块包括psm模块;若所述高性能计算网络为Infiniband网络,则所述通信模块包括openib模块。
OPA网络和Infiniband网络是两种主流的高性能计算网络,分别可通过psm模块和openib模块进行通信优化。即上述实现方式可以兼容当前主流的网络架构,因此具有较高的实用价值。
在第一方面的一种实现方式中,所述控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器,包括:根据所述节点列表生成第一命令列表,所述第一命令列表包括容器创建命令;控制所述节点列表中的节点运行其在所述第一命令列表中对应的容器创建命令,以使其获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器。
上述实现方式自动生成第一命令列表并执行列表中的命令以实现容器创建,避免了用户人工输入大量命令,使得容器创建过程变得简单高效。
在第一方面的一种实现方式中,所述控制创建好的容器执行所述深度学习框架下的训练任务,包括:根据所述节点列表以及创建好的容器生成第二命令列表,所述第二命令列表包括容器启动命令;控制所述节点列表中的节点运行其上创建好的容器在所述第二命令列表中对应容器启动命令,以使其上创建好的容器执行所述深度学习框架下的训练任务。
上述实现方式自动生成第二命令列表并执行列表中的命令以实现容器启动,避免了用户人工输入大量命令,使得训练启动过程变得简单高效。
在第一方面的一种实现方式中,所述第二命令列表与第一命令列表为同一列表,该列表包括容器创建命令以及对应的容器启动命令。
在上述实现方式中,第二命令列表与第一命令列表实现为同一个列表,从而二者可以一次性生成,通过执行该列表中的命令可以一次性完成容器的创建和启动。当然,分成两个独立的命令列表实现亦有好处,例如,可以在生成第二命令列表前先判断容器的创建状态(是否创建成功)。
在第一方面的一种实现方式中,在所述控制创建好的容器执行所述深度学习框架下的训练任务之前,所述方法还包括:运行监控线程,并根据所述监控线程对容器创建过程的监控结果确定创建好的容器;其中,所述监控线程获得所述监控结果所需的监控数据由设置在所述节点上或所述容器中的监控代理程序采集。
在上述实现方式中,通过设置监控线程监控容器的创建过程,只有监控到创建好的容器才会启动训练,有利于避免训练过程中的异常。并且,监控线程是主线程(负责容器创建的线程)之外的独立线程。当然,监控线程还可以监控训练过程中的其他行为,例如容器销毁等。
在第一方面的一种实现方式中,所述节点列表还包括所述多个节点上容器的数量信息;所述控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器,包括:控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建与所述数量信息对应的容器。
一个节点上可以部署多个容器以便充分利用该节点的硬件资源,若采用这种方式部署,则在节点列表中应包括容器的数量信息,以便在节点上自动创建对应数量的容器。
第二方面,本申请实施例提供一种分布式训练装置,包括:节点列表导入模块,用于导入节点列表,所述节点列表包括集群中多个节点的地址信息;容器创建模块,用于控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器;分布式训练模块,用于控制创建好的容器执行所述深度学习框架下的训练任务。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
第四方面,本申请实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了一种用于部署深度学习框架的集群结构;
图2示出了本申请实施例提供的一种分布式训练方法的流程;
图3示出了在集群中采用OPA网络时部署TensorFlow框架进行分布式训练的一种流程;
图4示出了本申请实施例提供的一种分布式训练装置的结构;
图5示出了本申请实施例提供的一种电子设备的结构。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“第一”、“第二”等仅用于将一个实体或者操作与另一个实体或操作区分开来,而不能理解为指示或暗示相对重要性,也不能理解为要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
本申请提出一种在分布式环境下部署深度学习框架进行训练的解决方案。其中,深度学习框架可以是TensorFlow、Pytorch、Caffe等,后文主要以TensorFlow为例,训练的对象可以是一个模型,例如神经网络模型,模型具体结构不限,分布式环境可以是一个集群,图1示出了该集群的一种可能的结构。
参照图1,集群100包括多个节点,具体为管理节点110、存储节点120以及计算节点130。节点可以理解为物理机或虚拟机,各节点之间通过管理网络140和高性能计算网络150互联,三种节点均可以为一个或多个。
其中,管理网络140可以是以太网,其传输速率不要求太高,主要用于管理节点110对其他节点的管理。用户使用集群100时,可以无需登录到计算节点130,而只需在管理节点110上进行操作,管理节点110可以将相应的命令通过管理网络140下达到计算节点130上运行。需要指出,管理节点110仅指其在集群100中扮演的角色,在实际实施时也可以指定一个或多个计算节点130兼任管理节点110的功能。
高性能计算网络150可以是OPA网络、Infiniband网络等,要求具有较高的传输速率,主要用于执行计算任务(对本申请来说可以是深度学习框架下的训练任务)时各计算节点130之间的通信,当然也不排除将管理网络140的功能也集成在高性能计算网络150中实现。
存储节点120用于存储执行计算任务所需的数据(对本申请来说可以是安装有深度学习框架容器镜像)以及计算结果等,在一些实现方式中,存储节点120可以实现为共享存储,由各计算节点130挂载,从而实现计算节点130对数据的一致性访问。
可以理解的,图1只是为便于阐述所举的示例,集群也可以采取和图1中不同的实现方式:例如,若不专门针对高性能计算,集群100中的高性能计算网络150也可以采用普通网络(如以太网)代替;又例如,集群100中也可以不设置存储节点120,各计算节点130将数据存储在本地。总之,不应将图1理解为对本申请保护范围的限制。
图2示出了本申请实施例提供的一种分布式训练方法的流程。该方法可以但不限于由集群中的管理节点(例如,图1中的管理节点110)执行,图5示出了管理节点内部可能采用的结构,具体可参考对图5的描述,除管理节点外,在该方法中单独提到“节点”时,可理解为计算节点(例如,图1中的计算节点130)。参照图2,该方法包括:
步骤S210:导入节点列表。
节点列表包括集群中多个节点的地址信息。例如,在图1中,若集群100中的全部计算节点130都参与训练,则节点列表可以包括每个计算节点130的地址信息,这里的地址信息可以是IP地址,也可以是其他类型的地址,取决于管理网络140中使用的协议,节点列表中的地址信息可以由用户配置,当然也不排除由程序自动产生。下面给出节点列表的一种可能的形式:
Node1IP
Node2 IP
Node3IP
其中,Node1IP、Node2IP、Node3IP表示节点Node1、Node2以及Node3的IP地址。
步骤S220:控制节点列表中的节点获取安装有深度学习框架的容器镜像,并利用容器镜像在节点上创建容器。
在本申请的方案中,深度学习框架下的训练任务采用容器化的方式进行分布式部署,即利用部署在不同节点上的容器协作完成训练任务,每个容器用于提供一个训练进程的运行环境。其中,容器技术是一种轻量级的虚拟化技术,与传统的虚拟化技术相比,容器直接运行于宿主机的内核上,没有中间虚拟化层带来的性能损失,执行效率更高,资源占用也较少,并且启动非常迅速,因此适合于封装对性能敏感的深度学习训练任务。本申请的方案并不限定使用的容器类型,例如,可以是docker容器、CoreOSrkt容器、Mesos容器、Singularity容器等,但后文主要以docker为例。
要实现容器化部署,首先需要制作容器镜像,制作容器镜像时需要将深度学习框架安装到容器中,根据需求,还可以将在深度学习框架下进行训练时需要依赖的运行库也安装到容器镜像中。例如,图1中的集群100中使用了高性能计算网络150,则可以在容器镜像中安装高性能计算网络的运行库,以便支持容器在执行深度学习框架下的训练任务时利用高性能计算网络150进行相互之间的通信。
容器镜像的制作可以在集群中的某个节点上进行,或者也可以在集群之外的节点上制作,制作好的容器镜像可以保存到某个可为集群中的节点访问的位置,以便节点在创建容器时使用。例如,在图1中,可以在管理节点110上进行容器镜像制作,然后将制作好的容器镜像传输到存储节点120上保存,存储节点120上可以创建一个镜像仓库,方便对容器镜像进行管理。
步骤S210中导入节点列表后,管理节点根据节点列表中给出的地址信息便可自动向对应的节点下发容器创建命令,接收到命令的节点会运行命令以获取容器镜像并利用容器镜像在节点上创建容器。例如,若容器镜像保存在镜像仓库中,节点会从仓库中拉取镜像,若容器镜像保存在节点本地,则节点可以直接载入镜像。在前文的例子中,节点列表包括3个节点,对3个节点都要下发容器创建命令。
对于docker容器,容器创建命令可以采用下面的docker run命令:
dockerrun-d-v/work:/work--name ps_container1--privileged--net=host--device=/dev/infiniband/uverbs0--device=/dev/infiniband/rdma_cm--device=/dev/hfi1_0ps_images/usr/sbin/sshd–D
其中,参数name为创建的容器指定一个名字,如这里的ps_container1,ps_images为容器镜像的名字,该命令中已包含从指定的目录中获取容器镜像,利用该命令创建容器时还将图形处理器(Graphics Processing Unit,简称GPU)和OPA网卡等相关设备映射到容器中,以便在容器内部程序可以访问这些硬件设备。
在一些实现方式中,一个节点上也可以创建多个容器以便充分利用该节点的硬件资源,此时在节点列表中还应包括容器的数量信息,以便节点在接收到容器创建命令后能够创建与该数量信息一致的容器。例如,若节点列表为如下形式:
Node1IP
Node1IP
Node2 IP
Node3IP
其中,Node1 IP重复了2次,表示在节点Node1上需要创建2个容器,即利用IP地址的重复次数来代表容器的数量信息,当然也可以通过其他方式来表示容器的数量信息,例如,在Node1 IP后面直接写明数字2,表示在节点Node1上需要创建2个容器,等等。在步骤S220中,可以向节点Node1下发2个docker run命令以创建2个容器,当然2个命令中容器的名字是不同的,例如,ps_container1、ps_container2,或者,也可以将2个docker run命令合并成一个。
步骤S230:控制创建好的容器执行深度学习框架下的训练任务。
步骤S230的实现方式和容器间采用的通信模式有关,关于通信模式,稍后再进行介绍,这里先简单说明步骤S230的一种可能的实现方式。
容器创建好后(此时容器尚未启动,训练任务也未开始执行),管理节点根据节点列表中给出的地址信息便可自动向创建有容器的节点下发针对该节点上的容器的启动命令,接收到命令的节点会运行命令以使这些节点上创建好的容器开始执行深度学习框架下的训练任务。容器启动命令中会指明容器的名字(在容器创建时分配),从而即使一个节点上创建有多个容器,每条容器启动命令所针对的容器也是明确的。在前文的例子中,节点列表包括3个节点,对3个节点都要下发容器启动命令。
对于docker容器,容器启动命令可以采用下面的dockerexec命令:
docker exec"ps=ps_container1:2000,ps_container2:2000…"
其中,ps_container1和ps_container2是节点Node1上创建好的两个容器,2000为容器采用的默认端口号,该命令较长,…表示省略了一些内容。
在一些实现方式中,若将管理节点上用于执行S210、S220以及S230的线程称为主线程,则在执行步骤S230之前,还可以在管理节点上启动一个独立于主线程的监控线程,该监控线程用于对容器创建是否成功进行监控,主线程根据其监控结果可以确定成功创建的容器,进而控制这些容器执行深度学习框架下的训练任务,这样有利于避免主线程向未成功创建的容器下发容器启动命令。其中,监控线程所需的监控数据可由设置在节点上或设置在容器中的监控代理程序采集并汇总至管理节点。
可以理解的,监控线程还可以监控训练过程中的其他行为,例如,在训练任务执行完毕后,各节点需要销毁容器,监控线程还可以对容器的销毁过程进行监控。当然,监控容器创建过程的线程和监控容器销毁过程的线程可以是同一个线程,也可以不是同一个线程。
综上所述,本申请实施例提供的分布式训练方法通过导入节点列表,使得管理节点能够基于节点列表中的地址信息对节点的行为进行控制,以便自动在节点列表中指定的节点上完成容器的创建,并利用创建好的容器执行深度学习框架下的训练任务。也就是说,在集群中部署深度学习框架进行模型训练时,用户仅需配置一下导入节点列表中的节点地址(若自动生成节点列表,甚至不需要用户配置),其余步骤均可自动完成,其操作简单高效。并且,该方法通过容器化的方式部署深度学习框架,因此其执行效率更高,资源占用也较少,而且训练任务的启动也非常迅速。
将容器在执行深度学习框架下的训练任务时,为实现相互之间的数据传输而采用的通信方式称为通信模式。在深度学习框架下进行训练时,不同的通信模式往往绑定不同节点架构,而在不同的节点架构下节点可能分为不同的类型,这一点通过在节点列表中包含节点的类型信息来体现。
例如,在TensorFlow中至少支持两种通信模式,分别是RPC模式(在TensorFlow下也叫gRPC模式,gRPC是一种高性能的RPC实现)和MPI模式:在RPC模式下将节点分为两种类型,两种节点分别具有不同的功能,在MPI模式下节点只有一种类型,则在RPC模式下使用的节点列表中应体现出节点包括两种类型,以便可以对两类节点进行不同的处理,而在MPI模式下由于只有一种节点类型,所以节点列表中的节点类型信息可以省略。
具体而言,在一些实现方式中,可以对通信模式进行设定,例如,用户可在配置文件或者可视化窗口中指定要采用RPC模式或者MPI模式。此时步骤S210中会根据用户设定好的通信模式导入对应的节点列表,这里的“对应”可作如下理解:节点列表中包含的节点类型信息与深度学习框架在所选通信模式下进行训练时采用的节点架构相对应。当然,若不打算支持在多种通信模式下进行训练,直接设定为某种固定的通信模式即可。
上面的节点架构可以理解为:为在分布式训练过程中实现节点间的数据传输而采用的一种节点组织方式。
例如,一种可能的节点架构为参数服务器-工作服务器架构(ps-worker架构)。其中,参数服务器(parameter server,简称ps)是指在训练过程中负责存储模型参数、更新模型参数等任务的服务器(这里的服务器可理解为服务器程序而非物理服务器),工作服务器(worker)是指在训练过程中负责计算参数梯度的服务器。
在这种节点架构下,可将参与训练的节点分为两种类型,分别是参数节点和工作节点。其中,参数节点是指部署参数服务器的节点,所谓部署参数服务器,具体是指部署作为参数服务器的运行环境的参数容器,参数服务器即运行在参数容器中;工作节点是指部署工作服务器的节点,所谓部署工作服务器,具体是指部署作为工作服务器的运行环境的工作容器,工作服务器即运行在工作容器中。当然,同一节点可以既是参数节点又是工作节点,即该节点上同时创建有参数容器和工作容器。
在ps-worker架构下,节点列表中包含用于描述两种节点类型的信息,即用于指示某个节点为参数节点或工作节点的信息。例如,节点列表可以采用如下形式:
Ps:
Node1IP
Worker:
Node2 IP
Node3IP
可见,节点列表包括两个部分,Ps部分中的IP地址为参数节点的地址(Node1 IP),Worker部分中的IP地址为工作节点的地址(Node2 IP和Node3IP)。
又例如,另一种可能的架构为对等架构,即所有节点的地位是平等的,每个节点都负责模型参数的存储、更新以及梯度计算。
在对等架构下,节点列表中可以省略节点的类型信息,此时节点列表的内容和前文给出的不包含类型信息的节点列表并没有什么不同,不再具体说明。
在TensorFlow中,RPC模式与ps-worker架构是对应的,而MPI模式与对等架构是对应的,即若采用RPC模式通信,则步骤S210中将导入包含有节点类型信息(两种类型)的节点列表,若采用MPI模式通信,则步骤S210中将导入不包含节点类型信息(被省略)的节点列表。当然也不排除在其他深度学习框架下,通信模式与节点架构具有与TensorFlow不同的对应关系。但后文为简单起见,仅以TensorFlow下通信模式与节点架构之间的对应关系为例进行介绍。
为支持在不同的通信模式下进行训练,在制作容器镜像时应在镜像中安装对应通信模式的运行库,例如,若只打算支持RPC模式,则至少需在容器镜像中安装RPC模式的运行库,若只打算支持MPI模式,则至少需在容器镜像中安装MPI模式的运行库,若打算支持两种模式供用户自由选择,则两种运行库都要安装。
进一步的,若在某些通信模式对应的节点架构下,节点分为不同的类型,则这些节点上创建的容器也具有不同的类型,以便与不同节点的功能适配,而创建不同类型的容器,所需使用的容器镜像也是不同的。此时,步骤S220可以实现为:
控制节点列表中的节点获取与其类型信息对应的容器镜像,并利用获取到的容器镜像在节点上创建与其类型信息对应的容器。其中,容器镜像中安装有深度学习框架以及通信模式的运行库。
例如,在RPC模式下,步骤S220可以认为包括两个子步骤(无执行先后顺序要求):
(1)控制节点列表中的参数节点获取安装有深度学习框架以及RPC模式的运行库的参数容器镜像,并利用参数容器镜像在参数节点上创建参数容器。例如,在节点Node1上创建参数容器ps_container1,对应的容器创建命令可以是:
docker run-d-v/work:/work--name ps_container1--privileged--net=host--device=/dev/infiniband/uverbs0--device=/dev/infiniband/rdma_cm--device=/dev/hfi1_0ps_images/usr/sbin/sshd–D
其中,ps_images表明其容器ps_container1基于一个参数容器镜像创建。管理节点根据节点列表中Ps部分的Node1 IP可以将该命令下发给参数节点Node1。
(2)控制节点列表中的工作节点获取安装有深度学习框架以及RPC模式的运行库的工作容器镜像,并利用获取到的工作容器镜像在工作节点上创建工作容器。例如,在节点Node2上创建工作容器wk_container1,对应的容器创建命令可以是:
dockerrun-d-v/work:/work--name wk_container1--privileged--net=host--device=/dev/infiniband/uverbs0--device=/dev/infiniband/rdma_cm--device=/dev/hfi1_0worker_images/usr/sbin/sshd–D
其中,worker_images表明其容器wk_container1基于一个工作容器镜像创建,管理节点根据节点列表中Worker部分的Node2 IP可以将该命令下发给工作节点Node2。
至于MPI模式,由于其对应的节点架构中只包含一种类型的节点,因此这些节点上创建的容器类型相同,从而这些容器的镜像也是相同的,对容器创建过程无需再进行特别说明。
通过上述内容可知,在本申请的一些实施例中,可支持深度学习框架采用多种不同的模式进行通信,并根据实际设定的通信模式自动导入对应的节点列表,这些方案适用范围较广,自动化程度较高。
下面继续以RPC模式为例,说明如何基于命令列表实现步骤S220和步骤S230:
在步骤S220的一些实现方式中,可以首先根据节点列表生成第一命令列表,第一命令列表中包括容器创建命令,每条容器创建命令均与某个节点具有对应关系。然后,控制节点列表中的节点运行其在第一命令列表中对应的容器创建命令,以使这些节点获取并利用容器镜像在节点上创建容器。
例如,节点列表为:
Ps:
Node1IP
Worker:
Node2 IP
Node3IP
第一命令列表为:
Ps:
docker run-d-v/work:/work--name ps_container1--privileged--net=host--device=/dev/infiniband/uverbs0--device=/dev/infiniband/rdma_cm--device=/dev/hfi1_0ps_images/usr/sbin/sshd–D
Worker:
dockerrun-d-v/work:/work--name wk_container1--privileged--net=host--device=/dev/infiniband/uverbs0--device=/dev/infiniband/rdma_cm--device=/dev/hfi1_0worker_images/usr/sbin/sshd–D
dockerrun-d-v/work:/work--name wk_container2--privileged--net=host--device=/dev/infiniband/uverbs0--device=/dev/infiniband/rdma_cm--device=/dev/hfi1_0worker_images/usr/sbin/sshd–D
观察可知,第一命令列表也包括Ps和Worker两个部分,Ps部分中包含一条容器创建命令,从而该条命令必然对应节点列表中的节点Node1。Worker部分中包含两条容器创建命令,从而这两条命令按照从上到下的顺序必然对应节点列表中的节点Node2和Node3,有了这样的对应关系,管理节点就十分清楚应该如何下发第一命令列表中的容器创建命令了。
由于步骤S220的上述实现方式能够自动生成第一命令列表并执行列表中的命令以实现容器创建,从而避免了用户人工输入大量命令,使得容器创建过程变得简单高效。
在步骤S230的一些实现方式中,可以首先根据节点列表以及创建好的容器生成第二命令列表,第二命令列表中包括容器启动命令,每条容器启动命令均与某个节点上某个创建好的容器具有对应关系。然后,控制节点列表中的节点运行其上创建好的容器在第二命令列表中对应的容器启动命令,以使这些节点上创建好的容器执行深度学习框架下的训练任务。
例如,节点列表为:
Ps:
Node1IP
Worker:
Node2 IP
Node3IP
第二命令列表为:
Ps:
docker exec"ps=ps_container1:2000…"
Worker:
docker exec"worker=wk_container1:2000…"
docker exec"worker=wk_container2:2000…"
观察可知,第二命令列表也包括Ps和Worker两个部分,Ps部分中包含一条容器创建命令,从而该条命令必然对应节点列表中的节点Node1,同时命令中指定了容器的名字ps_container1,从而该条命令用于启动节点Node1上的参数容器ps_container1。Worker部分中包含两条容器创建命令,从而这两条命令按照从上到下的顺序必然对应节点列表中的节点Node2和Node3,同时命令中指定了容器的名字wk_container1和wk_container2,从而这两条命令分别用于启动节点Node2上的工作容器wk_container1以及节点Node3上的工作容器wk_container2。有了这样的对应关系,管理节点就十分清楚应该如何下发第二命令列表中的容器启动命令,而接收到容器启动命令的节点也十分清楚该启动哪些容器。
进一步的,假如在节点Node1上创建了2个参数容器,分别是ps_container1和ps_container2,则可将第二命令列表中Ps部分的命令改写为docker exec"ps=ps_container1:2000,ps_container2:2000…",这条命令用于启动节点Node1上的参数容器ps_container1和ps_container2。
由于步骤S230的上述实现方式能够自动生成第二命令列表并执行列表中的命令以实现容器启动,从而避免了用户人工输入大量命令,使得训练启动过程变得简单高效。
进一步的,在一些实现方式中,步骤S220和步骤S230可以结合起来实现。即将第二命令列表与第一命令列表实现为同一列表,该命令列表包括容器创建命令以及对应的容器启动命令,该命令列表的结构大致如下(为节省篇幅docker run命令没有完整写出):
Ps:
docker run--name ps_container1,docker exec"ps=ps_container1:2000…"
Worker:
docker run--name wk_container1,docker exec"worker=wk_container1:2000…"
docker run--name wk_container2,docker exec"worker=wk_container2:2000…"
此种实现方式的优点是可以一次性地向节点下发容器创建命令和容器启动命令,从而节点通过执行该列表中的一行命令可以一次性完成容器的创建和训练启动,其效率比较高。但将第一命令列表和第二命令列表分成两个独立的命令列表实现亦有好处,例如,管理节点可以在生成第二命令列表前先判断容器是否创建成功,然后仅针对创建成功的容器生成第二命令列表。至于判断容器是否创建成功可以通过设置一个监控线程实现,前文已经介绍。
对于MPI通信模式,在实现步骤S220时也可以采用基于第一命令列表的方式,与RPC模式类似。但在实现步骤S230时则并不能采用基于第二命令列表的方式,而可以采用如下做法:
首先,在创建好的各容器之间建立SSH无密码连接,以便容器之间可以自由通信,这也是进行MPI通信的基础。
然后,设置在MPI模式下利用高性能计算网络进行容器间通信时要使用的通信模块,并控制创建好的容器基于设置好的通信模块执行深度学习框架下的训练任务。
其中,MPI可视为一种上层的通信规范,在底层则可基于不同类型的通信模块实现,这些通信模块则对应于不同类型的高性能计算网络,并能够针对这些网络中的通信行为进行优化。例如,对于OPA网络,性能扩展消息传递(Performance-Scaled Messaging,简称PSM)库是支持其运行、对其进行性能优化的通信库,MPI可视为在PSM库的基础上进行的进一步封装。在OpenMPI(MPI的一种实现)中PSM库实现为psm模块,若当前集群采用的高性能计算网络为OPA网络,则在OpenMPI下可通过命令mpirun--mcamtl psm2设置利用psm模块(psm2是psm模块的一个版本)支持容器间的MPI通信,并且执行该命令也可同时启动在步骤S220中创建好的容器。可以理解的,若采用其他MPI实现,其操作与采用OpenMPI是类似的。
另外,若高性能计算网络为Infiniband网络,则应将通信模块设置为至少包括openib模块。例如,在OpenMPI下可通过命令mpirun--mcabtlself,openib设置利用self模块和openib模块支持容器间的MPI通信,并且执行该命令也可同时启动在步骤S220中创建好的容器。
总结上面的内容,OPA网络和Infiniband网络是两种主流的高性能计算网络,分别可通过psm模块和openib模块对其进行通信优化。即上述步骤S230的实现方式可以兼容当前主流的网络架构,因此具有较高的实用价值。
在采用其他通信模式时,对步骤S220和步骤S230的实现亦可参考RPC模式和MPI模式,不再详细阐述。
具体采用哪种通信模式可以根据用户的需求确定,就TensorFlow来说,若节点数量较少可采用RPC模式,若节点数量较多则可采用MPI模式,因为MPI模式下的通信效率相对来说要高一些。当然节点数量只是一种选择通信模式的因素而已,以上选择通信模式的方式仅仅是一种经验型的结论而并非强制性的。
图3示出了在集群中采用OPA网络时部署TensorFlow框架进行分布式训练的一种流程,可视上文阐述内容的一个实际应用场景。
参照图3,在开始训练前,首先制作好容器镜像,镜像中安装有OPA网络的运行库、TensorFlow框架、gRPC运行库以及MPI运行库(若只打算支持gRPC和MPI两种通信模式之一,安装其中一种运行库就可以了)。
然后,由用户选择通信模式,若选择了gRPC模式则执行图3左侧的流程,选择了MPI模式则执行图3右侧的流程。
在gRPC模式下,管理节点启动两个线程,分别称为线程1和线程2:其中线程1是主线程,负责导入节点列表(图3中的ps/worker列表)、创建容器、启动容器(图3中的生成ps/worker命令列表、执行容器的启动命令)以及销毁容器;线程2是监控线程,负责监控容器是否创建完成、监控所有工作服务器(worker)是否执行完成以及监控所有容器是否销毁完成。
在MPI模式下,管理节点也启动两个线程,不妨也称为线程1和线程2:其中线程1是主线程,负责导入节点列表(图3中的node列表)、创建容器、启动容器(图3中的建立所有容器的SSH无密码连接、基于psm2模块运行TensorFlow程序)以及销毁容器;线程2是监控线程,负责监控容器是否创建完成以及监控所有容器是否销毁完成。
图3最下方是获取训练日志的步骤,对于gRPC模式,所有工作容器在运行TensorFlow程序时(即执行训练任务时)都会产生日志,工作容器会根据自身的标识(worker id)将日志文件存放到一个共享目录下(参数容器也类似),用户也可以通过管理节点访问该共享目录并查看日志。对于MPI模式,管理节点会根据当前时间自动进行日志记录并存放到一个共享目录下。
在图3示出的流程中,涉及用户配置的部分只有节点列表和通信模式选择,其他部分都是自动化完成的,训练效率非常高。而根据前文内容,可以只在节点列表中填入一些节点的IP地址,最多再加上简单的节点类型信息以及容器数量信息,用户负担很小。
图4示出了本申请实施例提供的分布式训练装置300的功能模块图。参照图4,分布式训练装置300包括:
节点列表导入模块310,用于导入节点列表,所述节点列表包括集群中多个节点的地址信息;
容器创建模块320,用于控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器;
分布式训练模块330,用于控制创建好的容器执行所述深度学习框架下的训练任务。
在分布式训练装置300的一种实现方式中,所述容器镜像中还安装有高性能计算网络的运行库,所述容器在执行所述深度学习框架下的训练任务时利用所述高性能计算网络进行相互之间的通信。
在分布式训练装置300的一种实现方式中,所述节点列表还包括所述多个节点的类型信息,节点列表导入模块310导入节点列表,包括:根据设定好的通信模式导入对应的节点列表;其中,所述通信模式是指所述容器在执行所述深度学习框架下的训练任务时,为实现相互之间的数据传输而采用的通信方式,所述节点列表中包含的所述类型信息与所述深度学习框架在所述通信模式下进行训练时采用的节点架构相对应;容器创建模块320控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,包括:控制所述节点列表中的节点获取与其类型信息对应的容器镜像,所述容器镜像中安装有所述深度学习框架以及所述通信模式的运行库。
在分布式训练装置300的一种实现方式中,所述通信模式包括RPC模式,所述节点架构为参数服务器-工作服务器架构,所述参数服务器是指在训练过程中用于存储模型参数的服务器,所述工作服务器是指在训练过程中用于计算参数梯度的服务器,所述节点的类型信息用于指示该节点为部署所述参数服务器的参数节点,或者,部署所述工作服务器的工作节点;容器创建模块320控制所述节点列表中的节点获取与其类型信息对应的容器镜像,包括:控制所述节点列表中的参数节点获取参数容器镜像,其中,所述参数容器镜像是指作为所述参数服务器的运行环境的容器镜像,所述参数容器镜像中安装有所述深度学习框架以及所述RPC模式的运行库;以及,控制所述节点列表中的工作节点获取工作容器镜像,其中,所述工作容器镜像是指作为所述工作服务器的运行环境的容器镜像,所述工作容器镜像中安装有所述深度学习框架以及所述RPC模式的运行库。
在分布式训练装置300的一种实现方式中,所述通信模式包括MPI模式,所述容器镜像中安装有所述深度学习框架、MPI模式的运行库以及高性能计算网络的运行库,分布式训练模块330控制创建好的容器执行所述深度学习框架下的训练任务,包括:在创建好的各容器之间建立安全外壳协议SSH无密码连接;设置在所述MPI模式下利用所述高性能计算网络进行容器间通信时要使用的通信模块,所述通信模块的类型与所述高性能计算网络的类型相对应;控制创建好的容器基于设置好的通信模块执行所述深度学习框架下的训练任务。
在分布式训练装置300的一种实现方式中,若所述高性能计算网络为OPA网络,则所述通信模块包括psm模块;若所述高性能计算网络为Infiniband网络,则所述通信模块包括openib模块。
在分布式训练装置300的一种实现方式中,容器创建模块320控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器,包括:根据所述节点列表生成第一命令列表,所述第一命令列表包括容器创建命令;控制所述节点列表中的节点运行其在所述第一命令列表中对应的容器创建命令,以使其获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器。
在分布式训练装置300的一种实现方式中,分布式训练模块330控制创建好的容器执行所述深度学习框架下的训练任务,包括:根据所述节点列表以及创建好的容器生成第二命令列表,所述第二命令列表包括容器启动命令;控制所述节点列表中的节点运行其上创建好的容器在所述第二命令列表中对应的容器启动命令,以使其上创建好的容器执行所述深度学习框架下的训练任务。
在分布式训练装置300的一种实现方式中,所述第二命令列表与第一命令列表为同一列表,该列表包括容器创建命令以及对应的容器启动命令。
在分布式训练装置300的一种实现方式中,所述装置还包括:监控模块,用于在分布式训练模块330控制创建好的容器执行所述深度学习框架下的训练任务之前,运行监控线程,并根据所述监控线程对容器创建过程的监控结果确定创建好的容器;其中,所述监控线程获得所述监控结果所需的监控数据由设置在所述节点上或所述容器中的监控代理程序采集。
在分布式训练装置300的一种实现方式中,所述节点列表还包括所述多个节点上容器的数量信息;容器创建模块320控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器,包括:控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建与所述数量信息对应的容器。
本申请实施例提供的分布式训练装置300,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法实施例中相应内容。
图5示出了本申请实施例提供的电子设备400的一种可能的结构。参照图5,电子设备400包括:处理器410、存储器420以及通信接口430,这些组件通过通信总线440和/或其他形式的连接机构(未示出)互连并相互通讯。
其中,存储器420包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),电可擦除可编程只读存储器(Electric Erasable Programmable Read-Only Memory,简称EEPROM)等。处理器410以及其他可能的组件可对存储器420进行访问,读和/或写其中的数据。
处理器410包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器410可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(Network Processor,简称NP)或者其他常规处理器;还可以是专用处理器,包括图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network ProcessingUnit,简称NPU)、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuits,简称ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器410为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
通信接口430包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口430可以包括进行有线和/或无线通信的接口。
在存储器420中可以存储一个或多个计算机程序指令,处理器410可以读取并运行这些计算机程序指令,以实现本申请实施例提供的分布式训练方法及其他期望的功能。
可以理解,图5所示的结构仅为示意,电子设备400还可以包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。电子设备400可能是实体设备,例如PC机、笔记本电脑、平板电脑、手机、服务器、嵌入式设备等,也可能是虚拟设备,例如虚拟机、容器等。并且,电子设备400也不限于单台设备,也可以是多台设备的组合。在图1中,管理节点110可以采用电子设备400实现。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本申请实施例提供的分布式训练方法和/或模型训练方法。例如,计算机可读存储介质可以实现为图5中电子设备400中的存储器420。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种分布式训练方法,其特征在于,包括:
导入节点列表,所述节点列表包括集群中多个节点的地址信息;
控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器;
控制创建好的容器执行所述深度学习框架下的训练任务。
2.根据权利要求1所述的分布式训练方法,其特征在于,所述节点列表还包括所述多个节点的类型信息,所述导入节点列表,包括:
根据设定好的通信模式导入对应的节点列表;其中,所述通信模式是指所述容器在执行所述深度学习框架下的训练任务时,为实现相互之间的数据传输而采用的通信方式,所述节点列表中包含的所述类型信息与所述深度学习框架在所述通信模式下进行训练时采用的节点架构相对应;
所述控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,包括:
控制所述节点列表中的节点获取与其类型信息对应的容器镜像,所述容器镜像中安装有所述深度学习框架以及所述通信模式的运行库。
3.根据权利要求2所述的分布式训练方法,其特征在于,所述通信模式包括远程过程调用RPC模式,所述节点架构为参数服务器-工作服务器架构,所述参数服务器是指在训练过程中用于存储模型参数的服务器,所述工作服务器是指在训练过程中用于计算参数梯度的服务器,所述节点的类型信息用于指示该节点为部署所述参数服务器的参数节点,或者,部署所述工作服务器的工作节点;
控制所述节点列表中的节点获取与其类型信息对应的容器镜像包括:
控制所述节点列表中的参数节点获取参数容器镜像,其中,所述参数容器镜像是指作为所述参数服务器的运行环境的容器镜像,所述参数容器镜像中安装有所述深度学习框架以及所述RPC模式的运行库;以及,
控制所述节点列表中的工作节点获取工作容器镜像,其中,所述工作容器镜像是指作为所述工作服务器的运行环境的容器镜像,所述工作容器镜像中安装有所述深度学习框架以及所述RPC模式的运行库。
4.根据权利要求2所述的训练方法,其特征在于,所述通信模式包括消息传递接口MPI模式,所述容器镜像中安装有所述深度学习框架、MPI模式的运行库以及高性能计算网络的运行库,所述控制创建好的容器执行所述深度学习框架下的训练任务,包括:
在创建好的各容器之间建立安全外壳协议SSH无密码连接;
设置在所述MPI模式下利用所述高性能计算网络进行容器间通信时要使用的通信模块,所述通信模块的类型与所述高性能计算网络的类型相对应;
控制创建好的容器基于设置好的通信模块执行所述深度学习框架下的训练任务。
5.根据权利要求1-4中任一项所述的分布式训练方法,其特征在于,所述控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器,包括:
根据所述节点列表生成第一命令列表,所述第一命令列表包括容器创建命令;
控制所述节点列表中的节点运行其在所述第一命令列表中对应的容器创建命令,以使其获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器。
6.根据权利要求1-3中任一项所述的分布式训练方法,其特征在于,所述控制创建好的容器执行所述深度学习框架下的训练任务,包括:
根据所述节点列表以及创建好的容器生成第二命令列表,所述第二命令列表包括容器启动命令;
控制所述节点列表中的节点运行其上创建好的容器在所述第二命令列表中对应的容器启动命令,以使其上创建好的容器执行所述深度学习框架下的训练任务。
7.根据权利要求1-4中任一项所述的训练方法,其特征在于,所述节点列表还包括所述多个节点上容器的数量信息;
所述控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器,包括:
控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建与所述数量信息对应的容器。
8.一种分布式训练装置,其特征在于,包括:
节点列表导入模块,用于导入节点列表,所述节点列表包括集群中多个节点的地址信息;
容器创建模块,用于控制所述节点列表中的节点获取安装有深度学习框架的容器镜像,并利用所述容器镜像在节点上创建容器;
分布式训练模块,用于控制创建好的容器执行所述深度学习框架下的训练任务。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如权利要求1-7中任一项所述的方法。
10.一种电子设备,其特征在于,包括存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行如权利要求1-7中任一项所述的方法。
CN202011167096.2A 2020-10-27 分布式训练方法及装置、存储介质及电子设备 Active CN112364897B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011167096.2A CN112364897B (zh) 2020-10-27 分布式训练方法及装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011167096.2A CN112364897B (zh) 2020-10-27 分布式训练方法及装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN112364897A true CN112364897A (zh) 2021-02-12
CN112364897B CN112364897B (zh) 2024-05-28

Family

ID=

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113052322A (zh) * 2021-03-10 2021-06-29 广东博智林机器人有限公司 机器学习的建模方法、装置、存储介质和处理器
CN113742065A (zh) * 2021-08-07 2021-12-03 中国航空工业集团公司沈阳飞机设计研究所 一种基于kubernetes容器集群的分布式强化学习方法及装置
CN114841345A (zh) * 2022-03-28 2022-08-02 武汉理工大学 一种基于深度学习算法的分布式计算平台及其应用

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101295747B1 (ko) * 2012-04-25 2013-08-20 서울시립대학교 산학협력단 Rpc를 이용한 자동 기하 보정 시스템 및 방법
US20130290223A1 (en) * 2012-04-27 2013-10-31 Yahoo! Inc. Method and system for distributed machine learning
CN106529673A (zh) * 2016-11-17 2017-03-22 北京百度网讯科技有限公司 基于人工智能的深度学习网络训练方法及装置
WO2017132428A1 (en) * 2016-01-29 2017-08-03 Yahoo! Inc. Method and system for distributed deep machine learning
CN107958266A (zh) * 2017-11-21 2018-04-24 重庆邮电大学 一种基于mpi并行将连续属性进行离散化的方法
WO2018077293A1 (zh) * 2016-10-28 2018-05-03 北京市商汤科技开发有限公司 数据传输方法和系统、电子设备
CN108958892A (zh) * 2018-08-14 2018-12-07 郑州云海信息技术有限公司 一种创建用于深度学习作业的容器的方法和装置
CN109034254A (zh) * 2018-08-01 2018-12-18 优刻得科技股份有限公司 定制人工智能在线服务的方法、系统和存储介质
CN109272116A (zh) * 2018-09-05 2019-01-25 郑州云海信息技术有限公司 一种深度学习的方法及装置
US20190325350A1 (en) * 2018-04-20 2019-10-24 International Business Machines Corporation Transfer learning without local data export in multi-node machine learning
CN110414687A (zh) * 2019-07-12 2019-11-05 苏州浪潮智能科技有限公司 一种用于深度学习框架分布式训练的方法和装置
CN110569104A (zh) * 2019-08-12 2019-12-13 苏州浪潮智能科技有限公司 深度学习系统中任务训练的管理方法和计算机存储介质
CN110647580A (zh) * 2019-09-05 2020-01-03 南京邮电大学 分布式容器集群镜像管理主节点、从节点、系统及方法
CN110969198A (zh) * 2019-11-24 2020-04-07 广东浪潮大数据研究有限公司 深度学习模型的分布式训练方法、装置、设备及存储介质
US20200175370A1 (en) * 2018-11-30 2020-06-04 International Business Machines Corporation Decentralized distributed deep learning
CN111625316A (zh) * 2020-05-15 2020-09-04 苏州浪潮智能科技有限公司 一种环境部署方法、装置及电子设备和存储介质

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101295747B1 (ko) * 2012-04-25 2013-08-20 서울시립대학교 산학협력단 Rpc를 이용한 자동 기하 보정 시스템 및 방법
US20130290223A1 (en) * 2012-04-27 2013-10-31 Yahoo! Inc. Method and system for distributed machine learning
WO2017132428A1 (en) * 2016-01-29 2017-08-03 Yahoo! Inc. Method and system for distributed deep machine learning
WO2018077293A1 (zh) * 2016-10-28 2018-05-03 北京市商汤科技开发有限公司 数据传输方法和系统、电子设备
CN108021982A (zh) * 2016-10-28 2018-05-11 北京市商汤科技开发有限公司 数据传输方法和系统、电子设备
CN106529673A (zh) * 2016-11-17 2017-03-22 北京百度网讯科技有限公司 基于人工智能的深度学习网络训练方法及装置
CN107958266A (zh) * 2017-11-21 2018-04-24 重庆邮电大学 一种基于mpi并行将连续属性进行离散化的方法
US20190325350A1 (en) * 2018-04-20 2019-10-24 International Business Machines Corporation Transfer learning without local data export in multi-node machine learning
CN109034254A (zh) * 2018-08-01 2018-12-18 优刻得科技股份有限公司 定制人工智能在线服务的方法、系统和存储介质
CN108958892A (zh) * 2018-08-14 2018-12-07 郑州云海信息技术有限公司 一种创建用于深度学习作业的容器的方法和装置
CN109272116A (zh) * 2018-09-05 2019-01-25 郑州云海信息技术有限公司 一种深度学习的方法及装置
US20200175370A1 (en) * 2018-11-30 2020-06-04 International Business Machines Corporation Decentralized distributed deep learning
CN110414687A (zh) * 2019-07-12 2019-11-05 苏州浪潮智能科技有限公司 一种用于深度学习框架分布式训练的方法和装置
CN110569104A (zh) * 2019-08-12 2019-12-13 苏州浪潮智能科技有限公司 深度学习系统中任务训练的管理方法和计算机存储介质
CN110647580A (zh) * 2019-09-05 2020-01-03 南京邮电大学 分布式容器集群镜像管理主节点、从节点、系统及方法
CN110969198A (zh) * 2019-11-24 2020-04-07 广东浪潮大数据研究有限公司 深度学习模型的分布式训练方法、装置、设备及存储介质
CN111625316A (zh) * 2020-05-15 2020-09-04 苏州浪潮智能科技有限公司 一种环境部署方法、装置及电子设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
朱天放等: "基于容器云的深度学习平台设计与实现", 电子设计工程, vol. 27, no. 9, pages 105 - 106 *
王宇龙等: "PyTorch深度学习入门与实战", 30 September 2020, 中国铁道出版社有限公司, pages: 120 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113052322A (zh) * 2021-03-10 2021-06-29 广东博智林机器人有限公司 机器学习的建模方法、装置、存储介质和处理器
CN113742065A (zh) * 2021-08-07 2021-12-03 中国航空工业集团公司沈阳飞机设计研究所 一种基于kubernetes容器集群的分布式强化学习方法及装置
CN114841345A (zh) * 2022-03-28 2022-08-02 武汉理工大学 一种基于深度学习算法的分布式计算平台及其应用

Similar Documents

Publication Publication Date Title
US11126448B1 (en) Systems and methods for using dynamic templates to create application containers
US9760591B2 (en) Dynamic code loading
EP3340034A1 (en) Application lifecycle management system
US9307019B2 (en) Apparatus, systems and methods for deployment and management of distributed computing systems and applications
Scolati et al. A containerized big data streaming architecture for edge cloud computing on clustered single-board devices
US9152532B2 (en) System and method for configuring a cloud computing system with a synthetic test workload
US9262231B2 (en) System and method for modifying a hardware configuration of a cloud computing system
US9658895B2 (en) System and method for configuring boot-time parameters of nodes of a cloud computing system
US8887056B2 (en) System and method for configuring cloud computing systems
US10705883B2 (en) Dynamic hybrid computing environment
US20140047095A1 (en) System and method for tuning a cloud computing system
US20140047342A1 (en) System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics
US20140047079A1 (en) System and method for emulating a desired network configuration in a cloud computing system
WO2014025584A1 (en) System and method for tuning a cloud computing system
WO2022088612A1 (zh) 任务处理方法、装置、设备、系统及存储介质
CN114968477A (zh) 容器热迁移方法及容器热迁移装置
CN117112122A (zh) 一种集群部署方法和装置
US20220156097A1 (en) Systems and methods to pre-provision sockets for serverless functions
CN112364897B (zh) 分布式训练方法及装置、存储介质及电子设备
CN112364897A (zh) 分布式训练方法及装置、存储介质及电子设备
Affetti et al. aDock: a cloud infrastructure experimentation environment based on open stack and docker
CN114124700A (zh) 集群的参数配置方法、装置、电子设备及可读存储介质
Hao Edge Computing on Low Availability Devices with K3s in a Smart Home IoT System
CN112181401A (zh) 应用构建方法及应用构建平台
CN112348196A (zh) 一种自适应rdma网络的分布式机器学习系统及方法

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