WO2020155083A1 - 神经网络的分布式训练方法及装置 - Google Patents

神经网络的分布式训练方法及装置 Download PDF

Info

Publication number
WO2020155083A1
WO2020155083A1 PCT/CN2019/074365 CN2019074365W WO2020155083A1 WO 2020155083 A1 WO2020155083 A1 WO 2020155083A1 CN 2019074365 W CN2019074365 W CN 2019074365W WO 2020155083 A1 WO2020155083 A1 WO 2020155083A1
Authority
WO
WIPO (PCT)
Prior art keywords
gradient
aggregation
calculation
neural network
time
Prior art date
Application number
PCT/CN2019/074365
Other languages
English (en)
French (fr)
Inventor
沈强
马涛
吴东君
江潇
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2019/074365 priority Critical patent/WO2020155083A1/zh
Priority to CN201980069560.3A priority patent/CN112955909A/zh
Publication of WO2020155083A1 publication Critical patent/WO2020155083A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks

Abstract

本申请提供一种神经网络的分布式训练方法及装置,能够有效减少确定梯度聚合方案的次数和耗时,从而提高训练效率。该方法包括:在启动训练任务之前,一次性地确定梯度聚合阈值,然后根据该梯度聚合阈值,将神经网络中的多个梯度计算算子划分为多个各包括至少一个梯度计算算子的梯度聚合集合,且当任意一个梯度聚合集合中的所有梯度计算算子均完成一个梯度计算时,则将该任意一个梯度聚合集合作为一个整体,执行一次梯度聚合操作。

Description

神经网络的分布式训练方法及装置 技术领域
本申请涉及神经网络领域,尤其涉及一种神经网络的分布式训练方法及装置。
背景技术
目前,鉴于神经网络越来越复杂、层数越来越多,通常采用分布式训练方法训练神经网络,以提高神经网络的训练效率。示例性地,以计算节点N0-N4首尾相连,组成一个环形分布式训练系统为例作介绍。对于该环形分布式训练系统中的每个计算节点各自使用一份训练样本,共同完成神经网络的一次梯度计算后,每个计算节点都要根据该计算节点计算得到的梯度数据量,以及该计算节点的上游相邻节点计算得到的梯度数据量,确定梯度聚合方案并完成梯度聚合。其中,梯度聚合是指将多个计算节点得到的梯度数据以预设方式进行合并以得到合并结果。
也就是说,在现有的分布式训练中,针对每次训练,每个计算节点都要在其完成一次梯度计算后确定一次梯度聚合方案,浪费了大量的计算资源和计算节点间的通信资源,从而导致神经网络的训练耗时增加,训练效率较低。
发明内容
本申请提供一种神经网络的分布式训练方法及装置,能够有效减少确定梯度聚合方案的次数和耗时,从而提高训练效率。
第一方面,提供一种神经网络的分布式训练方法。该方法包括:确定神经网络的梯度聚合阈值。然后,根据梯度聚合阈值,将神经网络中的多个梯度计算算子划分为多个梯度聚合集合;其中,每个梯度聚合集合包括至少一个梯度计算算子。之后,启动神经网络的训练任务。其中,训练任务用于对神经网络执行多轮训练迭代,每轮训练迭代用于执行多个梯度计算算子分别对应的多个梯度计算。最后,针对任意一个梯度聚合集合的梯度数据执行梯度聚合。其中,梯度数据是执行该任意一个梯度聚合集合中的至少一个梯度计算算子分别对应的至少一个梯度计算所得到的,所述梯度聚合用于聚合上述梯度数据与分布式训练系统中其他计算节点的其他梯度数据,所述其他梯度数据是其他计算节点中与上述任意一个梯度聚合集合相对应的梯度聚合集合的梯度数据。
本申请提供的神经网络的分布式训练方法,能够在启动训练任务之前,确定梯度聚合阈值,然后根据该梯度聚合阈值,将神经网络中的多个梯度计算算子划分为多个各包括至少一个梯度计算算子的梯度聚合集合,且当任意一个梯度聚合集合中的所有梯度计算算子均各自完成一个梯度计算时,则将该任意一个梯度聚合集合作为一个整体,执行一次梯度聚合操作,可以避免在使用多份训练样本执行训练任务的过程中,需要协调者节点针对每份训练样本,多次确定梯度聚合方案的情况,能够有效减少确定梯度聚合方案的次数和耗时,从而提高训练效率。
在一种可能的设计方法中,上述确定神经网络的梯度聚合阈值,可以包括:根据 梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系,确定梯度聚合阈值。例如,所述第一对应关系是第一函数关系,所述第二对应关系是第二函数关系。
示例性地,上述根据梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系,确定梯度聚合阈值,可以包括:在梯度数据统计量中确定优选梯度数据量,并将优选梯度数据量确定为梯度聚合阈值。其中,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时之间的耗时偏差小于耗时偏差阈值。
可选地,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时相等。
进一步地,上述神经网络的分布式训练方法,还可以包括:通过在线计算方式或离线计算方式统计梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系。
第二方面,提供一种分布式训练系统中的装置。该装置包括:确定模块、训练模块和聚合模块。其中,确定模块,用于确定神经网络的梯度聚合阈值,以及根据梯度聚合阈值,将神经网络中的多个梯度计算算子划分为多个梯度聚合集合。其中,每个梯度聚合集合包括至少一个梯度计算算子。训练模块,用于启动神经网络的训练任务。其中,训练任务用于对神经网络执行多轮训练迭代,每轮训练迭代用于执行多个梯度计算算子分别对应的多个梯度计算。聚合模块,用于针对任意一个梯度聚合集合的梯度数据执行梯度聚合。其中,梯度数据是执行该任意一个梯度聚合集合中的至少一个梯度计算算子分别对应的至少一个梯度计算所得到的,所述梯度聚合用于聚合上述梯度数据与分布式训练系统中其他计算节点的其他梯度数据,所述其他梯度数据是其他计算节点中与上述任意一个梯度聚合集合相对应的梯度聚合集合的梯度数据。
在一种可能的设计中,上述确定模块,还用于根据梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系,确定梯度聚合阈值。例如,所述第一对应关系是第一函数关系,所述第二对应关系是第二函数关系。
示例性地,上述确定模块,还用于在梯度数据统计量中确定优选梯度数据量,以及将优选梯度数据量确定为梯度聚合阈值。其中,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时之间的耗时偏差小于耗时偏差阈值;
可选地,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时相等。
进一步地,上述确定模块,用于通过在线计算方式或离线计算方式统计梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系。
第三方面,提供一种装置,包括:处理器,该处理器与存储器耦合;存储器,用于存储计算机程序。该处理器,用于执行存储器中存储的计算机程序,使得该通信设备执行上述第一方面或第一方面中任一种可能的实现方式所述的神经网络的分布式训练方法。
在一种可能的设计中,第三方面所述的装置还包括一个或多个收发器。所述收发器用于支持所述装置与其他设备通信,实现计算节点之间的接收和/或发送功能。例如, 接收上游相邻节点发送的梯度数据,向下游相邻节点发送梯度数据,接收训练样本等。所述处理器包括一个或多个处理器,被配置为支持第三方面所述的装置执行上述计算节点的功能。例如,确定梯度聚合阈值、根据梯度聚合阈值,将神经网络中的多个梯度计算算子划分为多个梯度聚合集合、针对任意一个梯度聚合集合的梯度数据执行梯度聚合等。
可选的,所述存储器还可以包括一个或多个存储器,所述存储器与处理器耦合,用于存储该装置必要的程序指令和/或数据。其中,所述存储器与处理器耦合,是指存储器与处理器之间存在信号连接。所述一个或多个存储器可以和处理器集成在一起,也可以与处理器分离设置,本申请对此不作限定。
所述装置可以为分布式网络中计算节点。所述收发器可以是所述计算节点的收发电路。可选的,所述收发器也可以为输入/输出电路或者接口。
所述装置还可以为设置于上述计算节点中的一个或多个通信芯片。所述收发器可以为该通信芯片的输入/输出电路或者接口。
第四方面,提供一种神经网络的分布式训练系统,该系统包括一个或多个环形链路,每个环形链路包括至少两个计算节点,任一计算节点用于执行如第一方面或第一方面中任一种可能的实现方式所述的神经网络的分布式训练方法。
第五方面,提供一种可读存储介质,存储有程序或指令,当程序或指令在计算机或处理器上运行时,使得计算机或处理器执行如第一方面或第一方面中任一种可能的实现方式所述的神经网络的分布式训练方法。
第六方面,提供一种计算机程序产品,包括计算机程序代码,当计算机程序代码在计算机或处理器上运行时,使得计算机或处理器执行如第一方面或第一方面中任一种可能的实现方式所述的神经网络的分布式训练方法。
附图说明
图1为本申请提供的神经网络的分布式训练方法所适用的神经网络的分布式训练系统的结构示意图;
图2为本申请实施例提供的神经网络的分布式训练方法的流程示意图;
图3为本申请实施例提供的优化前的神经网络的结构示意图;
图4为本申请实施例提供的梯度聚合阈值的确定方法的场景示意图;
图5为本申请实施例提供的优化后的神经网络的结构示意图;
图6为本申请实施例提供的分布式训练系统中的装置的结构示意图一;
图7为本申请实施例提供的分布式训练系统中的装置的结构示意图二;
图8为本申请实施例提供的基于张量流框架的分布式训练软硬件的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。本申请实施例的技术方案可以应用于基于张量流(tensorflow)框架的环形聚合(Ring-Allreduce)神经网络的分布式训练系统,但并不限于此。本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
在本申请实施例中,神经网络是一个能够学习、总结归纳的算法网络,可以神经网络软件或硬件的形式被内置于一个计算节点中,如神经网络程序、可执行脚本等。神经网络能够通过对已知数据(下文称为训练样本)的实验运用来学习和归纳总结,以提高神经网络的识别能力。通常来说,一个神经网络由多层神经元(算子)组成,每一层有多个输入和输出,输入或输出是一个多维数组,也称为张量(tensor)。每一层都有一个或多个加权数值,称为权值。某一层的输出结果,等于该层输入和权值的相加或相乘等数学运算的结果。通过训练样本对各个层的权重进行学习(learning)而创建模型的过程,称为训练过程。执行完一次训练,对各个层的权值实现一次校正的过程,称为完成一次训练迭代。在训练迭代的过程中,需要进行分别对应于多个梯度计算算子的多个梯度计算,以得到每个梯度计算算子的梯度数据。其中,神经网络可包括多个梯度计算算子,每个梯度计算算子对应于该神经网络的一项运算操作或处理,任一梯度计算算子可以位于神经网络的一个层上,用于实现一个梯度计算。梯度计算所得到梯度数据也称为梯度,其反映计算出的权值的偏差。从而,在后续可以进行相应的权值更新。
在本申请实施例中,“示例”、“例如”用于表示作例子、例证或说明。本申请中被描述为“示例”、“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。本申请实施例中,“的(of)”,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是类似的或一致的。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。为便于理解本申请实施例,首先以图1中示出的环形神经网络的分布式训练系统为例详细说明适用于本申请实施例的神经网络的分布式训练系统。
如图1所示,该神经网络的分布式训练系统包括计算节点(node)N1-N6。其中,计算节点N1-N4组成环形链路(ring link)1,计算节点N4-N6组成环形链路2。容易理解,同一计算节点可以只属于一个环形链路,如计算节点N1-N3,或计算节点N5和N6。当然,同一计算节点也可以同时属于不同的环形链路,如计算节点N4。此处不做限定。因此,神经网络计算的功能存在于该分布式训练系统内的各个计算节点。
需要说明的是,上述环形分布式网络可以认为是针对某一个训练任务而言的。也就是说,对于任意一个确定的训练任务,只会对应一个确定的环形链路。具体地,不同的训练任务可以在不同的环形链路上执行。例如,训练任务A在环形链路1上执行,而训练任务B在环形链路2上执行。进一步地,还可以在同一环形链路的不同数据传输方向上执行不同的训练任务。如图1所示,可以该环形链路上的数据传输方向1(逆时针方向)上执行训练任务A,同时在环形链路1的数据传输方向2(顺时针方向)上执行训练任务B。
上述计算节点之间可以通过有线或无线方式直接或间接连接,此处不作限定。需 要说明的是,对于每个环形链路的任何一个传输方向上的每个计算节点,均存在一个上游相邻节点和一个下游相邻节点。例如,对于环形链路1的逆时针方向上,计算节点N4的上游相邻节点为计算节点N3,计算节点N4的下游相邻节点为计算节点N1。
示例性地,如图1所示,以环形链路2的顺时针方向上的计算节点N4为例进行说明。启动训练任务后,计算节点N4将其计算出的梯度数据发送给其下游相邻节点N5。计算节点N5将其本身计算出的梯度值与接收自其上游计算节点N4的梯度数据聚合,然后将聚合后的梯度数据发送给计算节点N5的下游相邻计算节点N6。计算节点N6在将其本身计算出的梯度数据与接收自计算节点N5的梯度数据聚合。至此,环形链路2的顺时针方向上的所有计算节点计算出的梯度数据均已经聚合完毕。最后,计算节点N6还需要将完成梯度聚合后的梯度数据,按照环形链路2的顺时针方向,依次发送给计算节点N4和N5,以便每个计算节点根据计算节点N6聚合后的梯度数据计算对应于该计算节点的新权值,并完成各计算节点本地存储的神经网络副本的权值更新。也即是说,在环路中的每个计算节点得到的梯度数据将通过聚合被累加起来以更新权值。例如,当每个计算节点中均包括多个梯度计算算子,则多个计算节点中的相应的梯度计算算子的梯度数据将被累加以实现聚合和权值更新。
示例性地,上述分布式训练系统中的计算节点可以为分布式网络中的网络设备,如大型计算机、服务器等,也可以为设置于上述网络设备中的芯片,如中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理单元(neural network processing unit,NPU)等,本申请对此不做限定。应理解,图1仅为便于理解而示例的简化示意图,该神经网络的分布式训练系统中还可以包括其他计算节点或者还可以包括其他环形链路,图1中未予以画出。
下面结合附图,详细说明本申请实施例提供的神经网络的分布式训练方法。图2为本申请实施例提供的神经网络的分布式训练方法的流程示意图。该方法可以应用于如图1所示的神经网络的分布式训练系统,具体用于执行如图3所示的神经网络的分布式训练任务。该方法具体运行于分布式训练系统中的每个计算节点,例如N1。
如图3所示,位于任一计算节点内的该神经网络包括:正向计算算子、损失(loss)计算算子、5个梯度计算算子A-E,以及与上述5个梯度计算算子对应的5个梯度聚合算子和5个权值更新算子。每个算子代表神经网络中的一种运算或操作。全部算子组合起来形成该计算节点的神经网络,以执行针对该神经网络的一次或多次训练迭代。其中,梯度计算算子用于计算本梯度计算算子的梯度数据量,例如梯度计算算子A得到其梯度数据量a。梯度聚合算子用于将对应的梯度计算算子得到的梯度数据量,与从前一计算节点获得的相应的对应的梯度数据量做聚合,即做梯度累加,例如梯度聚合算子A将梯度数据量a与前一个或多个计算节点中的对应梯度计算算子A得到的梯度数据量a’做累加得到累加值。权值更新算子A则根据该累加值更新梯度计算算子A对应的权值。
下面以环形链路1中的计算节点N2的操作为例进行说明。如图2所示,该方法可以包括S201-S204,以减少系统内的梯度聚合次数和耗时。S201,计算节点N2确定神经网络的梯度聚合阈值。在一种可能的设计方法中,S201可以包括如下步骤:根据梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚 合耗时之间的第二对应关系,确定梯度聚合阈值。以上任一对应关系是个函数关系,例如梯度数据统计量与梯度计算耗时之间的第一函数关系或梯度数据统计量与梯度聚合耗时之间的第二函数关系。
图4给出了上述第一对应关系和第二对应关系的一个示例。如图4所示,梯度计算曲线用于表示梯度数据统计量(横坐标m)与梯度计算耗时(纵坐标t)之间的对应关系,即第一对应关系,体现了梯度计算耗时对应于梯度数据统计量的函数变化。梯度聚合曲线用于表示梯度数据统计量(横坐标m)与梯度聚合耗时之间的对应关系,即第二对应关系,体现了梯度聚合耗时对应于梯度数据统计量的函数变化。如图4所示,随着梯度数据统计量的增加,梯度计算曲线的变化趋势与梯度聚合曲线的变化趋势是不同的,且两者之间存在一个交点。在该交点处,梯度计算耗时与梯度聚合耗时相同。在本申请中,可以选取该交点对应的梯度数据统计量,作为梯度聚合阈值。因此,可选地,上述梯度聚合阈值所对应的梯度计算耗时与梯度聚合耗时相等。
需要说明的是,图4所示的梯度计算曲线和梯度聚合曲线均为连续曲线。实际应用中,梯度计算曲线中的梯度数据统计量和梯度计算耗时,梯度聚合曲线中的梯度数据统计量和梯度聚合耗时,通常为离散值。因此,可选地,上述根据梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系,确定梯度聚合阈值,可以包括如下步骤:在梯度数据统计量中确定优选梯度数据量,并将优选梯度数据量确定为梯度聚合阈值。其中,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时之间的耗时偏差小于或等于耗时偏差阈值。需要说明的是,上述耗时偏差通常为一个较小值,如不超过梯度计算耗时的5%,或不超过梯度聚合耗时的5%。例如,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时可以相同,此时耗时偏差阈值相当于是0。容易理解,也可以根据上述离散值,采用拟合算法得到的图4所述的连续曲线,然后再选取交点所对应的梯度数据统计量作为梯度聚合阈值。
在实际应用中,图4中的梯度计算曲线和梯度聚合曲线可以通过离线计算方式或在线计算方式获得。因此,在一种可能的设计方法中,上述神经网络的分布式训练方法,还可以包括如下步骤:通过在线计算方式或离线计算方式统计梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系。
其中,上述通过在线计算方式统计梯度数据统计量与梯度计算耗时之间的第一对应关系是指,使用不同类型的训练样本(对应不同的训练样本数据量)执行所述神经网络的梯度计算操作,并统计每个梯度计算算子生成的梯度数据量和梯度计算耗时,进而统计不同类型的训练样本各自对应的该神经网络的梯度数据统计量与梯度计算耗时之间的对应关系。
上述通过离线计算方式统计梯度数据统计量与梯度计算耗时之间的第一对应关系是指,在接收当前训练任务之前,根据不同类型的训练样本(对应不同的训练样本数据量)在执行所述神经网络的训练任务(包括梯度计算操作)的过程中的历史训练记录,统计得到的不同类型的训练样本各自对应的该神经网络的梯度数据统计量与梯度计算耗时之间的对应关系,然后以电子表格、配置文件、可执行脚本、软件程序等方 式预存在公共存储空间或各计算节点本地以备用。
上述通过在线计算方式统计梯度数据统计量与梯度聚合耗时之间的第二对应关系是指,使用不同数据量的模拟梯度数据,如随机数执行神经网络梯度聚合操作,并统计不同数据量的模拟梯度数据各自对应的该神经网络的模拟梯度数据统计量与梯度聚合耗时之间的对应关系。
上述通过离线计算方式统计梯度数据统计量与梯度聚合耗时之间的第二对应关系是指,在接收当前训练任务之前,根据不同类型的训练样本(对应不同的训练样本数据量)在执行所述神经网络的训练任务(包括梯度聚合操作)的过程中的历史训练记录,统计得到的不同梯度数据量的各自对应的该神经网络的梯度数据统计量与梯度聚合耗时之间的对应关系,然后以电子表格、配置文件、可执行脚本、软件程序等方式预存在公共存储空间或各计算节点本地以备用。
需要说明的是,上述离线计算方式也可以在计算节点对应的产品实际上市之前被执行,例如由厂商在调试、测试或开发阶段执行的相关开发测试或预训练操作以得到所述两个对应关系,该两个对应关系被生产或销售所述计算节点对应产品的厂商预先配置在产品内,并在之后的产品使用过程中直接用于执行实际训练。例如,当神经网络接收到训练任务后,通过查找上述电子表格或配置文件确定耗时偏差小于耗时偏差阈值的优选梯度数据量。可选地,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时相等。
此外,对于离线计算方式中确定的神经网络,每个梯度计算算子对应的算法是确定的,即相对于指定样本类型的训练样本,每个梯度计算算子输出的梯度数据量也是确定的。因此,上述两个对应关系中的梯度数据统计量,也可以替换为训练样本的数据类型或训练样本的数据量。相应地,上述梯度聚合阈值,也可以替换为一份训练样本的数据量,或者在上述两个对应关系中增加与每个梯度数据统计量对应的训练样本的数据量或样本类型。例如,上述梯度计算耗时统计值与梯度数据统计量之间的第一对应关系,可以替换为梯度计算耗时统计值与一份训练样本的数据量之间的对应关系,或者梯度计算耗时统计值与一份训练样本的数据类型之间的对应关系,或者在上述第一对应关系中增加一份训练样本的数据量或数据类型。容易理解,对于上述梯度聚合耗时统计值与梯度数据统计量之间的第二对应关系,也可以采用与上述第一对应关系相同的方法做适应性处理,此处不再赘述。
需要说明的是,上述以在线计算方式或离线计算方式统计第一对应关系和第二对应关系可以组合使用。例如,可以采用在线计算方式统计第一对应关系,同时采用离线计算方式统计第二对应关系。又例如,也可以采用离线计算方式统计第一对应关系,同时采用在线计算方式统计第二对应关系。
可以理解,在利用在线或离线方式获得第一对应关系和第二对应关系时,所使用的神经网络可以是之前实施例提到的图3对应的神经网络,即执行分布式训练方法的所述神经网络,也可以是与上述神经网络近似的其他神经网络,该其他神经网络可用于模拟所述图3对应的神经网络,本实施例对此不限定。
可替换地,通过上述方法得到梯度聚合阈值后,也可以将该梯度聚合阈值与配置在所述计算节点的存储器内或作为硬件逻辑配置在计算节点内。因此,计算节点N2 确定该梯度聚合阈值可以包括:从计算节点内获取预配置的梯度聚合阈值,例如从存储器读取该梯度聚合阈值,或者获取以硬件逻辑方式配置在计算节点内的梯度聚合阈值。可以理解,除了采用上述在线或离线方式获取梯度聚合阈值,本领域技术人员可以依照经验设置所述梯度聚合阈值,并将该梯度聚合阈值配置在计算节点内,以便计算节点在执行方法时直接调取该梯度聚合阈值并使用。本操作使得计算节点无需多次重新计算或模拟计算梯度聚合阈值,而是将合适的梯度聚合阈值直接预配置在计算节点中,从而简化计算操作。
S202,计算节点N2根据梯度聚合阈值,将神经网络中的多个梯度计算算子划分为多个梯度聚合集合。其中,每个梯度聚合集合包括至少一个梯度计算算子。图3为本申请实施例提供的优化前的神经网络的结构示意图。图5为本申请实施例提供的优化后的神经网络的结构示意图。下面结合图3和图5,详细说明本申请实施例提供的梯度聚合集合的划分方法。
假定对于指定类型的训练样本,如1份大小为2兆字节的图片,图3所示的神经网络中的梯度计算算子A、B、C、D、E各自对应的梯度数据量依次为a、b、c、d、e,则可以按照如下步骤一至步骤四确定梯度聚合集合:步骤一,以输入层算子为起点,依据神经网络的拓扑结构和数据流向,识别神经网络中的所有路径。例如,如图3所示,以梯度计算算子A为起点,该神经网络存在2条路径:A->D->E和A->B->C。步骤二,将识别出的所有路径的梯度数据量累加和清0。步骤三,按照该神经网络的拓扑结构和数据流向,针对每条路径,从前往后依次累加所遍历的梯度计算算子的梯度数据量。例如,对于路径A->D->E,第1、2、3次累加后的梯度数据量累加和依次为:a、a+d、a+d+e。又例如,对于路径A->B->C,第1、2、3次累加后的梯度数据量累加和依次为:a、a+b、a+b+c。步骤四,当存在至少一条路径对应的梯度数据量累加和等于或首次大于梯度聚合阈值时,将上述至少一条路径中的任意一条路径所遍历的所有梯度计算算子划分为一个梯度聚合集合。例如,如图3和图5所示,对于路径A->D->E,若梯度计算算子A、D的梯度数据量累加和a+d小于梯度聚合阈值,而梯度数据量累加和a+d+e已经等于或大于梯度聚合阈值,则如图5所示,可以将该路径所遍历的梯度计算算子A、D、E划分为梯度聚合集合ADE。也就是说,梯度计算算子A、D、E共享一个梯度聚合算子ADE。在得到梯度聚合集合后,如果该路径上依然存在其他的梯度计算算子,则沿该路径重复进行以上处理,以继续划分梯度聚合集合。每当至少一个梯度计算算子对应的累加的梯度数据量达到梯度聚合阈值时,则将该至少一个梯度计算算子划分为一个梯度聚合集合。
需要说明的是,当同时遍历多条路径时,不同路径已遍历的梯度计算算子可能存在交集,如上述路径A->D->E和A->B->C都包括梯度计算算子A。因此,当至少一条路径对应的梯度数据量累加和已经等于或大于梯度聚合阈值时,除将上述至少一条路径中的任意一条所遍历的梯度计算算子划分为一个梯度聚合集合之外,还需要从其他路径的梯度数据量累加和中减去上述交集部分的梯度计算算子所对应的梯度数据量,并将该交集部分的梯度计算算子从其他路径中删除。即在获取梯度聚合集合时,已经在之前的梯度聚合集合划分中被统计了梯度数据量的计算算子在后续的梯度聚合集合划分中不再计入统计。例如,假定上述路径A->D->E的梯度数据量累加和已经大于或 等于梯度聚合阈值,则可以将梯度计算算子A、D、E划分为梯度聚合集合ADE,并将路径A->B->C中的梯度计算算子A剔除,同时从梯度数据量累加和a+b+c中减去a。又例如,假定路径A->D->E和路径A->B->C的梯度数据量累加和均已经大于或等于梯度聚合阈值,则可以将任意一条路径,如路径A->B->C所遍历的梯度计算算子划分为一个梯度聚合集合ABC,同时对其他路径,如路径A->D->E,作扣除交集中的梯度计算算子A,以及从其梯度数据量累加和a+d+e中减去交集中的梯度计算算子A对应的梯度数据量a。再例如,在将梯度计算算子A、D、E划分为梯度聚合集合ADE后,对于该路径上后续多个计算算子再次做梯度聚合集合划分,则不再计入梯度数据量累加和a+d+e,即重新进行后续多个计算算子的梯度数据量累加和与梯度聚合阈值的比较。
基于以上分析,进一步地,步骤五,当完成一次梯度聚合集合的划分后,根据神经网络中剩余梯度计算算子的拓扑关系,可以再次确定路径每条路径的起始梯度计算算子,并重复上述步骤二至步骤四,直至神经网络中的所有梯度计算算子均被唯一地划分在某一个梯度聚合集合中。例如,如图3和图5所示,在将梯度计算算子A、D、E划分为梯度聚合集合ADE之后,还可以针对新路径B->C或梯度计算算子A、D、E所在路径上的其他梯度计算算子重复上述步骤二至步骤四。例如,倘若路径B->C的第1次的梯度数据量累加和b小于梯度聚合阈值,而路径B->C的第2次的梯度数据量累加和b+c已经等于或大于梯度聚合阈值,则将梯度计算算子B、C划分为梯度聚合集合BC,共享同一个梯度聚合算子BC。
需要说明的是,当一条路径包括输出层算子,且该输出层算子也已被遍历并累加,即该路径包括的所有梯度计算算子均已遍历累加时,即使该路径已遍历的所有梯度计算算子的梯度数据量累加和仍然小于梯度聚合阈值,也需要将该路径已遍历的所有梯度计算算子划分为一个梯度聚合集合。例如,假定路径B->C中的梯度计算算子C为输出层算子,即本路径上的最终算子,即使路径B->C的梯度数据量累加和b+c仍然小于梯度聚合阈值,也需要将梯度聚合算子B、C划分为一个梯度聚合集合。
S203,计算节点N2启动神经网络的训练任务。其中,训练任务用于对神经网络执行多轮训练迭代,每轮训练迭代用于执行多个梯度计算算子分别对应的多个梯度计算。其中,一轮训练迭代是指使用一份训练样本,完成该神经网络的一次梯度计算、梯度聚合和权值更新。在本申请中,上述多个梯度计算中的一个梯度计算,是指一个梯度计算算子使用一份训练样本作梯度计算操作。因此,对于上述梯度聚合集合ADE,在使用1份训练样本完成一轮训练迭代的过程中,需要完成3个梯度计算,分别对应3个梯度计算算子A、D、E。
上述一份训练样本可以是一个训练数据,也可以是一组训练数据。例如,在人脸识别应用中,一份训练样本可以是一张大小为2兆字节(mega bytes)的人脸图片。又例如,在身份识别应用中,上述一份训练样本也可以是一组训练数据,如一份训练样本包括同一个已知身份的人员的1张大小为2兆字节的图片,例如1个指纹图样,1段时长为1分钟的语音或一个虹膜图样中的一个或多个的组合。在本申请中,每个计算节点各使用一份训练样本完成神经网络的一次梯度计算、梯度聚合和权值更新,视为一次训练迭代。
S204,计算节点N2针对任意一个梯度聚合集合的梯度数据执行梯度聚合。其中,梯度数据是执行该任意一个梯度聚合集合中的至少一个梯度计算算子分别对应的至少一个梯度计算所得到的,所述梯度聚合用于聚合上述梯度数据与分布式训练系统中其他计算节点的其他梯度数据,所述其他梯度数据是其他计算节点中与上述任意一个梯度聚合集合相对应的梯度聚合集合的梯度数据。实际应用中,不同梯度聚合集合完成一次梯度计算的时间可能不同。因此,可选地,若任意一个梯度聚合集合中的所有梯度计算算子均完成一次梯度计算,则可以该梯度聚合集合为整体,执行一次梯度聚合操作。结合图1和图5,假定计算节点N1和N2均已完成梯度聚合集合ADE中所有梯度计算算子的梯度数据计算,则无论计算节点N1和N2是否已完成梯度聚合集合BC中所有梯度计算算子的梯度数据计算,计算节点N2均可以启动梯度聚合集合ADE的梯度聚合操作。
针对梯度聚合集合执行一次梯度聚合操作包括针对该梯度聚合集合中每个梯度计算算子分别执行梯度聚合。对任一计算节点的梯度聚合集合ADE,以计算算子A为例,该计算节点的计算算子A的梯度数据将与前一计算节点传来的所对应的梯度数据做累加以实现聚合,前一计算节点传来的所对应的梯度数据属于前续一个或多个计算节点中一个或多个计算算子A得到的累加的梯度数据。计算算子B和C的梯度聚合与此类似,不做赘述。因此,针对梯度聚合集合ADE的梯度聚合操作实际上包括分别针对计算算子A、B和C的梯度聚合。
具体地,每个计算节点均可以针对神经网络中的每个梯度聚合集合设置一个梯度计算完成指示。当上游相邻节点完成一个梯度聚合集合的一次梯度计算时,可以将该梯度聚合集合的梯度计算完成指示发送给下游相邻节点。相应地,下游相邻节点可以在其本身也完成同一个梯度聚合集合的一次梯度计算的情况下,根据该指示,从上游相邻节点获取该梯度聚合集合的梯度数据,并以该梯度聚合集合作为一个整体,完成一次计算节点之间的梯度聚合操作。
容易理解,本申请中,也可以在两个相邻计算节点均完成整个神经网络的一次梯度计算后,再同时启动多个梯度聚合集合的梯度聚合操作。同理,上游相邻节点也可以采用发送神经网络的梯度计算完成指示给下游相邻节点。相应地,下游相邻节点也可以根据该指示,从上游相邻节点获取该梯度聚合集合的梯度数据,并以该梯度聚合集合作为一个整体,完成一次梯度聚合操作。例如,结合图1和图5,假定计算节点N1和N2均已完成整个神经网络的一次梯度计算,并向各自下游相邻节点发送了整个神经网络的梯度计算完成指示,则计算节点N2在接收到计算节点N1发送的完成指示后,从计算节点N1获取梯度聚合集合ADE和BC的梯度数据,并针对梯度聚合集合ADE和BC,分别执行一次梯度聚合操作。
可选地,上述一个梯度聚合集合的梯度计算完成指示,可以包括该梯度聚合集合的梯度数据的存储位置,如起始存储地址和存储空间大小,该存储位置可以位于发送梯度计算完成指示的计算节点的存储器内,也可以位于接收梯度计算完成指示的计算节点的存储器内,或者位于第三方存储器内,本实施例不做限定。同理,上述神经网络的梯度计算完成指示,也可以包括神经网络中所有梯度聚合集合的梯度数据的存储位置,如每个梯度聚合集合的梯度数据的起始存储地址和存储空间大小。
需要说明的是,图2所示的神经网络的分布式训练方法是以图1中的环形链路1中的计算节点N2为例说明的。容易理解,上述方法流程也适用于环形链路1中的其他计算节点,如计算节点N3,此处不再赘述。
容易理解,如图1所示的环形链路1,假定训练任务所使用的训练样本为1000份,则4个计算节点中的每个计算节点可以分别使用250份训练样本执行250次训练迭代。在其中每次训练迭代中,每个计算节点需要针对神经网络的每个梯度聚合集合,如图5中的梯度聚合集合ADE和BC,各执行250次梯度聚合操作。当然,对于每次训练迭代,在所有计算节点计算出的梯度数据完成一次梯度聚合之后,如图中的环形链路1中的最后一个计算节点完成神经网络的一次梯度聚合,还需要将聚合后的梯度数据,按照环形链路的数据传输方向,依次传输至该环形链路上的其他所有计算节点,以便环形链路上的每个计算节点根据聚合后的梯度数据和划分好的梯度聚合集合,执行梯度拆分、新权值计算和神经网络的权值更新等操作,此处不再赘述。在每个计算节点均根据当前一份训练样本完成一轮训练迭代后(包括已更新新权值),可以各自读入下一份训练样本,执行下一轮训练迭代。下一轮训练迭代的具体操作可以参见上述S201-S204,此处不再赘述。
本申请提供的神经网络的分布式训练方法,能够在启动训练任务之前,确定梯度聚合阈值,然后根据该梯度聚合阈值,将神经网络中的多个梯度计算算子划分为多个各包括至少一个梯度计算算子的梯度聚合集合,且当任意一个梯度聚合集合中的所有梯度计算算子均完成一个梯度计算时,则将该任意一个梯度聚合集合作为一个整体,执行一次梯度聚合操作,可以避免在使用多份训练样本执行训练任务的过程中,需要协调者节点针对每份训练样本,多次确定梯度聚合方案的情况,能够有效减少确定梯度聚合方案的次数和耗时,从而提高训练效率。
此外,在本申请中,还可以一个梯度聚合集合为整体,为该梯度聚合集合中的所有梯度计算算子的梯度数据分配连续存储空间,以便在梯度聚合操作中可以直接获取该梯度聚合集合对应的所有梯度数据,以便减少由于同一个梯度聚合集合中不同梯度计算算子的梯度数据的存储位置不同而导致的数据转移次数增加,有利于降低梯度聚合耗时,从而提高训练效率。这是由于在现有技术中,同一个梯度聚合集合的梯度数据需要来自连续的存储空间,因而采用以上分配连续存储空间的操作可以避免对同一梯度聚合集合中不同梯度计算算子不同的梯度数据的做二次复制,不需要额外分配二次复制所需的发送缓存,而是直接利用连续存储空间做操作,能够在不增加梯度数据的传输次数的前提下,减少梯度数据占用的存储空间,以降低计算节点的成本,或者利用节省的存储空间处理更多的梯度数据,以进一步提高训练效率。
以上结合图2-图5详细说明了本申请实施例的神经网络的分布式训练方法。以下结合图6和图7详细说明本申请实施例的分布式训练系统中的装置。图6为本申请实施例提供的一种神经网络的分布式训练所使用的一个装置。该装置可以为如图1所示的计算节点,也可以是设置于图1所示的计算节点内的通信芯片、芯片组或主板,还可以是计算计算节点内的软件程序或软件程序形成的模块,也可以是软件与硬件组合形成的模块,此处不做限定。该装置包括:确定模块601、训练模块602和聚合模块603。其中,确定模块601,用于确定神经网络的梯度聚合阈值,以及根据梯度聚合阈 值,将神经网络中的多个梯度计算算子划分为多个梯度聚合集合。其中,每个梯度聚合集合包括至少一个梯度计算算子。训练模块602,用于启动神经网络的训练任务。其中,训练任务用于对神经网络执行多轮训练迭代,每轮训练迭代用于执行多个梯度计算算子分别对应的多个梯度计算。聚合模块603,用于针对任意一个梯度聚合集合的梯度数据执行梯度聚合。其中,梯度数据是执行该任意一个梯度聚合集合中的至少一个梯度计算算子分别对应的至少一个梯度计算所得到的,所述梯度聚合用于聚合上述梯度数据与分布式训练系统中其他计算节点的其他梯度数据,所述其他梯度数据是其他计算节点中与上述任意一个梯度聚合集合相对应的梯度聚合集合的梯度数据。
在一种可能的设计中,确定模块601,还用于根据梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系,确定梯度聚合阈值。可选地,确定模块601,还用于在梯度数据统计量中确定优选梯度数据量,以及将优选梯度数据量确定为梯度聚合阈值。其中,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时之间的耗时偏差小于耗时偏差阈值。可选地,优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时相等。在一种可能的设计中,上述确定模块603,用于通过在线计算方式或离线计算方式统计梯度数据统计量与梯度计算耗时之间的第一对应关系,以及梯度数据统计量与梯度聚合耗时之间的第二对应关系。
以上模块中的一个或多个可以软件、硬件或二者结合来实现。当以上任一模块以软件实现的时候,所述软件以计算机程序指令的方式存在,并被存储在存储器中,处理器可以用于执行所述程序指令以实现以上方法流程。所述处理器可以包括但不限于以下至少一种:中央处理单元(central processing unit,CPU)、微处理器、数字信号处理器(DSP)、微控制器(microcontroller unit,MCU)、或人工智能处理器等各类运行软件的计算设备,每种计算设备可包括一个或多个用于执行软件指令以进行运算或处理的核。该处理器可以是个单独的半导体芯片,也可以跟其他电路一起集成为一个半导体芯片,例如,可以跟其他电路(如编解码电路、硬件加速电路或各种总线和接口电路)构成一个SoC(片上系统),或者也可以作为一个专用集成电路(ASIC)的内置处理器集成在所述ASIC当中,该集成了处理器的ASIC可以单独封装或者也可以跟其他电路封装在一起。该处理器除了包括用于执行软件指令以进行运算或处理的核外,还可进一步包括必要的硬件加速器,如现场可编程门阵列(field programmable gate array,FPGA)、PLD(可编程逻辑器件)、或者实现专用逻辑运算的逻辑电路。当以上模块以硬件实现的时候,该硬件可以是CPU、微处理器、DSP、MCU、人工智能处理器、ASIC、SoC、FPGA、PLD、专用数字电路、硬件加速器或非集成的分立器件中的任一个或任一组合,其可以运行必要的软件或不依赖于软件以执行以上方法流程。
图7为本申请实施例提供的另一种分布式训练系统中的装置,可以适用于图1所示的神经网络的分布式训练系统。该装置可以是计算节点或其中的部件,如芯片、芯片组或电路板。如图7所示,装置700包括:处理器701、收发器702和存储器703。其中,处理器701与收发器702和存储器703耦合;存储器703,用于存储计算机程序。处理器701,用于执行存储器703中存储的计算机程序,使得装置700执行如图2 所示的神经网络的分布式训练方法中计算节点的功能。示例性地,处理器701与收发器702和存储器703耦合,可以是处理器701通过总线704与收发器702和存储器703连接。
在一种可能的设计中,装置700包括一个或多个处理器,以及一个或多个收发器。所述一个或多个处理器被配置为支持装置700执行上述神经网络的分布式训练方法中计算节点的功能。例如,确定梯度聚合阈值、根据梯度聚合阈值,将神经网络中的多个梯度计算算子划分为多个梯度聚合集合、当任意一个梯度聚合集合中的所有梯度计算算子均完成梯度计算时,针对计算得到的梯度数据,执行该任意一个梯度聚合集合的梯度聚合等。所述收发器用于支持装置700与其他设备通信,实现接收和/或发送功能。例如,接收训练任务,接收上游相邻节点发送的梯度数据,向下游相邻节点发送梯度数据,接收训练样本等。
可选的,装置700还可以包括一个或多个存储器,所述存储器与处理器耦合,用于存储装置700必要的程序指令和/或数据。所述一个或多个存储器可以和处理器集成在一起,也可以与处理器分离设置,本申请对此不作限定。装置700可以为图1所示的计算节点,所述收发器可以是计算节点的收发电路。可选的,所述收发器也可以为计算节点的输入/输出电路或者接口。装置700还可以为设置于图1所示的计算节点中的通信芯片或芯片组。所述收发器可以为该通信芯片的输入/输出电路或者接口。
为了便于进一步描述图7的装置700的工作原理,示例性地,图8为本申请实施例提供的基于张量流框架的训练软硬件的结构示意图,具体描述了图7中装置700的一种实现形式。该软件可以安装于上述计算节点N1-N6中,并可以具体运行于处理器上,用于执行上述方法实施例所述的神经网络的分布式训练方法。如图8所示,该软件包括应用程序接口(application interface,API)、图优化(graph optimizer)模块、图执行(graph executor)模块、算子层、集合通信库、神经网络加速库等模块。其中,API,用于为上层的用户应用程序提供神经网络的访问接口,如接收训练任务、接收识别任务、输出识别结果的指示等。图优化模块,用于对用户通过该应用程序定义的神经网络进行优化调整,如通过在线或离线方式确定梯度聚合阈值,并根据梯度聚合阈值将通过应用程序定义的神经网络中的梯度计算算子划分为多个梯度聚合集合,以生成优化后的神经网络并保存在计算节点的存储器,如上述存储器703中。图执行模块,即训练执行模块,用于针对优化后的神经网络中的任意一个或多个梯度聚合集合,执行梯度计算操作和梯度聚合操作。算子层,用于在图执行模块执行梯度计算操作的过程中,按照优化后的神经网络中不同梯度计算算子的依赖关系,调用计算接口,如调用神经网络加速库计算一个或多个梯度计算算子对应的梯度数据,算子层的具体示例可以参照图3或图5。集合通信库,用于在图执行模块以一个或多个梯度聚合集合对应的梯度数据为整体,执行梯度聚合操作的过程中,获取其他计算节点计算的梯度数据,如可以通过网卡或高速外围设备互连(PCI-E)总线获取上游相邻节点针对该一个或多个梯度聚合集合对应的梯度数据。神经网络加速库,用于提供计算类操作接口,如在图执行模块执行梯度计算操作的过程中,用于调用神经网络计算芯片,如调用上述处理器701实现梯度计算操作。其中,网卡和PCI-E总线可以是图7中收发器702的具体实现方式,神经网络计算芯片则是图7中处理器701的具体实现方式。除了网 卡、PCI-E总线和神经网络计算芯片是硬件外,图8中其他模块以软件实现,并驱动相关硬件工作。图8所示的架构所完成的具体方法流程可参照之前的方法实施例。
本申请提供一种神经网络的分布式训练系统,其包括前述的一个或多个环形链路,每个环形链路包括多个计算节点。本申请提供一种可读存储介质,存储有程序或指令,当程序或指令在计算机上运行时,使得计算机执行上述方法实施例所述的神经网络的分布式训练方法。本申请提供一种计算机程序产品,包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述方法实施例所述的神经网络的分布式训练方法。
应理解,在本申请实施例中的处理器可以是CPU,该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、高带宽存储器(high bandwidth memory,HBM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。
上述实施例,可以全部或部分地通过软件、硬件(如电路)、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在 B这三种情况,其中A、B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b或c中的至少一项(个),可以表示下述项之一:a;b;c;a和b;a和c;b和c;a、b和c,其中a、b、c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上实施例所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (13)

  1. 一种神经网络的分布式训练方法,其特征在于,包括:
    确定神经网络的梯度聚合阈值;
    根据所述梯度聚合阈值,将所述神经网络中的多个梯度计算算子划分为多个梯度聚合集合;其中,每个梯度聚合集合包括至少一个梯度计算算子;
    启动所述神经网络的训练任务;其中,所述训练任务用于对所述神经网络执行多轮训练迭代,每轮训练迭代用于执行所述多个梯度计算算子分别对应的多个梯度计算;
    针对任意一个梯度聚合集合的梯度数据执行梯度聚合;其中,所述梯度数据是执行所述任意一个梯度聚合集合中的至少一个梯度计算算子分别对应的至少一个梯度计算所得到的,所述梯度聚合用于聚合所述梯度数据与分布式训练系统中其他计算节点的其他梯度数据,所述其他梯度数据是所述其他计算节点中与所述任意一个梯度聚合集合相对应的梯度聚合集合的梯度数据。
  2. 根据权利要求1所述的神经网络的分布式训练方法,其特征在于,所述确定神经网络的梯度聚合阈值,包括:
    根据梯度数据统计量与梯度计算耗时之间的第一对应关系,以及所述梯度数据统计量与梯度聚合耗时之间的第二对应关系,确定所述梯度聚合阈值。
  3. 根据权利要求2所述的神经网络的分布式训练方法,其特征在于,所述根据梯度数据统计量与梯度计算耗时之间的第一对应关系,以及所述梯度数据统计量与梯度聚合耗时之间的第二对应关系,确定所述梯度聚合阈值,包括:
    在所述梯度数据统计量中确定优选梯度数据量;其中,所述优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时之间的耗时偏差小于或等于耗时偏差阈值;
    将所述优选梯度数据量确定为所述梯度聚合阈值。
  4. 根据权利要求3所述的神经网络的分布式训练方法,其特征在于,所述优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时相等。
  5. 根据权利要求2至4中任一项所述的神经网络的分布式训练方法,其特征在于,还包括:
    通过在线计算方式或离线计算方式统计所述梯度数据统计量与梯度计算耗时之间的第一对应关系,以及所述梯度数据统计量与梯度聚合耗时之间的第二对应关系。
  6. 一种分布式训练系统中的装置,其特征在于,包括:确定模块、训练模块和聚合模块;其中,
    所述确定模块,用于确定神经网络的梯度聚合阈值;
    所述确定模块,还用于根据所述梯度聚合阈值,将所述神经网络中的多个梯度计算算子划分为多个梯度聚合集合;其中,每个梯度聚合集合包括至少一个梯度计算算子;
    所述训练模块,用于启动所述神经网络的训练任务;其中,所述训练任务用于对所述神经网络执行多轮训练迭代,每轮训练迭代用于执行所述多个梯度计算算子分别对应的多个梯度计算;
    所述聚合模块,用于针对任意一个梯度聚合集合的梯度数据执行梯度聚合,其中,所述梯度数据是执行所述任意一个梯度聚合集合中的至少一个梯度计算算子分别对应 的至少一个梯度计算所得到,所述梯度聚合用于聚合所述梯度数据与所述分布式训练系统中其他计算节点的其他梯度数据,所述其他梯度数据是所述其他计算节点中与所述任意一个梯度聚合集合相对应的梯度聚合集合的梯度数据。
  7. 根据权利要求6所述的装置,其特征在于,
    所述确定模块,还用于根据梯度数据统计量与梯度计算耗时之间的第一对应关系,以及所述梯度数据统计量与梯度聚合耗时之间的第二对应关系,确定所述梯度聚合阈值。
  8. 根据权利要求7所述的装置,其特征在于,
    所述确定模块,还用于在所述梯度数据统计量中确定优选梯度数据量;其中,所述优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时之间的耗时偏差小于耗时偏差阈值;
    所述确定模块,还用于将所述优选梯度数据量确定为所述梯度聚合阈值。
  9. 根据权利要求8所述的装置,其特征在于,所述优选梯度数据量所对应的梯度计算耗时与梯度聚合耗时相等。
  10. 根据权利要求7至9中任一项所述的装置,其特征在于,
    所述确定模块,用于通过在线计算方式或离线计算方式统计所述梯度数据统计量与梯度计算耗时之间的第一对应关系,以及所述梯度数据统计量与梯度聚合耗时之间的第二对应关系。
  11. 一种分布式训练系统中的装置,其特征在于,包括:处理器和存储器;
    所述存储器,用于存储计算机程序;
    所述处理器,用于执行所述存储器中存储的计算机程序,使得所述装置执行如权利要求1至5中任一项所述的神经网络的分布式训练方法。
  12. 一种可读存储介质,其特征在于,存储有程序或指令,当所述程序或指令在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求1至5中任一项所述的神经网络的分布式训练方法。
  13. 一种计算机程序产品,其特征在于,包括计算机程序代码,当所述计算机程序代码在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求1至5中任一项所述的神经网络的分布式训练方法。
PCT/CN2019/074365 2019-02-01 2019-02-01 神经网络的分布式训练方法及装置 WO2020155083A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2019/074365 WO2020155083A1 (zh) 2019-02-01 2019-02-01 神经网络的分布式训练方法及装置
CN201980069560.3A CN112955909A (zh) 2019-02-01 2019-02-01 神经网络的分布式训练方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/074365 WO2020155083A1 (zh) 2019-02-01 2019-02-01 神经网络的分布式训练方法及装置

Publications (1)

Publication Number Publication Date
WO2020155083A1 true WO2020155083A1 (zh) 2020-08-06

Family

ID=71840223

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/074365 WO2020155083A1 (zh) 2019-02-01 2019-02-01 神经网络的分布式训练方法及装置

Country Status (2)

Country Link
CN (1) CN112955909A (zh)
WO (1) WO2020155083A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210081770A1 (en) * 2019-09-17 2021-03-18 GOWN Semiconductor Corporation System architecture based on soc fpga for edge artificial intelligence computing

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114900482B (zh) * 2022-03-28 2023-05-30 中国科学技术大学苏州高等研究院 Ps架构下基于可编程交换机的梯度调度方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180018590A1 (en) * 2016-07-18 2018-01-18 NantOmics, Inc. Distributed Machine Learning Systems, Apparatus, and Methods
CN108122032A (zh) * 2016-11-29 2018-06-05 华为技术有限公司 一种神经网络模型训练方法、装置、芯片和系统
CN108960410A (zh) * 2018-06-13 2018-12-07 华为技术有限公司 基于神经网络的参数更新方法、相关平台及计算机存储介质
US20190026657A1 (en) * 2016-03-26 2019-01-24 Alibaba Group Holding Limited Distributed Cluster Training Method and Apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190026657A1 (en) * 2016-03-26 2019-01-24 Alibaba Group Holding Limited Distributed Cluster Training Method and Apparatus
US20180018590A1 (en) * 2016-07-18 2018-01-18 NantOmics, Inc. Distributed Machine Learning Systems, Apparatus, and Methods
CN108122032A (zh) * 2016-11-29 2018-06-05 华为技术有限公司 一种神经网络模型训练方法、装置、芯片和系统
CN108960410A (zh) * 2018-06-13 2018-12-07 华为技术有限公司 基于神经网络的参数更新方法、相关平台及计算机存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210081770A1 (en) * 2019-09-17 2021-03-18 GOWN Semiconductor Corporation System architecture based on soc fpga for edge artificial intelligence computing
US11544544B2 (en) * 2019-09-17 2023-01-03 Gowin Semiconductor Corporation System architecture based on SoC FPGA for edge artificial intelligence computing

Also Published As

Publication number Publication date
CN112955909A (zh) 2021-06-11

Similar Documents

Publication Publication Date Title
US7415444B2 (en) Determining compliance rates for probabilistic requests
CN105446896B (zh) 映射化简应用的缓存管理方法和装置
US10656934B2 (en) Efficient software testing
WO2020155083A1 (zh) 神经网络的分布式训练方法及装置
CN104598659A (zh) 对数字电路进行仿真的方法和设备
JPWO2006100753A1 (ja) コスト情報管理システム、コスト情報管理方法およびコスト情報管理プログラム
WO2020253038A1 (zh) 一种模型构建方法及装置
US8914755B1 (en) Layout re-decomposition for multiple patterning layouts
US10970447B2 (en) Leverage cycle stealing within optimization flows
CN109299913B (zh) 员工薪资方案生成方法及装置
US9483593B2 (en) Method for decomposing a hardware model and for accelerating formal verification of the hardware model
US9501608B1 (en) Timing analysis of circuits using sub-circuit timing models
US9892227B1 (en) Systems, methods and storage media for clock tree power estimation at register transfer level
TWI770534B (zh) 自動機器學習系統效能調優方法、裝置、設備及介質
US10657211B2 (en) Circuit generation based on zero wire load assertions
TW202219750A (zh) 機器學習模型訓練方法、電子設備、控制器及存儲介質
EP4261734A1 (en) Automatic configuration of pipeline modules in an electronics system
US11811862B1 (en) System and method for management of workload distribution
US20240029016A1 (en) System and method for proactive management of components based on predicted component failures
US11928409B2 (en) Dynamic abstract generation and synthesis flow with area prediction
US11775719B1 (en) Cell instance charge model for delay calculation
US20230334370A1 (en) Model gradient determining methods, apparatuses, devices, and media based on federated learning
EP4293540A1 (en) Model recommendation method and apparatus, and computer device
WO2023071529A1 (zh) 设备数据清洗方法、装置、计算机设备及介质
US11163929B1 (en) Generate clock network using inverting integrated clock gate

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19913362

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19913362

Country of ref document: EP

Kind code of ref document: A1