欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 分布式训练方法、装置、设备和存储介质独创技术22899字

分布式训练方法、装置、设备和存储介质

2020-12-30 05:12:25

分布式训练方法、装置、设备和存储介质

  技术领域

  本发明涉及深度学习技术领域,尤其涉及一种分布式训练方法、装置、设备和存储介质。

  背景技术

  深度学习在过去几年中取得了长足的发展,尤其在语音、图像、机器翻译、自然语言处理等领域更是取得了飞跃式的提升,深度学习训练需要海量的数据,这就需要超大规模参数的网络模型拟合。如果训练数据不足,如果网络模型参数太少,会造成欠拟合,模型精度较低。目前常见网络模型参数已经上亿,参数大小达到数GB。数据并行训练方式要求每个图形处理器(Graphics Processing Unit,GPU)节点拥有一份完整的模型参数副本,并在融合梯度时发送和接收完整的梯度数据,巨大的通信数据量给多机多卡并行训练带来了极大的网络通信压力。

  分布式节点可以通过参数服务器架构通信。这种架构下,在每个迭代中,每个节点,计算属于自己的梯度,并将这些梯度发送到一个参数服务器。参数服务器会聚合来自设备的所有梯度,并等待所有设备完成,然后在下一次迭代中计算新模型,再广播给所有设备。这种架构参数服务器的网络带宽存在瓶颈,容易造成网络堵塞。因此,现有技术中分布式训练方法,效率较低。

  发明内容

  有鉴于此,本发明的目的在于提出一种分布式训练方法、装置、设备和存储介质,以解决现有技术中参数服务器的网络带宽是瓶颈,容易造成网络堵塞的问题。

  基于上述目的,本发明提供了一种分布式训练方法,包括:

  利用Kubernetes的自定义资源类型CRD服务适配器,创建消息传递接口MPI任务资源自定义对象;所述MPI任务资源自定义对象包括训练节点的配置信息;

  接收训练请求;所述训练请求携带训练任务的总图形处理器GPU数量、训练任务的训练数据和训练任务的训练脚本;

  根据所述训练节点的配置信息和所述总GPU数量,确定多个训练节点;其中,每个训练节点包括至少3个GPU,且至少三个GPU之间形成环状链路;

  控制每个所述训练节点将所述训练数据通过内含的至少三个GPU进行迭代训练,得到每个所述训练节点对应的迭代结果。

  进一步地,上述所述的分布式训练方法中,所述训练请求还携带有训练任务的任务名称;

  根据所述训练节点的配置信息和所述总GPU数量,确定多个训练节点之前,还包括:

  检测所述训练任务的任务名称是否已存在;

  若训练任务的任务名称已存在,输出任务错误的提示信息;

  若训练任务的任务名称不存在,检测缓存器中是否存在训练请求对应的请求人员的权限信息;

  若不存在请求人员的权限信息,对所述请求人员进行授权;

  若存在请求人员的权限信息,加载所述请求人员的权限信息。

  进一步地,上述所述的分布式训练方法中,控制每个所述训练节点将所述训练数据通过内含的至少三个GPU进行迭代训练,得到每个所述训练节点对应的迭代结果之前,还包括:

  获取每个训练节点的状态;

  若所有训练节点的状态均表示准备运行,启动所有训练节点。

  进一步地,上述所述的分布式训练方法,还包括:

  若所有训练节点均完成迭代训练,删除所有训练节点。

  进一步地,上述所述的分布式训练方法中,所述训练节点的配置信息包括每个训练节点可运行的GPU数目、每个训练节点的最多重试次数和每个训练节点的删除策略中的至少一种。

  本发明还提供一种分布式训练装置,包括:

  创建模块,用于利用Kubernetes的自定义资源类型CRD服务适配器,创建消息传递接口MPI任务资源自定义对象;所述MPI任务资源自定义对象包括训练节点的配置信息;

  接收模块,用于接收训练请求;所述训练请求携带训练任务的总图形处理器GPU数量、训练任务的训练数据和训练任务的训练脚本;

  确定模块,用于根据所述训练节点的配置信息和所述总GPU数量,确定多个训练节点;其中,每个训练节点包括至少3个GPU,且至少三个GPU 之间形成环状链路;

  控制模块,用于控制每个所述训练节点将所述训练数据通过内含的至少三个GPU进行迭代训练,得到每个所述训练节点对应的迭代结果。

  进一步地,上述所述的分布式训练装置中,所述训练请求还携带有训练任务的任务名称;

  所述确定模块,还用于:

  检测所述训练任务的任务名称是否已存在;

  若训练任务的任务名称已存在,输出任务错误的提示信息;

  若训练任务的任务名称不存在,检测缓存器中是否存在训练请求对应的请求人员的权限信息;

  若不存在请求人员的权限信息,对所述请求人员进行授权;

  若存在请求人员的权限信息,加载所述请求人员的权限信息。

  进一步地,上述所述的分布式训练装置中,所述控制模块,还用于:

  获取每个训练节点的状态;

  若所有训练节点的状态均表示准备运行,启动所有训练节点。

  本发明还提供一种分布式训练设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一项所述的分布式训练方法。

  本发明还提供一种存储介质,所述存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任意一项所述的分布式训练方法。

  从上面所述可以看出,本发明提供的分布式训练方法、装置、设备和存储介质,首先利用Kubernetes的CRD服务适配器,创建包括训练节点的配置信息的消息传递接口MPI任务资源自定义对象;并在接收到训练请求后,根据训练节点的配置信息和训练请求携带训练任务的总GPU数量,确定多个由至少三个GPU形成的Ring-allreduce架构的训练节点,并控制每个训练节点将训练数据通过内含的至少三个GPU进行迭代训练,得到每个训练节点对应的迭代结果,缓解原参数服务器架构存在的带宽瓶颈、容易造成网络堵塞的问题。采用本发明的技术方案,能够提高训练效率,同时,能够提高 GPU设置的灵活性,提高分布训练的容错性。

  附图说明

  为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

  图1为本发明的分布式训练方法实施例的流程图;

  图2为本发明的分布式训练装置实施例的结构示意图;

  图3为本发明的分布式训练设备实施例的结构示意图。

  具体实施方式

  为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

  需要说明的是,除非另外定义,本发明实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

  在一个具体实现过程中,Kubernetes现有的资源类型无法满足我们的需求时,可以基于Kubernetes的自定义资源类型(Custom Resource Definition, CRD)服务适配器进行扩展。CRD服务适配器的构建方法目的是构建一套开放式基础设施之间的抽象层,可以在不直接访问服务接口的情况下和服务进行交互。若服务和CRD服务适配器用同一种语言开发的(这里默认使用go 语言),则在编译的时候可以直接合并到服务适配器的二进制中,如果使用其他的开发语言,或不想和服务适配器编译在一起,可以使用RPC远程通行的方法进行适配交互。通过基于Kubernetes的CRD服务适配器的构建方法,可以使CRD服务适配器动态的适配到不同的服务,并和服务接口进行数据交互。

  图1为本发明的分布式训练方法实施例的流程图,如图1所示,本实施例的分布式训练方法具体可以包括如下步骤:

  100、利用Kubernetes的CRD服务适配器,创建消息传递接口MPI任务资源自定义对象;

  本实施例中,MPI任务资源自定义对象包括训练节点的配置信息;例如,该训练节点的配置信息包括每个训练节点可运行的GPU数目、每个训练节点的最多重试次数和每个训练节点的删除策略中的至少一种。本实施例中,训练节点可以用训练节点表示。

  101、接收训练请求;

  本实施例中,可以接收某一训练任务的训练请求,其中,该训练请求携带训练任务的任务名称、训练任务的总GPU数量、训练任务的训练数据和训练任务的训练脚本。

  102、根据训练节点的配置信息和总GPU数量,确定多个训练节点;

  在接收到训练任务的后,可以根据训练节点的配置信息和总GPU数量,将GPU进行分解到对应的训练节点中,从而可以确定多个训练节点。其中,每个训练节点包括至少3个GPU,且至少三个GPU之间形成环状链路。

  具体地,可以按照每个训练节点可运行的GPU数目依次分配对应的 GPU,而不再是每个训练节点中的GPU数目一致,提高了GPU设置的灵活性,例如,指定15个GPU,可以被分解成两个训练节点,训练节点0中有 10个GPU,训练节点1中有5个GPU。本实施例中,可以创建参数 ConfigMap,以保存训练节点的名称和GPU数量,并保存训练任务的训练脚本。

  103、控制每个训练节点将训练数据通过内含的至少三个GPU进行迭代训练,得到每个训练节点对应的迭代结果。

  本实施例中,由于至少三个GPU之间形成环状链路,这样可以形成ring allreduce架构,该架构没有中心节点来聚合所有GPU计算出的梯度,且参数传递量和GPU数量无关。这样,在一个迭代过程,每个GPU完成自己的训练,计算出梯度,并将梯度传递给环中的下一个GPU,同时它也接收从上一个GPU传来的梯度。对于一个包含N个GPU的环,各个GPU需要收到其它N-1个GPU传来的梯度后就可以更新模型参数,从而缓解了参数服务器架构的带宽瓶颈问题。另外,每个GPU上有训练模型所有参数,如果某个GPU出现故障,不影响整个模型训练,因此,具备容错性。

  本实施例的分布式训练方法,首先利用Kubernetes的CRD服务适配器,创建包括训练节点的配置信息的消息传递接口MPI任务资源自定义对象;并在接收到训练请求后,根据训练节点的配置信息和训练请求携带训练任务的总GPU数量,确定多个由至少三个GPU形成的Ring-allreduce架构的训练节点,并控制每个训练节点将训练数据通过内含的至少三个GPU进行迭代训练,得到每个训练节点对应的迭代结果,缓解原参数服务器架构存在的带宽瓶颈、容易造成网络堵塞的问题。采用本发明的技术方案,能够提高训练效率,同时,能够提高GPU设置的灵活性,提高分布训练的容错性。

  进一步地,上述实施例中,训练请求还携带有训练任务的任务名称;在步骤102“根据所述训练节点的配置信息和所述总GPU数量,确定多个训练节点”之前,还可以执行如下操作:

  检测训练任务的任务名称是否已存在;若训练任务的任务名称已存在,输出任务错误的提示信息;若训练任务的任务名称不存在,检测缓存器中是否存在训练请求对应的请求人员的权限信息;若不存在请求人员的权限信息,对请求人员进行授权;若存在请求人员的权限信息,加载请求人员的权限信息。这样,可以保证只有授权的人员才能进行训练。

  在一个具体实现过程中,在步骤103“控制每个所述训练节点将所述训练数据通过内含的至少三个GPU进行迭代训练,得到每个训练节点对应的迭代结果”之前,还可以执行如下操作:

  获取每个训练节点的状态;若所有训练节点的状态均表示准备运行,启动所有训练节点;若至少一个训练节点的状态表示未准备运行,重新获取每个训练节点的状态。

  进一步地,上述实施例中,若监测到所有训练节点均完成迭代训练,删除所有训练节点。例如,所有训练节点均达到预设的迭代次数后,可以确定所有训练节点均完成迭代训练。

  需要说明的是,本发明实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本发明实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成的方法。

  图2为本发明的分布式训练装置实施例的结构示意图,如图2所示,本实施例的分布式训练装置包括创建模块20、接收模块21、确定模块22和控制模块23。

  创建模块20,用于利用Kubernetes的自定义资源类型CRD服务适配器,创建消息传递接口MPI任务资源自定义对象;MPI任务资源自定义对象包括训练节点的配置信息;训练节点的配置信息包括每个训练节点可运行的 GPU数目、每个训练节点的最多重试次数和每个训练节点的删除策略中的至少一种。

  接收模块21,用于接收训练请求;训练请求携带训练任务的总图形处理器GPU数量、训练任务的训练数据和训练任务的训练脚本;

  确定模块22,用于根据训练节点的配置信息和总GPU数量,确定多个训练节点;其中,每个训练节点包括至少3个GPU,且至少三个GPU之间形成环状链路;

  控制模块23,用于控制每个训练节点将训练数据通过内含的至少三个 GPU进行迭代训练,得到每个训练节点对应的迭代结果。

  本实施例的分布式训练装置,首先利用Kubernetes的CRD服务适配器,创建包括训练节点的配置信息的消息传递接口MPI任务资源自定义对象;并在接收到训练请求后,根据训练节点的配置信息和训练请求携带训练任务的总GPU数量,确定多个由至少三个GPU形成的Ring-allreduce架构的训练节点,并控制每个训练节点将训练数据通过内含的至少三个GPU进行迭代训练,得到每个训练节点对应的迭代结果,缓解原参数服务器架构存在的带宽瓶颈、容易造成网络堵塞的问题。采用本发明的技术方案,能够提高训练效率,同时,能够提高GPU设置的灵活性,提高分布训练的容错性。

  进一步地,训练请求还携带有训练任务的任务名称;

  确定模块22,还用于:

  检测训练任务的任务名称是否已存在;

  若训练任务的任务名称已存在,输出任务错误的提示信息;

  若训练任务的任务名称不存在,检测缓存器中是否存在训练请求对应的请求人员的权限信息;

  若不存在请求人员的权限信息,对请求人员进行授权;

  若存在请求人员的权限信息,加载请求人员的权限信息。

  进一步地,控制模块23,还用于:

  获取每个训练节点的状态;

  若所有训练节点的状态均表示准备运行,启动所有训练节点。

  进一步地,控制模块23,还用于若所有训练节点均完成迭代训练,删除所有训练节点。

  上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

  图3为本发明的分布式训练设备实施例的结构示意图,如图3所示,本实施例的分布式训练设备可以包括:处理器1010和存储器1020。本领域技术人员可知的,该设备还可以包括输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口 1040通过总线1050实现彼此之间在设备内部的通信连接。

  处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

  存储器1020可以采用ROM(Read Only Memory,只读存储器)、 RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

  输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

  通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。

  总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器 1020、输入/输出接口1030和通信接口1040)之间传输信息。

  需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

  本发明还提供一种存储介质,其特征在于,所述存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述实施例的分布式训练方法。

  本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

  所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。

  另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。

  尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。

  本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。

《分布式训练方法、装置、设备和存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)