CN111104215A - 一种基于分布式编码的随机梯度下降优化方法 - Google Patents

一种基于分布式编码的随机梯度下降优化方法 Download PDF

Info

Publication number
CN111104215A
CN111104215A CN201911117318.7A CN201911117318A CN111104215A CN 111104215 A CN111104215 A CN 111104215A CN 201911117318 A CN201911117318 A CN 201911117318A CN 111104215 A CN111104215 A CN 111104215A
Authority
CN
China
Prior art keywords
node
matrix
sample
layer
nodes
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
CN201911117318.7A
Other languages
English (en)
Other versions
CN111104215B (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.)
Hohai University HHU
Original Assignee
Hohai University HHU
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 Hohai University HHU filed Critical Hohai University HHU
Priority to CN201911117318.7A priority Critical patent/CN111104215B/zh
Publication of CN111104215A publication Critical patent/CN111104215A/zh
Application granted granted Critical
Publication of CN111104215B publication Critical patent/CN111104215B/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/32Digital ink

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种基于分布式编码的随机梯度下降优化方法,针对在大规模分布式集群上面临的计算节点异构和通讯负载瓶颈带来的梯度延迟和效率下降的问题,基于分布式编码提出一种适应节点负载均衡的异步随机梯度下降优化算法。主要通过在数据交换阶段针对参数更新时产生的数据通信进行编码优化,并使用一种基于负载均衡策略通过对节点计算能力进行实时估计,优化节点间的任务分配,改善梯度延迟问题。本算法可以缓解由于梯度延迟问题导致的深度神经网络的损失函数难以收敛的问题,能够对大规模神经网络上的训练性能带来较好的提升,从而保证了提高了分布式神经网络训练算法的性能。

Description

一种基于分布式编码的随机梯度下降优化方法
技术领域
本发明涉及分布式计算架构,尤其涉及一种基于分布式编码的分布式随机梯度下降优化方法。
背景技术
基于梯度下降算法的神经网络训练方式近年来受到广泛关注,然而受制于单台机器所能达到的性能的上限,分布式集群可以提高深度神经网络训练的速度。目前较为广泛使用的深度神经网络分布式计算方法是异步梯度下降方法,其相对于参数平均化方法能够更好的保证训练的精度,但是异步随机梯度下降方法所需的信息通信总量相较于参数平均化有大幅的增加。同时异步随机梯度下降方法在节点异构性较大的情况下有一个显著的缺点,即梯度延迟问题(Delayed gradient),异步随机梯度下降算法在更新权值参数的时候,每个计算节点独立更新偏移量,不会在批次结束前等待其他计算节点计算完成,因此节点更新的频次与节点计算性能有较大关系,当一个计算节点尝试将其部分梯度值计算结果更新到全局参数上之前,可能已经存在其他计算速度较快的节点已经将全局参数更新了多次。因此异步随机梯度下降算法在节点性能存在差异的情况下无法获得和同步随机梯度下降相同的训练精度。
发明内容
发明目的:本发明的目的是提供一种基于分布式编码和节点负载均衡策略的异步随机梯度下降优化方法,主要通过在数据交换阶段针对参数更新时产生的数据通信进行编码优化,并使用一种基于负载均衡策略通过对节点计算能力进行实时估计,以优化节点间的任务分配,改善梯度延迟问题,解决目前大规模分布式集群上面临的计算节点异构和通讯负载瓶颈带来的梯度延迟和效率下降的问题。
技术方案:一种基于分布式编码的随机梯度下降优化方法,包括如下内容:
假设存在一个n个节点分布式集群为
Figure BDA0002274424270000011
要在该集群上训练一个有K层神经元的深度神经网络(全连接多层感知机),假设前向第l层神经元为
Figure BDA0002274424270000012
训练的第j批次的训练样本为Fj,且j∈{1,2,...X},X为整个待处理样本集总个数除以Fj的大小当前训练任务的运行时间为t,每一个待处理样本块为
Figure BDA0002274424270000021
的大小为
Figure BDA0002274424270000022
当t=0时,初始化
Figure BDA0002274424270000023
Figure BDA0002274424270000024
步骤4至10所描述的运算过程均发生于给定的节点(节点编号为:q,节点为:Nq)、指定神经网络的层(层编号为:l,层为:Ll)、批次(批次编号为:j,批次为:Fj)、以及样本块(样本块编号为:i,样本块为:
Figure BDA0002274424270000025
)上,因此可以使用一个四元组下标<q,l,j,i>标识一个符号:例如在节点Na上、层Ll上、批次为Fj且全局编号为i的样本块为F(q,l,j,i)。当某个对象的存在与某个下标对应的维度无关时,该维度被标记为任意符号
Figure BDA0002274424270000026
例如,与神经网络层编号无关的在节点Nq上、批次为Fj且全局编号为i的样本块可以写为
Figure BDA0002274424270000027
步骤1:对n个节点进行排列组合,取任意r个节点组成一组子集合
Figure BDA0002274424270000028
将全部的可能的组合
Figure BDA0002274424270000029
组成集合
Figure BDA00022744242700000210
集合
Figure BDA00022744242700000211
Figure BDA00022744242700000212
个元素,
Figure BDA00022744242700000213
执行步骤2。
步骤2:将同一个批次的训练集Fj划分为
Figure BDA00022744242700000214
个样本块,在t时刻,以比例
Figure BDA00022744242700000215
划分批次样本Fj
Figure BDA00022744242700000216
个样本块
Figure BDA00022744242700000217
Figure BDA00022744242700000236
Figure BDA00022744242700000219
类似,集合
Figure BDA00022744242700000220
也有
Figure BDA00022744242700000221
个元素。进入步骤3。
步骤3:依照步骤1和2,得到了两个有
Figure BDA00022744242700000222
个元素的集合
Figure BDA00022744242700000223
Figure BDA00022744242700000224
每次从两个集合中取元素
Figure BDA00022744242700000225
Figure BDA00022744242700000226
其中
Figure BDA00022744242700000227
是一个样本块,
Figure BDA00022744242700000228
是一组节点组成的集合。依次将
Figure BDA00022744242700000229
包含的样本发送到
Figure BDA00022744242700000230
表示的节点上,即每一个子集合
Figure BDA00022744242700000231
中的所有节点均接收到同样的样本块
Figure BDA00022744242700000232
重复上述过程直到每一个样本块
Figure BDA00022744242700000233
都被发送给了对应的
Figure BDA00022744242700000234
中所有的节点上。此时,每一个节点上存在的待处理样本块个数一共为
Figure BDA00022744242700000235
每个样本被拷贝并发送到r个不同的节点上,进入步骤4。
步骤4:分配完样本块以后,需要在每一个节点上分别执行梯度下降计算,其过程为:在每个本地节点Nq上对接收到的所有样本块
Figure BDA0002274424270000031
执行完整的前向传播(即从输入层到输出层一整套完整的神经网络计算过程),在输出层根据对应的损失函数计算损失(Loss),依反向传播算法次序在每一层
Figure BDA0002274424270000032
上执行步骤5。
步骤5:将Loss函数对该层
Figure BDA0002274424270000033
所算出的梯度矩阵(梯度值是一个矩阵,其大小取决于神经网络结构)进行编码。对节点Nq拥有的所有μ个同批次样本块,即:
Figure BDA0002274424270000034
在层
Figure BDA0002274424270000035
计算所得的所有梯度矩阵结果,即:
Figure BDA0002274424270000036
中取任意r个元素进行组合,将第s个组合结果记作
Figure BDA0002274424270000037
其中q表示节点下标,l表示层下标,j表示样本批次下标,
Figure BDA0002274424270000038
代表可能的一种排列组合结果),将所有的结果组成的结果集合记作
Figure BDA0002274424270000039
并存在数据库中留作下一步解码,进入步骤6。(
Figure BDA00022744242700000310
共有
Figure BDA00022744242700000311
个元素,
Figure BDA00022744242700000312
)。
步骤6:将集合
Figure BDA00022744242700000313
中的元素
Figure BDA00022744242700000314
进行拆分,
Figure BDA00022744242700000315
是一个矩阵,其行数为
Figure BDA00022744242700000316
列数为
Figure BDA00022744242700000317
Figure BDA00022744242700000318
时,按行进行拆分,进入情况1;当
Figure BDA00022744242700000319
时,按列进行拆分,进入情况2。
情况1:按行拆分
取每个子矩阵的行数为
Figure BDA00022744242700000320
从上往下依次取
Figure BDA00022744242700000321
行,组成r个行数为
Figure BDA00022744242700000322
列数为
Figure BDA00022744242700000323
的子矩阵,最后剩余的子矩阵行数不足
Figure BDA00022744242700000324
的话,则将剩余部分与第r个子矩阵合并(即上一个合适大小的子矩阵),拆得r个子矩阵,记作
Figure BDA00022744242700000325
情况2:按列拆分
取每个子矩阵的列数为
Figure BDA00022744242700000326
从左向右依次取
Figure BDA00022744242700000327
列,组成r个行数为rowβ列数为
Figure BDA00022744242700000328
的子矩阵。最后剩余的子矩阵规模不足
Figure BDA00022744242700000329
的,将剩余部分与第r个子矩阵合并(即上一个合适大小的子矩阵),拆得r个子矩阵,记作
Figure BDA0002274424270000041
将拆分得到的子矩阵集合记作
Figure BDA0002274424270000042
Figure BDA0002274424270000043
Figure BDA0002274424270000044
其中q表示节点下标,l表示层下标,j表示样本批次编号,
Figure BDA0002274424270000045
代表样本块编号,s表示集合
Figure BDA0002274424270000046
的编号,k对应拆分的子矩阵下标。执行步骤7。
步骤7:对步骤5中的每一个样本块
Figure BDA0002274424270000047
找到其在数据分发时对应的分发节点子集合
Figure BDA0002274424270000048
Figure BDA0002274424270000049
中的节点下标编号cq进行升序排序,获取当前下标节点Ng在有序排列后的节点列表中的位置,记作α,例如,在节点组合{N1,N2,N3}中,节点N1对应的位置α=0,节点N3对应的位置α=2。将节点要发送的矩阵记作
Figure BDA00022744242700000410
将要发送的目标节点集合记作
Figure BDA00022744242700000411
执行步骤8。
步骤8:执行以下两步操作:
Figure BDA00022744242700000412
其中Δ是求对称差集的操作符号(两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合)。重复执行步骤6至8,直到处理完所有集合
Figure BDA00022744242700000413
中的所有拆分结果
Figure BDA00022744242700000414
执行步骤9。
步骤9:执行完上述步骤后,对应每个节点Nq,在层
Figure BDA00022744242700000415
上,使用批次样本Fj计算所得的梯度矩阵组合
Figure BDA00022744242700000416
部生成了一个待发送数据矩阵
Figure BDA00022744242700000417
和一个与之对应的发送目标节点列表
Figure BDA00022744242700000418
将每一个
Figure BDA00022744242700000419
逐一发送到对应的节点列表
Figure BDA00022744242700000420
中的节点上,且使用多播(Multicast)方式进行批量发送,然后进入执行步骤10。
步骤10:编码时保证了每个节点获取的数据包中均可以通过已有信息解码获取所需信息。在节点Nq上,将其从节点
Figure BDA0002274424270000051
上接收的在层
Figure BDA0002274424270000052
上,使用批次样本Fj计算所得的数据包记作
Figure BDA0002274424270000053
节点Nq上缺少的样本块为
Figure BDA0002274424270000054
Figure BDA0002274424270000055
计算得出的梯度矩阵为
Figure BDA0002274424270000056
Figure BDA0002274424270000057
将这些矩阵
Figure BDA0002274424270000058
的拆分子矩阵记作
Figure BDA0002274424270000059
其中q表示节点下标,l表示层下标,j表示样本批次编号,iv代表本节点Nq缺少的样本块编号,k对应子矩阵下标(子矩阵拆分参见步骤6)。将本节点Nq在步骤6中,由集合
Figure BDA00022744242700000510
中的元素
Figure BDA00022744242700000511
进行拆分得到的所有
Figure BDA00022744242700000512
集合起来,去除重复元素,所得集合为
Figure BDA00022744242700000513
其中q表示节点下标,l表示层下标,j表示样本批次编号,iz代表本节点Nq已有的样本块编号,k对应拆分的子矩阵下标(子矩阵拆分参见步骤6)。借助上述
Figure BDA00022744242700000514
计算缺失部分
Figure BDA00022744242700000515
如下公式(2)所示,其中x对应步骤8中打包的下标α:
Figure BDA00022744242700000516
当获取到所有的
Figure BDA00022744242700000517
后,用公式(3)拼接出矩阵
Figure BDA00022744242700000518
Figure BDA00022744242700000519
并进一步执行步骤11。
步骤11:通过
Figure BDA00022744242700000520
便可以还原完整的全局梯度
Figure BDA00022744242700000521
其计算公式如下:
Figure BDA00022744242700000522
使用
Figure BDA00022744242700000523
更新
Figure BDA00022744242700000524
层的权值,继续反向传播,重复步骤4,直到反向传播到输入层
Figure BDA00022744242700000525
执行步骤12。
步骤12:每个节点Nq独立记录从进入步骤4至进入步骤12的运行时间,记作Δtq,将当前时刻记作t,节点Nq的当前计算效率记作λq(t),节点Nq上每个拥有的样本块
Figure BDA0002274424270000061
的大小记作
Figure BDA0002274424270000062
使用公式(5)进行计算。
Figure BDA0002274424270000063
节点将λq(t)上传至参数服务器。执行步骤13。
步骤13:在每个节点Nq上执行如下操作:从参数服务器下载获取所有的λq(t),q=0,1,...,n-1,使用公式(6)对λq(t)进行归一化。
Figure BDA0002274424270000064
定义a(t+1)和e(t)为如下形式:
Figure BDA0002274424270000065
e(t)=(e1(t),e2(t),...,en(t))。
将分发矩阵记作
Figure BDA0002274424270000066
(分发矩阵的行标代表节点下标,列标代表样本块下标,元素aq,i=1代表节点q拥有样本块i,aq,i=0代表节点q不拥有样本块i),令A为系数矩阵,
Figure BDA0002274424270000067
为变量,e(t)为常数项,可得非齐次线性方程组(7)。
Figure BDA0002274424270000068
执行步骤14。
步骤14:上述方程组系数矩阵行数为n,列数为
Figure BDA0002274424270000069
因为r≥2且n>r,所以根据Pascal三角形公式可知
Figure BDA00022744242700000610
下面分为两种情况分别求解
Figure BDA00022744242700000611
情况1:当行数等于列数时,
Figure BDA0002274424270000071
方程组有唯一解
Figure BDA0002274424270000072
情况2:当方程组的行数大于列数时,
Figure BDA0002274424270000073
方程组无唯一解,可以变形为一个线性规划问题,解出一组可行解
Figure BDA0002274424270000074
使用
Figure BDA0002274424270000075
Figure BDA0002274424270000076
作为下一个时刻的分配方案,使用该分配方案依照比例划分每一批次的训练集Fj,执行步骤2,如果当前损失或精度已经达到神经网络训练的目标要求,则停止训练,结束流程。
本发明提出的一种基于分布式编码的分布式随机梯度下降优化方法,与现有其他分布式随机梯度下降算法不同,主要体现在:第一,本方法使用了有序的样本数据分发方式而不是随机样本分发;第二,本方法通过使用分布式编码的方式对中间结果数据进行了压缩,并使用多播的方式有效降低了通讯负载;第三,本方法有机结合了分布式编码策略和基于数据重分配的负载均衡策略。
本发明具有如下显著优点:通过有效利用计算冗余换取额外的通信开销减免,能够有效消除通信瓶颈对分布式集群的影响。通过定制的数据交换策略能够为同步随机梯度下降算法带来较大的计算效率提升。在实验结果中,随着冗余量的变化,记录各个算法到达最小平均损失的时间。比较单一批次训练所需时间,上述改进方案相对于同步随机梯度下降算法至少提升训练速度,比较收敛并稳定至指定损失函数值的时间,相较于异步随机梯度下降算法的收敛速度提升。
附图说明
图1为基于分布式编码的随机梯度下降优化算法流程示意图;
图2为基于流程示意图。
具体实施方式
下面结合说明书附图对本发明的具体实施方式进行说明。
如图1-2所示,本发明设计了一种分布式编码的随机梯度下降优化算法,包括以下步骤:
如果要在一个拥有四个计算节点的分布式集群上进行MNIST手写数字识别神经网络训练,神经网络为全连接多层感知机,共6层。使用r=2的冗余设置,样本数目为60000,批次大小为360。
步骤1:对节点N1,N2,N3,N4进行排列组合,总共有
Figure BDA0002274424270000081
种组合方案,记作D1,D2,...,D6。D1={N1,N2},D2={N1,N3},...,D6={N3,N4}。组合结果记作
Figure BDA00022744242700000817
Figure BDA00022744242700000818
步骤2:将上述60000个样本依照每份360个样本的大小均等划分为166个样本批次,多余部分样本舍弃。取其中第一个要计算的样本批次Fj,初始化样本块大小
Figure BDA0002274424270000082
依照比例
Figure BDA0002274424270000083
划分为
Figure BDA0002274424270000084
个样本块,每块包含360/6=60个样本,组成集合
Figure BDA00022744242700000819
步骤3:按照对应一一发送样本块到目标节点上。第一块样本
Figure BDA0002274424270000085
发送到集合D1={N1,N2}表示的节点N1,N2上,第二块样本
Figure BDA0002274424270000086
发送到集合D2={N1,N3}表示的节点N1,N3上,以此类推。此时,每个节点上的待处理样本块数目为
Figure BDA0002274424270000087
块。
步骤4:在每个节点Nq上根据自己获得的样本
Figure BDA0002274424270000088
执行梯度下降计算,其中q表示节点下标,l表示层下标,j表示样本批次编号,iz代表本节点Nq已有的样本块编号。
Figure BDA0002274424270000089
步骤5:以当前节点为节点N1为例,其拥有样本块F(1,l,j,1),F(1,l,j,2),F(1,l,j,3),首先反向传播算法执行到层
Figure BDA00022744242700000810
由这些样本块计算得梯度矩阵G(1,6,j,1),G(1,6,j,2),G(1,6,j,3),取其中r=2个梯度矩阵进行组合,得三种组合结果
Figure BDA00022744242700000811
在其他节点N2,N3,N4上依次执行类似操作。
步骤6:可以对节点N1上得到的
Figure BDA00022744242700000812
中的子集合中的矩阵进行拆分,每个矩阵拆分为r=2份。{{G(1,6,j,1),G(1,6,j,2)},{G(1,6,j,1),G(1,6,j,3)},{G(1,6,j,2),G(1,6,j,3)}}中的一个结果{G(1,6,j,1),G(1,6,j,2)}的拆分结果集合记作
Figure BDA00022744242700000813
那么结果为
Figure BDA00022744242700000814
Figure BDA00022744242700000815
依次将
Figure BDA00022744242700000816
中的所有组合结果矩阵进行拆分,得:
Figure BDA0002274424270000091
在其他节点N2,N3,N4上依次执行类似操作。
步骤7:上述梯度矩阵G(1,6,j,1),G(1,6,j,2),G(1,6,j,3)在步骤3中对应的分发节点集合为D1={N1,N2},D2={N1,N3},D3={N1,N4},以第一个要发送的数据组合
Figure BDA0002274424270000092
为例,初始化要发送的目标数据H0=0,要发送的目标节点
Figure BDA0002274424270000093
步骤8:累加以获取要发送的数据包,对应其中一个拆分结果
Figure BDA0002274424270000094
Figure BDA0002274424270000095
梯度矩阵G(1,6,j,1)由F(1,6,j,1)计算所得,其对应的分发节点集合为D1={N1,N2},节点N1在其中的位置下标α=0,梯度矩阵G(1,6,j,2)由F(1,6,j,2)计算所得,其对应的分发节点集合为D2={N1,N3},节点N1在其中的位置下标α=0,因此应当发送梯度矩阵G(1,6,j,1)的上半部分和梯度矩阵G(1,6,j,2)的上半部分。即
Figure BDA0002274424270000096
发送的目标节点集合T0计算如下:
Figure BDA0002274424270000097
步骤9:遍历
Figure BDA00022744242700000913
中的所有组合结果,执行步骤8,将得到的所有要发送的数据多播到要发送的节点上。
步骤10:对于节点N2,其拥有样本块
Figure BDA0002274424270000098
计算所得的梯度矩阵{G(2,6,j,1),G(2,6,j,4),G(2,6,j,5)},当其接收到节点N1发送的数据
Figure BDA0002274424270000099
时,可以使用已有的
Figure BDA00022744242700000910
解出其缺失的部分
Figure BDA00022744242700000911
计算过程为:
Figure BDA00022744242700000912
Figure BDA0002274424270000101
其他数据包按照以上方法依次解出,本算法保证每个节点的每个组合在其发送到目标上后均可以完整解出。对于其他节点N1,N3,N4执行类似操作解出其缺失数据。
步骤11:借助解出的数据内容,使用批次大小执行权值归一化,计算公式如下:
Figure BDA0002274424270000102
继续执行梯度下降过程:
Figure BDA0002274424270000103
Figure BDA0002274424270000104
步骤12:每个节点Nq独立记录从步骤4至步骤11之前的运行时间并上传数据至参数服务器。以节点N1为例,将其从进入步骤4至进入步骤12的运行时间记作Δt1,将当前时刻记作t,节点N1的当前计算效率记作λ1(t),每个样本块
Figure BDA0002274424270000105
的大小记作
Figure BDA0002274424270000106
算得计算效率:
Figure BDA0002274424270000107
节点N1将λ1(t)上传至参数服务器。
步骤13:在每个节点Nq上执行如下操作:从参数服务器下载获取所有的λq(t),q=1,2,3,4对λq(t)进行归一化,得
Figure BDA0002274424270000108
定义
Figure BDA0002274424270000109
和e(t)为如下形式:
Figure BDA00022744242700001010
e(t)=(e1(t),e2(t),e3(t),e4(t))。可得非齐次线性方程组:
Figure BDA00022744242700001011
其中:
Figure BDA0002274424270000111
步骤14:因为系数矩阵A不可逆,方程组无唯一解,可以将其转换为线性规划问题,求解得一组可行解向量
Figure BDA0002274424270000112
向量
Figure BDA0002274424270000113
中的每一个元素
Figure BDA0002274424270000114
Figure BDA0002274424270000115
对应一个样本块占总样本数目的比例,那么向量
Figure BDA0002274424270000116
对应的一组值即可作为一组分配方案。使用该分配方案依照比例划分每一批次的训练集Fj,执行步骤2,如果当前损失或精度已经达到神经网络训练的目标要求,则停止训练,结束流程。

Claims (5)

1.一种基于分布式编码的随机梯度下降优化方法,其特征在于,包括如下内容:
定义存在一个n个节点分布式集群为
Figure FDA0002274424260000011
在该集群上训练一个有K层神经元的深度神经网络,定义前向第l层神经元为
Figure FDA0002274424260000012
Figure FDA0002274424260000013
训练的第j批次的训练样本为Fj,且j∈{1,2,...X},X为整个待处理样本集总个数除以Fj的大小,当前训练任务的运行时间为t,每一个待处理样本块为
Figure FDA0002274424260000014
的大小为
Figure FDA0002274424260000015
当t=0时,初始化
Figure FDA0002274424260000016
步骤4至步骤10的运算过程均发生于给定的节点Nq、指定神经网络的层Ll、批次Fj、以及编号为i的样本块
Figure FDA0002274424260000017
上,使用四元组下标<q,l,j,i>标识所述样本块为F(q,l,j,i);当某个对象的存在与某个下标对应的维度无关时,该维度被标记为任意符号
Figure FDA0002274424260000018
即与神经网络层编号无关的在节点Nq上、批次为Fj且全局编号为i的样本块表示为
Figure FDA0002274424260000019
步骤1:对n个节点进行排列组合,取任意r个节点组成一组子集合
Figure FDA00022744242600000110
将全部的可能的组合
Figure FDA00022744242600000111
组成集合
Figure FDA00022744242600000112
集合
Figure FDA00022744242600000113
Figure FDA00022744242600000114
个元素,
Figure FDA00022744242600000115
步骤2:将同一个批次的训练集Fj划分为
Figure FDA00022744242600000116
个样本块,在t时刻,以比例
Figure FDA00022744242600000117
划分批次样本Fj
Figure FDA00022744242600000118
个样本块
Figure FDA00022744242600000119
Figure FDA00022744242600000120
同理,集合
Figure FDA00022744242600000121
也有
Figure FDA00022744242600000122
个元素;
步骤3:从集合
Figure FDA00022744242600000123
中取元素
Figure FDA00022744242600000124
从集合
Figure FDA00022744242600000125
中取元素
Figure FDA00022744242600000126
其中
Figure FDA00022744242600000127
是一个样本块,
Figure FDA00022744242600000128
是一组节点组成的集合;依次将
Figure FDA00022744242600000129
包含的样本发送到
Figure FDA00022744242600000130
表示的节点上,即每一个子集合
Figure FDA00022744242600000131
中的所有节点均接收到同样的样本块
Figure FDA00022744242600000132
重复上述过程直到每一个样本块
Figure FDA00022744242600000133
都被发送给了对应的
Figure FDA00022744242600000134
中所有的节点上;此时,每一个节点上存在的待处理样本块个数一共为
Figure FDA00022744242600000135
每个样本被拷贝并发送到r个不同的节点上;
步骤4:在每一个节点上分别执行梯度下降计算,其过程为:在每个本地节点Nq上对接收到的所有样本块
Figure FDA0002274424260000021
执行完整的前向传播,即从输入层到输出层一整套完整的神经网络计算过程,在输出层根据对应的损失函数计算损失;
步骤5:依反向传播算法次序在每一层
Figure FDA0002274424260000022
上执行如下内容:将损失函数对该层
Figure FDA0002274424260000023
所算出的梯度矩阵进行编码;对节点Nq拥有的μ个同批次样本块,即:
Figure FDA0002274424260000024
在层
Figure FDA0002274424260000025
计算所得的所有梯度矩阵结果,即:
Figure FDA0002274424260000026
中取任意r个元素进行组合,将第s个组合结果记作
Figure FDA0002274424260000027
其中q表示节点下标,l表示层下标,j表示样本批次下标,
Figure FDA0002274424260000028
(
Figure FDA0002274424260000029
代表可能的一种排列组合结果),将所有的结果组成的结果集合记作
Figure FDA00022744242600000210
并存在数据库中留作下一步解码,所述(
Figure FDA00022744242600000211
共有
Figure FDA00022744242600000212
个元素,
Figure FDA00022744242600000213
Figure FDA00022744242600000214
);
步骤6:将集合
Figure FDA00022744242600000215
中的元素
Figure FDA00022744242600000216
进行拆分,所述
Figure FDA00022744242600000217
为矩阵,其行数为
Figure FDA00022744242600000218
列数为
Figure FDA00022744242600000219
Figure FDA00022744242600000220
时,进行按行拆分,当
Figure FDA00022744242600000221
时,进行按列拆分;
将拆分得到的子矩阵集合记作
Figure FDA00022744242600000222
Figure FDA00022744242600000223
Figure FDA00022744242600000224
其中q表示节点下标,l表示层下标,j表示样本批次编号,
Figure FDA00022744242600000225
代表样本块编号,s表示集合
Figure FDA00022744242600000226
的编号,k对应拆分的子矩阵下标;
步骤7:对步骤5中的每一个样本块
Figure FDA00022744242600000227
找到其在数据分发时对应的分发节点子集合
Figure FDA00022744242600000228
Figure FDA00022744242600000229
中的节点下标编号cq进行升序排序,获取当前下标节点Nq在有序排列后的节点列表中的位置,记作α,将节点要发送的矩阵记作
Figure FDA00022744242600000230
将要发送的目标节点集合记作
Figure FDA00022744242600000231
步骤8:执行以下两步操作:
Figure FDA0002274424260000031
其中Δ是求对称差集的操作符号;重复执行步骤6至8,直到处理完所有集合
Figure FDA0002274424260000032
中的所有拆分结果
Figure FDA0002274424260000033
执行步骤9;
步骤9:对应每个节点Nq,在层
Figure FDA0002274424260000034
上,使用批次样本Fj计算所得的梯度矩阵组合
Figure FDA0002274424260000035
生成一个待发送数据矩阵
Figure FDA0002274424260000036
和一个与之对应的发送目标节点列表
Figure FDA0002274424260000037
将每一个
Figure FDA0002274424260000038
逐一发送到对应的节点列表
Figure FDA0002274424260000039
中的节点上,且使用多播方式进行批量发送;
步骤10:在节点Nq上,将其从节点
Figure FDA00022744242600000310
上接收的在层
Figure FDA00022744242600000311
上,使用批次样本Fj计算所得的数据包记作
Figure FDA00022744242600000312
节点Nq上缺少的样本块为
Figure FDA00022744242600000313
Figure FDA00022744242600000314
计算得出的梯度矩阵为
Figure FDA00022744242600000315
Figure FDA00022744242600000316
将这些矩阵
Figure FDA00022744242600000317
的拆分子矩阵记作
Figure FDA00022744242600000318
其中q表示节点下标,l表示层下标,j表示样本批次编号,iv代表本节点Nq缺少的样本块编号,k对应子矩阵下标;将本节点Nq在步骤6中,由集合
Figure FDA00022744242600000319
中的元素
Figure FDA00022744242600000320
进行拆分得到的所有
Figure FDA00022744242600000321
集合起来,去除重复元素,所得集合为
Figure FDA00022744242600000322
其中q表示节点下标,l表示层下标,j表示样本批次编号,iz代表本节点Nq已有的样本块编号,k对应拆分的子矩阵下标;如公式(2)所示,借助所述
Figure FDA00022744242600000323
计算缺失部分
Figure FDA00022744242600000324
其中x对应步骤8中打包的下标α:
Figure FDA00022744242600000325
当获取到所有的
Figure FDA00022744242600000326
后,用公式(3)拼接出矩阵M(q,l,j,i)
Figure FDA0002274424260000041
步骤11:通过M(q,l,j,i)还原完整的全局梯度
Figure FDA0002274424260000042
其计算公式如下:
Figure FDA0002274424260000043
使用
Figure FDA0002274424260000044
更新
Figure FDA0002274424260000045
层的权值,继续反向传播,重复步骤4,直到反向传播到输入层
Figure FDA0002274424260000046
执行步骤12;
步骤12:每个节点Nq独立记录从进入步骤4至进入步骤12的运行时间,记作Δtq,将当前时刻记作t,节点Nq的当前计算效率记作λq(t),节点Nq上每个拥有的样本块
Figure FDA0002274424260000047
的大小记作
Figure FDA0002274424260000048
使用公式(5)进行计算:
Figure FDA0002274424260000049
节点将λq(t)上传至参数服务器;
步骤13:在每个节点Nq上,从参数服务器下载获取所有的λq(t),q=0,1,…,n-1,使用公式(6)对λq(t)进行归一化:
Figure FDA00022744242600000410
定义a(t+1)和e(t)为如下形式:
Figure FDA00022744242600000411
e(t)=(e1(t),e2(t),…,en(t))
将分发矩阵记作
Figure FDA00022744242600000412
所述分发矩阵的行标代表节点下标,列标代表样本块下标,元素aq,i=1代表节点q拥有样本块i,aq,i=0代表节点q不拥有样本块i,令A为系数矩阵,
Figure FDA0002274424260000051
为变量,e(t)为常数项,可得非齐次线性方程组(7)。
Figure FDA0002274424260000052
步骤14:上述方程组系数矩阵行数为n,列数为
Figure FDA0002274424260000053
r≥2且n>r,根据Pascal三角形公式知
Figure FDA0002274424260000054
求解
Figure FDA0002274424260000055
2.根据权利要求1所述的一种基于分布式编码的随机梯度下降优化方法,其特征在于,步骤6中,所述按行拆分包括如下内容:
取每个子矩阵的行数为
Figure FDA0002274424260000056
从上往下依次取
Figure FDA0002274424260000057
行,组成r个行数为
Figure FDA0002274424260000058
列数为
Figure FDA0002274424260000059
的子矩阵,最后剩余的子矩阵行数不足
Figure FDA00022744242600000510
的话,则将剩余部分与第r个子矩阵合并,拆得r个子矩阵,记作
Figure FDA00022744242600000511
Figure FDA00022744242600000512
3.根据权利要求1所述的一种基于分布式编码的随机梯度下降优化方法,其特征在于,步骤6中,所述按列拆分包括如下内容:
取每个子矩阵的列数为
Figure FDA00022744242600000513
从左向右依次取
Figure FDA00022744242600000514
列,组成r个行数为rowβ列数为
Figure FDA00022744242600000515
的子矩阵,最后剩余的子矩阵规模不足
Figure FDA00022744242600000516
的,将剩余部分与第r个子矩阵合并,拆得r个子矩阵,记作
Figure FDA00022744242600000517
4.根据权利要求1所述的一种基于分布式编码的随机梯度下降优化方法,其特征在于,步骤14中,当方程组的行数等于列数时,
Figure FDA00022744242600000518
方程组有唯一解
Figure FDA00022744242600000519
5.根据权利要求1所述的一种基于分布式编码的随机梯度下降优化方法,其特征在于,步骤14中,当方程组的行数大于列数时,
Figure FDA00022744242600000520
方程组无唯一解,变形为一个线性规划问题,解出一组可行解
Figure FDA00022744242600000521
Figure FDA00022744242600000522
使用
Figure FDA00022744242600000523
作为下一个时刻的分配方案,使用该分配方案依照比例划分每一批次的训练集Fj,执行步骤2,如果当前损失或精度达到神经网络训练的目标要求,则停止训练,结束流程。
CN201911117318.7A 2019-11-15 2019-11-15 一种基于分布式编码的随机梯度下降优化方法 Active CN111104215B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911117318.7A CN111104215B (zh) 2019-11-15 2019-11-15 一种基于分布式编码的随机梯度下降优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911117318.7A CN111104215B (zh) 2019-11-15 2019-11-15 一种基于分布式编码的随机梯度下降优化方法

Publications (2)

Publication Number Publication Date
CN111104215A true CN111104215A (zh) 2020-05-05
CN111104215B CN111104215B (zh) 2023-03-24

Family

ID=70420677

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911117318.7A Active CN111104215B (zh) 2019-11-15 2019-11-15 一种基于分布式编码的随机梯度下降优化方法

Country Status (1)

Country Link
CN (1) CN111104215B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111507474A (zh) * 2020-06-18 2020-08-07 四川大学 一种动态调整Batch-size的神经网络分布式训练方法
CN111858721A (zh) * 2020-08-03 2020-10-30 南京大学 一种基于优先级编码的分布式计算方法
CN112882835A (zh) * 2021-03-01 2021-06-01 润联软件系统(深圳)有限公司 一种机器节点并行处理方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180046914A1 (en) * 2016-08-12 2018-02-15 Beijing Deephi Intelligence Technology Co., Ltd. Compression method for deep neural networks with load balance
CN109389166A (zh) * 2018-09-29 2019-02-26 聚时科技(上海)有限公司 基于局部结构保存的深度迁移嵌入聚类机器学习方法
CN110033089A (zh) * 2019-04-17 2019-07-19 山东大学 基于分布式估计算法的深度神经网络参数优化方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180046914A1 (en) * 2016-08-12 2018-02-15 Beijing Deephi Intelligence Technology Co., Ltd. Compression method for deep neural networks with load balance
CN109389166A (zh) * 2018-09-29 2019-02-26 聚时科技(上海)有限公司 基于局部结构保存的深度迁移嵌入聚类机器学习方法
CN110033089A (zh) * 2019-04-17 2019-07-19 山东大学 基于分布式估计算法的深度神经网络参数优化方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈振宏: "基于差异合并的分布式随机梯度下降算法", 《计算机学报》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111507474A (zh) * 2020-06-18 2020-08-07 四川大学 一种动态调整Batch-size的神经网络分布式训练方法
CN111507474B (zh) * 2020-06-18 2022-07-01 四川大学 一种动态调整Batch-size的神经网络分布式训练方法
CN111858721A (zh) * 2020-08-03 2020-10-30 南京大学 一种基于优先级编码的分布式计算方法
CN111858721B (zh) * 2020-08-03 2023-07-21 南京大学 一种基于优先级编码的分布式计算方法
CN112882835A (zh) * 2021-03-01 2021-06-01 润联软件系统(深圳)有限公司 一种机器节点并行处理方法、装置、计算机设备及存储介质
CN112882835B (zh) * 2021-03-01 2022-12-06 润联软件系统(深圳)有限公司 一种机器节点并行处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN111104215B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
CN111104215B (zh) 一种基于分布式编码的随机梯度下降优化方法
CN111242282B (zh) 基于端边云协同的深度学习模型训练加速方法
KR102555057B1 (ko) 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템
CN110728361B (zh) 一种基于强化学习的深度神经网络压缩方法
CN107609648B (zh) 一种结合堆叠降噪稀疏自动编码器的遗传算法
CN107565973B (zh) 一种结点可扩展的哈夫曼编码的实现方法及电路结构
CN111758104B (zh) 适合于硬件实现的神经网络参数优化方法、神经网络计算方法和装置
CN114997337B (zh) 信息融合、数据通信方法、装置及电子设备和存储介质
CN107609694B (zh) 海上风电集群输电系统结构优化方法及存储介质
CN114492833A (zh) 基于梯度记忆的车联网联邦学习分层知识安全迁移方法
CN112508192B (zh) 一种具有深度结构的增量堆叠式宽度学习系统
CN104809161B (zh) 一种对稀疏矩阵进行压缩和查询的方法及系统
CN113312178A (zh) 一种基于深度强化学习的流水线并行训练任务分配方法
CN107977541A (zh) 一种优化量子线路仿真的方法
CN115481748A (zh) 一种基于数字孪生辅助的联邦学习新鲜度优化方法与系统
JP2020149311A (ja) 情報処理方法及び情報処理装置
CN111028897B (zh) 一种基于Hadoop的基因组索引构建的分布式并行计算方法
CN111832817A (zh) 基于mcp罚函数的小世界回声状态网络时间序列预测方法
CN111738360A (zh) 一种两方决策树训练方法和系统
CN109767004A (zh) 一种信息的一维量子卷积计算方法
CN111858721B (zh) 一种基于优先级编码的分布式计算方法
CN111683010B (zh) 基于光缆网光路的双路由的生成方法及装置
CN111400026B (zh) 一种基于主从备份技术的分布式负载均衡方法
CN115272433B (zh) 用于无人机自动避障的轻量点云配准方法及系统
US9361588B2 (en) Construction of tree-shaped bayesian network

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant