神经网络模型的训练方法、装置、系统及存储介质制造方法及图纸

技术编号:36101942 阅读:13 留言:0更新日期:2022-12-28 14:01
本申请实施例公开了一种神经网络模型的训练方法、装置及存储介质,属于AI技术领域。在本申请实施例中,当多个训练节点上的当前模型分段不平衡时,训练节点可以根据模型分段更新信息对自身上部署的待更新的模型分段进行调整,以使得各个训练节点上的模型分段能够更优。在调整模型分段之后,根据调整后的模型分段来确定层间数据的存储管理策略。由于训练节点的内存负载主要取决于其上所部属的模型分段以及模型分段的层间数据的存储管理,因此,本申请实施例通过调整模型分段并对调整后的模型分段的层间数据的存储管理策略进行设置,可以使得各个训练节点上的内存负载更平衡,从而提升该分布式训练系统的吞吐量。而提升该分布式训练系统的吞吐量。而提升该分布式训练系统的吞吐量。

【技术实现步骤摘要】
神经网络模型的训练方法、装置、系统及存储介质


[0001]本申请实施例涉及人工智能(artificial intelligence,AI)
,特别涉及一种神经网络模型的训练方法、装置、系统及存储介质。

技术介绍

[0002]随着AI技术的发展,神经网络模型的结构越来越复杂,在这种情况下,通过单台设备对神经网络模型进行训练时,可能会由于设备的图像处理单元(graphics processing unit,GPU)性能有限而导致无法完成训练。基于此,当前可以采用分布式训练系统对神经网络模型进行训练。
[0003]分布式训练系统通常包括多个训练节点,每个训练节点可以用于对神经网络模型中的一个或多个模型分段进行训练。以分布式训练系统包括4个训练节点,每个训练节点用于训练一个模型分段为例,这样,在前向传播的过程中,第一个训练节点通过第一个模型分段对输入的数据批进行处理,存储该第一个模型分段得到的该数据批的层间数据以供后续反向传播时使用,与此同时,输出第一个模型分段得到的该数据批的层间数据至第二个训练节点。第二个训练节点将第一个模型分段的层间数据作为第二个模型分段的输入数据,通过第二个模型分段对该层间数据进行处理,得到第二个模型分段对应的该数据批的层间数据,存储第二个模型分段对应的该数据批的层间据以供后续反向传播时使用,并将其输出至第三个训练节点,以此类推。最后一个训练节点在通过最后一个模型分段对自身的上一个训练节点输出的层间数据进行处理,输出最终的前向传播数据,将该最终的前向传播数据与数据批的标签进行对比,并使用损失函数计算损失,进而根据损失开始从第四个训练节点到第一个训练节点进行反向传播。在反向传播的过程中,当某个训练节点完成了针对该数据批的反向传播,则可以将自身存储的在前向传播中存储的该数据批的层间数据删除。
[0004]然而,当前为了提高训练节点中的GPU资源的利用率,可以同时通过多个数据批对神经网络模型的各个模型分段进行训练。也即,第一个训练节点上的第一个模型分段在完成对一个数据批的处理之后,无需等待针对该数据批的反向传播完成,即可以对下一个数据批进行处理。这样,各个训练节点上针对不同数据批的前向传播和反向传播的进度不一样,其中,越靠前的模型分段所在的训练节点,GPU的内存中存储的层间数据越多,这样,将导致各个训练节点的内存负载不平衡。尤其是靠前的模型分段所在的训练节点,GPU的内存中存储的数据量可能会很快达到内存的上限值,无法再继续输入新的数据批进行训练,从而使得该分布式训练系统的吞吐量受限。

技术实现思路

[0005]本申请实施例提供了一种神经网络模型的训练方法、装置及存储介质,能够使得分布式训练系统中各个训练节点中的GPU的内存负载更平衡。所述技术方案如下:
[0006]第一方面,提供了一种神经网络模型的训练方法,应用于第一训练节点,所述第一
训练节点为分布式训练系统中的多个训练节点中的一个训练节点,所述多个训练节点中的每个训练节点上部署有神经网络模型的一个或多个模型分段,所述方法包括:获取模型分段更新信息,所述模型分段更新信息是在所述多个训练节点上的当前模型分段不平衡的情况下确定的用于重新对所述神经网络模型进行分段的信息;如果根据所述模型分段更新信息确定第一模型分段为待更新的模型分段,则根据所述模型分段更新信息对所述第一模型分段进行调整,所述第一模型分段为所述第一训练节点上的当前模型分段;确定调整后的第一模型分段内的各个层的层间数据的存储管理策略;根据所述调整后的第一模型分段和确定的各个层的层间数据的存储管理策略进行训练。
[0007]在本申请实施例中,当多个训练节点上的当前模型分段不平衡时,训练节点可以根据模型分段更新信息对自身上部署的待更新的模型分段进行调整,以使得各个训练节点上的模型分段能够更优。在调整模型分段之后,根据调整后的模型分段来确定层间数据的存储管理策略。由于训练节点的内存负载主要取决于其上所部属的模型分段以及模型分段的层间数据的存储管理,因此,本申请实施例通过调整模型分段并对调整后的模型分段的层间数据的存储管理策略进行设置,可以使得各个训练节点上的内存负载更平衡,从而提升该分布式训练系统的吞吐量。
[0008]可选地,当所述第一训练节点为所述神经网络模型的最后一个模型分段所在的训练节点时,在获取模型分段更新信息之前,第一训练节点获取所述神经网络模型的各个当前模型分段的分段执行时间;如果任意两个当前模型分段的分段执行时间的差值大于时间差阈值,则确定所述多个训练节点上的当前模型分段不平衡。
[0009]也即,当第一训练节点为多个训练节点中的最后一个训练节点时,可以由第一训练节点根据当前的各个模型分段的分段执行时间来确定多个训练节点上的当前模型分段是否平衡。其中,分段执行时间是指执行一个模型分段所需的时长。
[0010]可选地,当第一训练节点为多个训练节点中的最后一个训练节点时,所述获取模型分段更新信息的实现过程为:根据所述神经网络模型中多个层的执行顺序,将所述神经网络模型中的多个层划分为多个簇,所述多个簇中的每个簇包括簇起始层、簇中间层和簇终止层,所述簇起始层的输出数据为多个簇中间层的输入数据,所述簇终止层的输入数据为多个簇中间层的输出数据;根据预设的模型分段数量,对划分得到的多个簇进行划分,得到多个更新模型分段,其中,每个更新模型分段包括一个或多个簇;根据所述多个更新模型分段,生成模型分段更新信息。
[0011]在本申请实施例中,当第一训练节点为最后一个训练节点时,第一训练节点在确定多个训练节点上的当前模型分段不平衡时,可以对神经网络模型进行重新划分,以使得模型分段更优。
[0012]可选地,如果第一训练节点不为多个训练节点中的最后一个训练节点,则可以接收最后一个训练节点下发的模型分段更新信息。
[0013]可选地,所述模型分段更新信息用于指示每个训练节点上的更新模型分段,在获取模型分段更新信息之后,如果所述第一训练节点上的当前模型分段与所述模型分段更新信息所指示的所述第一训练节点上的更新模型分段不一致,则根据所述模型分段更新信息,从所述第一训练节点上的各个当前模型分段中确定待更新的模型分段。
[0014]也即,第一训练节点可以根据模型分段更新信息来判断自身当前部署的模型分段
是否需要更新,如果需要更新,则可以根据该模型分段更新信息确定出待更新的模型分段。
[0015]可选地,所述根据所述模型分段更新信息对所述第一模型分段进行调整的实现过程包括:如果根据所述模型分段更新信息确定所述第一模型分段中存在待迁移层,则向目标训练节点发送迁移准备通知,以使所述目标训练节点根据所述迁移准备通知生成所述待迁移层的初始化层,所述目标训练节点是指所述待迁移层所要迁移至的训练节点;在接收到所述目标训练节点的准备完成通知,且当前正在进行的前向传播完成后,将所述待迁移层对应的多个数据批的层间数据中的指定数据批的层间数据发送至所述目标训练节点,并在当前正在进行的反向传播完成后,将所述待迁移层的更新参数发送至所述目标训练节本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种神经网络模型的训练方法,其特征在于,应用于第一训练节点,所述第一训练节点为分布式训练系统中的多个训练节点中的一个训练节点,所述多个训练节点中的每个训练节点上部署有神经网络模型的一个或多个模型分段,所述方法包括:获取模型分段更新信息,所述模型分段更新信息是在所述多个训练节点上的当前模型分段不平衡的情况下确定的用于重新对所述神经网络模型进行分段的信息;如果根据所述模型分段更新信息确定第一模型分段为待更新的模型分段,则根据所述模型分段更新信息对所述第一模型分段进行调整,所述第一模型分段为所述第一训练节点上的当前模型分段;确定调整后的第一模型分段内的各个层的层间数据的存储管理策略;根据所述调整后的第一模型分段和确定的各个层的层间数据的存储管理策略进行训练。2.根据权利要求1所述的方法,其特征在于,当所述第一训练节点为所述神经网络模型的最后一个模型分段所在的训练节点时,所述获取模型分段更新信息之前,还包括:获取所述神经网络模型的各个当前模型分段的分段执行时间;如果任意两个当前模型分段的分段执行时间的差值大于时间差阈值,则确定所述多个训练节点上的当前模型分段不平衡。3.根据权利要求2所述的方法,其特征在于,所述获取模型分段更新信息,包括:根据所述神经网络模型中多个层的执行顺序,将所述神经网络模型中的多个层划分为多个簇,所述多个簇中的每个簇包括簇起始层、簇中间层和簇终止层,所述簇起始层的输出数据为多个簇中间层的输入数据,所述簇终止层的输入数据为多个簇中间层的输出数据;根据预设的模型分段数量,对划分得到的多个簇进行划分,得到多个更新模型分段,其中,每个更新模型分段包括一个或多个簇;根据所述多个更新模型分段,生成模型分段更新信息。4.根据权利要求1

3任一所述的方法,其特征在于,所述模型分段更新信息用于指示每个训练节点上的更新模型分段,所述获取模型分段更新信息之后,还包括:如果所述第一训练节点上的当前模型分段与所述模型分段更新信息所指示的所述第一训练节点上的更新模型分段不一致,则根据所述模型分段更新信息,从所述第一训练节点上的各个当前模型分段中确定待更新的模型分段。5.根据权利要求1或4所述的方法,其特征在于,所述根据所述模型分段更新信息对所述第一模型分段进行调整,包括:如果根据所述模型分段更新信息确定所述第一模型分段中存在待迁移层,则向目标训练节点发送迁移准备通知,以使所述目标训练节点根据所述迁移准备通知生成所述待迁移层的初始化层,所述目标训练节点是指所述待迁移层所要迁移至的训练节点;在接收到所述目标训练节点的准备完成通知,且当前正在进行的前向传播完成后,将所述待迁移层对应的多个数据批的层间数据中的指定数据批的层间数据发送至所述目标训练节点,并在当前正在进行的反向传播完成后,将所述待迁移层的更新参数发送至所述目标训练节点,所述指定数据批是指所述目标训练节点中还未完成反向传播的数据批;删除所述待迁移层。6.根据权利要求1

5任一所述的方法,其特征在于,所述存储管理策略包括交换策略和
重算策略,所述交换策略是指在前向传播时将产生的层间数据暂存至中央处理单元CPU的内存中以供反向传播时读取,所述重算策略是指不对层间数据进行存储,在反向传播时重新计算层间数据,所述确定调整后的第一模型分段内的各个层的层间数据的存储管理策略,包括:根据调整后的第一模型分段判断是否对所述第一训练节点进行存储优化;如果确定对所述第一训练节点进行存储优化,则根据调整后的第一模型分段内的各个层的交换开销和重算开销,对调整后的第一模型分段内的多个层的层间数据的存储管理策略进行重置,所述交换开销是指采用所述交换策略对相应层的层间数据进行管理时所对应的时间开销,所述重算开销是指采用所述重算策略对相应层的层间数据进行管理时所对应的时间开销。7.根据权利要求6所述的方法,其特征在于,所述根据调整后的第一模型分段判断是否对所述第一训练节点进行存储优化,包括:如果调整后的第一模型分段所需的运行内存大小不小于第一图形处理单元GPU的内存的上限值,则确定对所述第一训练节点进行存储优化,所述第一GPU是指运行调整后的第一模型分段的GPU。8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:如果调整后的第一模型分段所需的运行内存大小小于所述第一GPU的内存的上限值,且调整后的第一模型分段的多个层中存在层间数据的存储管理策略为所述重算策略的层,则确定对所述第一训练节点进行存储优化,所述第一GPU是指运行调整后的第一模型分段的GPU。9.根据权利要求6

8任一所述的方法,其特征在于,所述根据调整后的第一模型分段内的各个层的交换开销和重算开销,对调整后的第一模型分段内的多个层的层间数据的存储管理策略进行重置,包括:按照调整后的第一模型分段内的各个层的交换开销和重算开销之间的开销比值从大到小的顺序,对调整后的第一模型分段内的各个层进行排序;将排序后的多个层中的第一个待重置层的层间数据的存储管理策略重置为所述交换策略;如果已重置为所述交换策略的层的交换开销总和小于时长阈值,则将排序后的多个层中下一个待重置层的层间数据的存储管理策略重置为所述交换策略,直至已重置为所述交换策略的层的交换开销总和不小于所述时长阈值为止,判断调整后的第一模型分段所需的运行内存大小是否小于第一GPU的内存的上限值;如果调整后的第一模型分段所需的运行内存大小不小于所述第一GPU的内存的上限值,则将排序后的多个层中下一个待重置层的层间数据的存储管理策略重置为所述重算策略,直至调整后的第一模型分段所需的运行内存大小小于所述第一GPU的内存的上限值为止。10....

【专利技术属性】
技术研发人员:赵世雄李凡鑫崔鹤鸣王森王鹏张弓
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1