一种神经网络的训练方法及相关设备与流程

文档序号:27766133发布日期:2021-12-04 01:01阅读:126来源:国知局
一种神经网络的训练方法及相关设备与流程

1.本技术涉及人工智能领域,尤其涉及一种神经网络的训练方法及相关设备。


背景技术:

2.在人工智能(artificial intelligence,ai)领域,深度神经网络(deep neural network,dnn)的训练通常采用加速器进行计算,计算过程一般包括前向计算和反向计算。
3.由于dnn具有分层特点,其计算过程一般逐层进行。图1为dnn进行前向计算的一个示意图,图2为dnn进行反向计算的一个示意图。如图1所示,设dnn为四层结构,当训练数据输入dnn后,按第一层

第二层

第三层

第四层逐层进行前向计算。训练数据经过前向计算后,每层前向计算所得到的特征值保存在加速器中。当所有训练数据完成如前述的前向计算后,则按第四层

第三层

第二层

第一层逐层进行反向计算。如图2所示,训练数据在进行反向计算时,每层反向计算需要利用训练数据在对应层前向计算中保存的特征值。因此,每完成一层的反向计算则释放对应层的特征值所占用的加速器存储量。直到所有训练数据均完成反向计算,加速器所保存的所有特征值被完全释放。
4.然而,上述计算过程中需要先完成所有训练数据的前向计算,此时,加速器需保存所有训练数据经过前向计算后所得到的特征值,导致加速器的存储占有量长期处于较大值,神经网络的训练效率低下。


技术实现要素:

5.本技术实施例提供了一种神经网络的训练方法及其相关设备,能使得加速器的存储占用量峰值保持在较低值,提高神经网络的训练效率。
6.本技术实施例的第一方面提供了一种神经网络的训练方法,训练方法应用于n个加速器,每个加速器均加载同一个神经网络,n个加速器以数据并行的方式对神经网络进行训练,训练方法包括:每个加速器先获取来自处理器的m个微批量数据,n
×
m个微批量数据组成训练数据,其中,微批量数据通常包含至少一个待训练的样本数据。在每个加速器根据m个微批量数据对神经网络进行训练的过程中,每个加速器对第i个微批量数据进行前向计算后,直接对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算以得到反向计算的结果。最后,每个加速器根据反向计算的结果对神经网络的参数进行更新,以完成神经网络的训练。
7.其中,n≥2,m≥2,i=1,2,...,m。
8.从上述训练方法可以看出:每个加速器对第i个微批量数据在完成前向计算后,则立即对第i个微批量数据的前向计算结果进行反向计算。每个加速器在开始反向计算时,可开始释放第i个微批量数据在前向计算所产生的特征值,直至完成第i个微批量数据的反向计算(此时,第i个微批量数据在前向计算所产生的特征值被完全释放)。因此,每个加速器的存储占用量峰值出现在第i个微批量数据的反向计算开始之时,此时每个加速器只需保存第i个微批量数据在前向计算所产生的特征值。在整个计算过程中,每个加速器的存储占
用量峰值周期性出现(即存储占用量峰值出现在每个微批量数据的反向计算开始之时),且能保持在较低值,可提高神经网络的训练效率。
9.在一种可能的实现方式中,反向计算的结果包括每个加速器对应的梯度累加值,每个加速器对应的梯度累加值为每个加速器对m个微批量数据分别进行反向计算后,所得到的m个梯度的和。具体地,每个加速器在对m个微批量数据的前向计算结果进行反向计算后,可得到m个梯度,并对m个梯度进行累加得到梯度累加值。
10.在一种可能的实现方式中,每个加速器根据反向计算的结果对神经网络的参数进行更新包括:每个加速器先根据n个加速器对应的梯度累加值进行求平均计算,得到目标梯度累加值。然后,每个加速器根据目标梯度累加值对神经网络的参数进行更新。具体地,每个加速器基于其对应的梯度累加值以及其余加速器对应的梯度累加值进行求平均计算,得到目标梯度累加值,从而基于目标梯度累加值实现神经网络的参数更新,以完成神经网络的训练。
11.在一种可能的实现方式中,该训练方法还应用于处理器,每个加速器获取m个微批量数据之前,该训练方法还包括:处理器获取训练数据。处理器根据目标存储容量阈值和训练数据的大小确定微批量数据的大小,其中,若n个加速器相同,则目标存储容量阈值为n个加速器中任意一个加速器的存储容量阈值,若n个加速器中存在至少p个加速器不同,则目标存储容量阈值为至少p个加速器的存储容量阈值中的最小值,n≥p≥2。处理器根据微批量数据的大小,将训练数据分成n
×
m个微批量数据。具体地,处理器可基于目标存储容量阈值和训练数据的大小确定最优的微批量数据的大小,从而将训练数据分成n
×
m个微批量数据。由于微批量数据的大小为最优值,可减小微批量数据在前向计算后所产生的特征值的存储占用量,可节省加速器的存储资源,提高神经网络的训练效率。
12.在一种可能的实现方式中,每个微批量数据所对应的存储占用量小于或等于目标存储容量阈值,每个微批量数据的大小小于或等于训练数据的大小,通过前述两个条件,可确定微批量数据的大小。
13.在一种可能的实现方式中,每个微批量数据所对应的集群线性度最大,通过前述条件,可确定最优的微批量数据的大小。
14.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为非整数,则m为将比值向上取整后的值。
15.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为整数,则m为比值。
16.本技术实施例的第二方面提供了一种神经网络的训练方法,该训练方法应用于n个加速器,每个加速器加载神经网络的部分层,n个加速器共同加载神经网络,n个加速器以流水线并行的方式对神经网络进行训练,训练方法包括:n个加速器中的第1个加速器先获取来自处理器的m个微批量数据,m个微批量数据组成训练数据。在n个加速器根据m个微批量数据对神经网络进行训练的过程中,n个加速器在共同完成对第i个微批量数据的前向计算后,直接对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算以得到反向计算的结果。n个加速器根据反向计算的结果对神经网络的参数进行更新。
17.其中,n≥2,m≥2,i=1,2,...,m。
18.从上述训练方法可以看出:n个加速器在共同完成对第i个微批量数据的前向计算后,则立即对第i个微批量数据的前向计算结果进行反向计算。每个加速器开始进行对第i个微批量数据的反向计算时,可开始释放第i个微批量数据在前向计算所产生的特征值,直至完成第i个微批量数据的反向计算(此时,第i个微批量数据在前向计算所产生的特征值被完全释放)。且由于n个加速器是以流水线并行的方式对m个微批量数据进行计算,故每个加速器的存储占用量峰值出现在第1个微批量数据的反向计算开始之时,此时每个加速器只需保存部分微批量数据在前向计算所产生的特征值。在整个计算过程中,每个加速器的存储占用量峰值能保持在较低值,提高神经网络的训练效率。
19.在一种可能的实现方式中,反向计算的结果包括每个加速器对应的梯度累加值,每个加速器对应的梯度累加值为每个加速器对m个微批量数据分别进行反向计算后,所得到的m个梯度的和。具体地,每个加速器在对m个微批量数据的前向计算结果进行反向计算后,可得到m个梯度,并对m个梯度进行累加得到梯度累加值。
20.在一种可能的实现方式中,n个加速器根据反向计算的结果对神经网络的参数进行更新包括:每个加速器根据其对应的梯度累加值,对其加载的神经网络的部分层的参数进行更新。具体地,每个加速器基于其对应的梯度累加值,对其加载的神经网络的部分层进行参数更新,以完成神经网络的训练。
21.在一种可能的实现方式中,该训练方法还应用于处理器,n个加速器获取m个微批量数据之前,该训练方法还包括:处理器先获取训练数据。然后,处理器根据每个加速器的存储容量阈值和训练数据的大小确定微批量数据的大小。最后,处理器根据微批量数据的大小,将训练数据分成m个微批量数据。具体地,处理器可基于每个加速器的存储容量阈值和训练数据的大小确定最优的微批量数据的大小,从而将训练数据分成m个微批量数据。由于微批量数据的大小为最优值,可减小微批量数据在前向计算后所产生的特征值的存储占用量,可节省加速器的存储资源,提高神经网络的训练效率。
22.在一种可能的实现方式中,每个加速器的存储占用量峰值小于或等于该加速器的存储容量阈值,每个加速器的存储占用量峰值为在该加速器对第1个微批量数据进行反向计算之前,已被该加速器完成前向计算的若干个微批量数据所对应的存储占用量,每个微批量数据的大小小于或等于训练数据的大小,通过前述两个条件,可确定微批量数据的大小。
23.在一种可能的实现方式中,每个微批量数据所对应的集群线性度最大,通过前述条件,可确定最优的微批量数据的大小。
24.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为非整数,则m为将比值向上取整后的值。
25.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为整数,则m为比值。
26.本技术实施例的第三方面提供了一种神经网络的训练装置,该训练装置包括:n个加速器,每个加速器均加载同一个神经网络,n个加速器以数据并行的方式对神经网络进行训练。具体地,每个加速器用于获取m个微批量数据,n
×
m个微批量数据组成训练数据。每个加速器还用于对第i个微批量数据进行前向计算后,直接对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算以得到反向计算的结果。每个加速
器还用于根据反向计算的结果对神经网络的参数进行更新。其中,n≥2,m≥2,i=1,2,...,m。
27.在一种可能的实现方式中,反向计算的结果包括每个加速器对应的梯度累加值,每个加速器对应的梯度累加值为每个加速器对m个微批量数据分别进行反向计算后,所得到的m个梯度的和。
28.在一种可能的实现方式中,每个加速器还用于根据n个加速器对应的梯度累加值进行求平均计算,得到目标梯度累加值。每个加速器还用于根据目标梯度累加值对神经网络的参数进行更新。
29.在一种可能的实现方式中,该训练装置还包括处理器,处理器用于获取训练数据。处理器还用于根据目标存储容量阈值和训练数据的大小确定微批量数据的大小,其中,若n个加速器相同,则目标存储容量阈值为n个加速器中任意一个加速器的存储容量阈值,若n个加速器中存在至少p个加速器不同,则目标存储容量阈值为至少p个加速器的存储容量阈值中的最小值,n≥p≥2。处理器还用于根据微批量数据的大小,将训练数据分成n
×
m个微批量数据。
30.在一种可能的实现方式中,每个微批量数据所对应的存储占用量小于或等于目标存储容量阈值,每个微批量数据的大小小于或等于训练数据的大小。
31.在一种可能的实现方式中,每个微批量数据所对应的集群线性度最大。
32.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为非整数,则m为将比值向上取整后的值。
33.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为整数,则m为比值。
34.本技术实施例的第四方面提供了一种神经网络的训练装置,该训练装置包括n个加速器,每个加速器加载神经网络的部分层,n个加速器共同加载神经网络,n个加速器以流水线并行的方式对神经网络进行训练。具体地,n个加速器中的第1个加速器用于获取m个微批量数据,m个微批量数据组成训练数据。n个加速器用于在共同完成对第i个微批量数据的前向计算后,直接对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算以得到反向计算的结果。n个加速器还用于根据反向计算的结果对神经网络的参数进行更新。其中,n≥2,m≥2,i=1,2,...,m。
35.在一种可能的实现方式中,反向计算的结果包括每个加速器对应的梯度累加值,每个加速器对应的梯度累加值为每个加速器对m个微批量数据分别进行反向计算后,所得到的m个梯度的和。
36.在一种可能的实现方式中,每个加速器用于根据其对应的梯度累加值,对其加载的神经网络的部分层的参数进行更新。
37.在一种可能的实现方式中,该训练装置还包括处理器,处理器用于获取训练数据。处理器还用于根据每个加速器的存储容量阈值和训练数据的大小确定微批量数据的大小。处理器还用于根据微批量数据的大小,将训练数据分成m个微批量数据。
38.在一种可能的实现方式中,每个加速器的存储占用量峰值小于或等于该加速器的存储容量阈值,每个加速器的存储占用量峰值为在该加速器对第1个微批量数据进行反向计算之前,已被该加速器完成前向计算的若干个微批量数据所对应的存储占用量,每个微
批量数据的大小小于或等于训练数据的大小。
39.在一种可能的实现方式中,每个微批量数据所对应的集群线性度最大。
40.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为非整数,则m为将比值向上取整后的值。
41.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为整数,则m为比值。
42.本技术实施例的第五方面提供了一种神经网络的训练装置,该训练装置包括:
43.一个或多个处理器、存储器、总线系统、以及一个或多个程序,所述处理器和所述存储器通过所述总线系统相连;
44.其中,所述一个或多个程序被存储在所述存储器中,所述一个或多个程序包括指令,所述指令当被所述训练装置执行时使所述训练装置执行如第一方面和第二方面任意一项所述的训练方法。
45.本技术实施例第六方面提供了一种计算机可读存储介质,包括指令,当该指令在计算机上运行时,使得计算机执行如第一方面和第二方面任意一项所述的训练方法。
46.从以上技术方案可以看出,本技术实施例具有以下优点:
47.本技术实施例提供了一种神经网络的训练方法及其相关设备。在该方法中,每个加速器在对第i个微批量数据完成前向计算后,则对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算。前述过程中,每个加速器对第i个微批量数据在完成前向计算后,则立即对第i个微批量数据的前向计算结果进行反向计算。每个加速器在开始反向计算时,可开始释放第i个微批量数据在前向计算所产生的特征值,直至完成第i个微批量数据的反向计算。因此,每个加速器的存储占用量峰值出现在第i个微批量数据的反向计算开始之时,此时每个加速器只需保存第i个微批量数据在前向计算所产生的特征值。在整个计算过程中,每个加速器的存储占用量峰值周期性出现,且能保持在较低值,可提高神经网络的训练效率。
附图说明
48.图1为dnn进行前向计算的一个示意图;
49.图2为dnn进行反向计算的一个示意图;
50.图3为本技术实施例提供的数据并行的一个示意图;
51.图4为本技术实施例提供的数据并行的一个示意图;
52.图5为本技术实施例提供的神经网络训练系统的一个结构示意图;
53.图6为本技术实施例提供的神经网络的训练方法的一个流程示意图;
54.图7为本技术实施例提供的神经网络的训练方法的第一应用例示意图;
55.图8为本技术实施例提供的第一应用例的一个流程示意图;
56.图9为本技术实施例提供的第一应用例的另一流程示意图;
57.图10为本技术实施例提供的神经网络的训练方法的另一流程示意图;
58.图11为本技术实施例提供的神经网络的训练方法的第二应用例示意图;
59.图12为本技术实施例提供的第二应用例的一个流程示意图;
60.图13为本技术实施例提供的第二应用例的另一流程示意图;
61.图14为本技术实施例提供的第二应用例的计算过程示意图;
62.图15为本技术实施例提供的神经网络的训练装置的一个结构示意图;
63.图16为本技术实施例提供的神经网络的训练装置的另一结构示意图;
64.图17为本技术实施例提供的神经网络的训练装置的又一结构示意图。
具体实施方式
65.本技术实施例提供了一种神经网络的训练方法及其相关设备,能使得加速器的存储占用量峰值保持在较低值,提高神经网络的训练效率。下面结合附图,对本技术的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
66.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
67.本技术实施例可应用于ai领域中。ai是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,ai基础理论等。
68.通常来讲,ai的实现包括两个环节:训练以及推理。训练,是指通过大量标记过的样本训练出一个神经网络模型,使神经网络模型可以具有特定的功能。推理,也称预测或推断,是指利用训练好的神经网络模型,使用新的业务数据推理出各种结论。
69.ai参数:是指通过ai训练确定出的ai模型中的参数。通俗地说,ai模型可以视为一种函数,ai参数可以视为函数中的系数。例如,如果ai模型是神经网络,ai参数可以是神经网络中卷积核的权重。又例如,如果ai模型是支持向量机,ai参数可以是支持向量机中的支持向量;又例如,如果ai模型是线性回归模型或逻辑回归模型,ai参数可以是线性回归或逻辑回归模型中的系数。当然,列举的ai模型仅是示例,ai模型还可以是其他类型的模型,例如决策树模型、随机森林模型、置信网络、强化学习模型、迁移学习模型、归纳学习模型中的一项及其组合,相应地,ai参数也可以是其他类型的模型中的参数,本技术实施例并不限定ai参数和ai模型的具体类型。ai参数也可以称作神经网络参数。
70.ai参数的调整过程对于ai计算来讲是至关重要的。具体来讲,ai计算的过程中,通常会将数据集中的业务数据,输入至ai模型,ai模型会基于ai参数对业务数据进行推理预测,得到预测结果。根据预测结果与真实结果之间的误差,会对ai参数进行调整,使得根据调整后的ai参数来进行下一次推理预测时,误差得以减小。通过循环执行ai参数调整的过程,能够让ai参数通过调整来逐渐精确,当训练结束时,利用包含了精确的参数的ai模型,
可以实现精确的推理预测,比如精确的将人脸图像中的人脸识别出来。
71.随着人工智能技术的快速发展,神经网络(例如,dnn)近年来在图像、视频以及语音等多种媒体信号的处理与分析中取得了很大的成就。神经网络也可以称为人工神经网络(artificial neural network,ann),或者类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutional neural network,cnn)、深度神经网络(deep neural network,dnn)、多层感知器(multilayer perceptron,mlp)等神经网络。一个性能优良的神经网络往往需要经过复杂的训练过程,为了完成神经网络的训练,可通过数据并行和流水线并行两种方式实现,以下将结合现有技术对前述两种方式分别进行介绍。
72.数据并行的基本思想是使用多个设备上的模型副本同时对训练数据进行训练,并在迭代结束时同步跨副本的模型参数。具体地,每个设备均加载有同一个神经网络,在接收到训练数据后,每个加速器可基于训练数据对其加载的该神经网络进行训练,其中,设备可以是加速器,训练数据是训练数据子集,即部分训练数据。图3为本技术实施例提供的数据并行的一个示意图,如图3所示,设有加速器1、加速器2和加速器3,且加速器1、加速器2和加速器3均加载同一个完整的神经网络,当处理器为三个加速器分配训练数据(包含多个数据)后,加速器1、加速器2和加速器3对各自的训练数据进行计算,从而得到各自的计算结果。以加速器1为例,加速器1对分配至加速器1的所有数据进行前向计算后,再对所有数据的前向计算结果进行反向计算,从而得到加速器1的反向计算结果。同理,加速器2和加速器3也可执行相同的操作,此处不再赘述。基于三个反向计算结果,加速器1、加速器2和加速器3可对各自加载的神经网络进行参数更新。
73.流水线并行为模型并行中的一种方式。流水线并行通常指,多个加速器中每个加速器加载有神经网络的部分层,多个加速器共同加载完整的该神经网络,在接收到训练数据后,每个加速器负责神经网络部分层的参数训练,多个加速器可基于训练数据共同对该神经网络进行训练。图4为本技术实施例提供的数据并行的一个示意图,图4中的细线框表示数据的前向计算,粗线框表示数据的反向计算。如图4所示,设神经网络包含三层,加速器1加载神经网络的第一层、加速器2加载神经网络的第二层,和加速器3加载神经网络的第三层,且加速器1、加速器2和加速器3依次连接,故加速器1的前向计算结果可输入至加速器2,加速器2的前向计算结果可输入至加速器3,且加速器3的反向计算结果可输入至加速器2,加速器2的反向计算结果可输入至加速器1。加速器1接收来自处理器的数据1、数据2和数据3后,可对三个数据进行前向计算和反向计算。具体地,数据1依次经过加速器1、加速器2和加速器3的前向计算后,可得到数据1的前向计算结果,即已被加速器3前向计算后的数据1。需要说明的是,加速器2在对已被加速器1前向计算后的数据1进行前向计算时,加速器1可同时对数据2进行前向计算,以此类推,可得到数据1、数据2、数据3的前向计算结果。完成前向计算后,可对三个数据的前向计算结果进行反向计算。应理解,反向计算为前向计算的逆过程,可参考前述前向计算的说明,此处不再赘述。当完成三个数据的反向计算后,加速器1可基于其得到的反向计算结果对第一层进行参数更新,加速器2可基于其得到的反向计算结果对第二层进行参数更新,加速器3可基于其得到的反向计算结果对第三层进行参数更新。
74.为了提高神经网络的训练效率,本技术提供了一种神经网络的训练方法。该训练方法可应用于神经网络训练系统中,图5为本技术实施例提供的神经网络训练系统的一个结构示意图。如图5所示,该神经网络系统包含多个训练装置501,训练装置501之间可通过交换机502进行通信连接。每个训练装置501包含中央处理器(central processing unit,cpu),以下简称处理器5011,以及多个加速器5012。其中,加速器5012可由图形处理单元(graphics processing unit,gpu)或现场可编程逻辑门阵列(field programmable gate array,fpga)等加速设备实现,此处不做限制。处理器5011可向加速器5012发送用于训练神经网络的样本数据,加速器5012可基于样本数据对神经网络进行训练。
75.图6为本技术实施例提供的神经网络的训练方法的一个流程示意图,请参阅图6,该训练方法应用于包含处理器和n个加速器的训练装置。在该训练装置中,处理器可为每个加速器提供用于神经网络训练的数据,每个加速器均加载同一个神经网络,n个加速器以数据并行的方式对神经网络进行训练。该训练方法包括:
76.601、每个加速器获取m个微批量数据。
77.当需要对神经网络进行训练时,处理器可先获取训练数据,并将训练数据分成n
×
m个微批量(microbatch)数据,每个微批量包含至少一个待训练的样本数据。然后,处理器向每个加速器发送m个微批量数据。其中,n≥2,m≥2。
78.602、每个加速器对第i个微批量数据进行前向计算后,直接对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算以得到反向计算的结果。
79.当每个加速器接收到来自处理器的m个微批量数据后,则开始进行神经网络的训练。具体地,每个加速器对第i个微批量数据进行前向计算后,可得到第i个微批量数据的前向计算结果,再对第i个微批量数据的前向计算结果进行反向计算。然后,可对第i+1个微批量数据分别进行前向计算和反向计算,直至完成对m个微批量数据的反向计算,得到反向计算的结果。其中,i=1,2,...,m。
80.为了便于描述,在本实施例中,加速器完成对某个(或多个)微批量数据的反向计算应理解为,加速器已对该微批量数量完成前向计算,并已完成对该微批量数据的前向计算结果的反向计算。同理,加速器对某个(或多个)微批量数据进行反向计算应理解为,加速器已对该微批量数量完成前向计算,并对该微批量数据的前向计算结果进行反向计算,后续不再赘述。
81.更进一步地,反向计算的结果可包括每个加速器对应的梯度累加值,每个加速器对应的梯度累加值为每个加速器对m个微批量数据分别进行反向计算后,所得到的m个梯度的和。具体地,在每个加速器根据m个微批量数据对神经网络进行训练的过程中,每个加速器在对第i个微批量数据分别进行前向计算和反向计算,得到第i个梯度后,则对第i+1个微批量数据分别进行前向计算和反向计算,得到第i+1个梯度,直至完成对m个微批量数据的反向计算,得到m个梯度。然后,每个加速器对m个梯度进行累加计算,得到梯度累加值。值得注意的是,加速器完成某一个微批量数据的前向计算时,则存储前向计算过程中所产生的特征值。加速器开始该微批量数据的反向计算时,则开始释放该微批量数据在前向计算所产生的特征值(由于进行反向计算时,需要使用前向计算所产生的特征值)。直至完成该微批量数据的反向计算,此时该微批量数据在前向计算所产生的特征值被完全释放,即该部
分特征值所占用的存储量被释放(该微批量数据所对应的存储占用量)。
82.例如,训练装置中的某个加速器完成对第1个微批量数据的前向计算后,则立即对第1个微批量数据进行反向计算。完成第1个微批量数据的反向计算后,可得到第1个梯度,然后对第2个微批量数据进行前向计算。完成第2个微批量数据的前向计算后,则立即对第2个微批量数据进行反向计算,以得到第2个梯度。以此类推,直至完成对第m个微批量数据的反向计算,则可得到m个梯度。最后,该加速器可将m个梯度进行叠加,即可得到该加速器对应的梯度累加值。值得注意的是,训练装置还可包含其余加速器,其余加速器也可实现前述过程,以得到其余加速器对应的梯度累加值,此处不做赘述。
83.603、每个加速器根据反向计算的结果对神经网络的参数进行更新。
84.每个加速器先根据其对应的梯度累加值,以及其余加速器对应的梯度累加值进行求平均计算,得到最终用于对神经网络进行更新的目标梯度累加值。然后,每个加速器根据目标梯度累加值对神经网络的参数进行更新。
85.每个加速器所对应的梯度累加值可能是不同的(每个加速器加载的是同一个神经网络,但在每个加速器所接收的微批量数据里,样本数据可能是不同的,导致计算结果不同),为了达到最高效的训练效果,每个加速器可对所有梯度累加值进行求平均计算,得到相同的目标梯度累加值。这样,所有加速器均可基于同一个目标梯度累加值对同一个神经网络完成更新,完成该神经网络的训练。
86.此外,可通过设置微批量数据的大小,以节省加速器的存储资源。在处理器发送m个微批量数据至每个加速器之前,该训练方法还可包括:
87.处理器先获取训练数据,需要说明的是,训练数据为输入至一个加速器的所有样本数据的集合,训练数据的大小大于或等于微批量数据的大小。然后根据目标存储容量阈值和训练数据的大小确定微批量数据的大小。其中,若n个加速器相同(即n个加速器的存储容量阈值均相同),则目标存储容量阈值为n个加速器中任意一个加速器的存储容量阈值,若n个加速器中存在至少p个加速器不同(即至少p个加速器的存储容量阈值不同),则目标存储容量阈值为至少p个加速器的存储容量阈值中的最小值,n≥p≥2。最后,处理器根据微批量数据的大小,将训练数据分成n
×
m个微批量数据。
88.其中,微批量数据的大小应满足以下条件:(1)每个微批量数据的大小所对应的存储占用量小于或等于目标存储容量阈值;(2)每个微批量数据的大小小于或等于训练数据的大小;(3)每个微批量数据所对应的集群线性度最大。
89.更进一步地,若训练数据的大小与微批量数据的大小之间的比值为非整数,则微批量数据的数量m为将前述比值向上取整后的值。若训练数据的大小与微批量数据的大小之间的比值为整数,则微批量数据的数量m为前述比值。
90.通过上述过程,可以将微批量数据的大小设置为最优值,以减小微批量数据在前向计算后所产生的特征值的存储占用量,能够进一步节省加速器的存储资源,提高神经网络的训练效率。
91.本实施例中,每个加速器对第i个微批量数据在完成前向计算后,则立即对第i个微批量数据的前向计算结果进行反向计算。每个加速器在开始反向计算时,可开始释放第i个微批量数据在前向计算所产生的特征值,直至完成第i个微批量数据的反向计算(第i个微批量数据在前向计算所产生的特征值被完全释放)。因此,每个加速器的存储占用量峰值
出现在第i个微批量数据的反向计算开始之时,此时每个加速器只需保存第i个微批量数据在前向计算所产生的特征值。在整个计算过程中,每个加速器的存储占用量峰值周期性出现(即存储占用量峰值出现在每个微批量数据的反向计算开始之时),且能保持在较低值,可提高神经网络的训练效率。
92.为了便于理解,以下将提供一个应用例对图6所示的训练方法做进一步的介绍。图7为本技术实施例提供的神经网络的训练方法的第一应用例示意图,请参阅图7,用于训练目标神经网络的训练装置设置有处理器、gpu1、gpu2、gpu3和gpu4。gpu1、gpu2、gpu3和gpu4上均加载有同一个目标神经网络,该目标神经网络为多层结构,各层大小和计算耗时均匀设置。
93.设外部输入的训练数据包含1024个样本数据。处理器确定所有样本数据的数量为1024个后,由于gpu1、gpu2、gpu3和gpu4通过数据并行的方式进行训练,处理器可先确定每个gpu负责的批量数据的大小=1024/4=256,并将训练数据平均分为4个批量数据。因此,处理器可为每个gpu提供256个样本数据(即一个批量数据),以使得每个gpu基于其负责的样本数据对目标神经网络进行训练。
94.为了节省gpu的存储资源,可将一个批量数据进一步分成多个微批量数据。首先需要确定微批量数据的大小,设gpu1、gpu2、gpu3和gpu4为相同性能的gpu,下面将结合图8并以gpu1为例对确定微批量数据的大小的过程进行说明。图8为本技术实施例提供的第一应用例的一个流程示意图,如图8所示,该过程包括:
95.s1:处理器确定gpu1的显存容量阈值cmax和批量数据的大小。
96.s2:处理器根据批量数据的大小选择一个微批量数据的大小,确定该微批量数据在gpu1中所对应的显存占用量c1。
97.s3:处理器判断是否满足c1≤cmax,若不满足,则重新执行s2,若满足,则执行s4。
98.s4:处理器在满足c1≤cmax条件下,确定微批量数据的大小的所有取值,并在所有取值中,取具有最大的集群线性度l的微批量数据的大小作为最终的选择。
99.具体地,处理器确定gpu1的显存容量阈值cmax=16gbyte,以及批量数据的大小为256。
100.处理器选择微批量数据的大小为256,当微批量数据的大小为256时,微批量数据在gpu1中的显存占用量c1=64gbyte。在判断不满足c1≤cmax,处理器则将微批量数据的大小设为128,当微批量数据的大小为128时,微批量数据在gpu1中的显存占用量c1=32gbyte,依旧不满足c1≤cmax。处理器再次将微批量数据的大小设为64,此时微批量数据在gpu1中的显存占用量c1=16gbyte,满足c1≤cmax。此时,则gpu1需计算的微批量数据的数量为256/64=4。
101.确定微批量数据的大小为64时,满足c1≤cmax后,则可计算微批量数据的大小所对应的集群线性度。具体地,当微批量数据的大小为64时,其对应的计算耗时t1=32ms,其余耗时(例如特征值传输、参数更新的耗时等等)t2=12ms,则微批量数据的大小为64时,所对应的集群线性度l=t1/(t1+t2)=0.727。更进一步地,处理器将微批量数据的大小设为32,其依旧满足c1≤cmax,则计算其对应的集群线性度l=0.762。同理,处理器可继续计算出微批量数据的大小为其余取值时,所对应的集群线性度l。
102.设在所有取值中,当微批量数据的大小为32时,其对应的集群线性度l最大。处理
器可最终确定微批量数据的大小为32,此时,gpu1需计算的微批量数据的数量为256/32=8。
103.应理解,处理器对gpu2、gpu3和gpu4也可执行如同s1-s4的过程。由于gpu1、gpu2、gpu3和gpu4为相同性能的gpu,因此,每个gpu最终确定的微批量数据的大小均为32,数量为8。
104.在确定微批量数据的大小后,则gpu1、gpu2、gpu3和gpu4以数据并行的方式开始进行计算。下面将结合图9对前述计算过程进行说明,图9为本技术实施例提供的第一应用例的另一流程示意图,如图9所示,该过程包括:
105.w1:对第1个微批量数据进行前向计算,并存储前向计算所产生的特征值。
106.w2:确定第1个微批量数据的前向计算结束后,则对第1个微批量数据的前向计算结果进行反向计算,并开始释放第1个微批量数据所对应的显存占用量(即开始释放第1个微批量数据在前向计算所产生的特征值)。当第1个微批量数据的反向计算结束后,第1个微批量数据所对应的显存占用量被完全释放,得到第1个梯度。
107.w3:对第2个微批量数据进行前向计算和反向计算,得到第2个梯度。关于第2个微批量数据的计算过程可参考w1和w2,此处不再赘述。以此类推,直到8个微批量数据均完成前向计算和反向计算,可得到8个梯度,并对8个梯度进行累加,得到梯度累加值。
108.w4:根据梯度累加值对目标神经网络进行更新。
109.由于每个gpu均执行步骤w1-w3,故每个gpu均可得到其对应的梯度累加值。得到梯度累加值之后,则可对神经网络进行更新。具体地,每个gpu先根据其对应的梯度累加值,以及其余gpu对应的梯度累加值进行求平均计算,得到最终用于对神经网络进行更新的目标梯度累加值。然后,每个gpu根据目标梯度累加值对神经网络的参数进行更新。例如,gpu1可将其对应的梯度累加值,以及gpu2、gpu3和gpu4对应的梯度累加值进行求平均计算,得到目标梯度累加值。同理,gpu2、gpu3和gpu4也可得到该目标梯度累加值。最后,gpu1、gpu2、gpu3和gpu4可根据该目标梯度累加值,对各自加载的神经网络的参数进行更新。
110.本应用例中,某一个微批量数据在训练过程中先做前向计算,然后立即做反向计算。该微批量数据的反向计算完成之后才开始下一个微批量数据的前向计算。故本应用例中的显存占用量峰值出现在任意一个微批量数据的反向计算开始之时。这时加速器只需要保存一个微批量数据在前向计算所产生的所有特征值。在整个计算过程中,显存占用量峰值周期性出现,直到所有微批量数据前向计算和反向计算完成。且当出现显存占用量峰值时,加速器上只需要保存一个微批量数据在前向计算所产生的特征值,将显存占用量峰值保持在较低值,可提高神经网络的训练效率。
111.图10为本技术实施例提供的神经网络的训练方法的另一流程示意图,请参阅图10,该训练方法应用于包含处理器和n个加速器的训练装置。在该训练装置中,处理器可为每个加速器提供用于神经网络训练的数据。每个加速器加载一个神经网络的部分层,n个加速器共同加载完整的该神经网络,n个加速器以流水线并行的方式对神经网络进行训练。在接收到待训练的样本数据后,n个加速器可基于样本数据共同对该神经网络进行训练。例如,训练装置设置有三个加速器,且神经网络有15层。其中,加速器1加载有该神经网络的第1层至第5层,加速器2加载有该神经网络的第6层至第10层,加速器3加载有该神经网络的第11层至第15层,加速器1、加速器2、和加速器3则可通过流水线并行的方式对该神经网络进
行训练。该训练方法包括:
112.1001、n个加速器中的第1个加速器获取m个微批量数据。
113.当需要对神经网络进行训练时,处理器可先获取训练数据,并将训练数据分成m个微批量数据,每个微批量包含至少一个待训练的样本数据。然后,处理器向n个加速器中的第1个加速器发送m个微批量数据。训练装置内设有n个加速器,但n个加速器作为一个整体(因n个加速器共同加载一个神经网络),且第1个加速器作为该整体的输入端,故处理器仅需准备m个微批量数据,并将m个微批量数据发送至第1个加速器。其中,n≥2,m≥2。
114.1002、n个加速器在共同完成对第i个微批量数据的前向计算后,直接对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算以得到反向计算的结果。
115.当n个加速器接收到来自处理器的m个微批量数据后,则开始进行神经网络的训练。具体地,n个加速器若共同完成对第i个微批量数据的前向计算,则对第i个微批量数据的前向计算结果(即已被第n个加速器前向计算后的第i个微批量数据)进行反向计算,直至完成对m个微批量数据的反向计算,得到反向计算的结果。m≥2,i=1,2,...,m。
116.为了便于描述,在本实施例中,第j个加速器对第i个微批量数据进行前向计算应理解为,第j个加速器对已被第j-1个加速器前向计算后的第i个微批量数据进行前向计算。同样地,第j个加速器完成第i个微批量数据的前向计算应理解为,第j个加速器完成已被第j-1个加速器前向计算后的第i个微批量数据的前向计算。同样地,第k个速器对第i个微批量数据进行反向计算应理解为,第k个加速器对已被第k+1加速器反向计算后的第i个微批量数据进行反向计算。同样地,第k个加速器完成第i个微批量数据的反向计算应理解为,第k个加速器完成已被第k+1个加速器反向计算后的第i个微批量数据的反向计算。其中,j=2,...,n,k=1,...,n-1。此外,第n个加速器对第i个微批量数据(或第i个微批量数据的前向计算结果)进行反向计算应理解为第n个加速器对已被第n个加速器前向计算后的第i个微批量数据进行反向计算,后续不再赘述。
117.更进一步地,反向计算的结果可包括每个加速器对应的梯度累加值,每个加速器对应的梯度累加值为每个加速器对m个微批量数据分别进行反向计算后,所得到的m个梯度的和。为了便于理解,依旧通过上述例子进行说明。加速器1在接收到m个微批量数据后,则对第1个微批量数据进行前向计算。完成前向计算后,加速器1将经过计算的第1个微批量数据发送至加速器2,使得加速器2对第1个微批量数据进行前向计算。依次类推,在加速器3完成第1个微批量数据的前向计算后,则加速器3开始对第1个微批量数据进行反向计算。完成反向计算后,加速器3可得到第1个梯度,并将经过加速器3反向计算后第1个微批量数据发送至加速器2,使得加速器2对第1个微批量数据进行反向计算。加速器2、加速器1在完成对第1个微批量数据的反向计算后,也分别可得到第1个梯度。同理,3个加速器也可对第2个微批量数据至第m个微批量数据执行如前述的计算过程,故加速器1可得到m个梯度,并对m个梯度进行累加,得到梯度累加值。加速器2和加速器3也可分别得到m个梯度,并通过累加计算得到梯度累加值。
118.值得注意的是,加速器完成某一个微批量数据的前向计算时,则存储前向计算过程中所产生的特征值。加速器开始该微批量数据的反向计算时,则开始释放该微批量数据在前向计算所产生的特征值(由于进行反向计算时,需要使用前向计算所产生的特征值)。
直至完成该微批量数据的反向计算,此时该微批量数据在前向计算所产生的特征值被完全释放,即该部分特征值所占用的存储量被释放。
119.依旧如上述例子,加速器3在对第1个微批量数据进行反向计算时,仅完成第1个微批量数据的前向计算,故加速器1存有第1个微批量数据在前向计算所产生的特征值。而加速器2在对第1个微批量数据进行反向计算时,设已完成3个微批量数据的前向计算(由于加速器3在对第1个微批量数据进行前向计算和反向计算时,加速器2可同步对其余微批量数据进行前向计算,例如对第2个微批量数据、第3个微批量数据进行前向计算),故加速器2存有这3个微批量数据在前向计算所产生的特征值。而加速器1在对第1个微批量数据进行反向计算时,设已完成5个微批量数据的前向计算,故加速器3存有这5个微批量数据在前向计算所产生的特征值。因此,加速器1、加速器2、加速器3的存储占用量峰值均出现在第1个微批量数据的反向计算开始之时,且加速器1的存储占用量峰值大于加速器2的存储占用量峰值大于加速器3的存储占用量峰值。
120.1003、n个加速器根据反向计算的结果对神经网络的参数进行更新。
121.每个加速器根据其对应的梯度累加值,对其加载的神经网络的部分层进行更新。依旧如上述例子,加速器1根据其对应的梯度累加值,对神经网络的第1层至第5层的参数进行更新。加速器2根据其对应的梯度累加值,对神经网络的第6层至第10层的参数进行更新。加速器3根据其对应的梯度累加值,对神经网络的第11层至第15层的参数进行更新。
122.此外,可通过设置微批量数据的大小,以节省加速器的存储资源。在处理器发送m个微批量数据至n个加速器的第1个加速器之前,该训练方法还可包括:处理器先获取训练数据。然后,处理器根据每个加速器的存储容量阈值和第二数据样本的大小确定微批量数据的大小。最后,处理器根据微批量数据的大小,将训练数据分成m个微批量数据。
123.其中,微批量数据的大小应满足以下条件:(1)每个加速器的存储占用量峰值小于或等于该加速器的存储容量阈值,每个加速器的存储占用量峰值为在该加速器对第1个微批量数据进行反向计算之前,已被该加速器完成前向计算的若干个微批量数据所对应的存储占用量。依旧如上述例子,加速器3在对第1个微批量数据进行反向计算时,仅完成第1个微批量数据的前向计算,因此,第1个微批量数据所对应的存储占用量(即为加速器3的存储占用量峰值)应小于或等于加速器3的存储容量阈值。同理,加速器2在对第1个微批量数据进行反向计算时,已完成3个微批量数据的前向计算,故这3个微批量数据所对应的存储占用量(即为加速器2的存储占用量峰值)应小于或等于加速器2的存储容量阈值等等;(2)每个微批量数据的大小小于或等于训练数据的大小;(3)每个微批量数据所对应的集群线性度最大。
124.更进一步地,若训练数据的大小与微批量数据的大小之间的比值为非整数,则微批量数据的数量m为将前述比值向上取整后的值。若训练数据的大小与微批量数据的大小之间的比值为整数,则微批量数据的数量m为前述比值。
125.通过上述过程,可以将微批量数据的大小设置为最优值,以减小微批量数据在前向计算后所产生的特征值的存储占用量,能够进一步节省加速器的存储资源,提高神经网络的训练效率。
126.本实施例中,n个加速器在对第i个微批量数据完成前向计算后,则立即对第i个微批量数据的前向计算结果进行反向计算。每个加速器开始进行对第i个微批量数据的反向
计算时,可开始释放第i个微批量数据在前向计算所产生的特征值,直至完成第i个微批量数据的反向计算(第i个微批量数据在前向计算所产生的特征值被完全释放)。因此,每个加速器的存储占用量峰值出现在第1个微批量数据的反向计算开始之时,此时每个加速器只需保存部分微批量数据在前向计算所产生的特征值。在整个计算过程中,每个加速器的存储占用量峰值能保持在较低值,可提高神经网络的训练效率。
127.为了便于理解,以下将提供一个应用例对图10所示的训练方法做进一步的介绍。图11为本技术实施例提供的神经网络的训练方法的第二应用例示意图,请参阅图11,用于训练神经网络的训练装置设置有处理器、gpu1、gpu2、gpu3和gpu4。该神经网络为32层结构,各层大小和计算耗时均匀设置。gpu1加载有神经网络的第1至第8层,gpu2加载有神经网络的第9层至第16层,gpu3加载有神经网络的第17层至第24层,gpu4加载有神经网络的第25层至第32层。
128.设外部输入的训练数据包含256个样本数据。由于gpu1、gpu2、gpu3和gpu4通过流水线并行的方式进行训练。处理器将该训练数据发送至gpu1(gpu1作为整个目标神经网络的输入端口),以使得4个gpu基于训练数据对目标神经网络进行训练。
129.为了节省gpu的存储资源,可将训练数据进一步分成多个微批量数据。首先需要确定微批量数据的大小,设gpu1、gpu2、gpu3和gpu4为相同性能的gpu。关于确定微批量数据的大小的说明,可参考前述第一应用例中的相关部分,此处不做赘述。需要说明的是,由于gpu1、gpu2、gpu3和gpu4视为一个整体,且为相同性能的gpu,处理器仅需对gpu1执行以下过程即可确定微批量数据的大小。以下结合图12对前述确定微批量数据的大小的过程进行说明,图12为本技术实施例提供的第二应用例的一个流程示意图,如图12所示,该确定过程包括:
130.t1:处理器确定gpu1的显存容量阈值cmax和训练数据的大小。
131.t2:处理器根据训练数据的大小选择一个微批量数据的大小,确定该微批量数据在gpu1中所对应的显存占用量c1。
132.t3:处理器判断是否满足gpu1的显存占用量峰值n
×
c1≤cmax,若不满足,重新执行t2,若满足,则执行t4。
133.t4:处理器在满足n
×
c1≤cmax条件下,确定微批量数据的大小的所有取值,并在所有取值中,取具有最大的集群线性度l的微批量数据的大小作为最终的选择。
134.具体地,处理器确定gpu的显存容量阈值cmax=64gbyte,以及批量数据的大小为256。
135.处理器选择微批量数据的大小为256,当微批量数据的大小为256时,微批量数据在gpu中的显存占用量c1=64gbyte。由于cpu1在对第1个微批量数据进行反向计算前,已对7个微批量数据完成前向计算,因此,在判断不满足7
×
c1≤cmax,处理器则将微批量数据的大小设为128,当微批量数据的大小为128时,微批量数据在gpu1中的显存占用量c1=32gbyte,依旧不满足7
×
c1≤cmax。依次类推,直至处理器将微批量数据的大小设为32,此时微批量数据在gpu1中的显存占用量c1=8gbyte,满足7
×
c1≤cmax。此时,则gpu1需计算的微批量数据的数量为256/32=8。
136.确定微批量数据的大小为32时,满足7
×
c1≤cmax后,则可计算微批量数据的大小所对应的集群线性度。具体地,当微批量数据的大小为32时,其对应的计算耗时t1=32ms,
其余耗时(例如特征值传输、参数更新的耗时等等)t2=10ms,则微批量数据的大小为64时,所对应的集群线性度l=t1/(t1+t2)=0.762。更进一步地,处理器将微批量数据的大小设为32,其依旧满足7
×
c1≤cmax,则计算其对应的集群线性度l=0.726。同理,处理器可继续计算出微批量数据的大小为其余取值时,所对应的集群线性度l。
137.设在所有取值中,当微批量数据的大小为32时,其对应的集群线性度l最大。处理器可最终确定微批量数据的大小为32,此时,gpu1需计算的微批量数据的数量为256/32=8。
138.在确定微批量数据的大小和数量后,处理器则将8个微批量数据发送至gpu1,使得gpu1、gpu2、gpu3和gpu4以流水线并行的方式开始进行计算。以下结合图13和图14对前述计算过程进行说明。图13为本技术实施例提供的第二应用例的另一流程示意图,图14为本技术实施例提供的第二应用例的计算过程示意图。需要说明的是,为了便于作图,图14中的细线框表示微批量数据的前向计算,粗线框表示微批量数据的反向计算,且微批量数据以mb进行标记,例如,第1个微批量数据为mb1,第2个微批量数据为mb2等等。如图13和图14所示,计算过程如下:
139.p1:gpu1对第1个微批量数据进行前向计算,并显存前向计算所产生的特征值。
140.p2:gpu1将经过计算后的第1个微批量数据发送至gpu2,使得gpu2对第1个微批量数据进行前向计算(在gpu2对第1个微批量数据进行前向计算时,gpu1同步对第2个微批量数据进行前向计算)。依次类推,当gpu4完成第1个微批量数据的前向计算后,则可对第1个微批量数据进行反向计算,而其余gpu仍在进行其余微批量数据的前向计算。
141.p3:gpu4开始进行第1个微批量数据的反向计算,并开始释放第1个微批量数据在gpu4中所对应的显存占用量(即开始释放第1个微批量数据在前向计算所产生的特征值)。当gpu4对第1个微批量数据的反向计算结束后,gpu4得到第1个梯度,并将第1个微批量数据发送至gpu3,以使得gpu3对第1个微批量数据进行反向计算(此时gpu3已完成对第3个微批量数据的前向计算)。gpu3对第1个微批量数据的反向计算结束后,gpu3得到第1个梯度,并将第1个微批量数据发送至gpu2,以使得gpu2对第1个微批量数据进行反向计算(此时gpu3已完成对第5个微批量数据的前向计算)。以此类推,直到gpu1对第1个微批量数据的反向计算结束,得到第1个梯度。
142.p4:直至所有gpu完成8个微批量数据的反向计算,每个gpu均可得到8个梯度,并对8个梯度进行累加得到梯度累加值。
143.p5:每个gpu在得到其对应的梯度累加值后,则可对其加载的层次的参数进行更新。
144.例如,gpu1根据其对应的梯度累加值,对神经网络的第1层至第8层的参数进行更新。gpu2根据其对应的梯度累加值,对神经网络的第9层至第16层的参数进行更新。gpu3根据其对应的梯度累加值,对神经网络的第17层至第24层的参数进行更新。gpu4根据其对应的梯度累加值,对神经网络的第25层至第32层的参数进行更新。
145.结合图14可知,gpu1开始第1个微批量数据的反向计算之前,已完成7个微批量数据的前向计算。gpu2开始第1个微批量数据的反向计算之前,已完成5个微批量数据的前向计算。gpu3开始第1个微批量数据的反向计算之前,已完成3个微批量数据的前向计算。gpu4开始第1个微批量数据的反向计算之前,已完成1个微批量数据的前向计算。在这4个gpu中,
每个gpu的显存占用量峰值均出现在第1个微批量数据的反向计算开始之时(即图中的箭头处,此时,显存占用量峰值将逐渐减小,直至第1个微批量数据的反向计算完成。在此之后,显存占用量峰值将周期性出现),且每个gpu不需保存所有微批量数据在前向计算所产生的特征值,可将每个gpu的显存占用量峰值保持在较低值(与图4所示的现有技术相比,现有技术中每个gpu均需保存所有微批量数据在前向计算所产生的特征值,如图4中的箭头所示),提高神经网络的训练效率。
146.以上是对本技术实施例提供的神经网络的训练方法的具体说明,以下将对本技术实施例提供的神经网络的训练装置进行介绍。图15为本技术实施例提供的神经网络的训练装置的一个结构示意图。请参阅图15,该训练装置包括:处理器1501和n个加速器1502。其中,每个加速器1502均加载同一个神经网络,n个加速器1502以数据并行的方式对神经网络进行训练。
147.每个加速器1502用于获取来自处理器1501的m个微批量数据,n
×
m个微批量数据组成训练数据。
148.每个加速器1502还用于对第i个微批量数据进行前向计算后,直接对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算以得到反向计算的结果。
149.每个加速器1502还用于根据反向计算的结果对神经网络的参数进行更新。其中,n≥2,m≥2,i=1,2,...,m。
150.在一种可能的实现方式中,反向计算的结果包括每个加速器1502对应的梯度累加值,每个加速器1502对应的梯度累加值为每个加速器1502对m个微批量数据分别进行反向计算后,所得到的m个梯度的和。
151.在一种可能的实现方式中,每个加速器1502还用于根据n个加速器1502对应的梯度累加值进行求平均计算,得到目标梯度累加值。每个加速器1502还用于根据目标梯度累加值对神经网络的参数进行更新。
152.在一种可能的实现方式中,处理器1501还用于根据目标存储容量阈值和训练数据的大小确定微批量数据的大小,其中,若n个加速器1502相同,则目标存储容量阈值为n个加速器1502中任意一个加速器1502的存储容量阈值,若n个加速器1502中存在至少p个加速器1502不同,则目标存储容量阈值为至少p个加速器1502的存储容量阈值中的最小值,n≥p≥2。处理器1501还用于根据微批量数据的大小,将训练数据分成n
×
m个微批量数据。
153.在一种可能的实现方式中,每个微批量数据所对应的存储占用量小于或等于目标存储容量阈值,每个微批量数据的大小小于或等于训练数据的大小。
154.在一种可能的实现方式中,每个微批量数据所对应的集群线性度最大。
155.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为非整数,则m为将比值向上取整后的值。
156.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为整数,则m为比值。
157.需要说明的是,上述装置中处理器/加速器之间的信息交互、执行过程等内容,由于与本技术中图6所示的方法实施例基于同一构思,其带来的技术效果与该方法实施例相同,具体内容可参见该方法实施例中的叙述,此处不再赘述。
158.图16为本技术实施例提供的神经网络的训练装置的另一结构示意图。请参阅图16,该训练装置包括处理器1601和n个加速器1602。其中,每个加速器1602加载神经网络的部分层,n个加速器1602共同加载神经网络,n个加速器1602以流水线并行的方式对神经网络进行训练。
159.n个加速器1602中的第1个加速器1602用于获取m个微批量数据,m个微批量数据组成训练数据。
160.n个加速器1602用于在共同完成对第i个微批量数据的前向计算后,直接对第i个微批量数据的前向计算结果进行反向计算,直至完成对m个微批量数据的反向计算以得到反向计算的结果。
161.n个加速器1602还用于根据反向计算的结果对神经网络的参数进行更新。其中,n≥2,m≥2,i=1,2,...,m。
162.在一种可能的实现方式中,反向计算的结果包括每个加速器1602对应的梯度累加值,每个加速器1602对应的梯度累加值为每个加速器1602对m个微批量数据分别进行反向计算后,所得到的m个梯度的和。
163.在一种可能的实现方式中,每个加速器1602用于根据其对应的梯度累加值,对其加载的神经网络的部分层的参数进行更新。
164.在一种可能的实现方式中,处理器1601用于获取训练数据。处理器1601还用于根据每个加速器1602的存储容量阈值和训练数据的大小确定微批量数据的大小。处理器1601还用于根据微批量数据的大小,将训练数据分成m个微批量数据。
165.在一种可能的实现方式中,每个加速器1602的存储占用量峰值小于或等于该加速器1602的存储容量阈值,每个加速器1602的存储占用量峰值为在该加速器1602对第1个微批量数据进行反向计算之前,已被该加速器1602完成前向计算的若干个微批量数据所对应的存储占用量,每个微批量数据的大小小于或等于训练数据的大小。
166.在一种可能的实现方式中,每个微批量数据所对应的集群线性度最大。
167.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为非整数,则m为将比值向上取整后的值。
168.在一种可能的实现方式中,若训练数据的大小与微批量数据的大小之间的比值为整数,则m为比值。
169.需要说明的是,上述装置中处理器/加速器之间的信息交互、执行过程等内容,由于与本技术中图10所示的方法实施例基于同一构思,其带来的技术效果与该方法实施例相同,具体内容可参见该方法实施例中的叙述,此处不再赘述。
170.图17为本技术实施例提供的神经网络的训练装置的又一结构示意图。请参阅图17,该训练装置包括:一个或一个以上中央处理器1701,存储器1702,输入输出接口1703,有线或无线网络接口1704,电源1705。
171.存储器1702可以是短暂存储或持久存储。更进一步地,中央处理器1701可以配置为与存储器1702通信,在训练装置上执行存储器1702中的一系列指令操作。
172.本实施例中,中央处理器1701可以执行前述图6或图10所示实施例中训练装置所执行的操作,具体此处不再赘述。
173.本实施例中,中央处理器1701中的具体功能模块划分可以与前述图15或图16中所
描述的处理器和加速器等单元的功能模块划分方式类似,此处不再赘述。
174.本技术实施例还提供了一种计算机可读存储介质,包括指令,当该指令在计算机上运行时,使得计算机执行前述图6或图10所示实施例中的训练方法。
175.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
176.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
177.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
178.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
179.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1