神经网络模型的分布式训练方法、装置及电子设备与流程

文档序号:20756863发布日期:2020-05-15 17:29阅读:210来源:国知局
神经网络模型的分布式训练方法、装置及电子设备与流程

本发明涉及深度学习技术领域,尤其是涉及一种神经网络模型的分布式训练方法、装置及电子设备。



背景技术:

随着深度学习技术的发展,深度学习广泛应用于计算机视觉,语音识别,自动驾驶等领域,这些应用产生越来越多的训练数据,更大的训练数据集大大增加了神经网络模型的训练时间。为了尽可能地缩短神经网络模型的训练时间,大多数研究人员提出了分布式同步stochasticgradientdescent(sgd)训练方法对神经网络模型进行分布式训练,即在神经网络模型训练过程中同时使用多个gpu大批量处理训练样本,分布式训练方式为加速训练过程的收敛提供了一个潜在的解决方案。然而,基于分布式同步sgd训练方法也带来了一个严重的问题:在训练过程中,batchsize(即单次迭代处理的训练样本数量)越大,神经网络模型的精度丢失越严重。因此,目前对于神经网络模型的大批量分布式训练方式,还存在由于batchsize过大导致训练后的神经网络模型精度丢失较多的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种神经网络模型的分布式训练方法、装置及电子设备,能够在缩短神经网络模型的训练时间的同时,使训练后的神经网络模型的精度丢失较少。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种神经网络模型的分布式训练方法,所述方法由分布式计算系统执行,所述分布式计算系统包括多个gpu,所述方法包括:从所述分布式计算系统确定出第一数量的gpu作为第一目标gpu;基于训练样本集,通过所述第一目标gpu对初始神经网络模型进行迭代训练,直至达到预设的第一迭代次数,得到中间神经网络模型;从所述分布式计算系统确定出第二数量的gpu作为第二目标gpu;通过所述第二目标gpu对所述中间神经网络模型进行迭代训练,直至达到预设的第二迭代次数,得到最终神经网络模型;其中,所述第二数量大于所述第一数量,和/或,所述第二目标gpu单次迭代处理的训练样本数量大于所述第一目标gpu单次迭代处理的训练样本数量。

进一步,本发明实施例提供了第一方面的第一种可能的实施方式,其中,基于训练样本集,通过所述第一目标gpu对所述初始神经网络模型进行迭代训练,直至达到预设的第一迭代次数的步骤,包括:在对所述初始神经网络模型进行迭代训练时,采用所述第一目标gpu对所述训练样本集进行数据并行处理,在预设迭代次数内将所述初始神经网络模型的初始学习率调整至预设的最大学习率;其中所述预设迭代次数小于所述第一迭代次数;继续对所述初始神经网络模型进行迭代训练,并使所述初始神经网络模型在迭代训练中保持所述预设的最大学习率不变,直至达到预设的第一迭代次数。

进一步,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述通过所述第二目标gpu对所述中间神经网络模型进行迭代训练,直至达到预设的第二迭代次数的步骤,包括:根据预设的等效衰减学习率算法确定所述中间神经网络模型的第一学习率;采用第二目标gpu对所述训练样本集进行数据并行处理,并使所述中间神经网络模型基于所述中间神经网络模型的第一学习率和预设的学习率衰减算法进行迭代训练,直至达到预设的第二迭代次数。

进一步,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述第二目标gpu单次迭代处理的训练样本数量大于所述第一目标gpu单次迭代处理的训练样本数量;

所述根据预设的等效衰减学习率算法确定所述中间神经网络模型的第一学习率的步骤,包括:

根据预设有效学习率计算算式及所述第二目标gpu单次迭代处理的训练样本数量与所述第一目标gpu单次迭代处理的训练样本数量之间的数量关系,确定所述中间神经网络模型的中间学习率;利用所述预设的学习率衰减算法对所述中间学习率进行衰减,得到第一衰减学习率;判断所述第一衰减学习率是否大于所述中间神经网络模型预设的最大学习率;如果否,将所述第一衰减学习率作为所述中间神经网络模型的第一学习率。

进一步,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述中间神经网络模型包括带有bn层的卷积层;所述中间神经网络模型的中间学习率包括所述中间神经网络模型各网络层的中间学习率;所述预设有效学习率计算算式为:

其中,为所述带有bn层的卷积层的有效学习率,η为学习率,α1和α2为人为设定的缩放因子,bt为单次迭代处理的训练样本数量,为第l层网络层的权重的二范数,与所述中间神经网络模型的权重衰减系数成反比。

进一步,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述中间神经网络模型包括不带有bn层的全连接层;所述中间神经网络模型的中间学习率包括所述中间神经网络模型各网络层的中间学习率;所述预设有效学习率计算算式为:

其中,为所述不带有bn层的全连接层的有效学习率,η为学习率,α1和α2为人为设定的缩放因子,bt为单次迭代处理的训练样本数量。

进一步,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述根据预设有效学习率计算算式及所述第二目标gpu单次迭代处理的训练样本数量与所述第一目标gpu单次迭代处理的训练样本数量之间的数量关系,确定所述中间神经网络模型的中间学习率的步骤,包括:

将所述第二目标gpu单次迭代处理的训练样本数量输入所述预设有效学习率计算算式;

使所述预设有效学习率计算算式中的有效学习率在迭代训练中保持不变,得到所述中间神经网络模型的中间学习率。

进一步,本发明实施例提供了第一方面的第七种可能的实施方式,其中,所述方法还包括:当所述第一衰减学习率大于所述中间神经网络模型预设的最大学习率时,将所述中间神经网络模型预设的最大学习率作为所述中间神经网络模型的第一学习率,并将所述中间神经网络模型的权重衰减系数增大至预设值,以增大所述有效学习率。

进一步,本发明实施例提供了第一方面的第八种可能的实施方式,其中,所述使所述中间神经网络模型基于所述中间神经网络模型的第一学习率和预设的学习率衰减算法进行迭代训练,直至达到预设的第二迭代次数的步骤,包括:基于所述第一学习率对所述中间神经网络模型进行迭代训练,在该迭代训练达到预设时间或预设迭代次数时,利用所述预设的学习率衰减算法对所述第一学习率进行衰减,直至达到预设的第二迭代次数;其中,所述预设时间或预设迭代次数包括一个或多个;或者,基于所述第一学习率对所述中间神经网络模型进行迭代训练,并在迭代训练中利用所述预设的学习率衰减算法对所述第一学习率进行预设次数的衰减,直至达到所述预设的第二迭代次数。

第二方面,本发明实施例还提供了一种神经网络模型的分布式训练装置,所述装置设置于分布式计算系统,所述分布式计算系统包括多个gpu,所述装置包括:第一gpu选取模块,用于从所述分布式计算系统确定出第一数量的gpu作为第一目标gpu;第一训练模块,用于基于训练样本集,通过所述第一目标gpu对所述初始神经网络模型进行迭代训练,直至达到预设的第一迭代次数,得到中间神经网络模型;第二gpu选取模块,用于从所述分布式计算系统确定出第二数量的gpu作为第二目标gpu;第二训练模块,用于通过所述第二目标gpu对所述中间神经网络模型进行迭代训练,直至达到预设的第二迭代次数,得到最终神经网络模型;其中,所述第二数量大于所述第一数量,和/或,所述第二目标gpu单次迭代处理的训练样本数量大于所述第一目标gpu单次迭代处理的训练样本数量。

第三方面,本发明实施例提供了一种电子设备,包括:处理器和存储装置;所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行上述第一方面任一项所述的方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面任一项所述的方法的步骤。

本发明实施例提供了一种神经网络模型的分布式训练方法、装置及电子设备,该方法由分布式计算系统执行,该分布式计算系统包括多个gpu,该方法包括:首先从分布式计算系统确定出第一数量的gpu作为第一目标gpu;然后基于训练样本集,通过第一目标gpu对所述初始神经网络模型进行迭代训练,直至达到预设的第一迭代次数,得到中间神经网络模型;再从分布式计算系统确定出第二数量的gpu作为第二目标gpu;最后通过第二目标gpu对中间神经网络模型进行迭代训练,直至达到预设的第二迭代次数,得到最终神经网络模型;其中,上述第二数量大于第一数量,和/或,上述第二目标gpu单次迭代处理的训练样本数量大于第一目标gpu单次迭代处理的训练样本数量。通过在神经网络模型的迭代训练中改变单次迭代处理的训练样本数量(batchsize),将单次迭代处理的训练样本数量由少增多,能够把总体batchsize提高到一个比较大的量级,在缩短神经网络模型的训练时间的同时,使训练后的神经网络模型的精度丢失较少。

本发明实施例的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明实施例的上述技术即可得知。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例所提供的一种电子设备结构示意图;

图2示出了本发明实施例所提供的一种神经网络模型的分布式训练方法的流程图;

图3示出了本发明实施例所提供的一种神经网络迭代训练中的学习率变化折线图;

图4示出了本发明实施例所提供的一种神经网络迭代训练中的batchsize变化折线图;

图5示出了本发明实施例所提供的一种神经网络迭代训练中的学习率变化折线图;

图6示出了本发明实施例所提供的一种神经网络迭代训练中的batchsize变化折线图;

图7示出了本发明实施例所提供的一种神经网络迭代训练中的权重衰减系数变化折线图;

图8示出了本发明实施例所提供的一种神经网络模型的分布式训练装置的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

考虑到现有技术中对于神经网络模型的大批量分布式训练方式,还存在由于batchsize过大导致训练后的神经网络模型精度丢失较多的问题,为改善此问题,本发明实施例提供的一种神经网络模型的分布式训练方法、装置及电子设备,该技术可应用于减少训练后的神经网络模型的精度丢失,以下对本发明实施例进行详细介绍。

实施例一:

首先,参照图1来描述用于实现本发明实施例的一种神经网络模型的分布式训练方法、装置及电子设备的示例电子设备100。

如图1所示的一种电子设备的结构示意图,电子设备100包括一个或多个处理器102、一个或多个存储装置104、输入装置106、输出装置108以及图像采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。

所述处理器102可以采用数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑阵列(pla)中的至少一种硬件形式来实现,所述处理器102可以是中央处理单元(cpu)、图形处理单元(gpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元中的一种或几种的组合,并且可以控制所述电子设备100中的其它组件以执行期望的功能。

所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。

所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。

所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。

所述图像采集装置110可以拍摄用户期望的图像(例如照片、视频等),并且将所拍摄的图像存储在所述存储装置104中以供其它组件使用。

示例性地,用于实现根据本发明实施例的神经网络模型的分布式训练方法、装置及电子设备的示例电子设备可以被实现为诸如分布式计算系统等智能终端。

实施例二:

本实施例提供了一种神经网络模型的分布式训练方法,该方法可以由分布式计算系统执行,分布式计算系统包括多个节点,每个节点包括预设个数的gpu,参见图2所示的神经网络模型的分布式训练方法流程图,该方法主要包括以下步骤s202~步骤s208:

步骤s202,从分布式计算系统确定出第一数量的gpu作为第一目标gpu。

上述选取的第一目标gpu的数量为第一数量,该第一数量的大小与神经网络模型训练过程中采用的batchsize(单次迭代处理的训练样本数量,也可以称为分布式训练中一次迭代计算总的样本数)的大小相关,第一数量的值越大,该神经网络模型的batchsize越大。诸如当batchsize的大小为8k(即样本图片的数量为8*1024张)时,若每个gpu单次迭代计算时只能处理32张图片,则上述第一数量为8*1024/32=256个。

步骤s204,基于训练样本集,通过第一目标gpu对初始神经网络模型进行迭代训练,直至达到预设的第一迭代次数,得到中间神经网络模型。

上述分布式计算系统用于采用数据并行化的方式实现对神经网络模型的分布式训练,数据并行化的目标是将训练样本集均等地分配到分布式计算系统的各个节点中的gpu,其中每个节点都有该神经网络模型的一个副本及其本地的权重。每个节点都会处理该训练样本集的一个不同子集并更新其本地权重集,改本地权重集也会在整个分布式计算系统集群中共享,从而通过一个累积算法计算出一个新的全局权重集。这些全局权重又会被分配至所有节点中的gpu,然后节点会在此基础上进行迭代训练。

将上述初始神经网络模型经过第一迭代次数的迭代训练后得到的神经网络模型作为中间神经网络模型,其中,上述初始神经网络模型的batchsize可以基于上述第一数量计算得到。

步骤s206,从分布式计算系统确定出第二数量的gpu作为第二目标gpu。

为了增大该神经网络模型训练的总的batchsize,本实施例采用分阶段使用不同batchsize的训练方式,在上述第一数量的基础上,增加神经网络模型训练中使用的gpu的数量,使上述第二数量大于第一数量。

步骤s208,通过第二目标gpu对中间神经网络模型进行迭代训练,直至达到预设的第二迭代次数,得到最终神经网络模型;其中,第二数量大于第一数量,和/或,第二目标gpu单次迭代处理的训练样本数量大于第一目标gpu单次迭代处理的训练样本数量。

对上述初始神经网络训练得到的中间神经网络模型继续进行迭代训练,直至达到预设的第二迭代次数。在上述继续迭代训练时,首先改变处理样本集的gpu的数量,当每个gpu单次迭代计算处理的图片数量为固定数值时,通过增加gpu的数量可以增大batchsize,从而增大一次迭代时的样本集处理量,进而缩短训练时间,其中,上述中间神经网络模型的batchsize可以基于上述第二数量计算得到。

在一种实施方式中,可以将上述步骤s202~步骤s204中通过第一目标gpu对初始神经网络模型进行迭代训练的过程作为神经网络模型训练的第一阶段,将上述步骤s206~步骤s208中通过第一目标gpu对初始神经网络模型进行迭代训练的过程作为神经网络模型训练的第二阶段。由于上述第二阶段时单次迭代处理的训练样本数量(即每次迭代训练时从上述训练样本集中所获取的样本集数量)大于第一阶段时单次迭代处理的训练样本数量,单次迭代处理或计算训练样本数量增大,可以缩短神经网络模型完成该轮的训练时间,进而缩短神经网络模型总的训练时间。诸如,训练样本集包括100张图片,假设每个gpu单词迭代处理的样本数量为10张,若通过1个gpu对神经网络模型进行训练,则需要获取10次训练样本才能完成该轮训练,即完成对所有训练样本的前向传播和反向传播过程,若通过2个gpu对神经网络模型对进行训练,只需获取5次训练样本就可以完成该轮训练。进一步的,通过提升第二阶段的batchsize,能够把总体batchsize提高到一个比较大的量级,保证测试集的准确率不丢失或者轻微的丢失。

本实施例提供的上述神经网络模型的分布式训练方法,通过在神经网络模型的迭代训练中改变单次迭代处理的训练样本数量(batchsize),将单次迭代处理的训练样本数量由少增多,能够把总体batchsize提高到一个比较大的量级,在缩短神经网络模型的训练时间的同时,使训练后的神经网络模型的精度丢失较少。

为了提升神经网络模型在训练中的学习率,本实施例提供了基于训练样本集,通过第一目标gpu对初始神经网络模型进行迭代训练,直至达到预设的第一迭代次数的具体实施方式:在对初始神经网络模型进行迭代训练时,采用第一目标gpu对训练样本集进行数据并行处理,并利用warmup策略,在预设迭代次数内将初始神经网络模型的初始学习率调整至预设的最大学习率;其中预设迭代次数小于第一迭代次数。上述第一目标gpu中的每个gpu在一次迭代训练中都从上述训练样本集中分别获取预设数量的样本,以使多个gpu同时对上述预设数量的样本进行迭代训练。上述预设迭代次数可以是指预设的epoch次数,即对训练样本集中的所有样本均完成前向传播和反向传播的次数,该预设迭代次数可以是根据神经网络模型训练实验的经验人为设定的数值。上述warmup策略可以是将初始神经网络模型的学习率线性增加的函数,增加幅度可以人为设定。由于神经网络模型的各个网络层均有学习率,为了便于说明,以下均以该神经网络模型中任意一层网络层的学习率为例,除非特别说明外,该神经网络模型的各个网络层的学习率及等效学习率的计算方式均相同。诸如,在对初始神经网络模型进行迭代训练时,可以将预设迭代次数设置为5,即在0~5epoch内,将上述初始神经网络模型由初始学习率0.1线性增加至预设的最大学习率3.2。

继续对初始神经网络模型进行迭代训练,并使初始神经网络模型在迭代训练中保持预设的最大学习率不变,直至达到预设的第一迭代次数。上述初始神经网络模型在预设迭代次数至预设的第一迭代次数的迭代训练中采用预设的最大学习率。诸如,上述预设的第一迭代次数为30,上述预设迭代次数为5,即在5~30epoch时,上述初始神经网络模型采用3.2的学习率,其他参数固定不变。

为了提升训练后的神经网络模型的精度,本实施例提供了通过第二目标gpu对中间神经网络模型进行迭代训练,直至达到预设的第二迭代次数的实时方式,具体可参照如下步骤(1)~步骤(2)执行:

步骤(1):根据预设的等效衰减学习率算法确定中间神经网络模型的第一学习率。

由于通过第二目标gpu对中间神经网络模型进行迭代训练时,增大了单次迭代处理的训练样本数量(batchsize),为了在增大batchsize后不丢失神经网络模型的精度,相应的,利用预设的等效衰减学习率算法使神经网络模型的学习率也产生对应的变化。因此,本实施例提供了计算上述第一学习率的实施方式,具体可参照如下步骤1)~步骤5)执行:

步骤1):根据预设有效学习率计算算式及第二目标gpu单次迭代处理的训练样本数量与第一目标gpu单次迭代处理的训练样本数量之间的数量关系,确定中间神经网络模型的中间学习率。

在一种具体的实施方式中,上述中间神经网络模型包括带有bn层的卷积层;中间神经网络模型的中间学习率包括中间神经网络模型各网络层的中间学习率。上述预设有效学习率计算算式为:

其中,为带有bn层的卷积层的有效学习率,η为学习率,α1和α2为人为设定的缩放因子,bt为单次迭代处理的训练样本数量,为第l层网络层的权重的二范数,与中间神经网络模型的权重衰减系数成反比。

在另一种具体的实施方式中,上述中间神经网络模型包括不带有bn层的全连接层;中间神经网络模型的中间学习率包括中间神经网络模型各网络层的中间学习率。上述预设有效学习率计算算式为:

其中,为不带有bn层的全连接层的有效学习率,η为学习率,α1和α2为人为设定的缩放因子,bt为单次迭代处理的训练样本数量。

在计算上述中间神经网络模型的中间学习率时,可以将第二目标gpu单次迭代处理的训练样本数量输入预设有效学习率计算算式。使预设有效学习率计算算式中的有效学习率在所有的迭代训练中保持不变,得到中间神经网络模型的中间学习率。在神经网络的大批量训练过程中,为了保证神经网络的精度不丢失,本实施例引入了等效学习率计算方式,即通过计算神经网络模型各个网络层的有效学习率,并使神经网络模型各个网络层的有效学习率在第二阶段增加batchsize后的有效学习率与第一阶段的有效学习率相同,从而得到上述中间神经网络模型的中间学习率。由于上述分母上的bt为单次迭代处理的训练样本数量,即batchsize的大小,当bt增大时,为了使等式左边的有效学习率不变,需相应地增加分子上的学习率,分子上增加后的学习率即为中间神经网络模型的中间学习率。诸如,第一阶段中batchsize的大小为8k,第一阶段末尾神经网络模型的学习率为3.2,第二阶段中增加batchsize的大小至32k,为了使等式左边的有效学习率不变,分子上增加后的学习率为12.8,即中间神经网络模型的中间学习率为12.8。

步骤2):利用预设的学习率衰减算法对中间学习率进行衰减,得到第一衰减学习率。

上述预设的学习率衰减算法可以是对上述中间学习率进行预设倍数的衰减,该预设倍数可以是人为根据实际模型训练情况设定的。诸如,将上述中间学习率进行10倍的衰减,即将中间学习率由12.8衰减为1.28,得到的上述第一衰减学习率即为1.28。

步骤3):判断第一衰减学习率是否大于中间神经网络模型预设的最大学习率。

由于神经网络模型中各个网络层的学习率是有上界的,即预设的最大学习率,该预设的最大学习率是可以根据实际训练过程人为设定的。由于上述中间神经网络模型与上述初始神经网络模型为同一个神经网络模型的不同状态,因此,上述中间神经网络模型预设的最大学习率与上述初始神经网络模型预设的最大学习率为相同的值。

步骤4):如果否,将第一衰减学习率作为中间神经网络模型的第一学习率。

如果上述第一衰减学习率小于或等于中间神经网络模型预设的最大学习率,即增大batchsize后的等效学习率没有达到神经网络模型的学习率上界,将上述等效衰减(即首先经过预设有效学习率计算算式计算得到中间学习率,再利用预设的学习率衰减算法对中间学习率进行衰减)得到的第一衰减学习率作为中间神经网络模型的第一学习率。

步骤5):如果第一衰减学习率大于中间神经网络模型预设的最大学习率,将中间神经网络模型预设的最大学习率作为中间神经网络模型的第一学习率,并将中间神经网络模型的权重衰减系数增大至预设值,以增大有效学习率。

如果上述第一衰减学习率大于中间神经网络模型预设的最大学习率,即增大batchsize后的等效学习率超过了神经网络模型的学习率上界,由于上述神经网络训练的第一阶段末尾神经网络模型的学习率为预设的最大学习率,继续将中间神经网络模型预设的最大学习率作为中间神经网络模型的第一学习率。根据上述公式可知,从训练的第一阶段到第二阶段,当分母上的|t|(即相应的batchsize)过多增大时,为了保持有效学习率的值不变,学习率η需要增大相应的倍数再进行衰减,但是当衰减得到的第一学习率大于神经网络模型预设的最大学习率时,只能将第一学习率调整至预设的最大学习率,这样使得学习率η并没有增大与分母上的|t|相同的倍数,从而使有效学习率变小,为了保证有效学习率的值不会过小,根据上述公式的等效关系,将中间神经网络模型的权重衰减系数增大,由于权重衰减系数与上述公式中的权重的二范数成反比,当中间神经网络模型的权重衰减系数值增大至预设值(该预设值可以是根据神经网络模型的实际训练过程认为设定的)时,权重的二范数的值减小,从而可以保证有效学习率的值不会过小,进而使训练后的神经网络的精度不会丢失过大。

步骤(2):采用第二目标gpu对训练样本集进行数据并行处理,并使中间神经网络模型基于中间神经网络模型的第一学习率和预设的学习率衰减算法进行迭代训练,直至达到预设的第二迭代次数。

在一种实施方式中,基于第一学习率对中间神经网络模型进行迭代训练,在该迭代训练达到预设时间或预设迭代次数时,利用预设的学习率衰减算法对第一学习率进行衰减,直至达到预设的第二迭代次数;其中,预设时间或预设迭代次数包括一个或多个。采用第二目标gpu对训练样本集进行数据并行处理,在对上述中间神经网络的迭代训练中,使该中间神经网络模型采用上述第一学习率进行训练,当对上述中间神经网络的迭代训练达到预设时间或预设迭代次数(即达到预设的epoch)时,利用预设的学习率衰减算法对第一学习率进行衰减,在上述中间神经网络达到预设的第二迭代次数之前,可以进行多次的学习率衰减步骤,其中,上述中间神经网络衰减学习率的次数与上述预设时间或预设迭代次数相关。

在另一种实施方式中,基于第一学习率对中间神经网络模型进行迭代训练,并在迭代训练中利用预设的学习率衰减算法对第一学习率进行预设次数的衰减,直至达到预设的第二迭代次数。上述预设次数的衰减可以是根据神经网络模型的实际训练情况人为设定的数量,在达到预设的第二迭代次数之前,利用预设的学习率衰减算法对上述中间神经网络模型的学习率进行预设次数的衰减,衰减时间可以认为设定。诸如,上述预设次数为2次,预设的第二迭代次数为120,上述中间神经网络的第一学习率为1.28,继续采用第二目标gpu对训练样本集进行数据并行处理,在迭代训练时使上述中间神经网络采用1.28的学习率,在达到预设的第二迭代次数之前,利用预设的学习率衰减算法对上述中间神经网络模型的学习率进行2次衰减,在上述中间神经网络模型迭代训练至60epoch时,将第一学习率1.28衰减至0.128,继续迭代训练时使上述中间神经网络采用0.128的学习率,在上述中间神经网络模型迭代训练至90epoch时,将第一学习率0.128衰减至0.0128,继续迭代训练时使上述中间神经网络采用0.0128的学习率,直至达到120epoch时,得到训练后的神经网络模型。

本实施例提供的上述神经网络模型的分布式训练方法,通过使用分阶段的不同batchsize大小,在保证精度的同时减少了每轮训练中的计算迭代次数,并通过使用预设有效学习率计算算式和预设的学习率衰减算法,使神经网络模型在训练时,可以根据batchsize的增加自动调整学习率和权重衰减精度,以在缩短神经网络模型的训练时间的同时,减少神经网络模型精度的丢失。

实施例三:

在前述实施例的基础上,本实施例提供了一种应用前述神经网络模型的分布式训练方法的具体示例,以基于resnet-50训练imagenet-1k为例的分阶段使用不同batchsize的神经网络模型训练算法,在分布式计算系统的各个节点设置神经网络模型的副本。根据训练过程中batchsize的增大幅度不同,本实施例提供了两种实施方式,其中,在实施方式一中,等效衰减得到的神经网络模型的第一衰减学习率小于该神经网络模型预设的最大学习率;在实施方式二中,等效衰减得到的神经网络模型的第一衰减学习率大于该神经网络模型预设的最大学习率;具体可参照如下实施方式一和实施方式二执行:

实施方式一:在该实施方式中,在神经网络模型的训练过程中增大batchsize时,为了使神经网络模型的精度不丢失,在增大batchsize时保持有效学习率不变,本实施例提供的方法通过等效衰减学习率的方式,保证有效学习率不变,具体可参照如下步骤1-1~步骤1-4执行:

步骤1-1:在0~30epoch,采用大小为8k的batchsize进行迭代训练(即分布式计算系统一次迭代计算处理的样本数量为8*1024=8192张样本图片),其中,在0~5epoch,采用linearscaling和warmup策略将上述初始神经网络模型由初始学习率0.1线性增加至预设的最大学习率3.2。在5~30epoch,上述神经网络模型采用3.2的学习率进行迭代训练,其他参数固定不变。其中,该学习率的计算过程是以该神经网络模型的任意一层网络层为例,各个网络层的学习率大小不同,但各个网络层的学习率的计算方法相同,为了便于理解,以下对于学习率的计算均以神经网络模型的任意一层网络层为例进行说明。

步骤1-2:在30~60epoch,增大batchsize,采用大小为32k的batchsize进行迭代训练(即分布式计算系统一次迭代计算处理的样本数量为32*1024=32768张样本图片),batchsize由8k增大至32k,根据有效学习率计算算式计算得到中间学习率为12.8,利用预设的学习率衰减算法对中间学习率进行衰减得到的第一衰减学习率1.28,第一衰减学习率1.28小于预设的最大学习率,则神经网络模型的第一学习率为1.28,因此,将神经网络模型将学习率由0~30epoch结尾的3.2衰减至1.28,即神经网络模型在30~60epoch的迭代训练中,采用1.28的学习率。

步骤1-3:在60~90epoch,继续采用大小为32k的batchsize进行迭代训练,学习率由30~60epoch结尾的1.28衰减到0.128,即神经网络模型在60~90epoch的迭代训练中,采用0.128的学习率。

步骤1-4:在90~120epoch,继续采用大小为32k的batchsize进行迭代训练,学习率由60~90epoch结尾的0.128衰减到0.0128,即神经网络模型在90~120epoch的迭代训练中,采用0.0128的学习率。

在实施方式一中,参见如图3所示的神经网络迭代训练中的学习率变化折线图,其中,图3的横轴为迭代次数epoch,取值范围为0~120(即预设的第二迭代次数为120),纵轴为神经网络模型的学习率(learningrate),图3中示出了不同epoch阶段(步骤1-1~步骤1-4)的学习率变化折线图。参见如图4所示的神经网络迭代训练中的batchsize变化折线图,其中,图4的横轴为迭代次数epoch,取值范围为0~120,纵轴为batchsize的大小,从图4中可以看出,在神经网络模型训练的0~30epoch(即步骤1-1),atchsize的大小为8k;在神经网络模型训练的30~120epoch(即步骤1-2~步骤1-4),atchsize的大小为32k。

实施方式二:在该实施方式中,在神经网络模型的训练过程中过多地增大batchsize时,为了减少神经网络模型的精度丢失,在过多增大batchsize时需要保证使有效学习率不会过多减小,本实施例提供的方法通过调整权重衰减系数,保证有效学习率不会过小,具体可参照如下步骤2-1~步骤2-4执行:

步骤2-1:在0~30epoch,采用大小为8k的batchsize进行迭代训练,其中,在0~5epoch,采用linearscaling和warmup策略将上述初始神经网络模型由初始学习率0.1线性增加至预设的最大学习率3.2。在5~30epoch,上述神经网络模型采用3.2的学习率进行迭代训练,其他参数固定不变。

步骤2-2:在30~60epoch,增大batchsize,采用大小为128k的batchsize进行迭代训练,batchsize由8k增大至128k,根据有效学习率计算算式计算得到中间学习率为51.2,利用预设的学习率衰减算法对中间学习率进行衰减得到的第一衰减学习率5.12,第一衰减学习率5.12大于预设的最大学习率3.2,将预设的最大学习率3.2作为神经网络模型的第一学习率,则神经网络模型的第一学习率为3.2,因此,将神经网络模型将学习率由0~30epoch结尾的3.2在30~60epoch保持不变,即神经网络模型在30~60epoch的迭代训练中,采用3.2的学习率。此时由于我们过大的调整了batchsize,导致有效学习率变的很小,为了保证有效学习率不过小,根据有效学习率计算算式,选择调整权重衰减(weightdecay)系数,根据公式的等效关系(权重衰减系数与权重的二范数成反比),把权重衰减(weightdecay)系数由原来的0.0001增大到预设值0.00016,从而使有效学习率不会过小,进而使神经网络模型的精度不会丢失过大。

步骤2-3:在60~90epoch,继续采用大小为128k的batchsize进行迭代训练,学习率由30~60epoch结尾的3.2衰减到0.32,即神经网络模型在60~90epoch的迭代训练中,采用0.32的学习率。

步骤2-4:在90~120epoch,继续采用大小为128k的batchsize进行迭代训练,学习率由60~90epoch结尾的0.32衰减到0.032,即神经网络模型在90~120epoch的迭代训练中,采用0.032的学习率。

在实施方式二中,参见如图5所示的神经网络迭代训练中的学习率变化折线图,其中,图5的横轴为迭代次数epoch,取值范围为0~120(即预设的第二迭代次数为120),纵轴为神经网络模型的学习率,图5中示出了不同epoch阶段(步骤2-1~步骤2-4)的学习率变化折线图。参见如图6所示的神经网络迭代训练中的batchsize变化折线图,其中,图6的横轴为迭代次数epoch,取值范围为0~120,纵轴为batchsize的大小,从图6中可以看出,在神经网络模型训练的0~30epoch(即步骤2-1),atchsize的大小为8k;在神经网络模型训练的30~120epoch(即步骤2-2~步骤2-4),atchsize的大小为128k。参见如图7所示的神经网络迭代训练中的权重衰减系数变化折线图,其中,图7的横轴为迭代次数epoch,取值范围为0~120,纵轴为权重衰减系数(weightdecay)的大小。从图6中可以看出,从30epoch开始,由于batchsize过多地增大,为了使等效学习率不过小,从30epoch开始增大了权重衰减系数(weightdecay)。

在实际应用中,还可以通过持续增大batchsize方式,获取batchsize的上界值。随着batchsize的持续增大,根据预设有效学习率计算算式:得到的有效学习率会持续减小,直到找到有效学习率的下界,当获得有效学习率的下界时,就可以得到等效的batchsize上界值。当然,在batchsize的持续增大过程中,为了保证有效学习率不变或尽可能减小有效学习率的变化值,还需要增大可以影响有效学习率的权重衰减系数,直到得到batchsize的上界值,同时保证测试集的精度不丢失。

实施例四:

对于实施例二中所提供的神经网络模型的分布式训练方法,本发明实施例提供了一种神经网络模型的分布式训练装置,该装置设置于分布式计算系统,分布式计算系统包括多个gpu,参见图8所示的一种神经网络模型的分布式训练装置的结构框图,该装置包括以下模块:

第一gpu选取模块81,用于从分布式计算系统确定出第一数量的gpu作为第一目标gpu。

第一训练模块82,用于基于训练样本集,通过第一目标gpu对初始神经网络模型进行迭代训练,直至达到预设的第一迭代次数,得到中间神经网络模型。

第二gpu选取模块83,用于从分布式计算系统确定出第二数量的gpu作为第二目标gpu。

第二训练模块84,用于通过第二目标gpu对中间神经网络模型进行迭代训练,直至达到预设的第二迭代次数,得到最终神经网络模型;其中,第二数量大于第一数量,和/或,第二目标gpu单次迭代处理的训练样本数量大于第一目标gpu单次迭代处理的训练样本数量。

本实施例提供的上述神经网络模型的分布式训练装置,通过在神经网络模型的迭代训练中改变单次迭代处理的训练样本数量(batchsize),将单次迭代处理的训练样本数量由少增多,能够把总体batchsize提高到一个比较大的量级,在缩短神经网络模型的训练时间的同时,使训练后的神经网络模型的精度丢失较少。

在一种实施方式中,上述第一训练模块82,进一步用于在对初始神经网络模型进行迭代训练时,采用第一目标gpu对训练样本集进行数据并行处理,并利用warmup策略,在预设迭代次数内将初始神经网络模型的初始学习率调整至预设的最大学习率;其中预设迭代次数小于第一迭代次数;继续对初始神经网络模型进行迭代训练,并使初始神经网络模型在迭代训练中保持预设的最大学习率不变,直至达到预设的第一迭代次数。

在一种实施方式中,上述第二训练模块84,进一步用于根据预设的等效衰减学习率算法确定中间神经网络模型的第一学习率;采用第二目标gpu对训练样本集进行数据并行处理,并使中间神经网络模型基于中间神经网络模型的第一学习率和预设的学习率衰减算法进行迭代训练,直至达到预设的第二迭代次数。

在一种实施方式中,第二目标gpu单次迭代处理的训练样本数量大于第一目标gpu单次迭代处理的训练样本数量;上述第二训练模块84,进一步用于根据预设有效学习率计算算式及第二目标gpu单次迭代处理的训练样本数量与第一目标gpu单次迭代处理的训练样本数量之间的数量关系,确定中间神经网络模型的中间学习率;利用预设的学习率衰减算法对中间学习率进行衰减,得到第一衰减学习率;判断第一衰减学习率是否大于中间神经网络模型预设的最大学习率;如果否,将第一衰减学习率作为中间神经网络模型的第一学习率。

在一种实施方式中,上述中间神经网络模型包括带有bn层的卷积层;中间神经网络模型的中间学习率包括中间神经网络模型各网络层的中间学习率;预设有效学习率计算算式为:

其中,为带有bn层的卷积层的有效学习率,η为学习率,α1和α2为人为设定的缩放因子,bt为单次迭代处理的训练样本数量,为第l层网络层的权重的二范数,与中间神经网络模型的权重衰减系数成反比。

在一种实施方式中,上述中间神经网络模型包括不带有bn层的全连接层;中间神经网络模型的中间学习率包括中间神经网络模型各网络层的中间学习率;预设有效学习率计算算式为:

其中,为不带有bn层的全连接层的有效学习率,η为学习率,α1和α2为人为设定的缩放因子,bt为单次迭代处理的训练样本数量。

在一种实施方式中,上述第二训练模块84,进一步用于将第二目标gpu单次迭代处理的训练样本数量输入预设有效学习率计算算式;使预设有效学习率计算算式中的有效学习率在迭代训练中保持不变,得到中间神经网络模型的中间学习率。

在一种实施方式中,上述第二训练模块84,进一步用于在第一衰减学习率大于中间神经网络模型预设的最大学习率时,将中间神经网络模型预设的最大学习率作为中间神经网络模型的第一学习率,并将中间神经网络模型的权重衰减系数增大至预设值,以增大有效学习率。

在一种实施方式中,上述第二训练模块84,进一步用于基于第一学习率对中间神经网络模型进行迭代训练,在该迭代训练达到预设时间或预设迭代次数时,利用预设的学习率衰减算法对第一学习率进行衰减,直至达到预设的第二迭代次数;其中,预设时间或预设迭代次数包括一个或多个;或者,基于第一学习率对中间神经网络模型进行迭代训练,并在迭代训练中利用预设的学习率衰减算法对第一学习率进行预设次数的衰减,直至达到预设的第二迭代次数。

本实施例提供的上述神经网络模型的分布式训练装置,通过使用分阶段的不同batchsize大小,在保证精度的同时减少了每轮训练中的计算迭代次数,并通过使用预设有效学习率计算算式和预设的学习率衰减算法,使神经网络模型在训练时,可以根据batchsize的增加自动调整学习率和权重衰减精度,以在缩短神经网络模型的训练时间的同时,减少神经网络模型精度的丢失。

本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

实施例五:

本发明实施例提供了一种计算机可读介质,其中,所述计算机可读介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现上述实施例所述的神经网络模型的分布式训练方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统具体工作过程,可以参考前述实施例中的对应过程,在此不再赘述。

本发明实施例所提供的神经网络模型的分布式训练方法、装置及电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1