一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络的梯度稀疏方法和梯度稀疏装置与流程

2022-06-11 20:17:47 来源:中国专利 TAG:


1.本技术涉及人工智能技术领域,尤其涉及神经网络的梯度稀疏方法和梯度稀疏装置。


背景技术:

2.随着近年来人工智能(artificial intelligence,ai)的不断发展,人工智能已经在全世界的范围内引起一轮新的创新和变革,开始推进人类从信息化向智能化时代发展和转变。与此同时,新的变化也在人工智能领域中不断发生。人工智能技术的发展从学术阶段逐步走向实验阶段,向着学术界产业界协同推进的产业化阶段持续发展着。
3.人工智能的关键技术是神经网络。神经网络通过模拟人脑神经细胞连接,将大量的、简单的处理单元(称为神经元)广泛互连,形成复杂的网络系统。当前,大型的深度神经网络普遍使用分布式训练的方法来加快训练速度。训练过程中,分布式训练系统中各节点之间需要频繁进行梯度传输来同步各节点上的模型参数。
4.目前,使用分布式训练方法来训练神经网络,一方面,需要节点配置昂贵的高带宽网络,加大硬件成本;另一方面,随着分布式训练系统的节点数增多,分布式训练的加速线性度大大下降,严重影响分布式训练的性能。为了解决上述问题,在神经网络的训练过程中,提出了如下方法:分布式训练系统中各节点对梯度先进行稀疏处理然后再传输,以达到节省带宽和加速训练的目的。
5.目前,分布式训练系统中各节点对梯度进行梯度稀疏时,对每一次需要传输的梯度进行排序,然后选取绝对值最大的k个梯度值,并将其余梯度值置零,从而实现梯度稀疏。
6.上述梯度稀疏方法中,由于每次都需要对梯度进行排序,且排序操作耗时较多,因此,梯度稀疏处理的效率较低,从而影响神经网络的训练效率。


技术实现要素:

7.本技术提供了神经网络的梯度稀疏方法和梯度稀疏装置,可以提高神经网络的训练效率。
8.第一方面,本技术提供了一种神经网络的梯度稀疏方法。所述梯度稀疏方法应用于分布式训练系统中,所述分布式训练系统用于对所述神经网络进行n轮迭代训练,所述分布式训练系统中包括m个训练装置,所述m个训练装置中的每个训练装置中部署有所述神经网络,n和m为大于1的正整数。
9.所述方法包括:所述m个训练装置中的第一训练装置仅在所述n轮迭代训练中的第i轮迭代训练中,根据当前梯度集合更新存储器中的稀疏阈值,所述当前梯度集合中包含所述第一训练装置在所述第i轮迭代训练中为所述神经网络计算的参数梯度,i为小于n的正整数,且i为m的整数倍,m为小于n且大于1的整数;所述第一训练装置在所述第i轮迭代训练中,使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理,得到所述稀疏梯度。
10.本方法中,因为不需要每轮迭代都更新稀疏阈值,而是每隔m轮才更新一次稀疏阈值,因此每隔m轮就可以节省m-1轮迭代训练中更新稀疏阈值的时间,从而可以提高神经网络的训练效率。
11.结合第一方面,在第一种可能的实现方式中,所述第一训练装置在所述第i轮迭代训练中根据所述当前梯度集合更新所述存储器中的稀疏阈值,与所述第一训练装置在所述第i轮迭代训练中使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理,并行执行。
12.本实现方式中的方法,因为第一训练装置在当前轮次迭代过程中,进行梯度稀疏所使用的稀疏阈值为之前轮次中计算得到的稀疏阈值,而不必等到当前轮次更新得到新的稀疏阈值之后才对梯度进行稀疏处理,所以在本轮中可以稀疏阈值的更新和梯度稀疏处理并行处理,从而可以降低梯度稀疏的时延,进而可以提高神经网络的训练效率。
13.结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,所述m个训练装置中的第一训练装置仅在所述n轮迭代训练中的第i轮迭代训练中,根据当前梯度集合更新存储器中的稀疏阈值,包括:所述第一训练装置仅在所述第i轮迭代训练中,根据当前梯度均值、历史梯度均值、当前梯度标准差、历史梯度标准差和存储器中的稀疏阈值计算得到新稀疏阈值,并将所述存储器中的稀疏阈值更新为所述新稀疏阈值,所述当前梯度均值为所述当前梯度集合中的梯度的均值,所述历史梯度均值为历史梯度集合中的梯度的均值,所述历史梯度集合中包括所述第一训练装置计算所述存储器中更新前的稀疏阈值所使用的参数梯度,所述当前梯度标准差为所述当前梯度集合中的梯度的标准差,所述历史梯度标准差为所述历史梯度集合中的梯度的标准差,所述存储器中更新前的稀疏阈值和所述历史梯度均值之间的映射关系与所述存储器中更新后的稀疏阈值与所述当前梯度均值之间的映射关系相同。
14.本实现方式的方法中,因为在计算稀疏阈值时,不再对梯度进行排序,而是基于之前的稀疏阈值,利用数据运算方法计算得到当前轮次的稀疏阈值,因此可以节省对大量梯度进行排序所使用的时间和计算资源,从而可以提高计算稀疏阈值的效率,进而可以提高进行梯度稀疏处理的效率,最终可以提高神经网络的训练效率。
15.结合第二种可能的实现方式,在第三种可能的实现方式中,所述新稀疏阈值、所述当前梯度均值、所述历史梯度均值、所述当前梯度标准差、所述历史梯度标准差与所述存储器中更新前的稀疏阈值之间满足如下关系式:
[0016][0017]
其中,th
new
表示所述新稀疏阈值,th表示所述存储器中更新前的稀疏阈值,μ表示所述历史梯度均值,μ
new
表示所述当前梯度均值,σ表示所述历史梯度标准差,σ
new
表示所述当前梯度标准差。
[0018]
结合第一方面或第一种可能的实现方式,在第四种可能的实现方式中,所述m个训练装置中的第一训练装置仅在所述n轮迭代训练中的第i轮迭代训练中,根据当前梯度集合更新存储器中的稀疏阈值,包括:所述第一训练装置仅在所述第i轮迭代训练中,根据当前梯度集合中目标梯度的比例更新存储器中的稀疏阈值,其中,若所述比例大于或等于第一阈值,则所述第一训练装置减小所述存储器中的稀疏阈值,若所述比例小于或等于第二阈
值,则所述第一训练装置增大所述存储器中的稀疏阈值,所述当前梯度集合中包含所述第一训练装置在所述第i轮迭代训练中为所述神经网络计算的参数梯度,所述目标梯度包括小于或等于所述存储器中更新前的稀疏阈值的梯度。
[0019]
本实现方式中,因为在计算稀疏阈值时,不再对梯度进行排序,而是计算实际稀疏度,并对实际稀疏度和预设的稀疏度进行比较,并基于比较结果来更新稀疏阈值,因此可以节省对大量梯度进行排序所使用的时间和计算资源,从而可以提高计算稀疏阈值的效率,进而可以提高进行梯度稀疏处理的效率,最终可以提高神经网络的训练效率。
[0020]
其中,第一阈值或第二阈值即为预设的稀疏度,目标梯度的比例即为实际稀疏度。
[0021]
结合第四种可能的实现方式,在第五种可能的实现方式中,所述第一训练装置仅在所述第i轮迭代训练中,根据当前梯度集合中目标梯度的比例更新存储器中的稀疏阈值,包括:所述第一训练装置根据所述当前梯度集合和所述存储器中的稀疏阈值生成所述当前梯度集合对应的稀疏掩码矩阵,所述稀疏掩码矩阵中的每个元素的值为1表示所述每个元素对应的梯度大于所述存储器中的稀疏阈值,所述每个元素的值为0表示所述每个元素对应的梯度小于或等于所述存储器中的稀疏阈值;所述第一训练装置根据所述稀疏掩码矩阵中值为0的元素的数量计算所述比例,其中,所述稀疏掩码矩阵中所有元素的和、所述稀疏掩码矩阵中的所有元素的个数和所述比例之间满足如下关系式:
[0022]
sparse ratio=1-sum(mask)/size(mask)
[0023]
如果sparse ratio-sr>ε,则th
new
=th-α*th;如果sparse ratio-sr<-ε,则th
new
=th α*th;
[0024]
其中,sparse ratio表示所述稀疏掩码矩阵中值为0的元素所占的比例,sum(mask)表示所述稀疏掩码矩阵中所有元素的和,size(mask)表示所述稀疏掩码矩阵中的所有元素的数量,th
new
表示所述新稀疏阈值,th表示所述存储器中更新前的稀疏阈值,sr是预设的稀疏度,α是每次更新阈值的步长,ε是一个预设的超参数。
[0025]
其中,sr与ε的和为第一阈值的一种示例,sr减去ε所得的差为第二阈值的一种示例。
[0026]
第二方面,一种神经网络的梯度稀疏方法。所述梯度稀疏方法应用于分布式训练系统中,所述分布式训练系统用于对所述神经网络进行n轮迭代训练,所述分布式训练系统中包括m个训练装置,所述m个训练装置中的每个训练装置中部署有所述神经网络,n和m为大于1的正整数。
[0027]
所述方法包括:所述n轮迭代训练中的第i轮迭代训练中,所述m个训练装置中的第一训练装置根据当前梯度集合更新存储器中的稀疏阈值,所述当前梯度集合中包含所述第一训练装置在所述第i轮迭代训练中为所述神经网络计算的参数梯度,i为小于或等于n的正整数,且i大于1;在所述第i轮迭代训练中,所述第一训练装置使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理,得到所述稀疏梯度;并且,在所述第i轮迭代训练中,所述第一训练装置根据所述当前梯度集合更新所述存储器中的稀疏阈值,与所述第一训练装置使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理,并行执行。
[0028]
本方法中,因为第一训练装置在当前轮次迭代过程中,进行梯度稀疏所使用的稀疏阈值为之前轮次中计算得到的稀疏阈值,而不必等到当前轮次更新得到新的稀疏阈值之
后才对梯度进行稀疏处理,所以在本轮中可以稀疏阈值的更新和梯度稀疏处理并行处理,从而可以降低梯度稀疏的时延,进而可以提高神经网络的训练效率。
[0029]
结合第二方面,在第一种可能的实现方式中,所述m个训练装置中的第一训练装置根据当前梯度集合更新存储器中的稀疏阈值,包括:所述第一训练装置根据当前梯度均值、历史梯度均值、当前梯度标准差、历史梯度标准差和存储器中的稀疏阈值计算得到新稀疏阈值,并将所述存储器中的稀疏阈值更新为所述新稀疏阈值,所述当前梯度均值为所述当前梯度集合中的梯度的均值,所述历史梯度均值为历史梯度集合中的梯度的均值,所述历史梯度集合中包括所述第一训练装置计算所述存储器中更新前的稀疏阈值所使用的参数梯度,所述当前梯度标准差为所述当前梯度集合中的梯度的标准差,所述历史梯度标准差为所述历史梯度集合中的梯度的标准差,所述存储器中更新前的稀疏阈值和所述历史梯度均值之间的映射关系与所述存储器中更新后的稀疏阈值与所述当前梯度均值之间的映射关系相同。
[0030]
本实现方式中,因为在计算稀疏阈值时,不再对梯度进行排序,而是基于之前的稀疏阈值,利用数据运算方法计算得到当前轮次的稀疏阈值,因此可以节省对大量梯度进行排序所使用的时间和计算资源,从而可以提高计算稀疏阈值的效率,进而可以提高进行梯度稀疏处理的效率,最终可以提高神经网络的训练效率。
[0031]
结合第一种可能的实现方式,在第二种可能的实现方式中,所述新稀疏阈值、所述当前梯度均值、所述历史梯度均值、所述当前梯度标准差、所述历史梯度标准差与所述存储器中更新前的稀疏阈值之间满足如下关系式:
[0032][0033]
其中,th
new
表示所述新稀疏阈值,th表示所述存储器中更新前的稀疏阈值,μ表示所述历史梯度均值,μ
new
表示所述当前梯度均值,σ表示所述历史梯度标准差,σ
new
表示所述当前梯度标准差。
[0034]
结合第二方面,在第三种可能的实现方式中,所述m个训练装置中的第一训练装置根据当前梯度集合更新存储器中的稀疏阈值,包括:根据所述当前梯度集合中目标梯度的比例更新存储器中的稀疏阈值,其中,若所述比例大于或等于第一阈值,则所述第一训练装置减小所述存储器中的稀疏阈值,若所述比例小于或等于第二阈值,则所述第一训练装置增大所述存储器中的稀疏阈值,所述目标梯度包括小于或等于所述存储器中更新前的稀疏阈值的梯度。
[0035]
本实现方式中,因为在计算稀疏阈值时,不再对梯度进行排序,而是对当前实际稀疏度和预设稀疏度进行比较,并基于比较结果来更新稀疏阈值,因此可以节省对大量梯度进行排序所使用的时间和计算资源,从而可以提高计算稀疏阈值的效率,进而可以提高进行梯度稀疏处理的效率,最终可以提高神经网络的训练效率。
[0036]
其中,第一阈值或第二阈值即为预设的稀疏度,目标梯度的比例即为实际稀疏度。
[0037]
结合第三种可能的实现方式,在第四种可能的实现方式中,其特征在于所述第一训练装置根据所述当前梯度集合中目标梯度的比例更新存储器中的稀疏阈值,包括:所述第一训练装置根据所述当前梯度集合和所述存储器中的稀疏阈值生成所述当前梯度集合对应的稀疏掩码矩阵,所述稀疏掩码矩阵中的每个元素的值为1表示所述每个元素对应的
梯度大于所述存储器中的稀疏阈值,所述每个元素的值为0表示所述每个元素对应的梯度小于或等于所述存储器中的稀疏阈值;所述第一训练装置根据所述稀疏掩码矩阵中值为0的元素的数量计算所述比例,其中,所述稀疏掩码矩阵中所有元素的和、所述稀疏掩码矩阵中的所有元素的个数和所述比例之间满足如下关系式:
[0038]
sparse ratio=1-sum(mask)/size(mask)
[0039]
如果sparse ratio-sr>ε,则th
new
=th-α*th;如果sparse ratio-sr<-ε,则th
new
=th α*th;
[0040]
其中,sparse ratio表示所述稀疏掩码矩阵中值为0的元素所占的比例,sum(mask)表示所述稀疏掩码矩阵中所有元素的和,size(mask)表示所述稀疏掩码矩阵中的所有元素的数量,th
new
表示所述新稀疏阈值,th表示所述存储器中更新前的稀疏阈值,sr是预设的稀疏度,α是每次更新阈值的步长,ε是一个预设的超参数。
[0041]
其中,sr与ε的和为第一阈值的一种示例,sr减去ε所得的差为第二阈值的一种示例。
[0042]
结合第二方面或上述任意一种可能的实现方式,在第五种可能的实现方式中,所述i为m的整数倍,m为大于1且小于n的整数。
[0043]
本实现方式中,因为不需要每轮迭代都更新稀疏阈值,而是每隔m轮才更新一次稀疏阈值,因此每隔m轮就可以节省m-1轮迭代训练中更新稀疏阈值的时间,从而可以提高神经网络的训练效率。
[0044]
第三方面,本技术提供了一种神经网络的梯度稀疏方法。所述梯度稀疏方法应用于分布式训练系统中,所述分布式训练系统用于对所述神经网络进行n轮迭代训练,所述分布式训练系统中包括m个训练装置,所述m个训练装置中的每个训练装置中部署有所述神经网络,n和m为大于1的正整数,所述方法包括:所述n轮迭代训练中的第i轮迭代训练中,所述第一训练装置根据当前梯度均值、历史梯度均值、当前梯度标准差、历史梯度标准差和存储器中的稀疏阈值计算得到新稀疏阈值,并将所述存储器中的稀疏阈值更新为所述新稀疏阈值,所述当前梯度均值为当前梯度集合中的梯度的均值,所述历史梯度均值为历史梯度集合中的梯度的均值,所述历史梯度集合中包括所述第一训练装置计算所述存储器中更新前的稀疏阈值所使用的参数梯度,所述当前梯度集合中包含所述第一训练装置在所述第i轮迭代训练中为所述神经网络计算的参数梯度,所述当前梯度标准差为所述当前梯度集合中的梯度的标准差,所述历史梯度标准差为所述历史梯度集合中的梯度的标准差,所述存储器中更新前的稀疏阈值和所述历史梯度均值之间的映射关系与所述存储器中更新后的稀疏阈值与所述当前梯度均值之间的映射关系相同,i为小于或等于n的正整数;在所述第i轮迭代训练中,所述第一训练装置使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理,得到稀疏梯度。
[0045]
本方法中,因为在计算稀疏阈值时,不再对梯度进行排序,而是基于之前的稀疏阈值,利用数据运算方法计算得到当前轮次的稀疏阈值,因此可以节省对大量梯度进行排序所使用的时间和计算资源,从而可以提高计算稀疏阈值的效率,进而可以提高进行梯度稀疏处理的效率,最终可以提高神经网络的训练效率。
[0046]
结合第三方面,在第一种可能的实现方式中,所述新稀疏阈值、所述当前梯度均值、所述历史梯度均值、所述当前梯度标准差、所述历史梯度标准差与所述存储器中更新前
的稀疏阈值之间满足如下关系式:
[0047][0048]
其中,th
new
表示所述新稀疏阈值,th表示所述存储器中更新前的稀疏阈值,μ表示所述历史梯度均值,μ
new
表示所述当前梯度均值,σ表示所述历史梯度标准差,σ
new
表示所述当前梯度标准差。
[0049]
结合第三方面或第一种可能的实现方式,在第二种可能的实现方式中,所述第一训练装置根据当前梯度均值、历史梯度均值、当前梯度标准差、历史梯度标准差和存储器中的稀疏阈值计算得到新稀疏阈值,与所述第一训练装置使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理,并行执行。
[0050]
该实现方式中,因为第一训练装置在当前轮次迭代过程中,进行梯度稀疏所使用的稀疏阈值为之前轮次中计算得到的稀疏阈值,而不必等到当前轮次更新得到新的稀疏阈值之后才对梯度进行稀疏处理,所以在本轮中可以稀疏阈值的更新和梯度稀疏处理并行处理,从而可以降低梯度稀疏的时延,进而可以提高神经网络的训练效率。
[0051]
结合第三方面或上述任意一种可能的实现方式,在第三种可能的实现方式中,所述i为m的整数倍,m为大于1且小于n的整数。
[0052]
该实现方式中,因为不需要每轮迭代都更新稀疏阈值,而是每隔m轮才更新一次稀疏阈值,因此每隔m轮就可以节省m-1轮迭代训练中更新稀疏阈值的时间,从而可以提高神经网络的训练效率。
[0053]
第四方面,本技术提供了一种神经网络的梯度稀疏方法。所述梯度稀疏方法应用于分布式训练系统中,所述分布式训练系统用于对所述神经网络进行n轮迭代训练,所述分布式训练系统中包括m个训练装置,所述m个训练装置中的每个训练装置中部署有所述神经网络,n和m为大于1的正整数,所述方法包括:所述n轮迭代训练中的第i轮迭代训练中,所述第一训练装置根据当前梯度集合中目标梯度的比例更新存储器中的稀疏阈值,其中,若所述比例大于或等于第一阈值,则所述第一训练装置减小所述存储器中的稀疏阈值,若所述比例小于或等于第二阈值,则所述第一训练装置增大所述存储器中的稀疏阈值,所述当前梯度集合中包含所述第一训练装置在所述第i轮迭代训练中为所述神经网络计算的参数梯度,所述目标梯度包括小于或等于所述存储器中更新前的稀疏阈值的梯度,i为小于n的正整数,且i大于1,n为正整数;在所述第i轮迭代训练中,所述第一训练装置使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理,得到稀疏梯度。
[0054]
该实现方式中,因为在计算稀疏阈值时,不再对梯度进行排序,而是计算实际稀疏度,并对实际稀疏度和预设的稀疏度进行比较,并基于比较结果来更新稀疏阈值,因此可以节省对大量梯度进行排序所使用的时间和计算资源,从而可以提高计算稀疏阈值的效率,进而可以提高进行梯度稀疏处理的效率,最终可以提高神经网络的训练效率。
[0055]
其中,第一阈值或第二阈值即为预设的稀疏度,目标梯度的比例即为实际稀疏度。
[0056]
结合第四方面,在第一种可能的实现方式中,所述第一训练装置仅在所述第i轮迭代训练中,根据当前梯度集合中目标梯度的比例更新存储器中的稀疏阈值,包括:所述第一训练装置根据所述当前梯度集合和所述存储器中的稀疏阈值生成所述当前梯度集合对应的稀疏掩码矩阵,所述稀疏掩码矩阵中的每个元素的值为1表示所述每个元素对应的梯度
大于所述存储器中的稀疏阈值,所述每个元素的值为0表示所述每个元素对应的梯度小于或等于所述存储器中的稀疏阈值;所述第一训练装置根据所述稀疏掩码矩阵中值为0的元素的数量计算所述比例,其中,所述稀疏掩码矩阵中所有元素的和、所述稀疏掩码矩阵中的所有元素的个数和所述比例之间满足如下关系式:
[0057]
sparse ratio=1-sum(mask)/size(mask)
[0058]
如果sparse ratio-sr>ε,则th
new
=th-α*th;如果sparse ratio-sr<-ε,则th
new
=th α*th;
[0059]
其中,sparse ratio表示所述稀疏掩码矩阵中值为0的元素所占的比例,sum(mask)表示所述稀疏掩码矩阵中所有元素的和,size(mask)表示所述稀疏掩码矩阵中的所有元素的数量,th
new
表示所述新稀疏阈值,th表示所述存储器中更新前的稀疏阈值,sr是预设的稀疏度,α是每次更新阈值的步长,ε是一个预设的超参数。
[0060]
其中,sr与ε的和为第一阈值的一种示例,sr减去ε所得的差为第二阈值的一种示例。
[0061]
结合第四方面或第一种可能的实现方式,在第二种可能的实现方式中,所述第一训练装置根据当前梯度集合中目标梯度的比例更新存储器中的稀疏阈值,与在所述第i轮迭代训练中,所述第一训练装置使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理,并行执行。
[0062]
该实现方式中,因为第一训练装置在当前轮次迭代过程中,进行梯度稀疏所使用的稀疏阈值为之前轮次中计算得到的稀疏阈值,而不必等到当前轮次更新得到新的稀疏阈值之后才对梯度进行稀疏处理,所以在本轮中可以稀疏阈值的更新和梯度稀疏处理并行处理,从而可以降低梯度稀疏的时延,进而可以提高神经网络的训练效率。
[0063]
结合第四方面或上述任意一种可能的实现方式,在第三种可能的实现方式中,所述i为m的整数倍,m为大于1且小于n的整数。
[0064]
第五方面,本技术提供了一种神经网络的训练装置,该装置可以包括用于实现第一方面至第四方面中任意一方面或其中任意一种实现方式中的方法的各个功能模块,这些功能模块可以通过软件和/硬件的方式实现。
[0065]
第六方面,本技术提供了一种神经网络的训练装置,该装置可以包括与存储器耦合的处理器。其中,该存储器用于存储程序代码,该处理器用于执行该存储器中的程序代码,以实现第一方面至第四方面中任意一方面或其中任意一种实现方式中的方法。
[0066]
可选地,该装置还可以包括该存储器。
[0067]
该装置为电子设备时,在一些实现方式中,该装置还可以包括收发器,用于与其他设备通信。
[0068]
该装置为用于电子设备的芯片时,在一些实现方式中,该装置还可以包括通信接口,用于与电子设备中的其他装置通信,例如用于与电子设备的收发器进行通信。
[0069]
第七方面,本技术提供了一种计算机可读存储介质,该计算机可读介质存储用于处理器执行的程序代码,该程序代码包括用于实现第一方面至第四方面中任意一方面或其中任意一种可能的实现方式中的方法的指令。
[0070]
第八方面,本技术提供一种包含指令的计算机程序产品,当该计算机程序产品在处理器上运行时,使得该处理器实现第一方面至第四方面中任意一方面或其中任意一种实
现方式中的方法。
附图说明
[0071]
图1为本技术一个实施例提供的分布式训练系统的示意图;
[0072]
图2为本技术一个实施例的训练装置的示意性结构图;
[0073]
图3为本技术一个实施例的神经网络的梯度稀疏方法的示意性流程图;
[0074]
图4为本技术另一个实施例的神经网络的梯度稀疏方法的示意性流程图;
[0075]
图5为本技术又一个实施例的神经网络的梯度稀疏方法的示意性流程图;
[0076]
图6为本技术另一个实施例的神经网络的梯度稀疏方法的示意性流程图;
[0077]
图7为本技术另一个实施例的训练装置的示意性结构图。
具体实施方式
[0078]
为了更好地介绍本技术的实施例,下面先对本技术实施例中的相关概念进行介绍。
[0079]
1、神经网络
[0080]
人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
[0081]
当今人工智能的关键技术是神经网络(neural networks,nn)。神经网络通过模拟人脑神经细胞连接,将大量的、简单的处理单元(称为神经元)广泛互连,形成复杂的网络系统。
[0082]
一个简单的神经网络包含三个层次,分别是输入层、输出层和隐藏层(也称中间层),每一层之间的连接都对应一个权重(其值称为权值、参数)。神经网络之所以能在计算机视觉、自然语言处理等领域有出色性能,是因为通过训练算法调整权值,使神经网络的预测结果最佳。
[0083]
神经网络的训练一般包含两个计算步骤,第一步为前向计算,第二步为反向计算。其中,前向计算为:输入值与参数经过计算后,再经过一个非线性函数产生输出值。输出值或作为网络的最终输出,或将作为后续的输入值继续执行类似的计算。网络的输出值与对应样本的实际标签值的偏差,用模型损失函数来衡量,损失函数表示为输入样本x和网络参数w的函数f(x,w),为了使损失函数降至最小,需要不断调整网络的参数w,而反向计算是为了得到参数w的更新值,在基于梯度下降的算法中,反向计算从神经网络的最后一层开始,计算损失函数对每一层参数的偏导数,最后得到全部参数的偏导数,称为梯度。每次迭代时,把参数w以一定步长η向梯度的反方向更新,得到新的参数w,即完成一步训练。该更新过程用下式表示:
[0084][0085]
其中,w
t
表示第t次迭代时使用的参数,w
t 1
表示更新后的参数,η称为学习率,b
t

示第t次迭代输入的样本集合。
[0086]
训练神经网络的过程也就是对神经元对应的权重进行学习的过程,其最终目的是得到训练好的神经网络模型的每一层神经元对应的权重。
[0087]
2、分布式训练
[0088]
使用多个训练节点进行训练的方法。分布式训练通常分为两种并行化方法:数据并行和模型并行。
[0089]
在模型并行方式下,模型的层和参数将被分布在多个节点上,模型在一个mini-batch的前向和反向训练中,将经过多次跨节点之间的通信。每个节点只保存整个模型的一部分。
[0090]
在数据并行方式下,每个节点保存有完整的模型的层和参数,每个节点独自完成前向和反向计算,然后完成梯度的聚合并同步的更新所有节点上的参数。
[0091]
3、梯度
[0092]
梯度是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大,在模型训练中梯度用来找到最小损失函数,训练模型,加快模型的收敛。模型训练的次数即梯度的步数。
[0093]
4、梯度稀疏
[0094]
梯度稀疏是通过将梯度数据稀疏化并进一步编码压缩来减小实际通信的数据量,从而缓解分布式训练的通信带宽受限问题。梯度稀疏的一般方法是使用一个阈值作为稀疏的指示,当梯度的幅度小于阈值时将其置零,只有幅度大于阈值的梯度才会被传输。一般情况下,模型的梯度中含有大量幅度较小的值,这些值对模型参数更新作用很小,将这些值置零几乎不影响模型的最终精度,一般可以将95%~99%的梯度值置为零,并保持精度。
[0095]
下面将结合附图对本技术实施例的实施方式进行详细描述。
[0096]
图1为本技术一个实施例提供的分布式训练系统的示意图。如图1所示,本技术的应用场景以图1所示的例子为例进行描述,神经网络分布式训练系统主要由多个训练装置组成,这多个训练装置之间可以相互通信。本实施例中的训练装置可以是任意具有计算能力的设备、系统或芯片等。
[0097]
图2为本技术一个实施例的训练装置的示意性结构图。如图2所示,训练装置200可以包含ai芯片201。ai芯片201可以包括:用于执行梯度稀疏的稀疏模块202、数据压缩模块203、用于通信的接口204,解压缩模块205、梯度累加模块206和缓存单元207。
[0098]
其中,ai芯片201可以包含矩阵计算单元(ai cube)和向量计算单元(vector unit)。ai芯片可以是神经网络处理器(neural network processing unit,npu)和/或图形处理器(graphics processing unit,gpu)等,稀疏模块、数据压缩模块、解压缩模块和梯度累加模块可以通过中央处理器(center processing unit,cpu)来实现,也可以通过其他类型的处理器来实现。
[0099]
ai芯片201是训练神经网络最主要的计算单元,主要用于执行神经网络训练中的前向和反向计算。其中,矩阵计算单元主要用于完成神经网络训练的前向和反向计算,并将计算得到的梯度存入缓存单元;向量计算单元主要用于从缓存单元中读取来自矩阵计算单元的梯度数据,对梯度做进一步计算和修正,并将结果发送给稀疏模块;并且,向量计算单元还用于基于梯度更新稀疏阈值,将更新后的阈值发送给稀疏模块;
[0100]
稀疏模块202主要用于读取梯度数据,并对梯度数据执行稀疏操作。例如,稀疏模块根据配置在寄存器中的稀疏阈值,将低于阈值的梯度置零,然后把稀疏后的梯度发送至数据压缩模块;
[0101]
数据压缩模块203主要用于将稀疏后的梯度数据进行编码压缩,然后发送到通信接口。
[0102]
通信接口204用于发送和接收数据。
[0103]
解压缩模块205主要用于对通信接口204接收到的梯度数据进行解码解压后发送至梯度累加模块206。
[0104]
梯度累加模块206主要用于将解码后的稀疏梯度与本地的稀疏梯度累加。
[0105]
当前最主要的分布式训练方法为数据并行方式。以图1所示的分布式训练系统为例,分布式训练方法主要是在多个训练装置上分别同步一份相同的网络参数w,在每次迭代中,每个训练装置各自读取一批样本数据并计算对应的梯度,为了保证每个训练装置上的参数更新值相同,需要在每次迭代中把每个训练装置计算得到的梯度汇聚并同步到所有训练装置上,然后每个训练装置根据聚合后的梯度更新本地的权重w。网络的输出值与对应样本的实际标签值的偏差,用模型损失函数来衡量,损失函数表示为输入样本x和网络参数w的函数f(x,w),对其求偏导数为

f(x,w)。该权重更新过程可以表示为如下公式:
[0106][0107]
其中,x为输入值(也称为激活值,activation),b表示输入样本的组数,w
t
表示第t次迭代时使用的参数,w
t 1
表示更新后的参数,η称为学习率,n表示训练装置的个数,b
k,t
表示第k个设备在第t次迭代中的输入样本集合。
[0108]
在神经网络的训练过程中,分布式训练系统中各个训练装置可以对梯度先进行稀疏处理然后再传输,以达到节省带宽和加速训练的目的。
[0109]
现有技术中,各训练装置进行梯度稀疏压缩时,首先,每个训练装置复制一份相同的神经网络参数存储到本地,然后各自读取一批训练样本,通过前向和反向计算得到模型的梯度数据;随后,在每个训练装置上对本地的梯度值进行排序操作,并根据排序结果确定稀疏阈值,将低于稀疏阈值的梯度值置为0,得到稀疏后的梯度;最后,每个训练装置将稀疏后的梯度进行编码压缩,通过网卡等互连装置发送到其他训练装置,同时接收其他训练装置发送来的梯度。
[0110]
上述梯度稀疏方法中,由于每次都需要对梯度进行排序操作,耗时较多,因此,梯度稀疏处理的效率较低,从而影响神经网络的训练效率。
[0111]
针对上述梯度稀疏处理效率低的技术问题,本技术实施例提供了一种使用阈值自适应动态调整的方案,大大降低了计算量,同时还可以将阈值计算和更新操作与其他操作异步执行,避免了阈值计算和更新引入的额外耗时。
[0112]
图3为本技术一个实施例的神经网络的梯度稀疏方法的示意性流程图。如图3所示,该方法可以包括s301和s302。
[0113]
图3所示的方法可以应用于分布式训练系统中,该分布式训练系统用于对神经网络进行n轮迭代训练,该分布式训练系统中包括m个训练装置,这m个训练装置中的每个训练装置中部署有相同的神经网络,n和m为大于1的正整数。n可以是预先设置好的,也可以是由
训练装置中设置的训练结束条件决定的。
[0114]
s301,在n轮迭代训练中的第i轮迭代训练中,第一训练装置根据当前梯度均值、历史梯度均值、当前梯度标准差、历史梯度标准差和第一训练装置的存储器中的稀疏阈值计算得到新稀疏阈值,并将所述存储器中的稀疏阈值更新为所述新稀疏阈值,当前梯度均值为当前梯度集合中的梯度的均值,历史梯度均值为历史梯度集合中的梯度的均值,历史梯度集合中包括第一训练装置计算所述存储器中更新前的稀疏阈值所使用的参数梯度,当前梯度集合中包含第一训练装置在第i轮迭代训练中为所述神经网络计算的参数梯度,所述当前梯度标准差为所述当前梯度集合中的梯度的标准差,所述历史梯度标准差为所述历史梯度集合中的梯度的标准差,所述存储器中更新前的稀疏阈值和历史梯度均值之间的映射关系与所述存储器中更新后的稀疏阈值和当前梯度均值之间的映射关系相同,i为小于或等于n的正整数。
[0115]
例如,第一训练装置中的ai芯片中的向量计算单元从寄存器中读取稀疏阈值、历史梯度均值和历史梯度标准差,并基于矩阵计算单元计算得到的当前梯度集合计算当前梯度均值和当前梯度标准差,以及基于读取的稀疏阈值、历史梯度均值、历史梯度标准差和计算得到的当前梯度均值、当前梯度标准差计算得到新的稀疏阈值。
[0116]
本实施例中,第一训练装置可以是m个训练装置中的任意一个训练装置。作为一种示例,这m个训练装置中任意一个训练装置均为第一训练装置,换句话说,这m个训练装置中每个训练装置执行的操作均与第一训练装置执行的操作相同。
[0117]
作为一种示例,存储器中更新前的稀疏阈值可以为第一训练装置在第i-m轮迭代训练中计算得到的稀疏阈值。此时,历史梯度集合为第一训练装置在第i-m轮迭代训练中计算得到的梯度构成的集合,m为正整数,且m小于或等于n。
[0118]
s302,在第i轮迭代训练中,第一训练装置使用存储器中的稀疏阈值对当前梯度集合中的梯度进行稀疏处理,得到稀疏梯度。
[0119]
例如,第一训练装置中的稀疏模块从第一训练装置的存储器中读取稀疏阈值,并基于该稀疏阈值对矩阵计算单元计算得到的当前梯度集合进行稀疏处理。
[0120]
第一训练装置使用从存储器中读取的稀疏阈值对当前梯度集合中的梯度进行稀疏处理的实现方式以及后续处理流程,可以参考现有技术。
[0121]
例如,稀疏模块可以将当前梯度集合中小于该稀疏阈值的梯度值置为0,并将稀疏后的梯度发送至数据压缩模块;数据压缩模块对稀疏后的梯度进行编码压缩,并将压缩得到的数据发送到通信接口;通信接口向其他训练装置发送将压缩后的数据;第一训练装置的通信接口接收到其他训练装置发送的数据后,由解压缩模块还原出其他训练装置上的稀疏梯度,并发送到梯度累加模块,由梯度累加模块将第一训练装置本地的稀疏梯度与来自其他训练装置的梯度进行累加,以及将累加结果存入缓存单元。每个训练装置上均可以执行步骤s301和s302,直到完成各个训练装置上的梯度聚合,然后各训练装置用累加后的梯度更新本地的神经网络的网络参数。
[0122]
因为本实施例在计算稀疏阈值时,不再对梯度进行排序,而是基于之前的稀疏阈值,利用数据运算方法计算得到当前轮次的稀疏阈值,因此可以节省对大量梯度进行排序所使用的时间和计算资源,从而可以提高计算稀疏阈值的效率,进而可以提高进行梯度稀疏处理的效率,最终可以提高神经网络的训练效率。
[0123]
本实施例中,第一训练装置根据更新前的稀疏阈值、当前梯度均值和历史梯度均值计算新稀疏阈值时,应使得更新前的稀疏阈值和历史梯度均值之间的映射关系,与新稀疏阈值与当前梯度均值之间的映射关系相同。
[0124]
作为一个示例,更新前的稀疏阈值与历史梯度均值之间的映射关系可以为新稀疏阈值与当前梯度均值之间的映射关系也为其中,th
new
表示新稀疏阈值,th表示更新前的稀疏阈值,μ表示历史梯度均值,μ
new
表示当前梯度均值,σ表示历史梯度标准差,历史梯度标准差为历史梯度集合中的梯度的标准差,σ
new
表示当前梯度标准差,当前梯度标准差为当前梯度集合中的梯度的标准差。
[0125]
基于上述映射关系,计算新稀疏阈值时,新稀疏阈值与当前梯度均值、历史梯度均值以及更新前的稀疏阈值之间可以满足如下关系式:
[0126][0127]
可以理解的是,上述关系式仅是一种示例,对上述关系式进行任意线性变换得到的关系式都属于本技术的保护范围。
[0128]
本实施例的一些实现方式中,s301和s302可以串行执行,即第一训练装置在执行完s301之后再执行s302。也就是说,第一训练装置在第i轮更新稀疏阈值后,再使用更新后的稀疏阈值来进行梯度稀疏处理。
[0129]
本实施例的另一些实现方式中,s301和s302可以并行执行,即第一训练装置在执行s301以更新稀疏阈值的同时,还可以使用存储器中已有的稀疏阈值来进行梯度稀疏处理。也就是说,第一训练装置在第i轮中进行梯度稀疏时可以使用之前轮次中计算得到的稀疏阈值,并且,在第i轮中更新得到的稀疏阈值用于后面轮次的梯度稀疏。
[0130]
该实现方式中,因为第一训练装置在当前轮次迭代过程中,进行梯度稀疏所使用的稀疏阈值为之前轮次中计算得到的稀疏阈值,而不必等到当前轮次更新得到新的稀疏阈值之后才对梯度进行稀疏处理,所以在本轮中可以稀疏阈值的更新和梯度稀疏处理并行处理,从而可以降低梯度稀疏的时延,进而可以提高神经网络的训练效率。
[0131]
本实施例的一种实现方式中,第一训练装置可以仅在部分轮次迭代训练中使用s301中的方法来更新稀疏阈值。该实现方式中,由于不是每一轮次都需要进行稀疏阈值的更新,因此可以进一步提高神经网络的训练效率。
[0132]
作为一个示例,在第一轮迭代训练过程中,可以使用现有技术中排序的方法来获取稀疏阈值,然后在第二轮至第n轮迭代训练中的全部轮次的迭代训练中,可以使用s301中的方法来计算并更新稀疏阈值。
[0133]
作为另一个示例,第一训练装置可以每隔m轮使用s301中的方法计算并更新一次稀疏阈值。该示例中,i可以为m的整数倍,即训练轮次为m的整数倍时,在该训练轮次使用s301中的方法更新稀疏阈值。m为大于1的整数,且m小于n。m的大小可以是根据经验设置。
[0134]
本示例中,因为不需要每轮迭代都更新稀疏阈值,而是每隔m轮才更新一次稀疏阈值,因此每隔m轮就可以节省m-1轮迭代训练中更新稀疏阈值的时间,从而可以提高神经网络的训练效率。
[0135]
图4为本技术另一个实施例的神经网络的梯度稀疏方法的示意性流程图。如图4所
示,该方法可以包括s401和s402。
[0136]
图4所示的方法可以应用于分布式训练系统中,该分布式训练系统用于对神经网络进行n轮迭代训练,该分布式训练系统中包括m个训练装置,这m个训练装置中的每个训练装置中部署有相同的神经网络,n和m为大于1的正整数。n可以是预先设置好的,也可以是由训练装置中设置的训练结束条件决定的。
[0137]
s401,在n轮迭代训练中的第i轮迭代训练中,第一训练装置根据当前梯度集合中目标梯度的比例更新存储器中的稀疏阈值,其中,若该比例大于或等于第一阈值,则第一训练装置减小存储器中的稀疏阈值,若该比例小于或等于第二阈值,则第一训练装置增大存储器中的稀疏阈值,当前梯度集合中包含第一训练装置在第i轮迭代训练中为神经网络计算的参数梯度,目标梯度包括小于或等于存储器中更新前的稀疏阈值的梯度,i为小于n的正整数,且i大于1,n为正整数。
[0138]
例如,图7所示的第一训练装置中的阈值更新模块208从寄存器中读取稀疏阈值,并基于从稀疏模块获得到的当前梯度集合对应的掩码(mask)矩阵计算新的稀疏阈值,并将新的稀疏阈值写入存储器,以更新存储器中的稀疏阈值,或者将新的稀疏阈值发送给稀疏模块,由稀疏模块将该新的稀疏阈值写入存储器中。
[0139]
本实施例中,目标梯度的比例可以称为当前实际的稀疏度。本实施例中,第一训练装置可以是m个训练装置中的任意一个训练装置。作为一种示例,这m个训练装置中任意一个训练装置均为第一训练装置,换句话说,这m个训练装置中每个训练装置执行的操作均与第一训练装置执行的操作相同。
[0140]
作为一种示例,存储器中更新前的稀疏阈值可以为第一训练装置在第i轮之前的迭代训练中计算得到的稀疏阈值。
[0141]
例如,存储器中更新前的稀疏阈值可以为第一训练装置在第i-1轮迭代训练中计算得到的稀疏阈值。
[0142]
本实施例中,第一阈值大于第二阈值。第一阈值和第二阈值可以是预先基于经验设置好的。
[0143]
s402,在第i轮迭代训练中,第一训练装置使用存储器中的稀疏阈值对当前梯度集合中的梯度进行稀疏处理,得到稀疏梯度。
[0144]
因为本实施例在计算稀疏阈值时,不再对梯度进行排序,而是对当前实际稀疏度和预设的稀疏度进行比较,并基于比较结果来更新稀疏阈值,因此可以节省对大量梯度进行排序所使用的时间和计算资源,从而可以提高计算稀疏阈值的效率,进而可以提高进行梯度稀疏处理的效率,最终可以提高神经网络的训练效率。
[0145]
本实施例中,第一训练装置根据存储器中的稀疏阈值确定当前梯度集合中目标梯度的比例时,在一种实现方式中,第一训练装置可以依次将当前梯度集合中的梯度与存储器中的稀疏阈值做比较,并统计当前梯度集合中小于或等于存储器中的稀疏阈值的梯度的总数,以及计算该总数与当前梯度集合中的梯度的总数的比例。
[0146]
作为一个示例,第一训练装置可以根据当前梯度集合和存储器中的稀疏阈值生成当前梯度集合对应的稀疏掩码矩阵,该稀疏掩码矩阵中的每个元素的值为1表示该元素对应的梯度大于存储器中的稀疏阈值,每个元素的值为0表示该元素对应的梯度小于或等于存储器中的稀疏阈值;然后,第一训练装置可以根据稀疏掩码矩阵中值为0的元素的数量计
算前述比例。
[0147]
例如,可以通过下面的方式得到当前梯度集合中目标梯度的比例:第一训练装置生成与当前梯度集合对应的稀疏掩码矩阵,该稀疏掩码(mask)矩阵中的每个元素的值均初始化为1;根据存储器中的稀疏阈值,依次比较当前梯度集合中每个梯度与存储器中的稀疏阈值的大小,若进行比较的梯度大于存储器中的稀疏阈值,将稀疏掩码矩阵中与该梯度对应的元素的值置为0。最终得到的稀疏掩码矩阵中,大于存储器中的稀疏阈值的梯度对应的元素的值均为1,小于或等于存储器中的稀疏阈值的梯度对应的元素的值均为0。
[0148]
稀疏掩码矩阵中所有元素的和、稀疏掩码矩阵中的所有元素的个数和所述比例之间应满足的一种关系式如下:
[0149]
sparse ratio=1-sum(mask)/size(mask)
[0150]
其中,sparse ratio表示所述稀疏掩码矩阵中值为0的元素所占的比例,sum(mask)表示所述稀疏掩码矩阵中所有元素的和,size(mask)表示所述稀疏掩码矩阵中的所有元素的数量。
[0151]
可以理解的是,上述关系式仅是一种示例,例如,可以直接对稀疏矩阵中值为1的元素的数量进行计数,然后根据计数结果和当前梯度集合中梯度的数量计算前述比例。
[0152]
本实施例中,基于目标梯度的比例更新存储器中的稀疏阈值的一种实现方式如下:
[0153]
如果sparse ratio-sr>ε,则th
new
=th-α*th;如果sparse ratio-sr<-ε,则th
new
=th α*th。
[0154]
其中,th
new
表示所述新稀疏阈值,th表示所述存储器中更新前的稀疏阈值,sr是预设的稀疏度,α是每次更新阈值的步长,ε是一个预设的超参数。α的值也可以是预先设置好的。
[0155]
本实施例中,sr与ε的和为第一阈值的一种示例,sr减去ε所得的差为第二阈值的一种示例。
[0156]
本实施例的一些实现方式中,s401和s402可以串行执行,即第一训练装置在执行完s401之后再执行s402。也就是说,第一训练装置在第i轮更新稀疏阈值后,再使用更新后的稀疏阈值来进行梯度稀疏处理。
[0157]
本实施例的另一些实现方式中,s401和s402可以并行执行,即第一训练装置在执行s401以更新稀疏阈值的同时,还可以使用存储器中已有的稀疏阈值来进行梯度稀疏处理。也就是说,第一训练装置在第i轮中进行梯度稀疏时可以使用之前轮次中计算得到的稀疏阈值,并且,在第i轮中更新得到的稀疏阈值用于后面轮次的梯度稀疏。
[0158]
该实现方式中,因为第一训练装置在当前轮次迭代过程中,进行梯度稀疏所使用的稀疏阈值为之前轮次中计算得到的稀疏阈值,而不必等到当前轮次更新得到新的稀疏阈值之后才对梯度进行稀疏处理,所以在本轮中可以稀疏阈值的更新和梯度稀疏处理并行处理,从而可以降低梯度稀疏的时延,进而可以提高神经网络的训练效率。
[0159]
本实施例的一种实现方式中,第一训练装置可以仅在部分轮次迭代训练中使用s401中的方法来更新稀疏阈值。该实现方式中,由于不是每一轮次都需要进行稀疏阈值的更新,因此可以进一步提高神经网络的训练效率。
[0160]
作为一个示例,在第一轮迭代训练过程中,可以使用现有技术中排序的方法来获
取稀疏阈值,然后在第二轮至第n轮迭代训练中的全部轮次的迭代训练中,可以使用s401中的方法来计算并更新稀疏阈值。
[0161]
作为另一个示例,第一训练装置可以每隔m轮使用s401中的方法计算并更新一次稀疏阈值。该示例中,i可以为m的整数倍,即训练轮次为m的整数倍时,在该训练轮次使用s401中的方法更新稀疏阈值。m为大于1的整数,且m小于n。m的大小可以是根据经验设置。
[0162]
本示例中,因为不需要每轮迭代都更新稀疏阈值,而是每隔m轮才更新一次稀疏阈值,因此每隔m轮就可以节省m-1轮迭代训练中更新稀疏阈值的时间,从而可以提高神经网络的训练效率。
[0163]
图5为本技术又一个实施例的神经网络的梯度稀疏方法的示意性流程图。如图5所示,该方法可以包括s501和s502。
[0164]
图5所示的方法可以应用于分布式训练系统中,该分布式训练系统用于对神经网络进行n轮迭代训练,该分布式训练系统中包括m个训练装置,这m个训练装置中的每个训练装置中部署有相同的神经网络,n和m为大于1的正整数。n可以是预先设置好的,也可以是由训练装置中设置的训练结束条件决定的。
[0165]
s501,在n轮迭代训练中的第i轮迭代训练中,第一训练装置根据当前梯度集合更新存储器中的稀疏阈值,当前梯度集合中包含第一训练装置在第i轮迭代训练中为神经网络计算的参数梯度,i为小于或等于n的正整数,且i大于1。
[0166]
本实施例的一些实现方式中,根据当前梯度集合来更新稀疏阈值的实现方式可以参考s301中的相关内容,也可以参考s401中的相关内容,或者,还可以使用现有技术中的方法,例如通过排序方式获取稀疏阈值。
[0167]
s502,在第i轮迭代训练中,第一训练装置使用所述存储器中的稀疏阈值对所述当前梯度集合中的梯度进行稀疏处理以得到稀疏梯度,并且,第一训练装置根据当前梯度集合更新存储器中的稀疏阈值,与第一训练装置使用存储器中的稀疏阈值对当前梯度集合中的梯度进行稀疏处理,并行执行。
[0168]
例如,第一训练装置中的稀疏模块从第一训练装置的存储器中读取稀疏阈值,并基于该稀疏阈值对矩阵计算单元计算得到的当前梯度集合进行稀疏处理。
[0169]
第一训练装置使用从存储器中读取的稀疏阈值对当前梯度集合中的梯度进行稀疏处理的实现方式以及后续处理流程,可以参考现有技术。
[0170]
第一训练装置根据当前梯度集合更新存储器中的稀疏阈值,与第一训练装置使用存储器中的稀疏阈值对当前梯度集合中的梯度进行稀疏处理并行执行,可以理解为:第一训练装置使用第i轮之前的迭代轮次中更新得到的稀疏阈值来进行第i轮的梯度稀疏处理,并在第i轮计算新的稀疏阈值,该新的稀疏阈值用于第i轮以后的迭代轮次中进行梯度稀疏处理。
[0171]
本实施例的方法中,因为第一训练装置在当前轮次迭代过程中,进行梯度稀疏所使用的稀疏阈值为之前轮次中计算得到的稀疏阈值,而不必等到当前轮次更新得到新的稀疏阈值之后才对梯度进行稀疏处理,所以在本轮中可以稀疏阈值的更新和梯度稀疏处理并行处理,从而可以降低梯度稀疏的时延,进而可以提高神经网络的训练效率。
[0172]
本实施例的一些实现方式中,在第i轮迭代训练中,第一训练装置可以每隔m轮使用s501中的方法计算并更新一次稀疏阈值。该示例中,i可以为m的整数倍,即训练轮次为m
的整数倍时,在该训练轮次使用s501中的方法更新稀疏阈值。m为大于1的整数,且m小于n。m的大小可以是根据经验设置。
[0173]
本实现方式中,因为不需要每轮迭代都更新稀疏阈值,而是每隔m轮才更新一次稀疏阈值,因此每隔m轮就可以节省m-1轮迭代训练中更新稀疏阈值的时间,从而可以提高神经网络的训练效率。
[0174]
图6为本技术另一个实施例的神经网络的梯度稀疏方法的示意性流程图。如图6所示,该方法可以包括s601和s602。
[0175]
图6所示的方法可以应用于分布式训练系统中,该分布式训练系统用于对神经网络进行n轮迭代训练,该分布式训练系统中包括m个训练装置,这m个训练装置中的每个训练装置中部署有相同的神经网络,n和m为大于1的正整数。n可以是预先设置好的,也可以是由训练装置中设置的训练结束条件决定的。
[0176]
s601,第一训练装置仅在n轮迭代训练中的第i轮迭代训练中,根据当前梯度集合更新存储器中的稀疏阈值,当前梯度集合中包含第一训练装置在第i轮迭代训练中为神经网络计算的参数梯度,i为小于n的正整数,且i为m的整数倍,m为小于n且大于1的整数。
[0177]
本实施例中,第一训练装置仅在n轮迭代训练中的第i轮迭代训练中根据当前梯度集合更新存储器中的稀疏阈值,且i为m的整数倍,m大于1,可以理解为:在n轮迭代训练中,第一训练装置每隔m轮使用更新一次稀疏阈值。m的大小可以是根据经验设置。
[0178]
也就是说,本实施例的方法中,n轮迭代训练中,迭代轮次为m的整数倍时,可以在迭代轮次更新稀疏阈值和进行梯度稀疏处理;迭代轮次不是m的整数倍时,可以不更新稀疏阈值,仅进行梯度稀疏处理。
[0179]
本实施例中,根据当前梯度集合来更新稀疏阈值的实现方式可以参考s301中的相关内容,也可以参考s401中的相关内容,此处不再赘述。
[0180]
s602,在第i轮迭代训练中,第一训练装置使用存储器中的稀疏阈值对当前梯度集合中的梯度进行稀疏处理,得到稀疏梯度。
[0181]
本实施例中,因为不需要每轮迭代都更新稀疏阈值,而是每隔m轮才更新一次稀疏阈值,因此每隔m轮就可以节省m-1轮迭代训练中更新稀疏阈值的时间,从而可以提高神经网络的训练效率。
[0182]
本实施例的一些实现方式中,在迭代轮次为m的整数倍,即i为m的整数倍的情况下,既进行梯度稀疏处理又更新稀疏阈值。这种实现方式中,更新稀疏阈值和梯度稀疏处理可以随路执行,即串行执行;或者,更新稀疏阈值和梯度稀疏处理可以并行执行,即梯度稀疏处理所使用的稀疏阈值为当前轮次之前计算得到的稀疏阈值,当前轮次更新后的稀疏阈值用于之后轮次的梯度稀疏处理。
[0183]
第一训练装置在当前轮次迭代过程中,进行梯度稀疏所使用的稀疏阈值为之前轮次中计算得到的稀疏阈值,而不必等到当前轮次更新得到新的稀疏阈值之后才对梯度进行稀疏处理,即在本轮中可以稀疏阈值的更新和梯度稀疏处理并行处理,可以降低梯度稀疏的时延,从而可以提高神经网络的训练效率。
[0184]
图7为本技术一个实施例的训练装置的示意性结构图。如图7所示,训练装置700中的ai芯片201可以包括稀疏模块202、数据压缩模块203、接口204,解压缩模块205、梯度累加模块206、缓存单元207和阈值更新模块208。图7中的模块201至207的含义可以参考图2中的
相同模块的含义,此处不再赘述。
[0185]
阈值更新模块208用于:接收来自稀疏模块202的稀疏mask,并基于该稀疏mask计算新的阈值,将新的阈值发送给稀疏模块208。
[0186]
本技术说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
[0187]
在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0188]
在本技术的实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。在本技术的文字描述中,字符“/”一般表示前后关联对象是一种“或”的关系。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献