CN109871942B - 神经网络的训练方法和装置、系统、存储介质 - Google Patents

神经网络的训练方法和装置、系统、存储介质 Download PDF

Info

Publication number
CN109871942B
CN109871942B CN201910123018.3A CN201910123018A CN109871942B CN 109871942 B CN109871942 B CN 109871942B CN 201910123018 A CN201910123018 A CN 201910123018A CN 109871942 B CN109871942 B CN 109871942B
Authority
CN
China
Prior art keywords
gradient
data
gradient data
historical
processing device
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.)
Active
Application number
CN201910123018.3A
Other languages
English (en)
Other versions
CN109871942A (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.)
Shanghai Sensetime Intelligent Technology Co Ltd
Original Assignee
Shanghai Sensetime Intelligent Technology Co Ltd
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 Shanghai Sensetime Intelligent Technology Co Ltd filed Critical Shanghai Sensetime Intelligent Technology Co Ltd
Priority to CN201910123018.3A priority Critical patent/CN109871942B/zh
Publication of CN109871942A publication Critical patent/CN109871942A/zh
Application granted granted Critical
Publication of CN109871942B publication Critical patent/CN109871942B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Analysis (AREA)

Abstract

本公开实施例公开了一种神经网络的训练方法和装置、系统、存储介质,其中,方法包括:第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据;从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理,本公开实施例在每次反向转播过程中只挑选重要梯度数据进行通信,减少了通信量,降低反向传播过程中的网络流量,提高了神经网络的训练速度。

Description

神经网络的训练方法和装置、系统、存储介质
技术领域
本公开涉及深度学习技术,尤其是一种神经网络的训练方法和装置、系统、存储介质。
背景技术
基于神经网络的机器学习技术在图像处理和语音识别等领域均取得了广泛的应用,其中,神经网络中神经元连接的权重是通过训练得到的。为了提高训练速度,采用分布式图像处理器(GPU)或其他类型的处理器实现神经网络的训练。
神经网络的训练过程通常包括两个主要步骤:前向传播与反向传播。在前向传播过程中,处理器读取一部分训练数据作为输入,依次通过每个网络层的处理获得预测偏差。在反向传播过程中,处理器用预测偏差作为输入,依次通过神经网络中的每个网络层进行反向传播计算,得到该每个网络层的权重张量对应的梯度张量。由于不同的处理器有不同的训练样本,它们会产生不同的梯度张量。当每个参与训练的处理器都计算出梯度张量时,一个集合通信操作将会被调用。该集合通信操作累加每个处理器得到的梯度张量,并将累加后的结果向所有的处理器广播。当全部网络层完成反向转播,并且全部梯度张量完成集合通信后,处理器可以利用经过累加的梯度张量更新对应的权重张量。这样的前向-反向转播将会被执行多次,直到神经网络在测试数据集上能够获取给定的准确度。
在神经网络的训练过程中,反向传播过程中的集合通信操作会耗费大量的网络资源。
发明内容
本公开实施例提供的一种神经网络的训练技术。
根据本公开实施例的一个方面,提供的一种神经网络的训练方法,包括:
第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得所述神经网络中多个网络层的第一梯度数据,其中,所述第一梯度数据包括L1个梯度元素;
从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;
基于所述第一重要梯度数据,进行所述当前迭代中的对所述神经网络的网络参数的调整处理。
可选地,在本公开上述任一方法实施例中,所述神经网络的多个网络层包括所述神经网络的所有网络层。
可选地,在本公开上述任一方法实施例中,在从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据之前,还包括:
获取所述第一处理设备在所述当前迭代中对应的历史梯度数据;
基于所述历史梯度数据,对所述第一梯度数据进行更新处理,得到更新后的所述第一梯度数据;
所述从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,包括:
从所述更新后的第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
可选地,在本公开上述任一方法实施例中,所述历史梯度数据是基于所述第一处理设备在所述当前迭代的第一历史迭代中获得的多个网络层的第二梯度数据得到的。
可选地,在本公开上述任一方法实施例中,所述历史梯度数据中的第一历史梯度元素的取值为0,其中,所述第一历史梯度元素对应的所述第二梯度数据中的第一梯度元素在所述第一历史迭代中被选择为重要梯度数据;
所述历史梯度数据中的第二历史梯度元素的取值等于所述第二历史梯度元素对应的第二梯度元素的数值,其中,所述第二梯度数据中的所述第二梯度元素在所述第一历史迭代中未被选择为重要梯度数据。
可选地,在本公开上述任一方法实施例中,所述当前迭代的第一历史迭代包括所述当前迭代的上一次迭代。
可选地,在本公开上述任一方法实施例中,所述基于所述历史梯度数据,对所述第一梯度数据进行更新处理,得到更新后的所述第一梯度数据,包括:
将所述第一梯度数据包含的L1个梯度元素中每个梯度元素与所述历史梯度数据包括的L1个历史梯度元素中的对应元素相加,得到更新后的所述第一梯度数据包括的L1个梯度元素。
可选地,在本公开上述任一方法实施例中,所述获取所述第一处理设备在所述当前迭代中对应的历史梯度数据,包括:
从第三存储空间获取所述第一处理设备在所述当前迭代中对应的历史梯度数据。
可选地,在本公开上述任一方法实施例中,在从所述更新后的第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据之后,还包括:
基于所述更新后的第一梯度数据,更新所述第三存储空间存储的所述历史梯度数据。
可选地,在本公开上述任一方法实施例中,所述基于所述更新后的第一梯度数据,更新所述第三存储空间存储的所述历史梯度数据,包括:
基于所述更新后的第一梯度数据和所述更新后的第一梯度数据中每个梯度元素的重要类型,更新所述第三存储空间存储的所述历史梯度数据。
可选地,在本公开上述任一方法实施例中,所述基于所述更新后的第一梯度数据和所述更新后的第一梯度数据中每个梯度元素的重要类型,更新所述第三存储空间存储的所述历史梯度数据,包括:
将所述历史梯度数据中的第三历史梯度元素的取值更新为0,其中,所述第三历史梯度元素对应于所述更新后的第一梯度数据中被选为重要梯度数据的梯度元素;
将所述历史梯度数据中的第四历史梯度元素的取值更新为所述第四历史梯度元素在所述更新后的第一梯度数据中对应的梯度元素的数值,其中,所述第四历史梯度元素在所述更新后的第一梯度数据中对应的梯度元素未被选择为重要梯度数据。
可选地,在本公开上述任一方法实施例中,所述从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,包括:
基于所述第一处理设备和至少一个第二处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据,从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
可选地,在本公开上述任一方法实施例中,所述至少一个第二处理设备包括所述神经网络的训练系统中除所述第一处理设备之外的所有处理设备。
可选地,在本公开上述任一方法实施例中,所述从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,包括:
基于所述第一梯度数据包含的L1个梯度元素对应的重要类型标记信息,从所述L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,所述L1个梯度元素对应的重要类型标记信息是基于所述第一处理设备和至少一个第二处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据确定的。
可选地,在本公开上述任一方法实施例中,在从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据之前,还包括:
将所述第一梯度数据存入第一存储空间,所述第一存储空间中包括多个存储块,其中,每个所述存储块用于存储所述第一梯度数据包括的L1个梯度元素中的多个梯度元素;
所述从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,包括:
从所述多个存储块中选取至少一个重要存储块,并将所述至少一个重要存储块中存储的N1个梯度元素作为所述第一重要梯度数据。
可选地,在本公开上述任一方法实施例中,所述多个存储块中存储相同数量的梯度元素。
可选地,在本公开上述任一方法实施例中,所述从所述多个存储块中选取至少一个重要存储块,包括:
基于所述多个存储块的重要类型标记信息,从所述多个存储块中选取至少一个重要存储块,其中,所述存储块的重要类型标记信息是基于所述第一处理设备和至少一个第二处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据中存储到所述存储块的多个梯度元素确定的。
可选地,在本公开上述任一方法实施例中,所述从所述多个存储块中选取至少一个重要存储块,包括:
基于所述第一处理设备和至少一个第二处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据中存储到所述第一存储空间中每个存储块的多个梯度元素,获得所述每个存储块在所述当前迭代中对应的度量值;
基于所述多个存储块中每个存储块在所述当前迭代中对应的度量值,从所述多个存储块中选取至少一个重要存储块。
可选地,在本公开上述任一方法实施例中,所述基于所述第一处理设备和至少一个第二处理设备的第三梯度数据中存储到所述第一存储空间中每个存储块的多个梯度元素,获得所述每个存储块在所述当前迭代中对应的度量值,包括:
对所述第一处理设备和至少一个第二处理设备中每个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行处理,得到处理结果;
对所述第一处理设备和至少一个第二处理设备分别对应的处理结果进行累加处理,得到所述存储块在所述当前迭代中对应的度量值。
可选地,在本公开上述任一方法实施例中,所述对所述第一处理设备和至少一个第二处理设备中每个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行处理,得到处理结果,包括:
基于所述存储块在所述当前迭代的第二历史迭代中的重要类型,对所述每个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行处理,得到处理结果。
可选地,在本公开上述任一方法实施例中,所述基于所述存储块在所述当前迭代的第二历史迭代中的重要类型,对所述每个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行处理,得到处理结果,包括:
响应于所述多个存储块中的第一存储块为所述当前迭代的第二历史迭代中的重要存储块,对所述每个处理设备得到的第三梯度数据中存储到所述第一存储块的多个梯度元素的绝对值进行求和后除以所述第一处理设备和所述至少一个第二处理设备的处理设备总数,得到处理结果;和/或
响应于所述多个存储块中的第二存储块在所述当前迭代的第二历史迭代中未被选择为重要存储块,将所述每个处理设备得到的所述第三梯度数据中存储到所述第二存储块的多个梯度元素的绝对值进行求和,得到处理结果。
可选地,在本公开上述任一方法实施例中,所述方法还包括:
基于所述第一梯度数据中存储到所述多个存储块中每个存储块的多个梯度元素以及所述多个存储块中每个存储块在所述当前迭代中的重要类型,从所述多个存储块中选择所述当前迭代的下一迭代中的重要存储块。
可选地,在本公开上述任一方法实施例中,所述第二历史迭代为所述当前迭代的前一迭代。
可选地,在本公开上述任一方法实施例中,所述基于所述多个存储块中每个存储块在所述当前迭代中对应的度量值,从所述多个存储块中选取至少一个重要存储块,包括:
将所述第一存储空间的多个存储块中对应的度量值最大的至少一个存储块确定为重要存储块。
可选地,在本公开上述任一方法实施例中,所述基于所述第一重要梯度数据,进行所述当前迭代中的对所述神经网络的网络参数的调整处理,包括:
获取至少一个第二处理设备中每个第二处理设备在所述当前迭代中获得的第二重要梯度数据;
基于所述至少一个第二处理设备中每个第二处理设备获得的第二重要梯度数据和所述第一重要梯度数据,得到总梯度数据;
基于所述总梯度数据,进行所述当前迭代中的对所述神经网络的网络参数的调整处理。
可选地,在本公开上述任一方法实施例中,还包括:
将所述第一重要梯度数据存储到第二存储空间;
将所述第二存储空间中存储的所述第一重要梯度数据携带在同一消息中传输到所述至少一个第二处理设备中的每个第二处理设备,以实现所述第二处理设备在所述当前迭代中进行所述神经网络的网络参数的调整处理。
可选地,在本公开上述任一方法实施例中,所述第一处理设备为图形处理器。
根据本公开实施例的另一个方面,提供的一种神经网络的训练装置,设置在第一处理设备中,包括:
前向传播单元,用于在当前迭代中利用神经网络对当前样本数据进行处理,获得所述神经网络中多个网络层的第一梯度数据,其中,所述第一梯度数据包括L1个梯度元素;
重要梯度选取单元,用于从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;
参数调整单元,用于基于所述第一重要梯度数据,进行所述当前迭代中的对所述神经网络的网络参数的调整处理。
可选地,在本公开上述任一装置实施例中,所述神经网络的多个网络层包括所述神经网络的所有网络层。
可选地,在本公开上述任一装置实施例中,所述装置还包括:
历史梯度获取单元,用于获取所述第一处理设备在所述当前迭代中对应的历史梯度数据;
梯度更新单元,用于基于所述历史梯度数据,对所述第一梯度数据进行更新处理,得到更新后的所述第一梯度数据;
所述重要梯度选取单元,用于从所述更新后的第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
可选地,在本公开上述任一装置实施例中,所述历史梯度数据是基于所述第一处理设备在所述当前迭代的第一历史迭代中获得的多个网络层的第二梯度数据得到的。
可选地,在本公开上述任一装置实施例中,所述历史梯度数据中的第一历史梯度元素的取值为0,其中,所述第一历史梯度元素对应的所述第二梯度数据中的第一梯度元素在所述第一历史迭代中被选择为重要梯度数据;
所述历史梯度数据中的第二历史梯度元素的取值等于所述第二历史梯度元素对应的第二梯度元素的数值,其中,所述第二梯度数据中的所述第二梯度元素在所述第一历史迭代中未被选择为重要梯度数据。
可选地,在本公开上述任一装置实施例中,所述当前迭代的第一历史迭代包括所述当前迭代的上一次迭代。
可选地,在本公开上述任一装置实施例中,所述梯度更新单元,用于将所述第一梯度数据包含的L1个梯度元素中每个梯度元素与所述历史梯度数据包括的L1个历史梯度元素中的对应元素相加,得到更新后的所述第一梯度数据包括的L1个梯度元素。
可选地,在本公开上述任一装置实施例中,所述历史梯度获取单元,用于从第三存储空间获取所述第一处理设备在所述当前迭代中对应的历史梯度数据。
可选地,在本公开上述任一装置实施例中,所述装置还包括:
历史数据更新单元,用于基于所述更新后的第一梯度数据,更新所述第三存储空间存储的所述历史梯度数据。
可选地,在本公开上述任一装置实施例中,所述历史数据更新单元,用于基于所述更新后的第一梯度数据和所述更新后的第一梯度数据中每个梯度元素的重要类型,更新所述第三存储空间存储的所述历史梯度数据。
可选地,在本公开上述任一装置实施例中,所述历史数据更新单元,用于将所述历史梯度数据中的第三历史梯度元素的取值更新为0,其中,所述第三历史梯度元素对应于所述更新后的第一梯度数据中被选为重要梯度数据的梯度元素;将所述历史梯度数据中的第四历史梯度元素的取值更新为所述第四历史梯度元素在所述更新后的第一梯度数据中对应的梯度元素的数值,其中,所述第四历史梯度元素在所述更新后的第一梯度数据中对应的梯度元素未被选择为重要梯度数据。
根据本公开实施例的又一个方面,提供的一种神经网络的训练系统,包括:
第一处理设备和至少一个第二处理设备,其中,所述第一处理设备为上述任意一项实施例所述的设置有神经网络的训练装置的第一处理设备。
根据本公开实施例的还一个方面,提供的一种神经网络的训练系统,包括:
多个处理设备,其中,
所述处理设备用于在当前迭代中通过神经网络对当前样本数据进行处理,获得的所述神经网络中多个网络层的当前梯度数据,从所述当前梯度数据中选择第一重要梯度数据,并将所述第一重要梯度数据传输给所述多个处理设备中的其他处理设备;
所述处理设备还用于接收所述其他处理设备发送的第二重要梯度数据,并基于接收到的所述第二重要梯度数据以及所述第一重要梯度数据,在所述当前迭代中调整所述神经网络的网络参数。
可选地,在本公开上述任一系统实施例中,所述处理设备从所述当前梯度数据中选择第一重要梯度数据,包括:
所述处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据,从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
可选地,在本公开上述任一系统实施例中,所述处理设备在从在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据,从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据时,用于在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据确定所述L1个梯度元素对应的重要类型标记信息;基于所述第一梯度数据包含的L1个梯度元素对应的重要类型标记信息,从所述L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
可选地,在本公开上述任一系统实施例中,所述处理设备设置有第一存储空间;
所述处理设备还用于:将所述当前梯度数据存入所述第一存储空间,所述第一存储空间中包括多个存储块,其中,每个所述存储块用于存储所述当前梯度数据包括的L1个梯度元素中的多个梯度元素;
所述处理设备从所述当前梯度数据中选择第一重要梯度数据,包括:
所述处理设备从所述多个存储块中选取至少一个重要存储块,并将所述至少一个重要存储块中存储的N1个梯度元素作为所述第一重要梯度数据。
可选地,在本公开上述任一系统实施例中,所述多个存储块具有相同的大小。
可选地,在本公开上述任一系统实施例中,所述处理设备在从所述多个存储块中选取至少一个重要存储块时,用于基于所述多个处理设备中每个处理设备在所述当前迭代的第二历史迭代中存储到每个存储块的多个梯度元素,从所述多个存储块中选取至少一个重要存储块。
可选地,在本公开上述任一系统实施例中,所述处理设备在基于所述多个处理设备中每个处理设备在所述当前迭代的第二历史迭代中存储到每个存储块的多个梯度元素,从所述多个存储块中选取至少一个重要存储块时,用于基于所述多个处理设备中每个处理设备的第三梯度数据中存储到所述第一存储空间中每个存储块的多个梯度元素,获得所述每个存储块在所述当前迭代中对应的度量值;基于所述多个存储块中每个存储块在所述当前迭代中对应的度量值,从所述多个存储块中选取至少一个重要存储块。
可选地,在本公开上述任一系统实施例中,所述处理设备在基于所述多个处理设备中每个处理设备的第三梯度数据中存储到所述第一存储空间中每个存储块的多个梯度元素,获得所述每个存储块在所述当前迭代中对应的度量值时,用于基于所述存储块在所述当前迭代的第二历史迭代中的重要类型,对所述多个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行累加处理,得到所述存储块在所述当前迭代中对应的度量值。
可选地,在本公开上述任一系统实施例中,所述第二历史迭代为所述当前迭代的前一迭代。
可选地,在本公开上述任一系统实施例中,所述处理设备在基于所述多个存储块中每个存储块在所述当前迭代中对应的度量值,从所述多个存储块中选取至少一个重要存储块时,用于将所述第一存储空间的多个存储块中对应的度量值最大的至少一个存储块确定为重要存储块。
可选地,在本公开上述任一系统实施例中,所述处理设备设置有第二存储空间;
所述处理设备还用于:将选择的所述第一重要梯度数据存储到所述第二存储空间;
所述处理设备将所述第一重要梯度数据传输给所述多个处理设备中的其他处理设备,包括:
所述处理设备将所述第二存储空间中存储的所述第一重要梯度数据携带在同一消息中传输到所述其他处理设备。
可选地,在本公开上述任一系统实施例中,所述处理设备还用于:
基于所述多个处理设备中每个处理设备在所述当前迭代中存储到所述多个存储块中每个存储块的多个梯度元素以及所述多个存储块中每个存储块在所述当前迭代中的重要类型,从所述多个存储块中选择所述当前迭代的下一迭代中的重要存储块。
可选地,在本公开上述任一系统实施例中,所述处理设备为图形处理器。
根据本公开实施例的再一个方面,提供的一种计算机可读存储介质,用于存储计算机可读取的指令,所述指令被执行时执行上述任意一项实施例所述神经网络的训练方法的操作。
根据本公开实施例的另一个方面,提供的一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码在设备上运行时,所述设备中的处理器执行用于实现上述任意一项实施例所述神经网络的训练方法的指令。
根据本公开实施例的又一个方面,提供的一种数据处理方法,包括:
获取待处理数据;
将所述待处理数据输入到神经网络进行处理,得到数据处理结果,其中,所述神经网络是根据上述任意一项实施例所述的训练方法训练得到的。
根据本公开实施例的还一个方面,提供的一种数据处理装置,包括:
获取模块,用于获取待处理数据;
处理模块,用于将所述待处理数据输入到神经网络进行处理,得到数据处理结果,其中,所述神经网络是根据上述任意一项实施例所述的训练方法训练得到的。
根据本公开实施例的再一个方面,提供的另一种计算机程序产品,用于存储计算机可读指令,所述指令被执行时使得计算机执行上述任一可能的实现方式中所述神经网络的训练方法的操作。
在一个可选实施方式中,所述计算机程序产品具体为计算机存储介质,在另一个可选实施方式中,所述计算机程序产品具体为软件产品,例如SDK等。
根据本公开实施例还提供了另一种神经网络的训练方法和装置、系统、计算机存储介质、计算机程序产品,其中,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据;从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。
基于本公开上述实施例提供的一种神经网络的训练方法和系统,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据;从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理,本公开实施例在每次反向转播过程中只挑选重要梯度数据进行通信,减少了通信量,降低反向传播过程中的网络流量,提高了神经网络的训练速度。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示出了本公开实施例应用的神经网络示例的示意图。
图2示出了传统的分布式深度神经网络的训练流程示意图。
图3为本公开实施例提供的神经网络的训练方法的示意性流程图。
图4为本公开实施例提供的神经网络的训练方法的另一流程示意图。
图5为本公开实施例提供的神经网络的训练方法中的第三存储空间结构示意图。
图6为本公开实施例提供的神经网络的训练方法的又一流程示意图。
图7为本公开实施例提供的神经网络的训练方法中第一存储空间的一个结构示意图。
图8为本公开实施例提供的神经网络的训练方法中确定重要存储块的一个可选流程示意图。
图9为本公开实施例提供的神经网络的训练方法中累加和广播的过程示意图。
图10为本公开实施例提供的神经网络的训练方法的反向传播过程示意图。
图11为本公开实施例提供的神经网络的训练装置的一种结构示意图。
图12为适于用来实现本公开实施例的终端设备或服务器的电子设备的结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例提供的技术方案可以应用于利用反向传播方式训练的各种类型的深度神经网络(Deep Neutral Network,DNN),例如,AlexNet、GoogLNet、ResNet等用于图像处理的神经网络,或应用于DeepSpeech等用于语音识别的神经网络,或者是其他用途的神经网络,其中,该DNN可以是卷积神经网络、循环神经网络或者其他类型的神经网络,本公开实施例对此不做限定。
图1示出了本公开实施例应用的神经网络示例的示意图。其中,该示例中的神经网络为一个7层架构的深度神经网络(DNN),L(i)表示一个DNN的第i层,其中,i在本实施例中的取值为0到6。L(i)是由位于该层的神经元组成。L(i)的神经元与L(i-1)层的神经元连接,并且每个连接有一个可被调节的权重。L(i)的全部权重可以由一个张量W(i)表示。为了提高DNN的预测精度,需要以训练样本作为输入,对各个层的权重进行校正,这也称为训练过程。为了提高计算效率,DNN的训练通常放在处理器(如,GPU)中进行。
图2示出了传统的分布式深度神经网络的训练流程示意图。分布式DNN训练可以将单处理器(如,GPU)训练扩展到多个处理器上,进一步加快DNN的训练速度。具体地,分布式DNN训练包括两个步骤:前向传播与反向传播。其中,前向传播过程中,每个处理器读取一部分训练数据作为输入,并依次通过L(0),L(1),…,L(n)获取一个预测偏差。反向传播过程中,每个处理器用预测偏差作为输入,依次通过L(n),L(n-1),…,L(0)。当L(i)层完成反向传播计算时,将会为该层的权重张量W(i)产生一个梯度张量G(i)。由于不同的处理器中输入不同的训练样本,因此,不同的处理器会产生不同的G(i)。当每个参与训练的处理器都计算出G(i)时,将调用一个集合通信(All-Reduce)的操作。该All-Reduce操作累加每个处理器的G(i),并将累加后的结果广播并替换各个处理器上原有的G(i)。当全部神经元层完成反向转播,并且全部梯度张量完成All-Reduce后,每个处理器利用经过累加的梯度张量G(i)更新对应的权重张量W(i)。
多次执行前向传播-反向转播,直到DNN在测试数据集上达到停止训练的条件(如,在测试数据集上能够获得设定的准确度等)。
DNN可能含有上千万个权重,并分布在几十甚至上百个神经元层中。发明人经过研究发现,由于以下两点原因,基于层的All-Reduce通信会成为性能瓶颈:
第一,在反向传播过程中,每层产生的梯度张量包含的元素数不多,即每层的All-Reduce通信是小数据量通信,而小数据量通信不能充分利用网络带宽。
第二,在反向传播过程中,DNN中的各个神经元层一共产生大量梯度,在一次反向传播过程中的产生大量的网络流量。
因此,为了提高分布式DNN的训练效率,需要在训练过程中避免小数据量通信和降低网络流量。
图3为本公开实施例提供的神经网络的训练方法的示意性流程图。
步骤310,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的梯度数据,以下称为第一梯度数据。
其中,第一梯度数据包括L1个梯度元素,L1为大于等于1的整数,其中,该L1个梯度元素包括多个网络层中每个网络层对应的至少一个梯度元素。在一次迭代过程中,第一处理设备利用神经网络的各个网络层依次对样本数据进行处理,得到预测偏差或网络损失,并基于得到的预测偏差或网络损失进行梯度反向传播。在反向传播过程中针对每个网络层确定相应权重的梯度元素,其中,梯度元素可以为梯度张量或其他形式,本公开实施例对其具体实现不作限定。
可选地,本公开实施例中第一处理设备可以为图像处理器(GPU)或其他类型的处理器,其中,为了更快的训练神经网络,本公开实施例的训练系统还包括至少一个第二处理设备,即通过包括多个处理设备的分布式训练系统实现对神经网络的训练。
可选地,当前样本数据可以包括当前迭代中需要处理的样本数据,例如一个或多个样本图像或样本语音片段或其他类型的数据,本公开实施例对此不做限定。
步骤320,从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
其中,1≤N1<L1。
具体地,从第一梯度数据中选取部分数据作为重要梯度数据。
步骤330,基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。
在一些实施例中,第一处理设备将第一重要梯度数据传输到至少一个第二处理设备,接收至少一个第二处理设备中每个第二处理设备发送的第二重要梯度数据,并基于第一重要梯度数据和接收到的第二重要梯度数据调整多个网络层的网络参数,例如多个网络层中至少一个网络层的权重。
可选地,神经网络的多个网络层包括神经网络的部分网络层或所有网络层。具体地,在一些实施例中,将第一处理设备在当前迭代中得到的所有网络层对应的梯度元素作为第一梯度数据,此时,第一处理设备仅选择所有网络层对应的第一梯度数据中的第一重要梯度数据来进行网络参数的调整。在另一些实施例中,将第一处理设备在当前迭代中得到的部分网络层对应的梯度元素作为第一梯度数据,此时,可选地,不对另一部分网络层对应的梯度数据进行筛选,即第一处理设备利用当前迭代中部分网络层对应的第一梯度数据中选取的重要梯度数据以及另一部分网络层的所有梯度数据来进行网络参数的调整,或者从另一部分网络层对应的梯度数据中选择重要梯度数据,并利用从两部分梯度数据中分别选择的重要梯度数据来进行网络参数的调整,本公开实施例对此不做限定。
本公开实施例实现在一次迭代训练时,仅基于梯度数据中的重要梯度数据对神经网络中部分或全部的网络层的网络参数进行调整,减少了需要传输的数据量,提高了神经网络的训练速度,提高了神经网络的适用性。
在一些实施例中,第一处理设备可以指训练系统包括的多个处理设备中的任意一个处理设备,即训练系统中的多个处理设备执行相同的流程,例如,训练系统包括第一处理设备和至少一个第二处理设备,且每个处理设备均执行本公开实施例提供的训练方法,但本公开实施例不限于此。
可选地,本公开实施例提供的第一处理设备可以为图形处理器。深度神经网络(DNN)从仿生学的角度模拟人脑,采用分层的计算架构体系,用来表征复杂的模式。DNN在图像处理和语音识别等领域均取得了广泛的应用,为了提高计算效率,本公开实施例可以采用图形处理器对神经网络进行训练,可选地,当训练系统还包括至少一个第二处理设备时,第二处理设备也可以为图形处理器。
在一些实施例中,第一处理设备在获得第一重要梯度数据之后,可以将第一重要梯度数据中包括的N个梯度元素携带在多个消息中发送。在另一些实施例中,第一处理设备将获得的第一重要梯度数据存储至第二存储空间,例如第一处理设备上设置的第二缓存区,并将第一重要梯度数据中包括的N个梯度元素携带在同一消息中发送,以提高带宽利用率。在另一些实施例中,每当第二存储空间当前存储的梯度元素达到一定数量时,第一处理设备传输第二存储空间存储的梯度元素,但本公开实施例对此不做限定。
基于本公开实施例提供的神经网络的训练方法,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据;从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理,本公开实施例在每次反向转播过程中只挑选重要梯度数据进行通信,减少了通信量,降低反向传播过程中的网络流量,提高了神经网络的训练速度。
图4为本公开实施例提供的神经网络的训练方法的另一流程示意图。
步骤410,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据。
其中,第一梯度数据包括L1个梯度元素,L1为大于等于1的整数。本公开实施例中步骤410与上述实施例的步骤310类似,可参照上述实施例对该步骤进行理解,在此不再赘述。
步骤420,获取第一处理设备在当前迭代中对应的历史梯度数据。
可选地,如果当前迭代不是首次迭代,第一处理设备在历史迭代(在当前迭代之前进行的迭代)中获得的历史梯度数据也用于当前迭代中的网络参数调整。
可选地,历史梯度数据是基于第一处理设备在当前迭代的第一历史迭代中获得的多个网络层的第二梯度数据得到的。例如,第一历史迭代可以是当前迭代的上一次迭代,如当前迭代为第k次迭代,第一历史迭代为第k-1次迭代,通过在第一历史迭代中获得的第二梯度数据G(k-1),可实现对当前代获得的第一梯度数据G(k)进行更新(如,将第一梯度数据与对应位置的第二梯度数据叠加,G′(k)=G(k)+G(k-1),从更新后的第一梯度数据G′(k)中选取第一重要梯度数据。
可选地,可以在第一处理设备中为保存第二梯度数据建立一个第三存储空间,此时,获取历史梯度数据可以包括:从第三存储空间获取第一处理设备在当前迭代中对应的历史梯度数据。例如,图5为本公开实施例提供的神经网络的训练方法的另一实施例中第三存储空间结构示意图。如图5所示,在首次正向/反向传播计算前,在每个GPU内分配一个用于存储历史梯度张量的第三存储空间(例如,用HG_Buffer表示)。第三存储空间的空间大小与第一存储空间一致(并且包括相同数量的存储块),HG_Buffer(i)表示存储在HG_Buffer上第i个位置的元素。HG_Buffer创建后,将HG_Buffer分为大小一致的逻辑分块,一个逻辑分块用HG_Chuck表示,一个HG_Chuck可以存放与一个G_Chuck数目项目的元素。
在一个或多个可选的实施例中,历史梯度数据的取值由第一历史迭代中第一历史梯度元素对应的第二梯度数据中的第一梯度元素是否被选中为重要梯度数据决定;
可选地,在第一历史迭代中,获得的第二梯度数据包括多个梯度元素,为了区分在第一历史迭代中被选择为重要梯度数据的梯度元素和未被选择为重要梯度数据的梯度元素,将被选择为重要梯度数据的梯度元素称为第一梯度元素,将未被选择为重要梯度数据的梯度元素称为第二梯度元素;
第一梯度元素在当前迭代的历史梯度数据中对应的第一历史梯度元素的取值为0。第二梯度元素在当前迭代的历史梯度数据中对应的第二历史梯度元素的取值等于第二历史梯度元素对应的第二梯度元素的数值。
例如,在第k-1次迭代获得第二梯度数据G(k-1),从G(k-1)中选择部分梯度元素作为重要梯度数据,这部分梯度元素称为第一梯度元素;将第二梯度数据作为第k次迭代的历史梯度数据时,在第k-1次迭代中的第一梯度元素已经被传播并对神经网络进行第k-1次迭代(第一历史迭代)的网络参数调整,已经完成该梯度元素的应用,因此无需对其进行保留,当第二梯度数据作为本次迭代的历史梯度数据时,第一梯度元素对应的第一历史梯度元素的取值为0。
又例如,在第k-1次迭代获得第二梯度数据G(k-1),从G(k-1)中选择部分梯度元素作为重要梯度数据,未被选择为重要梯度数据的梯度元素称为第二梯度元素;将第二梯度数据作为第k次迭代的历史梯度数据时,在第k-1次迭代中的第二梯度元素未对神经网络的参数调整做出贡献,而每个梯度元素在获取后都应对神经网络的参数调整做出贡献,不应随意丢弃,否则将导致资源浪费,因此,本公开实施例将第二梯度元素的取值等于第二历史梯度元素对应的第二梯度元素的数值。
例如,在反向传播过程中,当一个G_Chuck被写满后,判断该G_Chuck是否被标记为重要G_Chuck。该G_Chuck存储G_Buffer位置为从j到k的元素。
a)如果该G_Chuck被标记为重要G_Chuck,将该G_Chuck包含的元素复制到一个用于通信的缓存空间,该缓存空间用C_Buffer表示。对于任意i,j≤i<k,HG_Buffer(i)=0。
b)如果该G_Chuck没有被标记为重要G_Chuck,对于任意i,j≤i<k,HG_Buffer(i)=G_Buffer(i),并且G_Buffer(i)=0。
可选地,在将神经网络的所有梯度数据存入第一存储空间包括的多个存储块中之后,还包括:
将每个存储块中的梯度数据与第三存储空间中对应位置的存储块中的非重要梯度数据进行累加,将累加获得的梯度数据存入存储块中。
可选地,在反向传播过程中,GPU将计算得出的第i个梯度写入到G_Buffer(i)时,当G_Buffer(i)被写入新数值后,可将该位置的梯度张量更新为G_Buffer(i)=G_Buffer(i)+HG_Buffer(i),其中,HG_Buffer(i)表示第三存储空间中对应位置的历史梯度张量,该历史梯度张量可能为0(在上一迭代中已经被传输并对神经网络进行训练)或不为0(在上一次训练中未被利用对神经网络进行训练,传输到了第三存储空间进行保存)。可选地,将接收的梯度张量和历史梯度张量之和作为更新后的梯度张量。
步骤430,基于历史梯度数据,对第一梯度数据进行更新处理,得到更新后的第一梯度数据。
为了实现将历史梯度数据在当前迭代中得到应用,可选地,本公开实施例将第一梯度数据包含的L1个梯度元素中每个梯度元素与历史梯度数据包括的L1个历史梯度元素中的对应元素相加,得到更新后的第一梯度数据包括的L1个梯度元素。通过叠加对应位置的历史梯度元素和第一梯度数据中的梯度元素,使不同网络层对应的梯度元素在不同迭代次数中仍能应用到对应的网络层。或者,基于历史梯度数据中的历史梯度元素的大小对第一梯度数据中的梯度元素进行大小调整,本公开实施例不限制获得更新后的第一梯度数据的具体方式。
步骤440,从更新后的第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
本公开实施例中将更新后的第一梯度数据(基于历史梯度数据和当前迭代获得的第一梯度数据获得)作为获得第一重要梯度数据的基础,即第一重要梯度数据中也包括历史梯度数据,实现了将历史迭代中未被利用对神经网络的网络参数进行调整的梯度元素在之后的迭代过程中进行应用,使多数基于当前样本数据获得的梯度元素在神经网络的训练过程中都得到应用,减少了计算资源的浪费。
步骤450,基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。
本公开实施例通过在当前迭代中利用到历史迭代中的历史梯度数据,实现了虽然每次迭代只选择部分梯度元素作为重要梯度数据,但通过多次迭代使在历史迭代中未被选择为重要梯度数据的梯度元素在下一次迭代中有机会被选中为重要梯度数据,在下一次仍未被选中为重要梯度数据的更新后的梯度元素会被保存到第三存储空间,直到在某一次该更新后的梯度元素被选中为重要梯度数据,该梯度元素在第三存储空间中对应的位置被置为0。例如:在一个或多个可选的实施例中,在上述实施例执行步骤240之后,基于更新后的第一梯度数据,更新第三存储空间存储的历史梯度数据。
可选地,基于更新后的第一梯度数据和更新后的第一梯度数据中每个梯度元素的重要类型,更新第三存储空间存储的历史梯度数据。
当前迭代完成后,当前迭代(如,第k次迭代)将作为下一次迭代(第k+1次迭代)的历史迭代,此时,为了将第k次迭代中未被选择为重要梯度数据的梯度元素在第k+1次迭代中得到应用,可选地,将未被选择为重要梯度数据的梯度元素存入第三存储空间作为第k+1次迭代的历史梯度数据。
当更新后的第一梯度数据中的梯度元素被选中为重要梯度数据时,该梯度元素将被传输并对神经网络的网络参数进行调整,因此,该梯度数据无需继续保留,此时将该梯度元素在第三存储空间中的位置置为0;而对于更新后的第一梯度数据中未被选中为重要梯度数据的梯度元素,为了在之后的迭代中能继续参与对网络参数的调整,将更新后的梯度元素替换第三存储空间中对应位置的历史梯度元素,以使本次迭代中未被传输的梯度元素也被存入第三存储空间。可选地,当第三历史梯度元素对应于更新后的第一梯度数据中被选为重要梯度数据的梯度元素,将历史梯度数据中的第三历史梯度元素的取值更新为0;当第四历史梯度元素在更新后的第一梯度数据中对应的梯度元素未被选择为重要梯度数据,将历史梯度数据中的第四历史梯度元素的取值更新为第四历史梯度元素在更新后的第一梯度数据中对应的梯度元素的数值。
可选地,基于第一梯度数据以及第一梯度数据中的第一重要梯度数据,确定当前迭代的下一迭代中的重要梯度数据。
当前迭代中的重要梯度数据的位置是基于上一次迭代中获得的梯度元素确定的,因此,在完成当前迭代之后,可基于当前迭代获得的梯度元素确定下一次迭代中重要梯度数据的位置,可选地,可基于第一梯度数据以及第一梯度数据中的第一重要梯度数据,确定下一迭代中构成重要梯度数据的梯度元素的位置,例如基于第一梯度数据的大小确定,本公开实施例对具体确定下一迭代中的重要梯度数据的方式不作限定。
在一个或多个可选的实施例中,步骤320可以包括:
基于第一处理设备和至少一个第二处理设备在当前迭代的第二历史迭代中获得的多个网络层的第三梯度数据,从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
其中,第二历史迭代可以是第二处理设备的当前迭代的上一次迭代。第二处理设备可以是对神经网络实现训练的训练系统包括的除了第一处理设备的其他处理设备中的部分或全部。
可选地,至少一个第二处理设备包括神经网络的训练系统中除第一处理设备之外的所有处理设备。
可选地,通过多个处理设备对神经网络进行训练的过程中,由于每个处理设备在每次迭代中对神经网络进行参数调整时,都是基于所有处理设备获得的重要梯度数据进行的,而不是每个处理设备独立处理,因此,在当前迭代选择重要梯度数据时,可基于上一次迭代(包括第一处理设备的第一历史迭代和第二处理设备的第二历史迭代)中所有处理设备获得的第三梯度数据进行确定;可选地,从第三梯度数据中选择最大的预设数量的梯度元素对应的位置作为重要梯度元素对应的位置,在当前迭代时,基于已确定为重要梯度元素的位置上的梯度元素构成重要梯度数据。
在一个或多个可选的实施例中,步骤320还可以包括:
基于第一梯度数据包含的L1个梯度元素对应的重要类型标记信息,从L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
其中,L1个梯度元素对应的重要类型标记信息是基于第一处理设备和至少一个第二处理设备在当前迭代的第二历史迭代中获得的多个网络层的第三梯度数据确定的。
本公开实施例中,在基于所有处理设备确定第三梯度数据中哪些梯度元素是重要梯度元素之后,基于这些重要梯度元素的位置对在当前迭代中接收的梯度元素进行重要类型标记,例如,对于当前迭代中记录到重要梯度元素的位置的梯度元素标记为重要类型,对应的将记录到不是重要梯度元素的位置的梯度元素标记为非重要类型;可选地,将具有重要类型标记信息的梯度元素作为第一重要梯度数据中的梯度元素。
图6为本公开实施例提供的神经网络的训练方法的又一实施例的流程示意图。该实施例方法包括:
步骤610,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据。
其中,第一梯度数据包括L1个梯度元素,L1为大于等于1的整数。本公开实施例中步骤610与上述实施例的步骤310类似,可参照上述实施例对该步骤进行理解,在此不再赘述。
步骤620,将第一梯度数据存入第一存储空间,第一存储空间中包括多个存储块。
其中,每个存储块用于存储第一梯度数据包括的L1个梯度元素中的多个梯度元素。
可选地,在对神经网络进行训练之前,可以在第一处理设备中为存储梯度数据建立设定大小的第一存储空间,该第一存储空间可以存储神经网络中所有梯度数据;还可以将第一存储空间分割为多个存储块,每个存储块中存储一定数量的梯度元素(每个存储块中存储的梯度元素的数量可以相同或不同),在神经网络上一次迭代训练之后,可基于每个存储块中存储的梯度数据的数值确定当前迭代时重要存储块的位置,可选地,将从重要存储块的位置获得存储的梯度元素作为重要梯度数据。
本公开实施例中,第一存储空间中包括多个存储块,每个存储块中可存储一定数量的梯度元素,例如,多个存储块中存储相同数量的梯度元素。图7为本公开实施例提供的神经网络的训练方法中第一存储空间的一个结构示意图。如图7所示,在第一次迭代训练(正向传播/反向传播)前,在每个处理设备(如,GPU)内分配一个连续的第一存储空间(例如,用G_Buffer表示)。G_Buffer的空间可以正好存储一次反向传播产生的全部梯度。G_Buffer(i)表示存储在G_Buffer上第i个的元素。G_Buffer创建后,将G_Buffer分为大小一致的逻辑分块(存储块),一个逻辑分块用G_Chuck表示,一个G_Chuck可以存放指定数目的元素。
步骤630,从多个存储块中选取至少一个重要存储块,并将至少一个重要存储块中存储的N1个梯度元素作为第一重要梯度数据。
可选地,基于多个存储块的重要类型标记信息,从多个存储块中选取至少一个重要存储块,其中,存储块的标记信息是基于第一处理设备和至少一个第二处理设备在当前迭代的第二历史迭代中获得的多个网络层的第三梯度数据中存储到存储块的多个梯度元素确定的。
本公开实施例将重要梯度元素对应的位置与存储块相结合,通过存储块的重要类型标记信息来确认存储块中存储的梯度元素是否为重要梯度元素,而确定重要存储块的方法可以与确定重要梯度元素的位置的方法类似,基于第三梯度数据中存储到存储块的多个梯度元素确定。
步骤640,基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。
本公开实施例通过重要存储块的位置确定第一重要梯度数据,使重要梯度数据的提取更快捷,加快了重要梯度数据的筛选,进而提高了神经网络的训练速度。
图8为本公开实施例提供的神经网络的训练方法中确定重要存储块的一个可选流程示意图。如图8所示,确定重要存储块的过程可以包括:
步骤802,基于第一处理设备和至少一个第二处理设备在当前迭代的第二历史迭代中获得的多个网络层的第三梯度数据中存储到第一存储空间中每个存储块的多个梯度元素,获得每个存储块在当前迭代中对应的度量值。
在一次迭代计算的反向传播结束后,需要为下一次迭代计算确定哪些存储块是重要存储块,即确定用于存储重要梯度数据的重要存储块的位置,可选地,本公开实施例通过建立向量空间组,每个向量空间组对应一个处理设备,通过每个处理设备中的不同位置的向量空间中存储的梯度元素大小,确定下一次迭代时,重要存储块的位置。
在一个或多个可选的实施例中,对第一处理设备和至少一个第二处理设备中每个处理设备得到的第三梯度数据中存储到存储块的多个梯度元素进行处理,得到处理结果;
可选地,基于存储块在当前迭代的第二历史迭代中的重要类型,对每个处理设备得到的第三梯度数据中存储到存储块的多个梯度元素进行处理,得到处理结果。
例如,响应于多个存储块中的第一存储块为当前迭代的第二历史迭代中的重要存储块,对每个处理设备得到的第三梯度数据中存储到第一存储块的多个梯度元素的绝对值进行求和后除以第一处理设备和至少一个第二处理设备的处理设备总数,得到处理结果;和/或
响应于多个存储块中的第二存储块在当前迭代的第二历史迭代中未被选择为重要存储块,将每个处理设备得到的第三梯度数据中存储到第二存储块的多个梯度元素的绝对值进行求和,得到处理结果。
可选地,本公开实施例中,每个存储块的大小(如,可存储的梯度数据的数量)相同或不同,当每个存储块的大小相同时,直接对每个存储块中存储的所有梯度张量中的每个元素的绝对值之和即可恒量每个存储块的重要类型;而当每个存储块的大小不同时,在计算排序数据时,可将每个存储块中的梯度数据执行归一化后再计算绝对值之和,或者,计算绝对值之和之后再进行归一化处理,以获得每个存储块的排序数据。
对第一处理设备和至少一个第二处理设备分别对应的处理结果进行累加处理,得到存储块在当前迭代中对应的度量值。
由于每次迭代对神经网络进行参数调整时,都是基于所有处理设备中获得的重要梯度数据之和实现的,因此,在确定重要存储块的位置时,需要对每个处理设备中的处理结果进行累加处理。
步骤804,基于多个存储块中每个存储块在当前迭代中对应的度量值,从多个存储块中选取至少一个重要存储块。
可选地,将第一存储空间的多个存储块中对应的度量值最大的至少一个存储块确定为重要存储块。例如,按照度量值大小对存储块进行排序,按照排序选择度量值最大的设定数量或设定比例(例如,总数的10%等)作为重要存储块,进而确定重要存储块的位置。
在一次迭代计算的反向转播结束后,需要为下一次迭代计算的反向传播从多个(如,p个)存储块选择至少一个(如,q个)重要存储块,即,确定重要梯度张量的存储位置,G_ChuckSum(i)表示第i个G_Chuck内全部元素的绝对值之和。HG_ChuckSum(i)表示第i个HG_Chuck内全部元素的绝对值之和。
确定重要存储块的过程可以包括如下步骤:
在每一个GPU上,建立一个数组,用G_Vector表示。G_Vector可以存储p个元素。
在每一个GPU上,对于每一个G_Chuck(i),其中0≤i<p,如果G_Chuck(i)是这次迭代的重要Chuck,则G_Vector(i)=G_ChuckSum(i)/m,m是参与训练的GPU个数;如果G_Chuck(i)不是这次迭代的重要Chuck,则G_Vector(i)=HG_ChuckSum(i)。
图9为本公开实施例提供的神经网络的训练方法中累加和广播的过程示意图。如图9所示,以G_Vector作为输入,执行All-Reduce通信。该All-Reduce通信操作会累加各个GPU上的G_Vector,并将累加后的结果广播到各个GPU上。经过All-Reduce后,每个GPU具有数值相同的G_Vector。
在每一个GPU上,对G_Vector的p个元素进行进行从大排序。对于任意i,0≤i<p,如果G_Vector(i)是数值最大的q个元素之一,那么G_Chuck(i)被标记为下一次迭代的重要G_Chuck。如果G_Vector(i)不是数值最大的q个元素之一,那么G_Chuck(i)不被标记为下一次迭代的重要Chuck。
在一个或多个可选的实施例中,本公开实施例提供的方法还包括:
基于第一梯度数据中存储到多个存储块中每个存储块的多个梯度元素以及多个存储块中每个存储块在当前迭代中的重要类型,从多个存储块中选择当前迭代的下一迭代中的重要存储块。
当前迭代中的重要存储块的位置是基于上一次迭代中获得的梯度元素确定的,因此,在完成当前迭代之后,可基于当前迭代获得的梯度元素和重要类型确定下一次迭代中重要存储块的位置,其确定的具体过程与确定当前迭代中的重要存储块的过程类似,在此不再赘述。
可选地,第二历史迭代为当前迭代的前一迭代。
在一个或多个可选的实施例中,步骤330包括:
获取至少一个第二处理设备中每个第二处理设备在当前迭代中获得的第二重要梯度数据;
基于至少一个第二处理设备中每个第二处理设备获得的第二重要梯度数据和第一重要梯度数据,得到总梯度数据;
基于总梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。
为了实现通过多个处理设备对神经网络进行训练,可选地,本公开实施例将基于每个第二处理设备获得的第二重要梯度数据与第一重要梯度数据进行求和,以求和得到的总梯度数据作为每个处理设备进行参数调整的基础,实现多个处理设备同步的神经网络的训练。
可选地,还包括:
将第一重要梯度数据存储到第二存储空间;
将第二存储空间中存储的第一重要梯度数据携带在同一消息中传输到至少一个第二处理设备中的每个第二处理设备,以实现第二处理设备在当前迭代中进行神经网络的网络参数的调整处理。
可选地,可将第一重要梯度数据和第二重要梯度数据经第二存储空间进行传输,为了提高带宽利用率,当第二存储空间中的重要梯度数据达到预设数量或者第二存储空间存满之后,再进行传输。本公开实施例利用块状稀疏方法,将全部梯度张量分别存入多个大小一致的存储块,仅选择一部分重要存储块进行传输,降低反向传播过程中的网络流量。
在基于重要梯度数据对神经网络进行训练之前,需要对重要梯度数据进行传输,由于利用多个处理设备对神经网络进行训练,为了提高训练速度,将每个处理设备获得的重要梯度数据广播到其他处理器中并进行累加,再将累加之后的总梯度数据传输到每个处理设备对每个处理设备中的第一存储空间中,基于总梯度数据对神经网络中至少一个网络层的网络参数进行调整。
图10为本公开实施例提供的神经网络的训练方法的反向传播过程示意图。如图10所示,在反向传播过程中,当第二存储空间(C_Buffer)含有大于指定数目的元素后,执行集合(All-Reduce)通信。执行完一次All-Reduce通信后,将C_Buffer内更新后的元素复制到G_Buffer上原有的位置。图10所示的集合通信过程中,将多个处理设备(如,GPU0和GPU1)中选出的重要梯度数据传输到第二存储空间(如,C_Buffer)中,当第二存储空间中的数据量达到预设值时,执行集合通信。
利用梯度合并的方法,每次当梯度张量达到预设数量之后再进行传输,实现了大数据量通信,提高网络带宽利用率;解决了现有技术反向传播过程中,每层产生的梯度张量包含的元素数不多,即每个网络层的梯度张量的通信是小数据量通信,小数据量通信不能充分利用网络带宽的问题。
下面通过一个具体例子说明本公开实施例提供的神经网络的训练方法,其中,假设处理设备为GPU。该训练方法包括:
(1)在第一次正向/反向传播计算前,在每个GPU内分配一大块连续的内存空间,用G_Buffer表示。G_Buffer的空间正好可以存储一次反向传播产生的全部梯度数据或元素。G_Buffer(i)表示存储在G_Buffer上第i个位置的元素。G_Buffer创建后,将G_Buffer分为大小一致的逻辑分块,一个逻辑分块用G_Chuck表示,一个G_Chuck可以存放指定数目的元素。
(2)在第一次正向/反向传播计算前,在每个GPU内分配一大块连续的内存空间,用HG_Buffer表示。HG_Buffer的空间大小与G_Buffer一致,HG_Buffer(i)表示存储在HG_Buffer上第i个位置的元素。HG_Buffer创建后,将HG_Buffer分为大小一致的逻辑分块,一个逻辑分块用HG_Chuck表示,一个HG_Chuck可以存放与一个G_Chuck数目相同的元素。
(3)在某一次迭代的反向传播过程中,GPU将计算得出的网络层梯度数据中的第i个梯度元素写入到G_Buffer(i),并且在G_Buffer(i)被写入新数值后,更新其数值为G_Buffer(i)=G_Buffer(i)+HG_Buffer(i)。
(4)当一个G_Chuck被写满后,判断该G_Chuck是否被标记为重要G_Chuck,并依据标记类型更新其对应的HG_Buffer位置,其中,该G_Chuck存储G_Buffer位置为从j到k的元素。
a)如果该G_Chuck被标记为重要G_Chuck,将该G_Chuck包含的元素复制到一个用于通信的缓存空间,该缓存空间用C_Buffer表示,并且对于任意j≤i<k,HG_Buffer(i)=0。
b)如果该G_Chuck没有被标记为重要G_Chuck,对于任意j<=i<k,HG_Buffer(i)=G_Buffer(i),并且G_Buffer(i)=0。
(5)当C_Buffer含有大于指定数目的元素后,执行All-Reduce通信。
这样,在一次迭代的反向转播过程中,G_Buffer内只有一定数量的梯度被选择进行All-Reduce通信,从而降低网络流量。此外,通信操作会在C_Buffer含有给定数量的元素后进行,从而避免小数据量通信,增大带宽利用率。
(6)在本次迭代的反向传播完成之后,为下一次迭代的反向传播从p个G_Chuck选择q个重要G_Chuck,其中,假设G_Buffer被分成了p个G_Chuck,具体包括以下步骤:
a)在每一个GPU上,建立一个数组,用G_Vector表示。G_Vector可以存储p个元素。
b)在每一个GPU上,对于每一个G_Chuck(i),0≤i<p,如果G_Chuck(i)是本次迭代的重要Chuck,则G_Vector(i)=G_ChuckSum(i)/m,其中,G_ChuckSum(i)表示第i个G_Chuck内全部元素的绝对值之和,m是参与训练的GPU个数;如果G_Chuck(i)不是本次迭代的重要Chuck,则G_Vector(i)=HG_ChuckSum(i),其中,HG_ChuckSum(i)表示第i个HG_Chuck内全部元素的绝对值之和。
c)以各个GPU上得到的G_Vector作为输入,执行All-Reduce通信。其中,该All-Reduce通信操作会累加各个GPU上的G_Vector,并将累加后的结果广播到各个GPU上。经过All-Reduce后,每个GPU具有数值相同的G_Vector。
d)在每一个GPU上,比较通过广播接收到的G_Vector中的p个元素的大小。对于任意0≤i<p,如果G_Vector(i)是数值最大的q个元素之一,那么G_Chuck(i)被标记为下一次迭代的重要Chuck。如果G_Vector(i)不是数值最大的q个元素之一,那么G_Chuck(i)不被标记为下一次迭代的重要Chuck。
这样,通过块状稀疏方案,将反向转播过程中产生的全部梯度元素存储在大小一致的小块内,并且每次反向转播过程中只挑选一部分小块进行All-Reduce通信,降低通信量。此外,通过通信合并方案,将块状稀疏方法中挑选的梯度小块合并为一个大块进行All-Reduce通信,避免小数据量通信,提高带宽利用率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图11为本公开实施例提供的神经网络的训练装置的一种结构示意图。该实施例的装置可用于实现本公开上述各方法实施例。如图11所示,该实施例的装置包括:
前向传播单元1101,用于在当前迭代中利用神经网络对当前样本数据进行处理,获得所述神经网络中多个网络层的第一梯度数据。
其中,第一梯度数据包括L1个梯度元素。
重要梯度选取单元1102,用于从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
其中,1≤N1<L1。
参数调整单元1103,用于基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。
本公开实施例在每次反向转播过程中只挑选重要梯度数据进行通信,减少了通信量,降低反向传播过程中的网络流量,提高了神经网络的训练速度。
可选地,神经网络的多个网络层包括神经网络的所有网络层。
可选地,本公开实施例提供的装置还包括:
历史梯度获取单元,用于获取第一处理设备在当前迭代中对应的历史梯度数据;
梯度更新单元,用于基于历史梯度数据,对第一梯度数据进行更新处理,得到更新后的所述第一梯度数据;
重要梯度选取单元1102,用于从更新后的第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
可选地,历史梯度数据是基于第一处理设备在当前迭代的第一历史迭代中获得的多个网络层的第二梯度数据得到的。
可选地,历史梯度数据中的第一历史梯度元素的取值为0,其中,第一历史梯度元素对应的第二梯度数据中的第一梯度元素在第一历史迭代中被选择为重要梯度数据;
历史梯度数据中的第二历史梯度元素的取值等于第二历史梯度元素对应的第二梯度元素的数值,其中,第二梯度数据中的第二梯度元素在第一历史迭代中未被选择为重要梯度数据。
可选地,当前迭代的第一历史迭代包括当前迭代的上一次迭代。
可选地,梯度更新单元,用于将第一梯度数据包含的L1个梯度元素中每个梯度元素与历史梯度数据包括的L1个历史梯度元素中的对应元素相加,得到更新后的第一梯度数据包括的L1个梯度元素。
可选地,历史梯度获取单元,用于从第三存储空间获取第一处理设备在当前迭代中对应的历史梯度数据。
可选地,装置还包括:
历史数据更新单元,用于基于更新后的第一梯度数据,更新第三存储空间存储的历史梯度数据。
可选地,历史数据更新单元,用于基于更新后的第一梯度数据和更新后的第一梯度数据中每个梯度元素的重要类型,更新第三存储空间存储的历史梯度数据。
可选地,历史数据更新单元,用于将历史梯度数据中的第三历史梯度元素的取值更新为0,其中,第三历史梯度元素对应于更新后的第一梯度数据中被选为重要梯度数据的梯度元素;将历史梯度数据中的第四历史梯度元素的取值更新为第四历史梯度元素在更新后的第一梯度数据中对应的梯度元素的数值,其中,第四历史梯度元素在更新后的第一梯度数据中对应的梯度元素未被选择为重要梯度数据。
根据本公开实施例的另一个方面,提供的一种神经网络的训练系统,包括:
第一处理设备和至少一个第二处理设备。
其中,第一处理设备为如上任意一项实施例提供的设置有神经网络的训练装置的第一处理设备。
根据本公开实施例的又一个方面,提供的一种神经网络的训练系统,包括:
多个处理设备,其中,
处理设备用于在当前迭代中通过神经网络对当前样本数据进行处理,获得的神经网络中多个网络层的当前梯度数据,从当前梯度数据中选择第一重要梯度数据,并将第一重要梯度数据传输给多个处理设备中的其他处理设备;
处理设备还用于接收其他处理设备发送的第二重要梯度数据,并基于接收到的第二重要梯度数据以及第一重要梯度数据,在当前迭代中调整神经网络的网络参数。
本公开实施例通过多个处理设备对神经网络进行训练,提高了训练的速度,并且每个处理设备从当前迭代获得的梯度数据中获得部分梯度元素作为重要梯度数据进行传播,减少了通信量,降低反向传播过程中的网络流量,提高了神经网络的训练速度。
可选地,处理设备从当前梯度数据中选择第一重要梯度数据,包括:
处理设备在当前迭代的第二历史迭代中获得的多个网络层的第三梯度数据,从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
可选地,处理设备在从在当前迭代的第二历史迭代中获得的多个网络层的第三梯度数据,从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据时,用于在当前迭代的第二历史迭代中获得的多个网络层的第三梯度数据确定L1个梯度元素对应的重要类型标记信息;基于第一梯度数据包含的L1个梯度元素对应的重要类型标记信息,从L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
可选地,处理设备设置有第一存储空间;
处理设备还用于:将当前梯度数据存入第一存储空间,第一存储空间中包括多个存储块,其中,每个存储块用于存储当前梯度数据包括的L1个梯度元素中的多个梯度元素;
处理设备从当前梯度数据中选择第一重要梯度数据,包括:
处理设备从多个存储块中选取至少一个重要存储块,并将至少一个重要存储块中存储的N1个梯度元素作为第一重要梯度数据。
可选地,多个存储块具有相同的大小。
可选地,处理设备在从多个存储块中选取至少一个重要存储块时,用于基于多个处理设备中每个处理设备在当前迭代的第二历史迭代中存储到每个存储块的多个梯度元素,从多个存储块中选取至少一个重要存储块。
可选地,处理设备在基于多个处理设备中每个处理设备在当前迭代的第二历史迭代中存储到每个存储块的多个梯度元素,从多个存储块中选取至少一个重要存储块时,用于基于多个处理设备中每个处理设备的第三梯度数据中存储到第一存储空间中每个存储块的多个梯度元素,获得每个存储块在当前迭代中对应的度量值;基于多个存储块中每个存储块在当前迭代中对应的度量值,从多个存储块中选取至少一个重要存储块。
可选地,处理设备在基于多个处理设备中每个处理设备的第三梯度数据中存储到第一存储空间中每个存储块的多个梯度元素,获得每个存储块在当前迭代中对应的度量值时,用于基于存储块在当前迭代的第二历史迭代中的重要类型,对多个处理设备得到的第三梯度数据中存储到存储块的多个梯度元素进行累加处理,得到存储块在当前迭代中对应的度量值。
可选地,第二历史迭代为当前迭代的前一迭代。
可选地,处理设备在基于多个存储块中每个存储块在当前迭代中对应的度量值,从多个存储块中选取至少一个重要存储块时,用于将第一存储空间的多个存储块中对应的度量值最大的至少一个存储块确定为重要存储块。
可选地,处理设备设置有第二存储空间;
处理设备还用于:将选择的第一重要梯度数据存储到第二存储空间;
处理设备将第一重要梯度数据传输给多个处理设备中的其他处理设备,包括:
处理设备将第二存储空间中存储的第一重要梯度数据携带在同一消息中传输到其他处理设备。
可选地,处理设备还用于:
基于多个处理设备中每个处理设备在当前迭代中存储到多个存储块中每个存储块的多个梯度元素以及多个存储块中每个存储块在当前迭代中的重要类型,从多个存储块中选择当前迭代的下一迭代中的重要存储块。
可选地,处理设备为图形处理器。本公开实施例提供的神经网络的训练系统训练过程可参照图10中以两个图像处理器为例的训练过程进行理解,其中,每个处理设备(GPU0和GPU1)分别对当前迭代中的梯度数据进行筛选,获得重要梯度数据,并基于第二存储空间实现集合(All-Reduce)通信;每个处理设备将接收的所有重要梯度数据进行叠加后调整神经网络的网络参数。
根据本公开实施例的另一个方面,提供的一种计算机可读存储介质,用于存储计算机可读取的指令,指令被执行时执行如上任意一项实施例提供的神经网络的训练方法的操作。
根据本公开实施例的又一个方面,提供的一种计算机程序产品,包括计算机可读代码,当计算机可读代码在设备上运行时,设备中的处理器执行用于实现如上任意一项实施例提供的神经网络的训练方法的指令。
根据本公开实施例的再一个方面,提供的另一种计算机程序产品,用于存储计算机可读指令,指令被执行时使得计算机执行上述任意一项实施例提供的神经网络的训练方法的操作。
根据本公开实施例的又一个方面,提供的一种数据处理方法,包括:
获取待处理数据;
将待处理数据输入到神经网络进行处理,得到数据处理结果,其中,神经网络是根据上述任意一项实施例提供的训练方法训练得到的。
经过本公开上述任意一项实施例提供的训练方法训练得到的神经网络可以应用于对数据(例如,图像、音频等数据)进行处理,该数据处理的过程与一般神经网络进行数据处理类似,本公开实施例不限制神经网络对数据进行处理的具体过程。
根据本公开实施例的还一个方面,提供的一种数据处理装置,包括:
获取模块,用于获取待处理数据;
处理模块,用于将待处理数据输入到神经网络进行处理,得到数据处理结果,其中,神经网络是根据上述任意一项实施例提供的训练方法训练得到的。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选例子中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选例子中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
根据本公开实施例还提供了神经网络的训练方法和装置、系统、计算机存储介质、计算机程序产品,其中,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据;从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。
在一些实施例中,该网络获取指示或图像处理指示可以具体为调用指令,第一装置可以通过调用的方式指示第二装置执行神经网络的训练处理,相应地,响应于接收到调用指令,第二装置可以执行上述神经网络的训练方法中的任意实施例中的步骤和/或流程。
应理解,本公开实施例中的“第一”、“第二”等术语仅仅是为了区分,而不应理解成对本公开实施例的限定。
还应理解,在本公开中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
本公开实施例还提供了一种电子设备,例如可以是移动终端、个人计算机(PC)、平板电脑、服务器等。下面参考图12,其示出了适于用来实现本公开实施例的终端设备或服务器的电子设备1200的结构示意图:如图12所示,电子设备1200包括一个或多个处理器、通信部等,所述一个或多个处理器例如:一个或多个中央处理单元(CPU)1201,和/或一个或多个加速单元1213等,处理器可以根据存储在只读存储器(ROM)1202中的可执行指令或者从存储部分1208加载到随机访问存储器(RAM)1203中的可执行指令而执行各种适当的动作和处理。通信部1212可包括但不限于网卡,所述网卡可包括但不限于IB(Infiniband)网卡。
处理器可与只读存储器1202和/或随机访问存储器1203中通信以执行可执行指令,通过总线1204与通信部1212相连、并经通信部1212与其他目标设备通信,从而完成本公开实施例提供的任一项方法对应的操作,例如,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据;从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。
此外,在RAM 1203中,还可存储有装置操作所需的各种程序和数据。CPU1201、ROM1202以及RAM1203通过总线1204彼此相连。在有RAM1203的情况下,ROM1202为可选模块。RAM1203存储可执行指令,或在运行时向ROM1202中写入可执行指令,可执行指令使中央处理单元1201执行上述通信方法对应的操作。输入/输出(I/O)接口1205也连接至总线1204。通信部1212可以集成设置,也可以设置为具有多个子模块(例如多个IB网卡),并在总线链接上。
以下部件连接至I/O接口1205:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
需要说明的,如图12所示的架构仅为一种可选实现方式,在具体实践过程中,可根据实际需要对上述图12的部件数量和类型进行选择、删减、增加或替换;在不同功能部件设置上,也可采用分离设置或集成设置等实现方式,例如加速单元1213和CPU1201可分离设置或者可将加速单元1213集成在CPU1201上,通信部可分离设置,也可集成设置在CPU1201或加速单元1213上,等等。这些可替换的实施方式均落入本公开公开的保护范围。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码,程序代码可包括对应执行本公开实施例提供的方法步骤对应的指令,例如,第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得神经网络中多个网络层的第一梯度数据;从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;基于第一重要梯度数据,进行当前迭代中的对神经网络的网络参数的调整处理。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被中央处理单元(CPU)1201执行时,执行本公开的方法中限定的上述功能的操作。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

Claims (54)

1.一种神经网络的训练方法,其特征在于,包括:
第一处理设备在当前迭代中利用神经网络对当前样本数据进行处理,获得所述神经网络中多个网络层的第一梯度数据,其中,所述第一梯度数据包括L1个梯度元素;
从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;
基于所述第一重要梯度数据,进行所述当前迭代中的对所述神经网络的网络参数的调整处理;
基于多个存储块中每个存储块的多个梯度元素以及所述每个存储块在所述当前迭代中的重要类型,从所述多个存储块中选择所述当前迭代的下一迭代中的重要存储块;
其中,所述每个存储块用于存储所述第一梯度数据包括的L1个梯度元素中的多个梯度元素。
2.根据权利要求1所述的方法,其特征在于,所述神经网络的多个网络层包括所述神经网络的所有网络层。
3.根据权利要求1所述的方法,其特征在于,在从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据之前,还包括:
获取所述第一处理设备在所述当前迭代中对应的历史梯度数据;
基于所述历史梯度数据,对所述第一梯度数据进行更新处理,得到更新后的所述第一梯度数据;
所述从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,包括:
从所述更新后的第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
4.根据权利要求3所述的方法,其特征在于,所述历史梯度数据是基于所述第一处理设备在所述当前迭代的第一历史迭代中获得的多个网络层的第二梯度数据得到的。
5.根据权利要求4所述的方法,其特征在于,所述历史梯度数据中的第一历史梯度元素的取值为0,其中,所述第一历史梯度元素对应的所述第二梯度数据中的第一梯度元素在所述第一历史迭代中被选择为重要梯度数据;
所述历史梯度数据中的第二历史梯度元素的取值等于所述第二历史梯度元素对应的第二梯度元素的数值,其中,所述第二梯度数据中的所述第二梯度元素在所述第一历史迭代中未被选择为重要梯度数据。
6.根据权利要求4所述的方法,其特征在于,所述当前迭代的第一历史迭代包括所述当前迭代的上一次迭代。
7.根据权利要求3所述的方法,其特征在于,所述基于所述历史梯度数据,对所述第一梯度数据进行更新处理,得到更新后的所述第一梯度数据,包括:
将所述第一梯度数据包含的L1个梯度元素中每个梯度元素与所述历史梯度数据包括的L1个历史梯度元素中的对应元素相加,得到更新后的所述第一梯度数据包括的L1个梯度元素。
8.根据权利要求3所述的方法,其特征在于,所述获取所述第一处理设备在所述当前迭代中对应的历史梯度数据,包括:
从第三存储空间获取所述第一处理设备在所述当前迭代中对应的历史梯度数据。
9.根据权利要求8所述的方法,其特征在于,在从所述更新后的第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据之后,还包括:
基于所述更新后的第一梯度数据,更新所述第三存储空间存储的所述历史梯度数据。
10.根据权利要求9所述的方法,其特征在于,所述基于所述更新后的第一梯度数据,更新所述第三存储空间存储的所述历史梯度数据,包括:
基于所述更新后的第一梯度数据和所述更新后的第一梯度数据中每个梯度元素的重要类型,更新所述第三存储空间存储的所述历史梯度数据。
11.根据权利要求10所述的方法,其特征在于,所述基于所述更新后的第一梯度数据和所述更新后的第一梯度数据中每个梯度元素的重要类型,更新所述第三存储空间存储的所述历史梯度数据,包括:
将所述历史梯度数据中的第三历史梯度元素的取值更新为0,其中,所述第三历史梯度元素对应于所述更新后的第一梯度数据中被选为重要梯度数据的梯度元素;
将所述历史梯度数据中的第四历史梯度元素的取值更新为所述第四历史梯度元素在所述更新后的第一梯度数据中对应的梯度元素的数值,其中,所述第四历史梯度元素在所述更新后的第一梯度数据中对应的梯度元素未被选择为重要梯度数据。
12.根据权利要求1-11任一所述的方法,其特征在于,所述从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,包括:
基于所述第一处理设备和至少一个第二处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据,从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
13.根据权利要求12所述的方法,其特征在于,所述至少一个第二处理设备包括所述神经网络的训练系统中除所述第一处理设备之外的所有处理设备。
14.根据权利要求1-11任一所述的方法,其特征在于,所述从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,包括:
基于所述第一梯度数据包含的L1个梯度元素对应的重要类型标记信息,从所述L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,所述L1个梯度元素对应的重要类型标记信息是基于所述第一处理设备和至少一个第二处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据确定的。
15.根据权利要求1-11任一所述的方法,其特征在于,在从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据之前,还包括:
将所述第一梯度数据存入第一存储空间,所述第一存储空间中包括多个存储块;
所述从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,包括:
从所述多个存储块中选取至少一个重要存储块,并将所述至少一个重要存储块中存储的N1个梯度元素作为所述第一重要梯度数据。
16.根据权利要求15所述的方法,其特征在于,所述多个存储块中存储相同数量的梯度元素。
17.根据权利要求15所述的方法,其特征在于,所述从所述多个存储块中选取至少一个重要存储块,包括:
基于所述多个存储块的重要类型标记信息,从所述多个存储块中选取至少一个重要存储块,其中,所述存储块的重要类型标记信息是基于所述第一处理设备和至少一个第二处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据中存储到所述存储块的多个梯度元素确定的。
18.根据权利要求15中任一项所述的方法,其特征在于,所述从所述多个存储块中选取至少一个重要存储块,包括:
基于所述第一处理设备和至少一个第二处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据中存储到所述第一存储空间中每个存储块的多个梯度元素,获得所述每个存储块在所述当前迭代中对应的度量值;
基于所述多个存储块中每个存储块在所述当前迭代中对应的度量值,从所述多个存储块中选取至少一个重要存储块。
19.根据权利要求18所述的方法,其特征在于,所述基于所述第一处理设备和至少一个第二处理设备的第三梯度数据中存储到所述第一存储空间中每个存储块的多个梯度元素,获得所述每个存储块在所述当前迭代中对应的度量值,包括:
对所述第一处理设备和至少一个第二处理设备中每个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行处理,得到处理结果;
对所述第一处理设备和至少一个第二处理设备分别对应的处理结果进行累加处理,得到所述存储块在所述当前迭代中对应的度量值。
20.根据权利要求19所述的方法,其特征在于,所述对所述第一处理设备和至少一个第二处理设备中每个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行处理,得到处理结果,包括:
基于所述存储块在所述当前迭代的第二历史迭代中的重要类型,对所述每个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行处理,得到处理结果。
21.根据权利要求20所述的方法,其特征在于,所述基于所述存储块在所述当前迭代的第二历史迭代中的重要类型,对所述每个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行处理,得到处理结果,包括:
响应于所述多个存储块中的第一存储块为所述当前迭代的第二历史迭代中的重要存储块,对所述每个处理设备得到的第三梯度数据中存储到所述第一存储块的多个梯度元素的绝对值进行求和后除以所述第一处理设备和所述至少一个第二处理设备的处理设备总数,得到处理结果;和/或
响应于所述多个存储块中的第二存储块在所述当前迭代的第二历史迭代中未被选择为重要存储块,将所述每个处理设备得到的所述第三梯度数据中存储到所述第二存储块的多个梯度元素的绝对值进行求和,得到处理结果。
22.根据权利要求12所述的方法,其特征在于,所述第二历史迭代为所述当前迭代的前一迭代。
23.根据权利要求18所述的方法,其特征在于,所述基于所述多个存储块中每个存储块在所述当前迭代中对应的度量值,从所述多个存储块中选取至少一个重要存储块,包括:
将所述第一存储空间的多个存储块中对应的度量值最大的至少一个存储块确定为重要存储块。
24.根据权利要求1-11任一所述的方法,其特征在于,所述基于所述第一重要梯度数据,进行所述当前迭代中的对所述神经网络的网络参数的调整处理,包括:
获取至少一个第二处理设备中每个第二处理设备在所述当前迭代中获得的第二重要梯度数据;
基于所述至少一个第二处理设备中每个第二处理设备获得的第二重要梯度数据和所述第一重要梯度数据,得到总梯度数据;
基于所述总梯度数据,进行所述当前迭代中的对所述神经网络的网络参数的调整处理。
25.根据权利要求24所述的方法,其特征在于,还包括:
将所述第一重要梯度数据存储到第二存储空间;
将所述第二存储空间中存储的所述第一重要梯度数据携带在同一消息中传输到所述至少一个第二处理设备中的每个第二处理设备,以实现所述第二处理设备在所述当前迭代中进行所述神经网络的网络参数的调整处理。
26.根据权利要求1-11中任一项所述的方法,其特征在于,所述第一处理设备为图形处理器。
27.一种神经网络的训练装置,其特征在于,设置在第一处理设备中,包括:
前向传播单元,用于在当前迭代中利用神经网络对当前样本数据进行处理,获得所述神经网络中多个网络层的第一梯度数据,其中,所述第一梯度数据包括L1个梯度元素;
重要梯度选取单元,用于从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据,其中,1≤N1<L1;
参数调整单元,用于基于所述第一重要梯度数据,进行所述当前迭代中的对所述神经网络的网络参数的调整处理;所述参数调整单元,还用于基于多个存储块中每个存储块的多个梯度元素以及所述每个存储块在所述当前迭代中的重要类型,从所述多个存储块中选择所述当前迭代的下一迭代中的重要存储块;其中,所述每个存储块用于存储所述第一梯度数据包括的L1个梯度元素中的多个梯度元素。
28.根据权利要求27所述的装置,其特征在于,所述神经网络的多个网络层包括所述神经网络的所有网络层。
29.根据权利要求27所述的装置,其特征在于,所述装置还包括:
历史梯度获取单元,用于获取所述第一处理设备在所述当前迭代中对应的历史梯度数据;
梯度更新单元,用于基于所述历史梯度数据,对所述第一梯度数据进行更新处理,得到更新后的所述第一梯度数据;
所述重要梯度选取单元,用于从所述更新后的第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
30.根据权利要求29所述的装置,其特征在于,所述历史梯度数据是基于所述第一处理设备在所述当前迭代的第一历史迭代中获得的多个网络层的第二梯度数据得到的。
31.根据权利要求30所述的装置,其特征在于,所述历史梯度数据中的第一历史梯度元素的取值为0,其中,所述第一历史梯度元素对应的所述第二梯度数据中的第一梯度元素在所述第一历史迭代中被选择为重要梯度数据;
所述历史梯度数据中的第二历史梯度元素的取值等于所述第二历史梯度元素对应的第二梯度元素的数值,其中,所述第二梯度数据中的所述第二梯度元素在所述第一历史迭代中未被选择为重要梯度数据。
32.根据权利要求30所述的装置,其特征在于,所述当前迭代的第一历史迭代包括所述当前迭代的上一次迭代。
33.根据权利要求29-32任一所述的装置,其特征在于,所述梯度更新单元,用于将所述第一梯度数据包含的L1个梯度元素中每个梯度元素与所述历史梯度数据包括的L1个历史梯度元素中的对应元素相加,得到更新后的所述第一梯度数据包括的L1个梯度元素。
34.根据权利要求29-32任一所述的装置,其特征在于,所述历史梯度获取单元,用于从第三存储空间获取所述第一处理设备在所述当前迭代中对应的历史梯度数据。
35.根据权利要求34所述的装置,其特征在于,所述装置还包括:
历史数据更新单元,用于基于所述更新后的第一梯度数据,更新所述第三存储空间存储的所述历史梯度数据。
36.根据权利要求35所述的装置,其特征在于,所述历史数据更新单元,用于基于所述更新后的第一梯度数据和所述更新后的第一梯度数据中每个梯度元素的重要类型,更新所述第三存储空间存储的所述历史梯度数据。
37.根据权利要求36所述的装置,其特征在于,所述历史数据更新单元,用于将所述历史梯度数据中的第三历史梯度元素的取值更新为0,其中,所述第三历史梯度元素对应于所述更新后的第一梯度数据中被选为重要梯度数据的梯度元素;将所述历史梯度数据中的第四历史梯度元素的取值更新为所述第四历史梯度元素在所述更新后的第一梯度数据中对应的梯度元素的数值,其中,所述第四历史梯度元素在所述更新后的第一梯度数据中对应的梯度元素未被选择为重要梯度数据。
38.一种神经网络的训练系统,其特征在于,包括:
第一处理设备和至少一个第二处理设备,其中,所述第一处理设备为权利要求27至37任意一项中所述的设置有神经网络的训练装置的第一处理设备。
39.一种神经网络的训练系统,其特征在于,包括:
多个处理设备,其中,
所述处理设备用于在当前迭代中通过神经网络对当前样本数据进行处理,获得的所述神经网络中多个网络层的第一梯度数据,从所述第一梯度数据中选择第一重要梯度数据,并将所述第一重要梯度数据传输给所述多个处理设备中的其他处理设备;
所述处理设备还用于接收所述其他处理设备发送的第二重要梯度数据,并基于接收到的所述第二重要梯度数据以及所述第一重要梯度数据,在所述当前迭代中调整所述神经网络的网络参数;
所述处理设备还用于基于多个存储块中每个存储块的多个梯度元素以及所述每个存储块在所述当前迭代中的重要类型,从所述多个存储块中选择所述当前迭代的下一迭代中的重要存储块;其中,所述每个存储块用于存储所述第一梯度数据包括的L1个梯度元素中的多个梯度元素。
40.根据权利要求39所述的系统,其特征在于,所述处理设备从所述第一梯度数据中选择第一重要梯度数据,包括:
所述处理设备在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据,从第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
41.根据权利要求40所述的系统,其特征在于,所述处理设备在从在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据,从所述第一梯度数据包含的L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据时,用于在所述当前迭代的第二历史迭代中获得的所述多个网络层的第三梯度数据确定所述L1个梯度元素对应的重要类型标记信息;基于所述第一梯度数据包含的L1个梯度元素对应的重要类型标记信息,从所述L1个梯度元素中选取N1个梯度元素作为第一重要梯度数据。
42.根据权利要求39-41任一所述的系统,其特征在于,所述处理设备设置有第一存储空间;
所述处理设备还用于:将所述第一梯度数据存入所述第一存储空间,所述第一存储空间中包括多个存储块;
所述处理设备从所述第一梯度数据中选择第一重要梯度数据,包括:
所述处理设备从所述多个存储块中选取至少一个重要存储块,并将所述至少一个重要存储块中存储的N1个梯度元素作为所述第一重要梯度数据。
43.根据权利要求42所述的系统,其特征在于,所述多个存储块具有相同的大小。
44.根据权利要求43所述的系统,其特征在于,所述处理设备在从所述多个存储块中选取至少一个重要存储块时,用于基于所述多个处理设备中每个处理设备在所述当前迭代的第二历史迭代中存储到每个存储块的多个梯度元素,从所述多个存储块中选取至少一个重要存储块。
45.根据权利要求44所述的系统,其特征在于,所述处理设备在基于所述多个处理设备中每个处理设备在所述当前迭代的第二历史迭代中存储到每个存储块的多个梯度元素,从所述多个存储块中选取至少一个重要存储块时,用于基于所述多个处理设备中每个处理设备的第三梯度数据中存储到所述第一存储空间中每个存储块的多个梯度元素,获得所述每个存储块在所述当前迭代中对应的度量值;基于所述多个存储块中每个存储块在所述当前迭代中对应的度量值,从所述多个存储块中选取至少一个重要存储块。
46.根据权利要求45所述的系统,其特征在于,所述处理设备在基于所述多个处理设备中每个处理设备的第三梯度数据中存储到所述第一存储空间中每个存储块的多个梯度元素,获得所述每个存储块在所述当前迭代中对应的度量值时,用于基于所述存储块在所述当前迭代的第二历史迭代中的重要类型,对所述多个处理设备得到的第三梯度数据中存储到所述存储块的多个梯度元素进行累加处理,得到所述存储块在所述当前迭代中对应的度量值。
47.根据权利要求45所述的系统,其特征在于,所述第二历史迭代为所述当前迭代的前一迭代。
48.根据权利要求45所述的系统,其特征在于,所述处理设备在基于所述多个存储块中每个存储块在所述当前迭代中对应的度量值,从所述多个存储块中选取至少一个重要存储块时,用于将所述第一存储空间的多个存储块中对应的度量值最大的至少一个存储块确定为重要存储块。
49.根据权利要求48所述的系统,其特征在于,所述处理设备设置有第二存储空间;
所述处理设备还用于:将选择的所述第一重要梯度数据存储到所述第二存储空间;
所述处理设备将所述第一重要梯度数据传输给所述多个处理设备中的其他处理设备,包括:
所述处理设备将所述第二存储空间中存储的所述第一重要梯度数据携带在同一消息中传输到所述其他处理设备。
50.根据权利要求39所述的系统,其特征在于,所述处理设备为图形处理器。
51.一种计算机可读存储介质,用于存储计算机可读取的指令,其特征在于,所述指令被执行时执行权利要求1至26任意一项所述神经网络的训练方法的操作。
52.一种计算机程序产品,包括计算机可读代码,其特征在于,当所述计算机可读代码在设备上运行时,所述设备中的处理器执行用于实现权利要求1至26任意一项所述神经网络的训练方法的指令。
53.一种数据处理方法,其特征在于,包括:
获取待处理数据;
将所述待处理数据输入到神经网络进行处理,得到数据处理结果,其中,所述神经网络是根据权利要求1至26任意一项所述的训练方法训练得到的。
54.一种数据处理装置,其特征在于,包括:
获取模块,用于获取待处理数据;
处理模块,用于将所述待处理数据输入到神经网络进行处理,得到数据处理结果,其中,所述神经网络是根据权利要求1至26任意一项所述的训练方法训练得到的。
CN201910123018.3A 2019-02-19 2019-02-19 神经网络的训练方法和装置、系统、存储介质 Active CN109871942B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910123018.3A CN109871942B (zh) 2019-02-19 2019-02-19 神经网络的训练方法和装置、系统、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910123018.3A CN109871942B (zh) 2019-02-19 2019-02-19 神经网络的训练方法和装置、系统、存储介质

Publications (2)

Publication Number Publication Date
CN109871942A CN109871942A (zh) 2019-06-11
CN109871942B true CN109871942B (zh) 2021-06-11

Family

ID=66918818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910123018.3A Active CN109871942B (zh) 2019-02-19 2019-02-19 神经网络的训练方法和装置、系统、存储介质

Country Status (1)

Country Link
CN (1) CN109871942B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110600020B (zh) * 2019-09-12 2022-05-17 上海依图信息技术有限公司 一种梯度传输方法及装置
CN111723933B (zh) * 2020-06-03 2024-04-16 上海商汤智能科技有限公司 神经网络模型的训练方法和相关产品
CN112862096A (zh) * 2021-02-04 2021-05-28 百果园技术(新加坡)有限公司 一种模型训练和数据处理方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108021982A (zh) * 2016-10-28 2018-05-11 北京市商汤科技开发有限公司 数据传输方法和系统、电子设备
CN108229652A (zh) * 2017-11-28 2018-06-29 北京市商汤科技开发有限公司 神经网络模型迁移方法和系统、电子设备、程序和介质
CN108229533A (zh) * 2017-11-22 2018-06-29 深圳市商汤科技有限公司 图像处理方法、模型剪枝方法、装置及设备
CN108986063A (zh) * 2018-07-25 2018-12-11 浪潮(北京)电子信息产业有限公司 梯度融合的方法、装置及计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102195223B1 (ko) * 2016-03-18 2020-12-24 구글 엘엘씨 전역적으로 노멀화된 신경 네트워크들
US20180349765A1 (en) * 2017-05-30 2018-12-06 Xerox Corporation Log-linear recurrent neural network
CN113807498B (zh) * 2018-07-09 2022-10-04 北京市商汤科技开发有限公司 模型扩展方法及装置、电子设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108021982A (zh) * 2016-10-28 2018-05-11 北京市商汤科技开发有限公司 数据传输方法和系统、电子设备
CN108229533A (zh) * 2017-11-22 2018-06-29 深圳市商汤科技有限公司 图像处理方法、模型剪枝方法、装置及设备
CN108229652A (zh) * 2017-11-28 2018-06-29 北京市商汤科技开发有限公司 神经网络模型迁移方法和系统、电子设备、程序和介质
CN108986063A (zh) * 2018-07-25 2018-12-11 浪潮(北京)电子信息产业有限公司 梯度融合的方法、装置及计算机可读存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A Distributed Synchronous SGD Algorithm with Global Top-k Sparsification for Low Bandwidth Networks;Shaohuai Shi 等;《arXiv》;20190115;第1-12页 *
DEEP GRADIENT COMPRESSION:REDUCING THE COMMUNICATION BANDWIDTH FOR DISTRIBUTED TRAINING;Yujun Lin 等;《arXiv》;20180206;第1-13页 *
Yujun Lin 等.DEEP GRADIENT COMPRESSION:REDUCING THE COMMUNICATION BANDWIDTH FOR DISTRIBUTED TRAINING.《arXiv》.2018,第1-13页. *
基于分布式图计算的台区负荷预测技术研究;蒋玮 等;《中国电机工程学报》;20180630;第38卷(第12期);第3419-3430页 *

Also Published As

Publication number Publication date
CN109871942A (zh) 2019-06-11

Similar Documents

Publication Publication Date Title
US20190279088A1 (en) Training method, apparatus, chip, and system for neural network model
US11295208B2 (en) Robust gradient weight compression schemes for deep learning applications
CN109871942B (zh) 神经网络的训练方法和装置、系统、存储介质
CN113064879A (zh) 数据库参数调整方法、装置及计算机可读存储介质
US20210295168A1 (en) Gradient compression for distributed training
US20230196202A1 (en) System and method for automatic building of learning machines using learning machines
CN109993298B (zh) 用于压缩神经网络的方法和装置
US11843587B2 (en) Systems and methods for tree-based model inference using multi-party computation
CN111695624A (zh) 数据增强策略的更新方法、装置、设备及存储介质
CN113011210B (zh) 视频处理方法和装置
CN112420125A (zh) 分子属性预测方法、装置、智能设备和终端
CN117616424A (zh) 用于平衡权重中的稀疏性以用于加速深度神经网络的系统和方法
CN110633735A (zh) 基于小波变换的渐进式深度卷积网络图像识别方法及装置
CN115114329A (zh) 数据流异常检测的方法、装置、电子设备和存储介质
WO2023038995A1 (en) Systems and methods for securely training a decision tree
CN113066038A (zh) 图像评估方法、装置、电子设备及计算机存储介质
CN117496275B (zh) 基于类增学习的深度图像分类网络训练方法、电子设备及存储介质
CN111767204A (zh) 溢出风险检测方法、装置及设备
CN111330269B (zh) 应用难度调整和策略确定方法、装置、系统、设备及介质
CN114898180A (zh) 多任务神经网络的训练方法、多任务处理方法及装置
Lin et al. Communication-Efficient Separable Neural Network for Distributed Inference on Edge Devices
CN117829222A (zh) 模型量化方法、装置、电子设备和计算机可读存储介质
WO2023225552A1 (en) Decentralized federated learning using a random walk over a communication graph
CN116933856A (zh) 神经网络的剪枝处理方法、装置、设备及介质
CN116933857A (zh) 神经网络的剪枝处理方法、装置、设备及介质

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