CN111723933B - 神经网络模型的训练方法和相关产品 - Google Patents
神经网络模型的训练方法和相关产品 Download PDFInfo
- Publication number
- CN111723933B CN111723933B CN202010496921.7A CN202010496921A CN111723933B CN 111723933 B CN111723933 B CN 111723933B CN 202010496921 A CN202010496921 A CN 202010496921A CN 111723933 B CN111723933 B CN 111723933B
- Authority
- CN
- China
- Prior art keywords
- gradient information
- neural network
- network layer
- working node
- network model
- 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
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 330
- 238000000034 method Methods 0.000 title claims abstract description 175
- 238000012549 training Methods 0.000 title claims abstract description 72
- 230000005540 biological transmission Effects 0.000 claims abstract description 91
- 238000012545 processing Methods 0.000 claims description 158
- 230000004927 fusion Effects 0.000 claims description 116
- 238000004590 computer program Methods 0.000 claims description 10
- 238000009825 accumulation Methods 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 59
- 238000004364 calculation method Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例公开了一种神经网络模型的训练方法和相关产品,该方法包括:第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数。本申请实施例中,第一工作节点在与至少一个第二工作节点进行神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新神经网络模型中的第二网络层的参数;将更新神经网络模型的参数的过程和传输本地梯度信息的过程重叠,可以提高模型训练效率。
Description
技术领域
本申请涉及模型训练领域,尤其涉及一种神经网络模型的训练方法和相关产品。
背景技术
深度学***台中,高效的分布式模型训练方案依旧是一个棘手的实际问题。因此,需要研究更高效的分布式模型训练方案。
发明内容
本申请实施例公开了一种神经网络模型的训练方法和相关产品。
第一方面,本申请实施例提供了一种神经网络模型的训练方法,该方法包括:第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数。
神经网络模型可以包含若干个层(Layer),其分布式并行训练过程可以分为各个层的前向计算(Forward Pass),反向计算(Backward Pass),梯度数据同步(AllreduceGradients)以及参数更新(Update Parameters)。在一些实施例中,前向计算为正序逐层操作,反向计算为逆序逐层操作;梯度数据同步主要占用网络带宽资源,其他操作占用处理器的计算资源。本申请实施例中,第一工作节点并行执行参数更新与梯度数据同步,以便隐藏通信开销,能够充分发掘模型训练过程中的可重叠部分,降低通信造成的延迟,提高模型训练效率。
本申请实施例中,第一工作节点在与至少一个第二工作节点进行神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新神经网络模型中的第二网络层的参数;将更新神经网络模型的参数的过程和传输本地梯度信息的过程重叠,可以提高模型训练效率。
在一个可能的实现方式中,所述方法还包括:所述第一工作节点基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;其中,所述第一工作节点基于所述多个操作之间的依赖关系执行所述多个操作。
在该实现方式中,可以基于神经网络模型的多个网络层的连接关系,准确地确定当前迭代的多个操作之间的依赖关系,并基于该多个操作之间的依赖关系先后执行该多个操作中的各操作。
在一个可能的实现方式中,所述第一工作节点以逆序的方式逐层更新所述神经网络模型中多个网络层的参数;和/或,所述第二网络层的网络深度大于所述第一网络层的网络深度。可选的,所述第一工作节点与至少一个第二工作节点以逆序的方式逐层传输所述神经网络模型中的多个网络层的本地梯度信息;所述第一工作节点以逆序的方式逐层计算所述神经网络模型中多个网络层的本地梯度信息(对应于反向计算为逆序逐层操作)。
在一个可能的实现方式中,所述在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数包括:
所述第一工作节点在与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
在该实现方式中,可以保证能成功实现更新第二网络层的参数的操作。
在一个可能的实现方式中,所述方法还包括:所述第一工作节点在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息。
在该实现方式中,第一工作节点在与至少一个第二工作节点进行神经网络模型中的第一网络层的本地梯度信息传输的过程中,计算神经网络模型中的第三网络层的本地梯度信息;将计算神经网络模型中的网络层的本地梯度信息的过程和传输本地梯度信息的过程重叠(即通信和计算重叠),可以提高模型训练效率。
在一个可能的实现方式中,在所述第一工作节点对神经网络模型进行当前迭代之前,所述方法还包括:所述第一工作节点对所述神经网络模型进行至少一次内层迭代,得到所述至少一次内层迭代对应的中间融合梯度信息;所述第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息,包括:所述第一工作节点基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的至少一个网络层的目标融合梯度信息;所述第一工作节点与所述至少一个第二工作节点传输的所述第一网络层的本地梯度信息包括所述第一网络层的目标融合梯度信息。
所述第一工作节点对所述神经网络模型进行至少一次内层迭代,可得到一组本地梯度信息。一组本地梯度信息可以理解为第一工作节点完成神经网络模型中各网络层的前向计算和反向计算得到的全部本地梯度信息。神经网络模型的一个网络层的目标融合梯度信息可以理解为由多次内层迭代得到的该网络层的多组本地梯度信息融合得到的梯度信息。
在该实现方式中,第一工作节点至少一个第二工作节点传输网络层的目标融合梯度信息;可以减少梯度信息的传输次数和总通信量。
在一个可能的实现方式中,所述第一工作节点基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的至少一个网络层的目标融合梯度信息包括:所述第一工作节点对所述中间融合梯度信息和所述当前迭代得到的本地梯度信息进行累加处理,得到所述神经网络模型的至少一个网络层的目标融合梯度信息。
在一个可能的实现方式中,所述方法还包括:所述第一工作节点在基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的第三网络层的目标融合梯度信息的过程中,与所述至少一个第二工作节点进行所述神经网络模型的第四网络层的目标融合梯度信息的传输。可选的,所述第四网络层的网络深度大于所述第三网络层的网络深度。
在该实现方式中,将计算神经网络模型中的网络层的目标融合梯度信息的过程和传输网络层的目标融合梯度信息的过程重叠(即计算和通信重叠),可以提高模型训练效率。
在一个可能的实现方式中,在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输之前,所述方法还包括:所述第一工作节点将所述第一网络层的本地梯度信息中的各个数值均放大M倍,并将放大后的各个数值转换为半精度;所述M为大于1的实数。
在该实现方式中,通过对本地梯度信息中的各个数值采用低精度存储,可以减少本地梯度信息的数据量。
在一个可能的实现方式中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数之前,所述方法还包括:所述第一工作节点将获得的所述第二网络层的本地梯度信息中包括的各个数值转换为单精度,并将所述转换得到的各个数值缩小M倍以得到处理梯度信息,所述M为大于1的实数;所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数包括:所述第一工作节点利用所述处理梯度信息更新所述神经网络模型中的所述第二网络层的参数。
在一个可能的实现方式中,在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输之前,所述方法还包括:所述第一工作节点基于所述第一网络层对应的偏移量,将计算得到的所述第一网络层的本地梯度信息存储至预先分配的目标存储空间,其中,所述目标存储空间用于存储所述神经网络模型的多个网络层的本地梯度信息;其中,所述第一工作节点发送的所述第一网络层的本地梯度信息是基于所述第一网络层对应的偏移量从所述目标存储空间中获取的,和/或,所述第一工作节点基于接收到的来自于所述至少一个第二工作节点的所述第一网络层的本地梯度信息,更新所述目标存储空间存储的所述第一网络层的本地梯度信息。
在该实现方式中,可以快速、准确地基于第一网络层对应的偏移量从目标存储空间中获取的第一网络层的本地梯度信息和/或更新目标存储空间存储的第一网络层的本地梯度信息。
在一个可能的实现方式中,在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输之前,所述方法还包括:所述第一工作节点将计算得到的所述神经网络模型的多个网络层的本地梯度信息存储至预先分配的目标存储空间,并通过内存管理器确定所述多个网络层中每个网络层对应的偏移量;所述目标存储空间为一个连续的存储空间;所述第一工作节点基于所述多个网络层中每个网络层对应的偏移量,从所述目标存储空间中获取所述多个网络层中的至少两个网络层的本地梯度信息;所述至少两个网络层包括所述第一网络层;所述与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输包括:与所述至少一个第二工作节点进行所述神经网络模型中的所述至少两个网络层的本地梯度信息传输。
应理解,实现方式的主要原理是:将若干个网络层的本地梯度信息合并到一块较大的数组,再发起一次全局通信;这样可以提升全局通信效率,减少全局通信次数。
第二方面,本申请实施例提供了一种图像预测方法,该方法包括:获取待处理图像;利用上述第一方面以及任一项可能的实现方式中训练得到的神经网络模型对所述待处理图像进行预测处理,得到预测结果。
第三方面,本申请实施例提供了一种数据处理装置,包括:处理模块,用于基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;所述处理模块,还用于在收发模块与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新所述神经网络模型中的第二网络层的参数。
在一个可能的实现方式中,所述处理模块,还用于基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;基于所述多个操作之间的依赖关系执行所述多个操作。
在一个可能的实现方式中,所述第一工作节点以逆序的方式逐层更新所述神经网络模型中多个网络层的参数;和/或所述第二网络层的网络深度大于所述第一网络层的网络深度。
在一个可能的实现方式中,所述处理模块,具体用于在所述收发模块与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
在一个可能的实现方式中,所述处理模块,还用于在所述收发模块在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息。
在一个可能的实现方式中,所述处理模块,还用于对所述神经网络模型进行至少一次内层迭代,得到所述至少一次内层迭代对应的中间融合梯度信息;所述处理模块,具体用于基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的至少一个网络层的目标融合梯度信息;所述第一工作节点与所述至少一个第二工作节点传输的所述第一网络层的本地梯度信息包括所述第一网络层的目标融合梯度信息。
在一个可能的实现方式中,所述处理模块,具体用于对所述中间融合梯度信息和所述当前迭代得到的本地梯度信息进行累加处理,得到所述神经网络模型的至少一个网络层的目标融合梯度信息。
在一个可能的实现方式中,所述收发模块,还用于在所述处理模块基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的第三网络层的目标融合梯度信息的过程中,与所述至少一个第二工作节点进行所述神经网络模型的第四网络层的目标融合梯度信息的传输。
在一个可能的实现方式中,所述处理模块,还用于将所述第一网络层的本地梯度信息中的各个数值均放大M倍,并将放大后的各个数值转换为半精度;所述M为大于1的实数。
在一个可能的实现方式中,所述处理模块,还用于将获得的所述第二网络层的本地梯度信息中包括的各个数值转换为单精度,并将所述转换得到的各个数值缩小M倍以得到处理梯度信息,所述M为大于1的实数;所述处理模块,具体用于利用所述处理梯度信息更新所述神经网络模型中的所述第二网络层的参数。
在一个可能的实现方式中,所述处理模块,还用于基于所述第一网络层对应的偏移量,将计算得到的所述第一网络层的本地梯度信息存储至预先分配的目标存储空间,其中,所述目标存储空间用于存储所述神经网络模型的多个网络层的本地梯度信息;其中,所述收发模块发送的所述第一网络层的本地梯度信息是基于所述第一网络层对应的偏移量从所述目标存储空间中获取的,和/或,所述处理模块,还用于基于接收到的来自于所述至少一个第二工作节点的所述第一网络层的本地梯度信息,更新所述目标存储空间存储的所述第一网络层的本地梯度信息。
在一个可能的实现方式中,所述处理模块,还用于将计算得到的所述神经网络模型的多个网络层的本地梯度信息存储至预先分配的目标存储空间,并通过内存管理器确定所述多个网络层中每个网络层对应的偏移量;所述目标存储空间为一个连续的存储空间;所述第一工作节点基于所述多个网络层中每个网络层对应的偏移量,从所述目标存储空间中获取所述多个网络层中的至少两个网络层的本地梯度信息;所述至少两个网络层包括所述第一网络层;所述收发模块,具体用于与所述至少一个第二工作节点进行所述神经网络模型中的所述至少两个网络层的本地梯度信息传输。
关于第三方面或各种可能的实施方式所带来的技术效果,可参考对于第一方面或相应的实现方式的技术效果的介绍。
第四方面,本申请实施例提供了一种数据处理装置,包括:获取模块,用于获取待处理图像;处理模块,用于利用上述第一方面以及任一项可能的实现方式训练得到的神经网络模型对所述待处理图像进行预测处理,得到预测结果。
第五方面,本申请实施例提供了一种电子设备,该电子设备包括:处理器和存储器,其中,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,使得所述处理器执行如上述第一方面以及任一种可能的实现方式的方法。
第六方面,本申请实施例提供了一种电子设备,该电子设备包括:处理器和存储器,其中,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,使得所述处理器执行如上述第二方面以及任一种可能的实现方式的方法。
第七方面,本申请实施例提供了一种芯片,该芯片包括数据接口和处理器,其中,所述处理器用于执行第一方面或第一方面的任意可能实现方式中的方法。
第八方面,本申请实施例提供了一种芯片,该芯片包括数据接口和处理器,其中,所述处理器用于执行第二方面或第二方面的任意可能实现方式中的方法。
第九方面,本申请实施例提供了一种计算机可读存储介质,该计算机存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第一方面以及任一种可能的实现方式的方法。
第十方面,本申请实施例提供了一种计算机可读存储介质,该计算机存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第二方面以及任一种可能的实现方式的方法。
第十一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面以及任一种可能的实现方式的方法。
第十二方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第二方面以及任一种可能的实现方式的方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1为本申请实施例提供的一种分布式训练流程图的示例;
图2为本申请实施例提供的一种神经网络模型的训练方法流程图;
图3为本申请实施例提供的一种计算通信重叠的示例的示意图;
图4为本申请实施例提供的另一种计算通信重叠的示例的示意图;
图5为本申请实施例提供的一种内层迭代方法流程图;
图6为本申请实施例提供的一种通信融合策略的一个示例的示意图;
图7为本申请实施例提供的一种图像预测方法流程图;
图8为本申请实施例提供的一种数据处理装置的结构示意图;
图9为本申请实施例提供的另一种数据处理装置的结构示意图;
图10为本申请实施例提供的一种服务器的结构示意图;
图11为本申请实施例提供的一种终端设备的结构示意图。
具体实施方式
本申请的说明书实施例和权利要求书及上述附图中的术语“第一”、“第二”、和“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
高效的分布式模型训练方案是棘手的实际问题。本申请提供了适用于分布式模型训练场景的神经网络模型的训练方法,能够提高模型训练效率。下面分别对本申请实施例提供的神经网络模型的训练方法适用的场景进行简单的介绍。
分布式模型训练场景:分布式训练***包括多个工作节点,每个工作节点的功能基本相同,各个工作节点通过对神经网络模型进行多次迭代训练,得到训练好的神经网络模型。在一次迭代中,每个工作节点使用各自的训练样本对神经网络模型进行训练,得到各自的本地梯度信息;然后,多个工作节点之间进行数据同步,以使得多个工作节点中的每个工作节点获得所有工作节点的本地梯度信息,然后将得到的所有工作节点的本地梯度信息进行融合,得到全局梯度信息,或者,多个工作节点中的每个工作节点得到通过对所有其他工作节点的本地梯度信息进行融合得到的融合梯度信息,然后将自身的本地梯度信息与融合梯度信息进行融合,得到全局梯度信息。作为一个例子,每个工作节点将自身计算得到的本地梯度信息和/或来自其他工作节点的本地梯度信息发送给其他工作节点,或者发送自身得到的本地梯度信息与接收到的来自于至少一个其他工作节点的本地梯度信息进行融合得到的融合梯度信息,例如,发送给自己的左侧或右侧的工作节点,直到每个工作节点均得到所有工作节点计算得到的本地梯度信息、融合梯度信息或者全局梯度信息;然后,每个工作节点利用由全部的工作节点计算得到的本地梯度信息融合得到的全局梯度信息,更新神经网络模型。这样的迭代进行多次,每个工作节点在每次迭代中重复执行之前的操作,直到达到训练截止条件,例如,神经网络模型收敛或者训练次数得到预设次数等。在该分布式模型训练场景中,在一些实施例中,每个工作节点采用的神经网络模型相同,并且各工作节点同步更新神经网络模型,不同工作节点训练神经网络模型使用的训练样本不同。也就是说,各工作节点采用的神经网络模型一直是相同的。在一些实施例中,多个工作节点可以是同一个终端设备或者服务器上的多个处理器。举例来说,某个服务器上的8个GPU作为8个工作节点,即一个GPU对应一个工作节点。在一些实施例中,一个工作节点或至少两个工作节点对应一个硬件实体,例如终端设备或者服务器。举例来说,8个笔记本电脑作为8个工作节点,即一个笔记本电脑作为一个工作节点。又举例来说,32台服务器上的256块GPU作为256个工作节点。又举例来说,分布式训练***包括多个工作节点为一个或多个设备(例如服务器)中运行的多个虚拟机。
在上述场景中,通过实施本申请实施例提供的神经网络模型的训练方法,将工作节点更新神经网络模型的参数的过程和工作节点的梯度数据同步过程并行执行,可以提高训练效率。
下面结合一个分布式训练流程图的示例来描述本申请实施例提供的神经网络模型的训练方法。
图1为本申请实施例提供的一种分布式训练流程图的示例。如图1所示,GPU 0、GPU1、GPU 2以及GPU 3分别为分布式训练***中的一个工作节点,神经网络模型包括若干个层(Layer),GPU 0、GPU 1、GPU 2以及GPU 3的并行训练过程可以包括:各个层的前向计算(Forward Pass),反向传播(Backward Pass),梯度数据同步(如梯度规约通信(AllreduceGradients))以及参数更新(Update Parameters)。其中,在前向计算中,神经网络模型的各个层依次对输入到神经网络模型的图像进行处理,得到对该图像的处理结果。然后,可以基于处理结果和特定计算规则,得到神经网络模型的最后一层的梯度,在反向传播中,可以将最后一层的梯度反向传播,依次计算神经网络模型的各个层的梯度。在梯度数据同步中,多个工作节点之间可以进行梯度数据的同步。本申请实施例中,梯度数据同步的目的是使得每个工作节点均获得由全部的工作节点计算得到的本地梯度信息融合得到的全局梯度信息,本申请对实现这一目的的方式不作限定。在参数更新中,各工作节点利用梯度数据同步得到的全局梯度信息,进行神经网络模型的网络参数的更新,例如权重等。
在图1所示的例子中,不同工作节点将不同的训练样本输入至神经网络模型进行前向运算和反向运算,得到各自的本地梯度信息。各工作节点完成一次全局的梯度数据同步之后,均能获得由全部的工作节点计算得到的本地梯度信息融合得到的全局梯度信息或者全部的工作节点计算得到的本地梯度信息;各工作节点利用由全部的工作节点计算得到的本地梯度信息融合得到的全局梯度信息对各自的神经网络模型进行参数更新。其中,各工作节点可以采用相同的方式对神经网络模型进行更新。
在一些实施例中,梯度数据同步主要占用网络带宽资源,其他操作占用GPU计算资源。为了隐藏通信开销,本申请实施例提供了使得梯度数据同步和参数更新重叠(即并行)的神经网络模型的训练方法。下面结合附图来介绍本申请实施例提供的神经网络模型的训练方法。
图2为本申请实施例提供的一种神经网络模型的训练方法流程图。如图2所示,该方法包括:
201、第一工作节点基于对神经网络模型进行的当前迭代,得到上述神经网络模型的至少一个网络层的本地梯度信息。
上述第一工作节点可以是笔记本电脑、台式电脑、平板电脑、手机等终端设备;也可以是服务器;还可以是服务器或者终端设备上运行的虚拟机;还可以是终端设备或者服务器上的处理器,例如图形处理器(GraphicsProcessingUnit,GPU)、中央处理器(CentralProcessingUnit,CPU)、网络处理器(Neural-networkProcessingUnit,NPU)等。如图1所示,每个GPU通过反向计算可得到各网络层的本地梯度信息。在一些实施例中,反向计算为逆序逐层操作,第一工作节点可逆序逐层计算神经网络模型中各网络层的本地梯度信息,参阅图1。
在一些实施例中,第一工作节点在执行步骤201之前,还可以执行如下操作:上述第一工作节点将上述第一网络层的本地梯度信息中的各个数值均放大M倍,并将放大后的各个数值转换为半精度;上述M为大于1的实数。在该实施例中,第一工作节点在与至少一个第二工作节点进行上述神经网络模型中的第一网络层的本地梯度信息传输之前,先将第一网络层的本地梯度信息转换为半精度浮点(halffloat)数据,这样其占用的存储空间会比单精度浮点(float)数据减少一半;通信结束后,将规约通信得到的半精度梯度先转换回单精度,再进行参数更新。通过这种方式通信开销可减少一半。
但是需要注意的是,半精度浮点数据格式的表示范围远小于单精度浮点数据,所能表示的正数范围为6.1*e-5到65504,而神经网络模型的梯度往往是很小的值,因此在通信前第一工作节点先对本地梯度信息进行放大,通信结束后再缩放回来,以减少本地梯度信息传递过程中的精度损失。
202、第一工作节点在与至少一个第二工作节点进行上述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新上述神经网络模型中的第二网络层的参数。
上述第一网络层和上述第二网络层不同。在一些实施例中,上述至少一个第二工作节点中每个第二工作节点与第一工作节点执行的操作类似。在一些实施例中,上述第一工作节点以逆序的方式逐层更新上述神经网络模型中多个网络层的参数;和/或,上述第二网络层的网络深度大于上述第一网络层的网络深度。在一些实施例中,第一工作节点实现梯度数据同步的方式为逆序逐层操作,实现参数更新的方式为逆序逐层操作。举例来说,神经网络模型包含N层,第一工作节点先后与至少一个第二工作节点传输第N网络层至第1网络层的本地梯度信息(对应于逆序逐层操作实现梯度数据同步),该第一工作节点先后更新第N网络层至第1网络层的参数(对应于逆序逐层操作实现参数更新)。图3为本申请实施例提供的一种计算通信重叠的示例的示意图。如图3所示,301表示逆序逐层操作实现梯度数据同步(allreduce)的数据流1(stream),302表示逆序逐层操作实现参数更新的数据流(stream)2,数据流1和数据流2并行;301中每个矩形框表示第一工作节点接收一个网络层的本地梯度信息的操作,例如网络层n表示第一工作节点接收网络层n的本地梯度信息的操作;302中每个矩形框表示第一工作节点更新一个网络层的参数的操作,例如网络层n表示第一工作节点更新网络层n的参数的操作;箭头表示时间轴。n为大于1的整数。图3中,第一工作节点按照先后顺序接收第n网络层的本地梯度信息、第(n-1)网络层的本地梯度信息、…、第1网络层的本地梯度信息;第一工作节点按照先后顺序更新第n网络层的参数、第(n-1)网络层的参数、…、第1网络层的参数;第一工作节点接收第(n-i)网络层的本地梯度信息的过程中,并行的更新第(n-i+1)网络层的参数。其中,i为小于n的整数。由于第一工作节点实现梯度数据同步的方式为逆序逐层操作,且实现参数更新的方式为逆序逐层操作,因此第一工作节点可以在梯度数据同步的过程中,并行的利用已获得的网络层的本地梯度信息来实现一部分参数更新的操作。参阅图3,由于第一工作节点在执行接收第(n-1)网络层的本地梯度信息的操作之前,已接收到了第n网络层的本地梯度信息,因此该第一工作节点在执行接收第(n-1)网络层的本地梯度信息的操作的过程中,可并行地执行更新第n网络层的参数的操作。
在一些实施例中,上述第一工作节点基于上述神经网络模型的多个网络层的连接关系,确定上述当前迭代的多个操作之间的依赖关系,上述多个操作至少包括上述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;上述第一工作节点基于上述多个操作之间的依赖关系执行上述多个操作。也就是说,第一工作节点可根据当前迭代的多个操作所属网络层的先后关系确立当前迭代的多个操作之间的依赖关系,即各操作的具体执行时机由依赖关系驱动。示例性的,第一工作节点实现梯度数据同步的方式为逆序逐层操作,实现参数更新的方式为逆序逐层操作,神经网络模型中任一网络层的本地梯度信息的传输操作所依赖的操作为该任一网络层之后的各网络层的本地梯度信息的传输操作所依赖的操作均被完成,神经网络模型中任一网络层的参数更新操作所依赖的操作为该任一网络层的本地梯度信息的传输操作均完成。举例来说,第一工作节点完成神经网络模型中第n网络层的本地梯度信息的传输操作之后,可执行第(n-1)网络层的本地梯度信息的传输操作以及第n网络层的参数更新操作。
在一些实施例中,步骤202的实现方式如下:上述第一工作节点在与上述至少一个第二工作节点进行上述神经网络模型中的上述第一网络层的本地梯度信息传输的过程中,在确定上述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新上述第二网络层的参数,其中,上述参数更新操作所依赖的操作包括与上述至少一个第二工作节点传输上述第二网络层的本地梯度信息。在一些实施例中,第一工作节点待执行的每个操作绑定一个事件(event),并根据各操作之间的依赖关系确立每个操作需要等待的event;每个数据流通过轻量级阻塞接口(例如cudaStreamWaitEvent)等待当前操作的关联event完成后,再启动当前操作。
在一个实施例中,第一工作节点在更新上述神经网络模型中的第二网络层的参数之前,可执行如下操作:第一工作节点将获得的上述第二网络层的本地梯度信息中包括的各个数值转换为单精度,并将上述转换得到的各个数值缩小M倍以得到处理梯度信息,上述M为大于1的实数;第一工作节点并行地更新上述神经网络模型中的第二网络层的参数可以是:第一工作节点利用上述处理梯度信息更新上述神经网络模型中的上述第二网络层的参数。
本申请实施例中,第一工作节点在与至少一个第二工作节点进行神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新神经网络模型中的第二网络层的参数;将更新神经网络模型的参数的过程和传输本地梯度信息的过程重叠(即参数更新和计算重叠),可以提高模型训练效率。
为进一步隐藏通信开销,第一工作节点还可以进一步将梯度数据同步和反向计算重叠。下面结合附图来介绍一种梯度数据同步和反向计算重叠的可能的实现方式。
在一个实施例中,第一工作节点在执行图1的方法流程的基础上,还可以执行如下操作:第一工作节点在与至少一个第二工作节点进行上述神经网络模型中的上述第一网络层的本地梯度信息传输的过程中,计算上述神经网络模型中的第三网络层的本地梯度信息。上述第三网络层的网络深度小于上述第一网络层的网络深度。在一些实施例中,反向计算为逆序逐层操作,第一工作节点实现梯度数据同步的方式为逆序逐层操作,第一工作节点实现反向计算的过程可与实现梯度数据同步的过程重叠,即并行地实现反向计算和实现梯度数据同步。
图4为本申请实施例提供的另一种计算通信重叠的示例的示意图。如图4所示,401表示逆序逐层操作实现反向计算的数据流3(stream),301表示逆序逐层操作实现梯度数据同步的数据流1(stream),302表示逆序逐层操作实现参数更新的数据流(stream)2,数据流1、数据流2以及数据流3并行;401中每个矩形框表示第一工作节点计算一个网络层的本地梯度信息的操作(对应于反向操作),例如网络层n表示第一工作节点计算网络层n的本地梯度信息的操作;301中每个矩形框表示第一工作节点接收一个网络层的本地梯度信息的操作,例如网络层n表示第一工作节点接收网络层n的本地梯度信息的操作;302中每个矩形框表示第一工作节点更新一个网络层的参数的操作,例如网络层n表示第一工作节点更新网络层n的参数的操作。n为大于1的整数。图4中,第一工作节点按照先后顺序计算第n网络层的本地梯度信息、第(n-1)网络层的本地梯度信息、…、第1网络层的本地梯度信息;第一工作节点按照先后顺序接收第n网络层的本地梯度信息、第(n-1)网络层的本地梯度信息、…、第1网络层的本地梯度信息;第一工作节点按照先后顺序更新第n网络层的参数、第(n-1)网络层的参数、…、第1网络层的参数;第一工作节点接收第(n-i)网络层的本地梯度信息的过程中,并行的更新第(n-i+1)网络层的参数以及计算第(n-i-1)网络层的本地梯度信息。其中,i为小于(n-1)的整数。
在该实施例中,第一工作节点在与至少一个第二工作节点进行神经网络模型中的第一网络层的本地梯度信息传输的过程中,计算神经网络模型中的第三网络层的本地梯度信息;将计算神经网络模型中的网络层的本地梯度信息的过程和传输本地梯度信息的过程重叠,可以提高模型训练效率。
前述实施例描述了计算和通信重叠的方案。上述计算通信重叠方案的本质是用参数更新时间和/或反向计算时间隐藏通信时间,但是当神经网络模型的计算时间小于通信时间时,我们就无法充分隐藏通信开销。因此有必要研究通信削减方案,以进一步压缩通信开销。
本申请实施例引入了内层迭代的策略。每次内层迭代进行一次完整的前向计算(Forward)和反向计算(Backward),并对本地梯度信息进行累计,但不做参数更新,即不更新神经网络模型的参数;多组内层迭代对应一次全局通信,对本地梯度信息进行规约通信并更新参数值。在一些实施例中,全局通信操作可以与最后一次内层迭代的反向计算互相重叠。内层迭代策略本质上是增大每次迭代的批量(Batchsize),这等效于减少整体训练过程中的总通信量。下面结合附图介绍本申请实施例提供的内层迭代方法。
图5为本申请实施例提供的一种内层迭代方法流程图。如图5所示,该内层迭代方法包括:
501、第一工作节点将训练样本输入至神经网络模型进行前向计算,得到处理结果。
502、第一工作节点利用上述处理结果和上述神经网络模型进行反向计算,得到神经网络模型的至少一个网络层的本地梯度信息。
步骤502和步骤501可以理解为上述第一工作节点对上述神经网络模型进行一次内层迭代,得到上述神经网络模型的至少一个网络层的本地梯度信息的实现方式。在一些实施例中,步骤502可替换为:第一工作节点利用上述处理结果和上述神经网络模型进行反向计算,得到神经网络模型的各网络层的本地梯度信息。举例来说,第一工作节点采用逆序逐层操作实现反向计算,得到神经网络模型的各网络层的本地梯度信息。
503、第一工作节点基于中间融合梯度信息和当前迭代(即本次内层迭代)对应的本地梯度信息,得到上述神经网络模型的至少一个网络层的目标融合梯度信息。
在一些实施例中,上述中间融合梯度信息可以是第一工作节点对上述神经网络模型进行至少一次内层迭代,得到的上述至少一次内层迭代对应的中间融合梯度信息。示例性的,上述中间融合梯度信息可以是第一工作节点进行一次内层迭代得到的神经网络模型的各网络层的本地梯度信息;还可以是由第一工作节点进行至少两次内层迭代得到的至少两组本地梯度信息进行逐次迭代融合得到。应理解,第一工作节点第一次执行步骤503时,上述中间融合梯度信息不存在,步骤503的实现方式可以是将步骤502得到的神经网络模型的至少一个网络层的本地梯度信息作为中间融合梯度信息,并存储;第一工作节点第二次执行步骤503时,步骤503的实现方式可以是基于当前的中间融合梯度信息和本次内层迭代对应的本地梯度信息(即第二执行步骤502得到的梯度信息),得到新的中间融合梯度信息(对应于更新中间融合梯度);以此类推,第一工作节点第K次执行步骤503之后,得到神经网络模型的至少一个网络层的目标融合梯度信息。其中,K为大于1的整数。可以理解,第一工作节点第一次执行步骤503可得到初始的中间融合梯度(对应于第一次执行步骤502得到的梯度信息),后面每执行一次步骤503(除最后一次执行步骤503)就是利用当前的中间融合梯度信息和当前迭代(即本次内层迭代)对应的本地梯度信息,得到新的中间融合梯度信息。
在一些实施例中,第一工作节点进行一次内层迭代,得到一组本地梯度参数,每组本地梯度参数包括神经网络模型的各网络层的本地梯度信息;第一工作节点对其进行至少两次内层迭代得到的至少两组本地梯度信息进行逐次迭代融合可以是:对上述至少两组本地梯度信息中分别包括的各网络层的本地梯度信息逐次迭代融合,得到各网络层的中间融合梯度。举例来说,第一工作节点对至少两组本地梯度信息中分别包括的第一网络层的本地梯度信息进行逐次迭代融合,得到第一网络层的中间融合梯度。示例性的,第一工作节点对至少两组本地梯度信息中分别包括的第一网络层的本地梯度信息进行逐次迭代融合可以是逐次融合两组本地梯度信息中分别包括的第一网络层中的相应参数。例如,第一组本地梯度信息中包括的第一网络层的某个参数的值为a,第二组本地梯度信息中包括的该参数的值为b,第三组本地梯度信息中包括的该参数的值为c;以该参数为例,第一工作节点对这3组本地梯度信息中分别包括的第一网络层的本地梯度信息进行逐次迭代融合可以是:先计算(a+b),在计算((a+b)+c)。在该例子中,该参数在第一网络层的中间融合梯度信息中对应的值为((a+b)+c)。
在一些实施例中,步骤503的实现方式可以是:上述第一工作节点对上述中间融合梯度信息和上述当前迭代得到的本地梯度信息进行累加处理,得到上述神经网络模型的至少一个网络层的目标融合梯度信息。上述中间融合梯度信息中的梯度和上述当前迭代得到的本地梯度信息中的梯度一一对应;上述第一工作节点对上述中间融合梯度信息和上述当前迭代得到的本地梯度信息进行累加处理,得到上述神经网络模型的至少一个网络层的目标融合梯度信息可以是:对上述中间融合梯度信息和上述当前迭代得到的本地梯度信息中一一对应的参数进行累加处理。举例来说,中间融合梯度信息中某个参数的值为d,该参数在当前迭代得到的本地梯度信息中对应的值为e,对d和e进行累加处理得到(d+e)。应理解,上述神经网络模型的任一网络层的目标融合梯度信息可以由第一工作节点多次内层迭代得到的多组该任一网络层的本地梯度信息融合得到。
504、第一工作节点判断是否达到内层迭代阈值。
若是,执行步骤505;若否,执行步骤501。上述内层迭代阈值可以是3、5、10、20等,本申请不作限定。在实际应用中,第一工作节点可根据实际需求来相应的设置内层迭代阈值。内层迭代阈值越大,第一工作节点执行全局通信的次数越少。
505、第一工作节点执行全局通信操作,得到全局梯度信息。
在一些实施例中,上述全局梯度信息可以是由全部的工作节点计算得到的本地梯度信息融合得到的梯度信息。示例性的,上述全局梯度信息可以是由全部的工作节点计算得到的本地梯度信息中相应的梯度累加得到的梯度信息。举例来说,每个工作节点计算得到的本地梯度信息对应一个向量,由全部的工作节点计算得到的本地梯度信息融合得到的全局梯度信息对应的向量可以是由各工作节点计算得到的本地梯度信息对应的向量中相同位置的元素累加得到。在一些实施例中,第一工作节点得到全局梯度信息之后,分布式训练***中各工作节点均得到全局梯度信息。
506、第一工作节点利用全局梯度信息更新神经网络模型。
应理解,分布式训练***中各工作节点均全局梯度信息更新神经网络模型,这样每个工作节点均会得到一个相同的更新后的神经网络模型。步骤501至步骤506描述第一工作节点实现一次参数更新操作的过程,在实际应用中,第一工作节点可多次执行图5中的方法流程以得到收敛的神经网络模型。
在一些实施例中,第一工作节点还可以执行如下操作:上述第一工作节点在基于上述中间融合梯度信息和上述当前迭代对应的本地梯度信息,得到上述神经网络模型的第三网络层的目标融合梯度信息的过程中,与上述至少一个第二工作节点进行上述神经网络模型的第四网络层的目标融合梯度信息的传输。可选的,上述第四网络层的网络深度大于上述第三网络层的网络深度。第一工作节点可以按照逆序逐层操作进行最后一次内层迭代,即先后迭代得到最后一次网络层的本地梯度信息至第一网络层的本地梯度信息,因此第一工作节点可先后得到最后一次网络层的目标融合梯度信息至第一网络层的目标融合梯度信息。应理解,第一工作节点在计算某一网络层的目标融合梯度信息的过程中,可将已计算得到的一些网络层的目标融合梯度信息传输给其他工作节点。也就是说,全局通信操作可以与最后一次内层迭代的反向计算互相重叠。
在该实现方式中,将计算神经网络模型中的网络层的目标融合梯度信息的过程和传输网络层的目标融合梯度信息的过程重叠(即计算和通信重叠),可以提高模型训练效率。
本申请实施例中,第一工作节点至少一个第二工作节点传输网络层的目标融合梯度信息;可以减少梯度信息的传输次数和总通信量。
为进一步提升通信效率,本申请实施例还提供了通信融合策略,即将若干个网络层的梯度合并到一块较大的数组,再发起一次全局通信。通信融合策略可应用于前述实施例中,来提升通信效率。
对于常见神经网络模型中的大部分算子,其梯度参数的数量是相当小的,通常是特征图数量的小常数倍,通信量为KBytes甚至Byte的量级。根据底层通信的相关研究,传输数据量偏小时传输延迟开销扮演了主要角色,小块通信无法充分利用网络带宽。为了获得较大的通信量,以提升通信效率,我们引入了对通信融合的策略。
在该策略中,有几点需要注意的地方。一方面,我们需要合理配置通信融合(也称梯度融合)的规模。融合规模太小,则通信效率不高;融合规模太大,又会耽搁通信操作的启动时机。因此,我们在实现通信融合策略时,让融合大小可以配置,例如通过空运行(dry-run)为每个神经网络模型和平台(例如分布式训练***)调试出最合适的融合规模。另一方面,在通信融合的原始方案下,通信前要将多个离散存放的小数组合并为一块连续存放的大数组,通信后又要拆解回去,这就引入了两拨内存拷贝,会产生额外的开销。
在一些实施例中,第一工作节点在执行步骤201之前,可执行如下操作:上述第一工作节点基于上述第一网络层对应的偏移量,将计算得到的上述第一网络层的本地梯度信息存储至预先分配的目标存储空间,其中,上述目标存储空间用于存储上述神经网络模型的多个网络层的本地梯度信息;
其中,上述第一工作节点发送的上述第一网络层的本地梯度信息是基于上述第一网络层对应的偏移量从上述目标存储空间中获取的,和/或,上述第一工作节点基于接收到的来自于上述至少一个第二工作节点的上述第一网络层的本地梯度信息,更新上述目标存储空间存储的上述第一网络层的本地梯度信息。
在该实施例中,对此,第一工作节点预先给神经网络模型的所有参数梯度(对应于梯度信息)开辟统一的连续内存空间(对应于目标存储空间),然后通过内存管理器将每个网络层的参数梯度指向对应的偏移量(offset),从而避免了通信时额外的内存拷贝。
在一些实施例中,第一工作节点在执行步骤201之前,可执行如下操作:上述第一工作节点将计算得到的上述神经网络模型的多个网络层的本地梯度信息存储至预先分配的目标存储空间,并通过内存管理器确定上述多个网络层中每个网络层对应的偏移量,上述目标存储空间为一个连续的存储空间;上述第一工作节点基于上述多个网络层中每个网络层对应的偏移量,从上述目标存储空间中获取上述多个网络层中的至少两个网络层的本地梯度信息;上述至少两个网络层包括上述第一网络层;步骤201可替换为:与上述至少一个第二工作节点进行上述神经网络模型中的上述至少两个网络层的本地梯度信息传输。
图6为本申请实施例提供的一种通信融合策略的一个示例的示意图。如图6所示,601表示神经网络模型的各网络层,其中,L1表示第一网络层,Ln表示第n网络层;602表示各网络层的本地梯度信息,其中,梯度m、梯度(m-1)、…梯度1均表示一个梯度或一个网络层的梯度;603表示合并后的各网络层的本地梯度信息,其中,梯度组k、梯度组(k-1)…梯度组1均包括至少两个梯度或至少两个网络层的梯度。本申请实施例中,神经网络模型中的网络层和梯度不是一一对应,有些网络层可以有多个梯度,有些网络层可以无梯度。在一些实施例中,602的每个矩形框(例如梯度m)表示一个网络层的梯度,则第一工作节点每次向其他工作节点传输一个网络层的梯度需要传输m次,第一工作节点每次向其他工作节点传输一个梯度组(例如梯度组k)需要传输k次,k小于m。在一些实施例中,602的每个矩形框(例如梯度m)表示一个参数向量的梯度,则第一工作节点每次向其他工作节点传输一个梯度组(例如梯度组k)需要传输k次。应理解,第一工作节点可将若干个网络层的本地梯度信息合并到一块较大的数组,再发起一次全局通信;这样可以减少全局通信信息。
前述实施例描述了训练神经网络模型的方法流程。下面介绍应用训练得到的神经网络模型实现预测任务的举例。
图7为本申请实施例提供的一种图像预测方法流程图。如图7所示,该方法包括:
701、图像处理装置获取待处理图像。
上述图像处理装置可以是上述第一工作节点,也可以是其他工作节点,还可以是未参与神经网络模型训练的装置,例如终端设备或服务器。
在一些实施例中,图像处理装置为服务器,图像处理装置获取待处理图像可以是服务器接收到来自终端设备的待处理图像或者按照用户输入的指令从其他设备获取待处理图像。
在一些实施例中,图像处理装置为服务器,图像处理装置获取待处理图像可以是获取用户上传的待处理图像或者按照用户输入的指令从其他设备获取待处理图像。
702、利用训练得到的神经网络模型对上述待处理图像进行预测处理,得到预测结果。
上述神经网络模型可以是采用前述实施例中的方法训练得到的。应理解,图7为应用神经网络模型的一个示例。采用前述实施例中的训练方法训练得到的神经网络模型可处理不同的预测任务,例如文本识别、图像识别、图像分类等。
在一些实施例中,图像处理装置为服务器,图像处理装置在执行步骤702之后,还可以将预测结果发送给终端设备,例如手机、个人电脑等。
在一些实施例中,图像处理装置为终端设备,图像处理装置在执行步骤702之后,还可以输出预测结果,例如通过显示屏显示预测结果。
本申请实施例中,利用训练得到的神经网络模型对待处理图像进行预测处理,得到预测结果;可高效的实现不同的图像预测任务。
前述实施例描述了第一工作节点实现的神经网络模型的训练方法。下面结合附图介绍第一工作节点的各模块的功能。
图8为本申请实施例提供的一种数据处理装置的结构示意图。图8中的数据处理装置可以为前述实施例中的第一工作节点。如图8所示,数据处理装置可包括:
处理模块801,用于基于对神经网络模型进行的当前迭代,得到上述神经网络模型的至少一个网络层的本地梯度信息;
处理模块801,还用于在收发模块802与至少一个第二工作节点进行上述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新上述神经网络模型中的第二网络层的参数。
在一些实施例中,处理模块801可以是CPU、GPU、NPU等处理器,收发模块802可以具体数据收发功能的收发器。
在一个可能的实现方式中,处理模块801,还用于基于上述神经网络模型的多个网络层的连接关系,确定上述当前迭代的多个操作之间的依赖关系,上述多个操作至少包括上述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;基于上述多个操作之间的依赖关系执行上述多个操作。
在一个可能的实现方式中,上述第一工作节点以逆序的方式逐层更新上述神经网络模型中多个网络层的参数;和/或,上述第二网络层的网络深度大于上述第一网络层的网络深度。
在一个可能的实现方式中,处理模块801,具体用于在上述收发模块与上述至少一个第二工作节点进行上述神经网络模型中的上述第一网络层的本地梯度信息传输的过程中,在确定上述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新上述第二网络层的参数,其中,上述参数更新操作所依赖的操作包括与上述至少一个第二工作节点传输上述第二网络层的本地梯度信息。
在一个可能的实现方式中,处理模块801,还用于在上述收发模块在与至少一个第二工作节点进行上述神经网络模型中的上述第一网络层的本地梯度信息传输的过程中,计算上述神经网络模型中的第三网络层的本地梯度信息。
在一个可能的实现方式中,处理模块801,还用于对上述神经网络模型进行至少一次内层迭代,得到上述至少一次内层迭代对应的中间融合梯度信息;
处理模块801,具体用于基于上述中间融合梯度信息和上述当前迭代对应的本地梯度信息,得到上述神经网络模型的至少一个网络层的目标融合梯度信息;上述第一工作节点与上述至少一个第二工作节点传输的上述第一网络层的本地梯度信息包括上述第一网络层的目标融合梯度信息。
在一个可能的实现方式中,处理模块801,具体用于对上述中间融合梯度信息和上述当前迭代得到的本地梯度信息进行累加处理,得到上述神经网络模型的至少一个网络层的目标融合梯度信息。
在一个可能的实现方式中,收发模块802,还用于在处理模块801基于上述中间融合梯度信息和上述当前迭代对应的本地梯度信息,得到上述神经网络模型的第三网络层的目标融合梯度信息的过程中,与上述至少一个第二工作节点进行上述神经网络模型的第四网络层的目标融合梯度信息的传输。
在一个可能的实现方式中,处理模块801,还用于将上述第一网络层的本地梯度信息中的各个数值均放大M倍,并将放大后的各个数值转换为半精度;上述M为大于1的实数。
在一个可能的实现方式中,处理模块801,还用于将获得的上述第二网络层的本地梯度信息中包括的各个数值转换为单精度,并将上述转换得到的各个数值缩小M倍以得到处理梯度信息,上述M为大于1的实数;
处理模块801,具体用于利用上述处理梯度信息更新上述神经网络模型中的上述第二网络层的参数。
在一个可能的实现方式中,处理模块801,还用于基于上述第一网络层对应的偏移量,将计算得到的上述第一网络层的本地梯度信息存储至预先分配的目标存储空间,其中,上述目标存储空间用于存储上述神经网络模型的多个网络层的本地梯度信息;
其中,收发模块802发送的上述第一网络层的本地梯度信息是基于上述第一网络层对应的偏移量从上述目标存储空间中获取的,和/或,处理模块801,还用于基于接收到的来自于上述至少一个第二工作节点的上述第一网络层的本地梯度信息,更新上述目标存储空间存储的上述第一网络层的本地梯度信息。
在一个可能的实现方式中,处理模块801,还用于将计算得到的上述神经网络模型的多个网络层的本地梯度信息存储至预先分配的目标存储空间,并通过内存管理器确定上述多个网络层中每个网络层对应的偏移量;上述目标存储空间为一个连续的存储空间;上述第一工作节点基于上述多个网络层中每个网络层对应的偏移量,从上述目标存储空间中获取上述多个网络层中的至少两个网络层的本地梯度信息;上述至少两个网络层包括上述第一网络层;上述收发模块,具体用于与上述至少一个第二工作节点进行上述神经网络模型中的上述至少两个网络层的本地梯度信息传输。
图9为本申请实施例提供的另一种数据处理装置的结构示意图。如图9所示,该数据处理装置,包括:
获取模块901,用于获取待处理图像;
处理模块902,用于利用训练得到的神经网络模型对上述待处理图像进行预测处理,得到预测结果。
应理解以上数据处理装置的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。例如,以上各个单元可以为单独设立的处理元件,也可以集成同一个芯片中实现,此外,也可以以程序代码的形式存储于控制器的存储元件中,由处理器的某一个处理元件调用并执行以上各个单元的功能。此外各个单元可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。该处理元件可以是通用处理器,例如中央处理器(英文:central processing unit,简称:CPU),还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(英文:application-specific integrated circuit,简称:ASIC),或,一个或多个微处理器(英文:digitalsignal processor,简称:DSP),或,一个或者多个现场可编程门阵列(英文:field-programmable gate array,简称:FPGA)等。
图10是本申请实施例提供的一种服务器的结构示意图,该服务器1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(centralprocessing units,CPU)1022(例如,一个或一个以上处理器)和存储器1032,一个或一个以上存储应用程序1042或数据1044的存储介质1030(例如一个或一个以上海量存储设备),一个或一个以上加速设备(例如GPU或NPU)1024。其中,存储器1032和存储介质1030可以是短暂存储或持久存储。存储在存储介质1030的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1022可以设置为与存储介质1030通信,在服务器1000上执行存储介质1030中的一系列指令操作。加速设备1024可执行中央处理器1022分配的任务,例如图像处理任务。服务器1000可以为本申请实施例提供的数据处理装置。
服务器1000还可以包括一个或一个以上电源1026,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1058,和/或,一个或一个以上操作***1041,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由数据处理装置所执行的步骤可以基于该图10所示的服务器结构。具体的,加速设备1024可实现图8中处理模块801的功能,有线或无线网络接口1050可实现图8中收发模块802的功能。具体的,加速设备1024可实现图9中处理模块902的功能,有线或无线网络接口1050或者输入输出接口1058可实现图9中获取模块的功能。
图11为本申请实施例提供的一种终端设备的结构示意图。如图11所示,该终端设备110包括处理器1101、存储器1102和通信接口1103;该处理器1101、存储器1102和通信接口1103通过总线相互连接。图11中的终端设备可以为前述实施例中的数据处理装置。
存储器1102包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmablereadonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CDROM),该存储器1102用于相关指令及数据。通信接口1103用于接收和发送数据。
处理器1101可以包括一个或多个CPU以及一个或多个GPU,在处理器1101包括一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。上述实施例中由数据处理装置所执行的步骤可以基于该图11所示的终端设备的结构。具体的,处理器1101可实现图8中处理模块801的功能,通信接口1103可实现图8中收发模块的功能。具体的,处理器1101可实现图9中处理模块902的功能,通信接口1103可实现图9中获取模块的功能。
在本申请的实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现前述实施例所提供的神经网络模型的训练方法。
在本申请的实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现前述实施例所提供的图像预测方法。
本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述实施例所提供的神经网络模型的训练方法。
本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述实施例所提供的图像预测方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (40)
1.一种神经网络模型的训练方法,其特征在于,包括:
第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数;
所述第一工作节点以逆序的方式逐层更新所述神经网络模型中多个网络层的参数;和/或所述第二网络层的网络深度大于所述第一网络层的网络深度。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一工作节点基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;
其中,所述第一工作节点基于所述多个操作之间的依赖关系执行所述多个操作。
3.根据权利要求1或2所述的方法,其特征在于,所述在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数包括:
所述第一工作节点在与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
4.一种神经网络模型的训练方法,其特征在于,包括:
第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数;
所述第一工作节点在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第一工作节点基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;
其中,所述第一工作节点基于所述多个操作之间的依赖关系执行所述多个操作。
6.根据权利要求4或5所述的方法,其特征在于,所述在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数包括:
所述第一工作节点在与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
7.一种神经网络模型的训练方法,其特征在于,包括:
第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数;
在所述第一工作节点对神经网络模型进行当前迭代之前,所述方法还包括:
所述第一工作节点对所述神经网络模型进行至少一次内层迭代,得到所述至少一次内层迭代对应的中间融合梯度信息;
所述第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息,包括:所述第一工作节点基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的至少一个网络层的目标融合梯度信息;所述第一工作节点与所述至少一个第二工作节点传输的所述第一网络层的本地梯度信息包括所述第一网络层的目标融合梯度信息。
8.根据权利要求7所述的方法,其特征在于,所述第一工作节点基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的至少一个网络层的目标融合梯度信息包括:
所述第一工作节点对所述中间融合梯度信息和所述当前迭代得到的本地梯度信息进行累加处理,得到所述神经网络模型的至少一个网络层的目标融合梯度信息。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
所述第一工作节点在基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的第三网络层的目标融合梯度信息的过程中,与所述至少一个第二工作节点进行所述神经网络模型的第四网络层的目标融合梯度信息的传输。
10.一种神经网络模型的训练方法,其特征在于,包括:
第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数;
在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输之前,所述方法还包括:
所述第一工作节点将所述第一网络层的本地梯度信息中的各个数值均放大M倍,并将放大后的各个数值转换为半精度;所述M为大于1的实数。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
所述第一工作节点基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;
其中,所述第一工作节点基于所述多个操作之间的依赖关系执行所述多个操作。
12.根据权利要求10或11所述的方法,其特征在于,所述在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数包括:
所述第一工作节点在与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
13.一种神经网络模型的训练方法,其特征在于,包括:
第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数;
所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数之前,所述方法还包括:
所述第一工作节点将获得的所述第二网络层的本地梯度信息中包括的各个数值转换为单精度,并将所述转换得到的各个数值缩小M倍以得到处理梯度信息,所述M为大于1的实数;
所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数包括:
所述第一工作节点利用所述处理梯度信息更新所述神经网络模型中的所述第二网络层的参数。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
所述第一工作节点基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;
其中,所述第一工作节点基于所述多个操作之间的依赖关系执行所述多个操作。
15.根据权利要求13或14所述的方法,其特征在于,所述在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数包括:
所述第一工作节点在与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
16.一种神经网络模型的训练方法,其特征在于,包括:
第一工作节点基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数;
在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输之前,所述方法还包括:
所述第一工作节点基于所述第一网络层对应的偏移量,将计算得到的所述第一网络层的本地梯度信息存储至预先分配的目标存储空间,其中,所述目标存储空间用于存储所述神经网络模型的多个网络层的本地梯度信息;
其中,所述第一工作节点发送的所述第一网络层的本地梯度信息是基于所述第一网络层对应的偏移量从所述目标存储空间中获取的,和/或,所述第一工作节点基于接收到的来自于所述至少一个第二工作节点的所述第一网络层的本地梯度信息,更新所述目标存储空间存储的所述第一网络层的本地梯度信息。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
所述第一工作节点基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;
其中,所述第一工作节点基于所述多个操作之间的依赖关系执行所述多个操作。
18.根据权利要求16或17所述的方法,其特征在于,所述在与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,所述第一工作节点并行地更新所述神经网络模型中的第二网络层的参数包括:
所述第一工作节点在与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
19.一种图像预测方法,其特征在于,包括:
获取待处理图像;
利用权利要求1至18任一项训练得到的神经网络模型对所述待处理图像进行预测处理,得到预测结果。
20.一种数据处理装置,其特征在于,包括:第一工作节点,所述第一工作节点包括处理模块和收发模块,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
所述处理模块,用于基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;
所述处理模块,还用于在所述收发模块与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新所述神经网络模型中的第二网络层的参数;
所述第一工作节点以逆序的方式逐层更新所述神经网络模型中多个网络层的参数;和/或所述第二网络层的网络深度大于所述第一网络层的网络深度。
21.根据权利要求20所述的数据处理装置,其特征在于,
所述处理模块,还用于基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;基于所述多个操作之间的依赖关系执行所述多个操作。
22.根据权利要求20或21所述的数据处理装置,其特征在于,
所述处理模块,具体用于在所述收发模块与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
23.一种数据处理装置,其特征在于,包括:处理模块和收发模块;
所述处理模块,用于基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;
所述处理模块,还用于在所述收发模块与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新所述神经网络模型中的第二网络层的参数;在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息;
所述处理模块,还用于在所述收发模块在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项。
24.根据权利要求23所述的数据处理装置,其特征在于,
所述处理模块,还用于基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;基于所述多个操作之间的依赖关系执行所述多个操作。
25.根据权利要求23或24所述的数据处理装置,其特征在于,
所述处理模块,具体用于在所述收发模块与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
26.一种数据处理装置,其特征在于,包括:第一工作节点,所述第一工作节点包括处理模块和收发模块,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
所述处理模块,用于基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;
所述处理模块,还用于在所述收发模块与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新所述神经网络模型中的第二网络层的参数;在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息;
所述处理模块,还用于对所述神经网络模型进行至少一次内层迭代,得到所述至少一次内层迭代对应的中间融合梯度信息;
所述处理模块,具体用于基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的至少一个网络层的目标融合梯度信息;所述第一工作节点与所述至少一个第二工作节点传输的所述第一网络层的本地梯度信息包括所述第一网络层的目标融合梯度信息。
27.根据权利要求26所述的数据处理装置,其特征在于,
所述处理模块,具体用于对所述中间融合梯度信息和所述当前迭代得到的本地梯度信息进行累加处理,得到所述神经网络模型的至少一个网络层的目标融合梯度信息。
28.根据权利要求26或27所述的数据处理装置,其特征在于,
所述收发模块,还用于在所述处理模块基于所述中间融合梯度信息和所述当前迭代对应的本地梯度信息,得到所述神经网络模型的第三网络层的目标融合梯度信息的过程中,与所述至少一个第二工作节点进行所述神经网络模型的第四网络层的目标融合梯度信息的传输。
29.一种数据处理装置,其特征在于,包括:处理模块和收发模块;
所述处理模块,用于基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;
所述处理模块,还用于在所述收发模块与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新所述神经网络模型中的第二网络层的参数;在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
所述处理模块,还用于将所述第一网络层的本地梯度信息中的各个数值均放大M倍,并将放大后的各个数值转换为半精度;所述M为大于1的实数。
30.根据权利要求29所述的数据处理装置,其特征在于,
所述处理模块,还用于基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;基于所述多个操作之间的依赖关系执行所述多个操作。
31.根据权利要求29或30所述的数据处理装置,其特征在于,
所述处理模块,具体用于在所述收发模块与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
32.一种数据处理装置,其特征在于,包括:处理模块和收发模块;
所述处理模块,用于基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;
所述处理模块,还用于在所述收发模块与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新所述神经网络模型中的第二网络层的参数;在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
所述处理模块,还用于将获得的所述第二网络层的本地梯度信息中包括的各个数值转换为单精度,并将所述转换得到的各个数值缩小M倍以得到处理梯度信息,所述M为大于1的实数;
所述处理模块,具体用于利用所述处理梯度信息更新所述神经网络模型中的所述第二网络层的参数。
33.根据权利要求32所述的数据处理装置,其特征在于,
所述处理模块,还用于基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;基于所述多个操作之间的依赖关系执行所述多个操作。
34.根据权利要求32或33所述的数据处理装置,其特征在于,
所述处理模块,具体用于在所述收发模块与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
35.一种数据处理装置,其特征在于,包括:处理模块和收发模块;
所述处理模块,用于基于对神经网络模型进行的当前迭代,得到所述神经网络模型的至少一个网络层的本地梯度信息;
所述处理模块,还用于在所述收发模块与至少一个第二工作节点进行所述神经网络模型中的第一网络层的本地梯度信息传输的过程中,并行地更新所述神经网络模型中的第二网络层的参数;在与至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,计算所述神经网络模型中的第三网络层的本地梯度信息,工作节点为终端设备、服务器、服务器上运行的虚拟机、终端设备上运行的虚拟机、终端设备上的处理器、或服务器上的处理器中的任一项;
所述处理模块,还用于基于所述第一网络层对应的偏移量,将计算得到的所述第一网络层的本地梯度信息存储至预先分配的目标存储空间,其中,所述目标存储空间用于存储所述神经网络模型的多个网络层的本地梯度信息;
其中,所述收发模块发送的所述第一网络层的本地梯度信息是基于所述第一网络层对应的偏移量从所述目标存储空间中获取的,和/或,所述处理模块,还用于基于接收到的来自于所述至少一个第二工作节点的所述第一网络层的本地梯度信息,更新所述目标存储空间存储的所述第一网络层的本地梯度信息。
36.根据权利要求35所述的数据处理装置,其特征在于,
所述处理模块,还用于基于所述神经网络模型的多个网络层的连接关系,确定所述当前迭代的多个操作之间的依赖关系,所述多个操作至少包括所述神经网络模型中至少一个网络层的本地梯度信息的传输操作和参数更新操作;基于所述多个操作之间的依赖关系执行所述多个操作。
37.根据权利要求35或36所述的数据处理装置,其特征在于,
所述处理模块,具体用于在所述收发模块与所述至少一个第二工作节点进行所述神经网络模型中的所述第一网络层的本地梯度信息传输的过程中,在确定所述第二网络层的参数更新操作所依赖的操作已完成的情况下,并行地更新所述第二网络层的参数,其中,所述参数更新操作所依赖的操作包括与所述至少一个第二工作节点传输所述第二网络层的本地梯度信息。
38.一种数据处理装置,其特征在于,包括:
获取模块,用于获取待处理图像;
处理模块,用于利用权利要求1至18任一项训练得到的神经网络模型对所述待处理图像进行预测处理,得到预测结果。
39.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被移动设备的处理器执行时,使所述处理器执行权利要求1至18任意一项所述的方法。
40.一种电子设备,其特征在于,包括存储器和处理器,其中,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,使得所述处理器执行如权利要求1至18任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010496921.7A CN111723933B (zh) | 2020-06-03 | 2020-06-03 | 神经网络模型的训练方法和相关产品 |
KR1020227010791A KR20220054861A (ko) | 2020-06-03 | 2021-05-25 | 신경망 모델의 트레이닝 방법 및 관련 제품 |
PCT/CN2021/095844 WO2021244354A1 (zh) | 2020-06-03 | 2021-05-25 | 神经网络模型的训练方法和相关产品 |
TW110119475A TW202147188A (zh) | 2020-06-03 | 2021-05-28 | 神經網路模型的訓練方法和相關産品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010496921.7A CN111723933B (zh) | 2020-06-03 | 2020-06-03 | 神经网络模型的训练方法和相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111723933A CN111723933A (zh) | 2020-09-29 |
CN111723933B true CN111723933B (zh) | 2024-04-16 |
Family
ID=72565896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010496921.7A Active CN111723933B (zh) | 2020-06-03 | 2020-06-03 | 神经网络模型的训练方法和相关产品 |
Country Status (4)
Country | Link |
---|---|
KR (1) | KR20220054861A (zh) |
CN (1) | CN111723933B (zh) |
TW (1) | TW202147188A (zh) |
WO (1) | WO2021244354A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111723933B (zh) * | 2020-06-03 | 2024-04-16 | 上海商汤智能科技有限公司 | 神经网络模型的训练方法和相关产品 |
CN112288083A (zh) * | 2020-10-21 | 2021-01-29 | 周宇浩 | 一种神经网络分布式训练方法、装置、设备及存储介质 |
CN115222038A (zh) * | 2021-04-16 | 2022-10-21 | 华为技术有限公司 | 一种梯度传输方法及相关装置 |
CN112866041B (zh) * | 2021-04-23 | 2022-04-19 | 南京蓝洋智能科技有限公司 | 一种自适应性的网络***的训练方法 |
CN113626652B (zh) * | 2021-10-11 | 2021-12-17 | 北京一流科技有限公司 | 数据处理网络***、数据处理网络部署***及其方法 |
CN114792125B (zh) * | 2022-04-15 | 2023-06-23 | 北京百度网讯科技有限公司 | 基于分布式训练的数据处理方法、装置、电子设备和介质 |
CN115328579B (zh) * | 2022-10-11 | 2023-02-24 | 山东海量信息技术研究院 | 神经网络训练的调度方法、***及计算机可读存储介质 |
CN115688867A (zh) * | 2022-11-15 | 2023-02-03 | 抖音视界有限公司 | 用于训练神经网络的方法、装置、设备和存储介质 |
CN116955365B (zh) * | 2023-09-21 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 梯度数据同步方法、模型训练方法、***、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107578094A (zh) * | 2017-10-25 | 2018-01-12 | 济南浪潮高新科技投资发展有限公司 | 基于参数服务器和fpga实现神经网络分布式训练的方法 |
CN108021395A (zh) * | 2017-12-27 | 2018-05-11 | 北京金山安全软件有限公司 | 一种面向神经网络的数据并行处理方法及*** |
US10152676B1 (en) * | 2013-11-22 | 2018-12-11 | Amazon Technologies, Inc. | Distributed training of models using stochastic gradient descent |
CN109600255A (zh) * | 2018-12-04 | 2019-04-09 | 中山大学 | 一种去中心化的参数服务器优化算法 |
CN109871942A (zh) * | 2019-02-19 | 2019-06-11 | 上海商汤智能科技有限公司 | 神经网络的训练方法和装置、***、存储介质 |
CN109919313A (zh) * | 2019-01-31 | 2019-06-21 | 华为技术有限公司 | 一种梯度传输的方法及分布式训练*** |
CN110379416A (zh) * | 2019-08-15 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 一种神经网络语言模型训练方法、装置、设备及存储介质 |
CN110600020A (zh) * | 2019-09-12 | 2019-12-20 | 上海依图信息技术有限公司 | 一种梯度传输方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9807152B2 (en) * | 2012-07-30 | 2017-10-31 | Nec Corporation | Distributed processing device and distributed processing system as well as distributed processing method |
US10949746B2 (en) * | 2016-10-27 | 2021-03-16 | International Business Machines Corporation | Efficient parallel training of a network model on multiple graphics processing units |
US11288575B2 (en) * | 2017-05-18 | 2022-03-29 | Microsoft Technology Licensing, Llc | Asynchronous neural network training |
US11093827B2 (en) * | 2017-09-20 | 2021-08-17 | International Business Machines Corporation | Variable ISA vector-based compaction in distributed training of neural networks |
US11630994B2 (en) * | 2018-02-17 | 2023-04-18 | Advanced Micro Devices, Inc. | Optimized asynchronous training of neural networks using a distributed parameter server with eager updates |
CN110378472A (zh) * | 2019-07-24 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种深度神经网络模型的数据并行训练方法、装置及设备 |
CN111723933B (zh) * | 2020-06-03 | 2024-04-16 | 上海商汤智能科技有限公司 | 神经网络模型的训练方法和相关产品 |
-
2020
- 2020-06-03 CN CN202010496921.7A patent/CN111723933B/zh active Active
-
2021
- 2021-05-25 KR KR1020227010791A patent/KR20220054861A/ko not_active Application Discontinuation
- 2021-05-25 WO PCT/CN2021/095844 patent/WO2021244354A1/zh active Application Filing
- 2021-05-28 TW TW110119475A patent/TW202147188A/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10152676B1 (en) * | 2013-11-22 | 2018-12-11 | Amazon Technologies, Inc. | Distributed training of models using stochastic gradient descent |
CN107578094A (zh) * | 2017-10-25 | 2018-01-12 | 济南浪潮高新科技投资发展有限公司 | 基于参数服务器和fpga实现神经网络分布式训练的方法 |
CN108021395A (zh) * | 2017-12-27 | 2018-05-11 | 北京金山安全软件有限公司 | 一种面向神经网络的数据并行处理方法及*** |
CN109600255A (zh) * | 2018-12-04 | 2019-04-09 | 中山大学 | 一种去中心化的参数服务器优化算法 |
CN109919313A (zh) * | 2019-01-31 | 2019-06-21 | 华为技术有限公司 | 一种梯度传输的方法及分布式训练*** |
CN109871942A (zh) * | 2019-02-19 | 2019-06-11 | 上海商汤智能科技有限公司 | 神经网络的训练方法和装置、***、存储介质 |
CN110379416A (zh) * | 2019-08-15 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 一种神经网络语言模型训练方法、装置、设备及存储介质 |
CN110600020A (zh) * | 2019-09-12 | 2019-12-20 | 上海依图信息技术有限公司 | 一种梯度传输方法及装置 |
Non-Patent Citations (4)
Title |
---|
Abid Malik等.Detailed Performance Analysis of Distributed Tensorflow on a GPU Cluster using Deep Learning Algorithms.《IEEE》.2018,全文. * |
Yujun Lin等.Reducing the communication bandwidth for distributed training.《Arxiv》.2017,全文. * |
上官士源.随机梯度下降算法在分布式集群下的研究及其应用.《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》.2020,第2020年卷(第02期),全文. * |
张公铎.非中心化分布式机器学习中的通信优化.《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》.2019,第2019年卷(第07期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111723933A (zh) | 2020-09-29 |
KR20220054861A (ko) | 2022-05-03 |
TW202147188A (zh) | 2021-12-16 |
WO2021244354A1 (zh) | 2021-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111723933B (zh) | 神经网络模型的训练方法和相关产品 | |
Agliamzanov et al. | Hydrology@ Home: a distributed volunteer computing framework for hydrological research and applications | |
JP7029554B2 (ja) | 深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラム | |
CN104346433B (zh) | 用于数据库查询操作的可缩放加速的方法和*** | |
JP6234477B2 (ja) | 回帰モデルを計算するための方法、コンピュータ・プログラム、およびシステム | |
JP2017050001A (ja) | 効果的なニューラルネットワークの配置に用いるシステム及び方法 | |
CN103970604A (zh) | 基于MapReduce架构实现图处理的方法和装置 | |
CN110909942B (zh) | 训练模型的方法及***和预测序列数据的方法及*** | |
US11574254B2 (en) | Adaptive asynchronous federated learning | |
CN105144109A (zh) | 分布式数据中心技术 | |
CN111723932A (zh) | 神经网络模型的训练方法和相关产品 | |
CN113419931B (zh) | 分布式机器学习***的性能指标确定方法及装置 | |
CN113139660A (zh) | 模型推理方法、装置、电子设备及存储介质 | |
CN112379985A (zh) | 一种云边缘计算环境下的计算任务分配方法及装置 | |
CN114020469A (zh) | 基于边缘节点的多任务学习方法、装置、介质与设备 | |
Yasudo et al. | Performance estimation for exascale reconfigurable dataflow platforms | |
CN114817845B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113157695B (zh) | 数据处理方法、装置、可读介质及电子设备 | |
CN115907041A (zh) | 一种模型训练方法及装置 | |
CN113176937B (zh) | 任务处理方法、装置和电子设备 | |
CN112948114A (zh) | 边缘计算方法和边缘计算平台 | |
CN110362457B (zh) | 一种基于休假排队的三值光学计算机性能评价方法及*** | |
Mukherjee et al. | Automated deep learning model partitioning for heterogeneous edge devices | |
Pan et al. | Hierarchical resampling algorithm and architecture for distributed particle filters | |
CN110633707A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40029910 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |