CN114930350A - 神经网络系统、神经网络的学习方法以及神经网络的学习程序 - Google Patents
神经网络系统、神经网络的学习方法以及神经网络的学习程序 Download PDFInfo
- Publication number
- CN114930350A CN114930350A CN202080092251.0A CN202080092251A CN114930350A CN 114930350 A CN114930350 A CN 114930350A CN 202080092251 A CN202080092251 A CN 202080092251A CN 114930350 A CN114930350 A CN 114930350A
- Authority
- CN
- China
- Prior art keywords
- update
- processors
- neural network
- gradients
- learning
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Feedback Control In General (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提高数据并行型分散学习的吞吐量。神经网络系统具有存储器和访问存储器的多个处理器,多个处理器中的每一个处理器在多次学习中的每一次学习中,基于训练数据的输入和神经网络内的参数执行神经网络的运算来计算神经网络的输出,计算计算出的输出与训练数据的教师数据的差分相对于参数的梯度或者基于梯度的更新量,(1)在梯度或者更新量的累积不小于阈值的第一情况下,执行多个处理器将分别计算出的多个梯度或者更新量的累积发送到多个处理器内的其它的处理器来汇集多个梯度或者更新量的累积,接收汇集后的梯度或者更新量的累积,用汇集后的梯度或者更新量的累积更新参数的第一更新处理,(2)在梯度或者更新量的累积小于阈值的第二情况下,执行多个处理器不进行基于发送的多个梯度或者更新量的累积的汇集,用多个处理器分别计算出的梯度或者更新量更新各自的参数的第二更新处理。
Description
技术领域
本发明涉及神经网络系统、神经网络系统的学习方法以及神经网络系统的学习程序。
背景技术
神经网络例如具有如下结构:将多个输入乘以各自的权重,将该多个乘法值相加后的值输入到输出层的神经元的激活函数,输出激活函数的输出。这样的简单结构的神经网络被称为简单感知器。并且,具有多层上述的简单结构、并将某一层的输出输入到其它层的神经网络被称为多层感知器。另外,深度神经网络如多层感知器那样在输入层与输出层之间具有多个隐藏层。以下,神经网络简称为NN(Neural Network)。
NN通过使用大量的训练数据进行学习,使上述的权重等参数最佳化。训练数据的数量越多,越能够提高模型的精度,但另一方面,存在学习次数增大而学习所需要的运算时间变长的问题。
作为缩短NN的学习所需要的运算时间的方法,提出了分割训练数据,在多个运算节点中并行地执行学习的运算的数据并行型分散学习。例如,在以下的专利文献中记载了数据并行型分散学习。
专利文献1:日本特开2018-120470号公报
专利文献2:日本特开2012-79080号公报
在数据并行型分散学习中,以运算节点的数量分割训练数据,多个运算节点基于各自的训练数据执行学习的运算,针对NN的参数计算NN的输出的误差函数的梯度,计算对梯度乘以学习率后的参数的更新量。然后,运算节点求出各节点的更新量的平均,所有运算节点用更新值的平均更新参数。多个运算节点用各自的训练数据并行地进行学习运算,从而与单个运算节点用单个训练数据进行学习运算相比,能够缩短学习所需要的运算时间。
然而,为了求出多个运算节点各自计算出的更新量的平均,需要将多个运算节点各自计算出的更新量相加等来进行汇集,由多个运算节点共享汇集后的加法值。而且,在汇集时和共享时,在多个运算节点间进行数据的通信处理。
其结果是,数据并行型分散学习通过并行地运算训练数据而缩短学习所需要的运算时间,但由于在每个学习工序进行的运算节点间的通信处理的时间,而抑制运算时间的缩短效果。
发明内容
因此,本实施方式的第一方面的目的在于提供使数据并行型分散学习的吞吐量提高的神经网络系统、神经网络的学习方法以及神经网络的学习程序。
本实施方式的第一方面是神经网络系统,具有:存储器;以及多个处理器,访问上述存储器,上述多个处理器中的每一个处理器在多次学习中的每一次学习中,
基于训练数据的输入和神经网络内的参数执行上述神经网络的运算来计算上述神经网络的输出,并且计算所计算出的上述输出与上述训练数据的教师数据之间的差分相对于上述参数的梯度或者基于上述梯度的更新量,
在上述梯度或者上述更新量的累积不小于阈值的第一情况下,执行如下的第一更新处理:上述多个处理器将分别计算出的多个上述梯度或者上述更新量的累积发送到上述多个处理器内的其它的处理器来汇集多个上述梯度或者更新量的累积,接收汇集后的上述梯度或者更新量的累积,用汇集后的上述梯度或者更新量的累积来更新上述参数,
在上述梯度或者上述更新量的累积小于上述阈值的第二情况下,执行如下的第二更新处理:上述多个处理器不进行基于上述发送的多个上述梯度或者更新量的累积的汇集,用上述多个处理器分别计算出的上述梯度或者更新量来更新各自的参数。
根据第一方面,数据并行型分散学习的吞吐量提高。
附图说明
图1是表示本实施方式中的NN系统的结构例的图。
图2是表示一般的NN中的学习的处理例的图。
图3是表示数据分割型分散学习中的多个运算节点的处理的流程的图。
图4是表示数据分割型分散学习中的多个运算节点的具体处理的流程图。
图5是表示Reduce处理和Allreduce处理的一般的例子的图。
图6是表示利用数据分割型分散学习进行NN的学习的情况下的Reduce处理和Allreduce处理的例子的图。
图7是基于第一实施方式的数据并行型分散学习的流程图。
图8是基于第二实施方式的数据并行型分散学习的流程图。
图9是表示第二实施方式中的学习的更新周期的变化例的图。
具体实施方式
[本实施方式的神经网络系统]
图1是表示本实施方式中的NN系统的结构例的图。NN系统1例如是高性能计算机,具有主处理器(CPU:Central Processing Unit(中央处理单元))10、主存储器12、子处理器模块13、与网络NET的接口18。子处理器模块13例如具有四个运算节点模块,各运算节点模块具有子处理器14和供子处理器访问的存储器16。
并且,NN系统1具有作为大容量储存器的辅助存储装置20-26,在辅助存储装置中存储有NN学习程序20、NN程序22、训练数据24、参数26。NN学习程序20由处理器10、14执行,进行利用了训练数据的学习的处理。另外,NN程序22由处理器10、14执行,执行NN模型的运算。训练数据24是分别具有输入和作为教师数据的标签的多个数据。参数26例如是通过学习而最佳化的NN内的多个权重。
主处理器10执行NN学习程序20,使基于多个训练数据的NN学习的运算分散至多个子处理器14来并行地执行。四个子处理器14是由处理器芯片构成的运算节点,构成为能够经由总线28相互通信。
NN系统1能够经由网络NET,将NN的平台提供给客户终端30、32。NN系统1除了图1的结构以外,也可以是将多个计算机作为运算节点且多个计算机能够相互通信的结构。
[NN的学习]
图2是表示一般的NN中的学习的处理例的图。图2的NN具有输入层IN_L和作为三个隐藏层的神经元层NR_L1~NR_L3。第三神经元层NR_L3兼作输出层。
NN的学习的处理的概要如下所示。处理器10或者14从储存器内的训练数据24读出具有输入数据和标签的一个训练数据,并向输入层IN_L输入输入数据。处理器执行NN学习程序,使用所输入的训练数据执行第一神经元层NR_L1的运算,并将其运算结果输入到第二神经元层NR_L2。并且,处理器使用运算结果执行第二神经元层NR_L2的运算,将其运算结果输入到第三神经元层NR_L3,最后,针对该运算结果执行第三神经元层NR_L3的运算,输出运算结果。三个神经元层NR_L1~NR_L3对输入层IN_L的输入依次执行各自的运算的情况被称为正向传播处理FW。
另一方面,处理器运算训练数据的标签(正确数据)与第三神经元层NR_3的输出的差分E3,用神经元层NR_L3内的参数w对差分E3进行微分来求出梯度ΔE3。处理器根据差分E3计算第二神经元层NR_L2中的差分E2,用神经元层NR_L2内的参数w对差分E2进行微分来求出梯度ΔE2。然后,处理器根据差分E2计算第一神经元层NR_L1中的差分E1,用神经元层NR_L1内的参数w对差分E1进行微分来求出梯度ΔE1。并且,一边将作为输出层的第三神经元层NR_L3的输出与正确值的标签的差分E3向第二、第一神经元层传播,一边在各层NR_L3、NR_L2、NR_L1中依次运算梯度ΔE3、ΔE2、ΔE1的情况被称为反向传播处理BW。
一般而言,在各神经元层的运算处理中,通过向各层的输入和多个参数w进行各自的运算。在监督学习中,在各学习中,利用梯度法,更新多个参数w,以使NN基于训练数据的输入数据推定出的输出与标签(教师数据)的差分成为最小。参数的更新量通过对用参数w对差分E进行微分而求出的梯度ΔE乘以学习率η而计算出。
[数据分割型分散学习]
在NN、特别是深度NN(以下称为DNN)中,训练数据的数量越多,而且使用了训练数据的学习的次数越多,越能够提高NN、DNN的精度。但是,若训练数据的数量庞大,则与此对应,基于NN系统的学习时间变长。因此,为了缩短学习时间,在多个运算节点中分散学习处理来进行的数据并行型分散学习变得有效。
在数据并行型分散学习中,使基于多个训练数据的每一个的学习分散至多个运算节点来执行。即,多个运算节点使用各自的训练数据执行正向传播处理FW和反向传播处理BW,计算多个运算节点各自的NN的差分E的与参数w对应的梯度ΔE。而且,在多个节点中求出各自的梯度ΔE或者对梯度乘以学习率后的参数的更新量Δw,在多个节点中共享。并且,多个节点获取梯度ΔE的平均或者更新量Δw的平均,多个节点用更新量Δw的平均更新各自的NN的参数w。
如上述的学习方法那样,多个节点中的每一个节点使用一个训练数据执行正向传播处理和反向传播处理来求出梯度或者更新量,基于它们的平均更新各节点的参数w的处理是将节点数量的训练数据作为小批量(mini-batch)单位的小批量法所对应的处理。多个节点中的每一个节点在多个进程中使用进程数量的训练数据执行正向传播处理和反向传播处理的情况与将节点数量和各节点的进程数量相乘后的数量的训练数据作为小批量的小批量法对应。
求出上述的梯度或者更新量的平均的处理包括作为并行计算的标准规格的MPI(Message Passing Interface:消息传递接口)所包含的Reduce处理和Allreduce处理。在该Reduce处理和Allreduce处理中,将多个运算节点各自的参数汇集(例如相加),全部的多个运算节点获取汇集后的值。在该处理中,需要多个运算节点间的数据的通信。
图3是表示数据分割型分散学习中的多个运算节点的处理的流程的图。另外,图4是表示数据分割型分散学习中的多个运算节点的具体处理的流程图。在这些例子中,四个运算节点ND_1~ND_4分别使用一个训练数据进行学习,某个运算节点汇集四个运算节点分别计算出的参数w的更新量Δw,各运算节点用汇集后的更新量的平均值更新各自的参数。参照图3、图4,以下说明数据分割型分散学习的概要。
四个运算节点例如与图1的四个子处理器14对应。在NN系统由四个计算机构成的情况下,四个运算节点与四个计算机的处理器对应。
四个运算节点ND_1~ND_4执行NN学习程序,进行以下的处理。首先,四个运算节点ND_1~ND_4分别输入与训练数据的数据D1~D4中的每一个对应的数据(S10)。数据D1~D4被输入到各运算节点的第一神经元层NR_L1。而且,各运算节点执行正向传播处理FW,执行各神经元层的运算(S11)。在图3中,数据D1、D2是手写文字“6”“2”。
接下来,各运算节点计算各自的NN的输出OUT与作为教师数据的标签LB的差分E1~E4。运算节点ND_1、ND_2的输出OUT是“5”“3”,标签LB是“6”“2”。在此处,差分E1~E3是输出OUT与标签LB的差分的平方和。更具体而言,NN是推定手写的数字的模型,作为输出层的第三神经元层分别输出输入数据的数字相当于数字0~9的概率。对于该10个概率的输出,数字0~9的概率的教师数据将标签LB所示的数字的概率设为“1”,将与标签LB不同的数字的概率设为“0”。而且,运算节点计算各个概率的差分的平方和作为差分E。
而且,各运算节点将各自的差分E传播到各神经元层(S13),通过各神经元层的参数w对所传播的差分E进行微分来运算梯度ΔE。并且,各运算节点对梯度ΔE乘以学习率η来计算参数w的更新量Δw(S14)。
在此处,四个运算节点ND_1~ND_4将各自的更新量Δw经由运算节点间的总线28在运算节点间通信,某个运算节点进行汇集所有节点的参数w1~w4的更新量Δw1~Δw4的reduce处理。汇集例如是相加(或者最大值的提取)。而且,四个运算节点进行经由总线28接收汇集后的加法值Δw_ad,并在所有运算节点中共享的Allreduce处理(S15)。
接下来,各运算节点将汇集后的加法值Δw_ad除以运算节点数量4来计算更新量Δw的平均值Δw_ad/4,与现有的参数w1~w4相加来更新各自的参数(S16)。由此,基于小批量的一次学习结束。若学习结束,则各运算节点的NN的参数被更新为相同的值。而且,各运算节点返回到处理S10,执行下一个学习。
接下来,对Reduce处理和Allreduce处理进行说明。
图5是表示Reduce处理和Allreduce处理的一般的例子的图。在图5的例子中,四个运算节点ND_1~ND_4分别具有值y1~y4。在Reduce处理中,各运算节点将各自的值y1~y4经由总线28通信,例如,一个运算节点ND_1接收全部的值y1~y4,用规定的函数f运算四个值来计算汇集值f(y1,y2,y3,y4)。
接下来,在Allreduce处理中,运算节点ND_1将汇集值f(y1,y2,y3,y4)经由总线28分别发送到其它的运算节点ND_2~ND_4,所有运算节点共享汇集值。
在图5的例子中,运算节点ND_2~ND_4将各自的值y2~y4发送到运算节点ND_1。其中,也可以运算节点ND_4向运算节点ND_3发送值y4,运算节点ND_3计算加法值y3+y4,进而,运算节点ND_2向运算节点ND_1发送值y2,运算节点ND_1计算加法值y1+y2,然后,运算节点ND_3将加法值y3+y4发送到运算节点ND_1,运算节点ND_1计算汇集值f(y1,y2,y3,y4)=y1+y2+y3+y4。
另外,作为其它的处理方法,在四个运算节点ND_1~ND_4分别具有排列数据(w1,x1,y1,z1)、(w2,x2,y2,z2)、(w3,x3,y3,z3)、(w4,x4,y4,z4)的情况下,各运算节点将数据w发送到运算节点ND_1,将数据x发送到运算节点ND_2,将数据y发送到运算节点ND_3,进而,将数据z发送到运算节点ND_4。然后,运算节点ND_1计算汇集值f(w1,w2,w3,w4)=w1+w2+w3+w4,运算节点ND_2计算汇集值f(x1,x2,x3,x4)=x1+x2+x3+x4,运算节点ND_3计算汇集值f(y1,y2,y3,y4)=y1+y2+y3+y4,运算节点ND_4计算汇集值f(z1,z2,z3,z4)=z1+z2+z3+z4。
以上是Reduce处理。接下来,各运算节点将分别计算出的汇集值经由总线28分别发送到其它的运算节点,所有运算节点获取并共享汇集值。该处理是Allreduce处理。
图6是表示利用数据分割型分散学习进行NN的学习的情况下的Reduce处理和Allreduce处理的例子的图。如图4中说明那样,若在各运算节点计算出各自的参数w1~w4的更新量Δw1~Δw4的阶段,各运算节点进行Reduce处理,则所有运算节点的更新量Δw1~Δw4例如被发送到一个运算节点ND_1,运算节点ND_1通过加法函数f计算更新量Δw1~Δw4的加法值Δw_ad作为汇集值。而且,运算节点ND_1将加法值Δw_ad发送到其它的运算节点ND_2~ND_4,所有运算节点获取并共享加法值。
接下来,在数据分割型分散学习中,各运算节点ND_1~ND_4分别在平均化处理Average中,将加法值Δw_ad除以运算节点数量4来计算更新量Δw的平均值Δw_av。而且,各运算节点ND_1~ND_4分别在更新处理Update中,将更新量的平均值Δw_av与现有的参数w1~w4相加。
在小批量法中,通过上述的数据并行型分散学习,将小批量的多个训练数据分散到多个运算节点,多个运算节点并行地进行运算直到参数的梯度ΔE或者更新量Δw为止,利用由多个训练数据分别计算出的多个更新量Δw1~Δw4的平均值来更新各运算节点的参数w。因此,即使由某个训练数据计算出的更新量Δw是较大背离了由其它的训练数据计算出的更新量的例外的值,由于用多个更新量的平均值更新所有运算节点的NN的参数w,因此也能够抑制由例外的更新量引起的对学习的负面影响。
另一方面,在各学习中执行包含运算节点间的通信处理的Reduce处理和Allreduce处理,从而产生由通信处理引起的学习的处理时间变长的问题。
[基于第一实施方式的数据并行型分散学习]
图7是基于第一实施方式的数据并行型分散学习的流程图。在图7中示出了图4的流程图中的运算节点ND_1的学习处理的流程图,省略了剩余的运算节点ND_2~ND_4的学习处理的流程图。在本分散学习中,图7所示的运算节点ND_1的学习处理的流程图S10~S16、S16A、S20~S23在剩余的运算节点ND_2~ND_4中也被同样地执行。而且,四个运算节点的学习处理的流程图通过将图4的各运算节点的学习处理的流程图置换为图7的运算节点ND_1的学习处理的流程图而得到。
在此也作为前提,四个运算节点分别使用一个训练数据进行学习,各运算节点使各个NN内的一个参数w最佳化。一般,NN具有多个参数w,首先,以NN的一个参数w的例子进行说明,然后,说明对NN所具有的多个参数w如何进行处理。
在本分散学习中,对于多个运算节点分别计算出的梯度ΔE或者更新量Δw,在所有学习中不执行Reduce处理和Allreduce处理。也就是说,处理器在多个运算节点计算出的梯度或者更新量小于阈值的情况下,不执行Reduce处理和Allreduce处理,使用各运算节点计算出的梯度或者更新量来更新各自的参数w。另外,处理器在多个运算节点计算出的梯度或者更新量不小于阈值的情况下,执行Reduce处理和Allreduce处理,使用汇集后的梯度或者更新量的平均值来更新各自的参数w。
由此,本实施方式的NN系统抑制基于小批量法的例外的值的梯度、更新量引起的弊病,并且有时跳过Reduce处理和Allreduce处理的通信处理,缩短所有学习的处理时间。
其中,在不执行Reduce处理和Allreduce处理的学习被连续进行后,进行Reduce处理和Allreduce处理,用更新量的平均值更新多个运算节点的NN的参数w时,需要将所有运算节点的参数w复位到相同的值。因此,各运算节点分别累积不执行Reduce处理以及Allreduce处理的学习中的梯度或者更新量,在进行Reduce处理以及Allreduce处理时,用该更新量的累积值更新各运算节点的参数。因此,各运算节点在学习时存储计算出的梯度E或者更新量Δw的累积Er或者Δwr。
在以下的说明中,梯度或者更新量简化为更新量Δw。其中,也可以代替更新量Δw,对梯度ΔE进行Reduce处理和Allreduce处理。
根据图7的流程图,对各运算节点的学习处理进行说明。虽然在图7中未示出,但在刚开始学习之后,运算节点ND_1~ND_4将各自的累积更新量Δwr1~Δwr4复位为0。接下来,运算节点ND_1~ND_4输入训练数据的输入数据,执行正向传播处理、差分E1的计算、反向传播处理、以及参数w的更新量Δw1~Δw4的计算(S10~S14)。然后,各运算节点分别将计算出的更新量Δw1~Δw4与累积更新量Δwr1~wr4相加(S20)。在刚开始学习之后,所有运算节点的累积更新量全部为0,因此累积更新量Δwr1~wr4与初次学习中的更新量Δw1~Δw4相等。
接下来,各运算节点判定各自的累积更新量Δwr1~wr4是否小于阈值TH(S21)。在所有运算节点中各自的累积更新量Δwr1~wr4小于阈值TH的情况下(S21的是),各运算节点将各自的更新量Δw1~Δw4与各自的参数w1~w4相加来更新参数(S16A)。其结果是,各运算节点用分别计算出的更新量Δw1~Δw4更新各自的参数w1~w4。
另一方面,在所有运算节点中各自的累积更新量Δwr1~wr4不小于阈值TH的情况下(S21的否),运算节点ND_1~ND_4收发分别计算出的累积更新量Δwr1~Δwr4,将所有运算节点的累积更新量Δwr1~Δwr4相加等来汇集(Reduce处理),所有节点共享该汇集后的累积更新量Δwr_ad(Allreduce处理)(S15)。具体而言,运算节点ND_1~ND_4中的一个运算节点、例如运算节点ND_1从其它的运算节点ND_2~ND_4接收累积更新量Δwr2~Δwr4,并进行相加,将该相加后的汇集累积更新量Δwr_ad发送到其它的运算节点ND_2~ND_4。上述判定S21的否的情况是指所有累积更新量Δwr1~wr4不小于阈值TH,至少一个累积更新量不小于阈值TH。上述判定S21的是的情况是指所有累积更新量Δwr1~wr4小于阈值TH。
而且,各运算节点ND_1~ND_4将汇集累积更新量Δwr_ad除以运算节点的数“4”求出各累积更新量的平均值Δwr_ad/4,将累积更新量的平均值Δwr_ad/4与开始累积各自的参数w1~w4的更新量之前的参数w1~w4的值相加,将各参数更新为相同的值(S16)。与此同时,各运算节点将各自的累积更新量Δwr1~Δwr4复位为0(S22)。
各运算节点在整体的学习次数小于N的期间,重复上述的学习处理(S23)。
根据上述的学习处理,在各运算节点ND_1~ND_4计算出的参数的累积更新量Δwr1~Δwr4全部小于阈值的情况下(S21的是),运算节点ND_1~ND_4不进行Reduce处理和Allreduce处理,因此消除两个处理的运算节点间的通信所需要的时间,能够缩短所有学习所需要的时间。而且,各运算节点不进行Reduce处理和Allreduce处理,用各自的更新量Δw1~Δw4更新各自的参数w1~w4连续的情况下,各运算节点计算累积更新量Δwr1~Δwr4并记录。
由此,在各运算节点ND_1~ND_4计算出的参数的累积更新量Δwr1~Δwr4不是全部小于阈值的情况下(S21的否),各运算节点汇集各自的累积更新量Δwr1~Δwr4,共享汇集后的累积更新量Δwr_add,用其平均值Δwr_add/4更新累积前的参数w1~w4。在所有运算节点的累积更新量小于阈值的情况下,各运算节点中的累积更新量的偏差比较小,即使省略Reduce处理和Allreduce处理,各运算节点间的参数的值也不会较大地背离。但是,在所有运算节点的累积更新量不小于阈值、至少一个累积更新量为阈值以上的情况下,参数的值的背离变大,因此进行Reduce处理和Allreduce处理,汇集各运算节点的累积更新量,用其平均值更新所有运算节点的累积前的参数并复位。
在上述的学习中,作为前提,各运算节点使各自的NN内的一个参数w最佳化。该情况下,将各运算节点的参数w1~w4的累积更新量Δwr1~Δwr4分别与阈值比较。但是,参数的更新量Δw1~Δw4存在正的情况和负的情况,因此优选地,将参数的累积更新量Δwr1~Δwr4的绝对值与某个阈值TH(TH为正)进行比较。
接下来,说明NN所具有的多个参数w的最佳化如何进行处理。作为第一方法,在判定工序S21中,各运算节点将各自的NN的多个参数的累积更新量分别与阈值TH比较,判断各自的NN的全部的参数的累积更新量是否小于阈值TH,并且判断是否在所有运算节点中全部小于阈值TH。
作为第二方法,各运算节点将各自的NN的多个参数分组为NN内的各层的多个参数w1、w2、...wn,在判定工序S21中,判断各层的多个参数w1、w2、...wn的累积更新量的绝对值的最大值是否小于阈值TH。而且,各运算节点判断各自的NN的多个层的判定S21是否全部小于阈值TH,并且判断是否在所有运算节点中全部小于阈值TH。仅将最大值与阈值TH进行比较,因此判定工序S21的吞吐量提高。
作为第三方法,各运算节点将各自的NN的多个参数分组为NN内的各层的多个参数w1、w2、...wn,在判定工序S21中,判断各层的多个参数w1、w2、...wn的累积更新量的绝对值的Lp范数(p为正的整数)是否小于阈值TH。而且,各运算节点判断各自的NN的多个层的判断是否全部小于阈值TH,并且判断是否在所有运算节点中全部小于阈值TH。
例如,如以下的算式所示,L1范数是多个参数w1、w2、...wn的累积更新量的绝对值的和,L2范数是多个参数w1、w2、...wn的累积更新量的绝对值的平方和的平方根。Lp范数是多个参数w1、w2、...wn的累积更新量的绝对值的p次方和的p次方根。
[式1]
Δwr=(Δwr1,Δwr2,…,Δwrn)
Δwr的L1范数=|Δwr1|+|Δwr2|+…+|Δwrn|
在第三方法中,将各层的多个参数各自的累积更新量转换为其L1范数、L2范数后的值与阈值进行比较,因此判定工序S21的吞吐量提高。
[基于第二实施方式的数据并行型分散学习]
图8是基于第二实施方式的数据并行型分散学习的流程图。在图8中示出了图4的流程图中的运算节点ND_1的学习处理的流程图,省略了剩余的运算节点ND_2~ND_4的学习处理的流程图。在本分散学习中,图8所示的运算节点ND_1的学习处理的流程图S30、S10~S16、S20~S23、S31~S33在剩余的运算节点ND_2~ND_4中也被同样地执行。
一般,在刚开始学习工序之后,参数的梯度ΔE大,更新量Δw1~Δw4也大。另一方面,在学习工序临近结束中,参数的梯度ΔE小,更新量Δw1~Δw4也小。因此,在第一实施方式的数据并行型分散学习中,在刚开始学习工序之后,在判定工序S21中,每次成为累积更新量不小于阈值TH的判断,存在每次进行Reduce处理和Allreduce处理的情况。另一方面,随着接近学习工序的结束,在判定工序S21中,每次成为累积更新量小于阈值TH的判断,存在完全不进行Reduce处理和Allreduce处理的情况。
为了缓和上述那样的问题点,在第二实施方式中,进行以下的处理。即,
(1)在全部N次学习中从开始起到D-1次(D为正的整数),各运算节点不管与阈值TH的比较判定如何,都不进行Reduce处理以及Allreduce处理,而以各自的更新量更新各自的NN的参数。
(2)然后,在从D次到U-1次(U为大于D的正的整数)的期间,在如第一实施方式那样累积更新量Δwr1~Δwr4小于阈值TH的情况下,不进行Reduce处理以及Allreduce处理,在不小于阈值TH的情况下,进行Reduce处理以及Allreduce处理,用累积更新量的平均值更新各自的NN参数。
(3)进而,如果直到成为U次,累积更新量Δwr1~Δwr4小于阈值TH因此连续不进行Reduce处理以及Allreduce处理,则在第U次,各运算节点不管与阈值TH的比较判定如何,都进行Reduce处理以及Allreduce处理,用累积更新量的平均值更新各自的NN参数。
(4)直到达到所有学习N为止,各运算节点重复上述的(1)~(3)的参数的更新周期。
根据上述的处理,第一,在刚开始学习工序之后,在(1)~(3)的更新周期内的最初的D-1次,各运算节点不进行Reduce处理以及Allreduce处理,因此能够减少通信次数。另外,在更新周期内的D次以上,基于参数的累积更新量与阈值TH的比较判定,累积更新量越小,连续不进行Reduce处理以及Allreduce处理的次数越多,相反,累积更新量越大,连续不进行Reduce处理以及Allreduce处理的次数越少。
另一方面,第二,在接近学习工序的结束时,在(1)~(3)的更新周期内,若连续不进行Reduce处理以及Allreduce处理的学习次数达到U次,则各运算节点在某种意义上,强制地进行Reduce处理和Allreduce处理,所有运算节点的所有NN对应的参数以相同的累积更新量的平均值被更新为相同的值。
对图8的流程图进行具体地说明。在图8中也作为前提,四个运算节点分别使用一个训练数据进行学习,各运算节点使各自的NN内的一个参数w最佳化。
而且,在第二实施方式中,所有运算节点对共用的学习次数计数器值i和连续非通信计数器值j进行计数。另外,与第一实施方式同样,各运算节点在每次学习时将计算出的各参数的更新量累积相加并存储累积更新量Δwr1~Δwr4。而且,各运算节点除了图7的流程图的处理之外,还执行处理S30、S31-S32、S33。主要对这些处理进行说明。
作为初始化处理,各运算节点分别将学习次数计数器值i和连续非通信计数器值j复位为“0”,将各运算节点的参数的累积更新量Δwr1~Δwr4复位为“0”。接下来,各运算节点进行训练数据的数据输入、正向传播处理、反向传播处理并计算各自的参数的更新量Δw1~Δwr4(S10-S14)。然后,各运算节点将计数器值i、j分别加1,将计算出的更新量Δw1~Δwr4与参数的累积更新量Δwr1~Δwr4分别相加,更新累积更新量(S31)。
(1)在连续非通信计数器值j小于第一基准次数D的情况下(S32的是),各运算节点以各自的更新量Δw1~Δwr4更新各自的参数w1~w4(S16A)。各运算节点直到连续非通信计数器值j不小于第一基准次数D为止,重复上述处理S10-S14、S31-S32以及S16A。在第一基准次数D例如为D=2的情况下,在(1)~(3)的更新周期内的第一次的学习中,运算节点一定不进行Reduce处理和Allreduce处理。
(2)若连续非通信计数器值j不小于第一基准次数D(S32的否),则各运算节点判定所有运算节点中参数的累积更新量Δwr1~Δwr4是否全部小于阈值TH。
在小于阈值TH的情况下(S21的是),如果连续非通信计数器值j小于第二基准次数U(>D)(S33的是),则各运算节点以各自的更新量Δw1~Δwr4更新各自的参数w1~w4(S16A)。
在不小于阈值TH的情况下(S21的否),运算节点ND_1~ND_4执行Reduce处理和Allreduce处理(S15),以累积更新量的平均值Δwr_add/4更新各自的参数w1-w4(S16)。然后,运算节点分别将连续非通信计数器值j复位为0,将累积更新量Δwr1~Δwr4复位为0(S22A)。该情况下,复位(1)~(3)的更新周期。
(3)在小于阈值TH的情况下(S21的是),若连续非通信计数器值j不小于第二基准次数U(>D)(S33的否),则各运算节点执行Reduce处理和Allreduce处理(S15),以累积更新量的平均值更新参数(S16),将连续非通信计数器值j和累积更新量复位为0(S22A)。至此复位更新周期。
对于更新各运算节点的NN的多个参数w的情况,与第一实施方式同样,在判定工序S21中,运算节点也可以进行各参数w的累积更新量的绝对值是否小于阈值TH、各层的多个参数的累积更新量的绝对值的最大值是否小于阈值TH、各层的多个参数的累积更新量的绝对值的L1范数、L2范数是否小于阈值TH等的判定。
图9是表示第二实施方式中的学习的更新周期的变化例的图。图9的(1)是不进行本实施方式的更新周期的情况下的变化例。一次的学习包括对训练数据的数据的正向传播处理FW、反向传播处理BW、Reduce处理及Allreduce处理CM、参数的更新处理UP。图9的(1)中的更新处理UP1是用所有运算节点的NN的参数的更新量的平均值Δw_ad/4来更新参数的处理。在图9的(1)的情况下,各运算节点在所有学习中,执行Reduce处理及Allreduce处理CM和参数的更新处理UP1。
图9的(2)是第二实施方式中的学习的更新周期的变化例。图9的(2)的第一次~第四次的学习相当于上述的更新周期内的学习。
图9的(2)中的更新处理UP2是各运算节点用各自的NN的参数的更新量Δw来更新各自的参数的处理(S16A)。
图9的(2)中的更新处理UP3是各运算节点用各自的NN的参数的累积更新量Δwr的平均值Δwr_ad/4来更新各自的参数的处理(S16)。
在图9的(2)的例子中,是D=2的例子,各运算节点在第一次的学习中,不执行Reduce处理及Allreduce处理CM,执行更新处理UP2。在第二次的学习中,成为j=D,各运算节点执行Reduce处理及Allreduce处理CM,执行更新处理UP3。第三次的学习和第四次的学习分别与第一次的学习和第二次的学习相同。
根据第二实施方式,运算节点不会在全部的学习中执行Reduce处理及Allreduce处理CM,因此不执行相同处理,从而能够抑制学习整体的运算时间。
在上述的实施方式中,通过Reduce处理和Allreduce处理汇集参数的累积更新量Δwr,用其平均值Δwr_ad/4更新各NN的参数。但是,也可以代替参数的更新量,对差分的梯度ΔE进行Reduce处理和Allreduce处理。这是因为,参数的更新量Δw通过对差分的梯度ΔE乘以学习率η而计算出,因此,累积更新量Δwr能够对累积后的梯度乘以学习率来计算。该情况下,各运算节点在不进行Reduce处理和Allreduce处理的情况下,更新差分的梯度ΔE的累积,在进行Reduce处理和Allreduce处理的情况下,汇集各运算节点中的累积梯度ΔEr,所有运算节点共享累积梯度ΔEr的汇集值(加法值),用对累积梯度ΔEr的汇集值(加法值)的平均值ΔEr_ad/4乘以学习率η而得到的累积更新量的平均值Δwr_ad/4更新累积前的参数w。
在上述的实施方式中,说明了在各学习中,各运算节点对一个训练数据执行NN的运算的例子。但是,也可以在各学习中,各运算节点对多个训练数据以多个进程执行NN的运算。该情况下,一批量的训练数据的数量成为对各运算节点的多个训练数据乘以运算节点的数量(在上述例子中4)而得到的数量。然后,各运算节点在多个进程中使用分别计算出的多个差分E的梯度ΔE或者参数的更新量Δw的平均值,更新各运算节点的NN的参数。另外,在Reduce处理和Allreduce处理中,多个运算节点汇集各个梯度或者更新量的累积,所有运算节点共享汇集后的值的平均,用汇集后的值的平均更新各自的NN的参数。
上述的实施方式能够应用于简单感知器、多层感知器等的NN、层次深的NN即深度NN等的学习。深度NN例如包括:具有多个卷积层、牵引层以及全结合层的褶积NN、输入层和输出层具有相同的尺寸的节点的自动编码器NN、复现NN等。
附图标记说明:1…神经网络系统、NN系统;10…主处理器;13…子处理器模块;14…子处理器、运算节点;20…神经网络学习程序;22…神经网络程序;24…训练数据;26…参数w;ND_1~ND_4…运算节点;w1~w4…参数;Δw1~Δw4…参数的更新量;Δwr1~Δwr4…累积更新量;Δwr_add…累积更新量的汇集值;Δwr_add/4…累积更新量的平均值。
Claims (10)
1.一种神经网络系统,具有:
存储器;以及
多个处理器,访问所述存储器,
所述多个处理器中的每一个处理器在多次学习中的每一次学习中,
基于训练数据的输入和神经网络内的参数执行所述神经网络的运算来计算所述神经网络的输出,并且计算所计算出的所述输出与所述训练数据的教师数据之间的差分相对于所述参数的梯度或者基于所述梯度的更新量,
在所述梯度或者所述更新量的累积不小于阈值的第一情况下,执行如下的第一更新处理:所述多个处理器将分别计算出的多个所述梯度或者所述更新量的累积发送到所述多个处理器内的其它的处理器来汇集多个所述梯度或者更新量的累积,接收汇集后的所述梯度或者更新量的累积,用汇集后的所述梯度或者更新量的累积来更新所述参数,
在所述梯度或者所述更新量的累积小于所述阈值的第二情况下,执行如下的第二更新处理:所述多个处理器不进行基于所述发送的多个所述梯度或者更新量的累积的汇集,用所述多个处理器分别计算出的所述梯度或者更新量来更新各自的参数。
2.根据权利要求1所述的神经网络系统,其中,
所述多个处理器中的每一个处理器还在所述第一情况下,在连续进行了所述第二更新处理的学习次数小于第一基准次数的情况下,执行所述第二更新处理。
3.根据权利要求2所述的神经网络系统,其中,
所述多个处理器中的每一个处理器还在所述第二情况下,在所述学习次数不小于比所述第一基准次数多的第二基准次数的情况下,执行所述第一更新处理。
4.根据权利要求3所述的神经网络系统,其中,
所述多个处理器中的每一个处理器还在所述学习次数不小于所述第一基准次数且小于所述第二基准次数的情况下,在所述第一情况下执行所述第一更新处理,在所述第二情况下执行所述第二更新处理。
5.根据权利要求4所述的神经网络系统,其中,
所述多个处理器中的每一个处理器还在所述第二情况下,在所述学习次数不小于所述第二基准次数的情况下,执行所述第一更新处理。
6.根据权利要求1所述的神经网络系统,其中,
在所述第一情况下,所述多个处理器分别计算出的多个梯度或者更新量的累积中的至少一个梯度或者更新量的累积不小于所述阈值。
7.根据权利要求1所述的神经网络系统,其中,
多个所述梯度或者更新量的汇集是将多个所述梯度或者更新量的累积相加和求出多个所述梯度或者更新量的累积的最大值中的任一个。
8.根据权利要求1所述的神经网络系统,其中,
汇集后的所述梯度或者更新量的累积是累积所述第二更新处理的次数份的多个所述梯度或者更新量,并将多个所述梯度或者更新量的累积平均化后的值。
9.一种神经网络的学习方法,其中,
多个处理器中的每一个处理器在多次学习中的每一次学习中,
基于训练数据的输入和神经网络内的参数执行所述神经网络的运算来计算所述神经网络的输出,并且计算所计算出的所述输出与所述训练数据的教师数据之间的差分相对于所述参数的梯度或者基于所述梯度的更新量,
在所述梯度或者所述更新量的累积不小于阈值的第一情况下,如下的第一更新处理:所述多个处理器执行将分别计算出的多个所述梯度或者所述更新量的累积发送到所述多个处理器内的其它的处理器来汇集多个所述梯度或者更新量的累积,接收汇集后的所述梯度或者更新量的累积,用汇集后的所述梯度或者更新量的累积来更新所述参数,
在所述梯度或者所述更新量的累积小于所述阈值的第二情况下,执行如下的第二更新处理:所述多个处理器不进行基于所述发送的多个所述梯度或者更新量的累积的汇集,用所述多个处理器分别计算出的所述梯度或者更新量来更新各自的参数。
10.一种神经网络的学习程序,在使多个处理器执行神经网络的学习的所述神经网络的学习程序中,所述学习为:
多个处理器中的每一个处理器在多次学习中的每一次学习中,
基于训练数据的输入和神经网络内的参数执行所述神经网络的运算来计算所述神经网络的输出,并且计算所计算出的所述输出与所述训练数据的教师数据之间的差分相对于所述参数的梯度或者基于所述梯度的更新量,
在所述梯度或者所述更新量的累积不小于阈值的第一情况下,执行如下的第一更新处理:所述多个处理器将分别计算出的多个所述梯度或者所述更新量的累积发送到所述多个处理器内的其它的处理器来汇集多个所述梯度或者更新量的累积,接收汇集后的所述梯度或者更新量的累积,用汇集后的所述梯度或者更新量的累积来更新所述参数,
在所述梯度或者所述更新量的累积小于所述阈值的第二情况下,执行如下的第二更新处理:所述多个处理器不进行基于所述发送的多个所述梯度或者更新量的累积的汇集,用所述多个处理器分别计算出的所述梯度或者更新量来更新各自的参数。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2020/000644 WO2021140643A1 (ja) | 2020-01-10 | 2020-01-10 | ニューラルネットワークシステム、ニューラルネットワークの学習方法及びニューラルネットワークの学習プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114930350A true CN114930350A (zh) | 2022-08-19 |
Family
ID=76787793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080092251.0A Pending CN114930350A (zh) | 2020-01-10 | 2020-01-10 | 神经网络系统、神经网络的学习方法以及神经网络的学习程序 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220300790A1 (zh) |
EP (1) | EP4089586A4 (zh) |
JP (1) | JP7453563B2 (zh) |
CN (1) | CN114930350A (zh) |
WO (1) | WO2021140643A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012079080A (ja) | 2010-10-01 | 2012-04-19 | Nippon Hoso Kyokai <Nhk> | パラメタ学習装置およびそのプログラム |
JP6880774B2 (ja) | 2017-01-26 | 2021-06-02 | 日本電気株式会社 | 通信システム、分散計算システム、ノード、情報共有方法及びプログラム |
JP6877393B2 (ja) * | 2017-12-18 | 2021-05-26 | 株式会社東芝 | システム、プログラム及び方法 |
JP2019212111A (ja) * | 2018-06-06 | 2019-12-12 | 株式会社Preferred Networks | 分散学習方法及び分散学習装置 |
KR20200004700A (ko) * | 2018-07-04 | 2020-01-14 | 삼성전자주식회사 | 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치 |
-
2020
- 2020-01-10 JP JP2021569687A patent/JP7453563B2/ja active Active
- 2020-01-10 WO PCT/JP2020/000644 patent/WO2021140643A1/ja unknown
- 2020-01-10 CN CN202080092251.0A patent/CN114930350A/zh active Pending
- 2020-01-10 EP EP20912017.9A patent/EP4089586A4/en active Pending
-
2022
- 2022-06-06 US US17/832,733 patent/US20220300790A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JPWO2021140643A1 (zh) | 2021-07-15 |
WO2021140643A1 (ja) | 2021-07-15 |
US20220300790A1 (en) | 2022-09-22 |
EP4089586A1 (en) | 2022-11-16 |
JP7453563B2 (ja) | 2024-03-21 |
EP4089586A4 (en) | 2023-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tsianos et al. | Communication/computation tradeoffs in consensus-based distributed optimization | |
Motamed | A multi-fidelity neural network surrogate sampling method for uncertainty quantification | |
Li et al. | Consensus analysis of multiagent systems with second-order nonlinear dynamics and general directed topology: An event-triggered scheme | |
CA3135529A1 (en) | Adaptive error correction in quantum computing | |
CN111025914A (zh) | 基于通信受限的神经网络系统远程状态估计方法及装置 | |
CN109032630B (zh) | 一种参数服务器中全局参数的更新方法 | |
CN104834216A (zh) | 一种基于bp神经网络调节pi控制器参数的电路及方法 | |
CN109284826A (zh) | 神经网络处理方法、装置、设备及计算机可读存储介质 | |
Sun et al. | Consensus control of cooperation‐competition multi‐agent systems with round‐robin protocols: A set‐membership approach | |
CN116566805B (zh) | 一种面向体系容灾抗毁的节点跨域调度方法、装置 | |
Zheng et al. | Distributed optimization with hybrid linear constraints for multi‐agent networks | |
CN114930350A (zh) | 神经网络系统、神经网络的学习方法以及神经网络的学习程序 | |
Xiao et al. | Asynchronous output feedback control for Markov jump systems under dynamic event‐triggered strategy | |
Kumar et al. | Generalized simplex algorithm to solve fuzzy linear programming problems with ranking of generalized fuzzy numbers | |
Kang et al. | NeFL: Nested Federated Learning for Heterogeneous Clients | |
Liu et al. | A distributed parallel optimization algorithm via alternating direction method of multipliers | |
Breschi et al. | Cloud-aided collaborative estimation by admm-rls algorithms for connected diagnostics and prognostics | |
Guo et al. | Hierarchical design space exploration for distributed CNN inference at the edge | |
WO2022249436A1 (ja) | 変数最適化システム | |
Ramachandran et al. | Robust consensus of uncertain multi agent systems with one‐sided Lipschitz nonlinearity | |
Ferrarotti et al. | The benefits of sharing: a cloud-aided performance-driven framework to learn optimal feedback policies | |
CN112532464B (zh) | 一种跨多数据中心的数据分布式处理加速方法及其系统 | |
Liu et al. | Fully distributed event‐driven cooperation with unknown parameters under directed graphs | |
Zheng et al. | Improved adaptive war strategy optimization algorithm assisted-adaptive multi-head graph attention mechanism network for remaining useful life of complex equipment | |
Karnan et al. | Event‐triggered nonfragile state estimation for delayed neural networks with additive and multiplicative gain variations |
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 |