掌桥专利:专业的专利平台
掌桥专利
首页

用于训练神经网络的方法、装置、设备和存储介质

文献发布时间:2023-06-19 18:30:43


用于训练神经网络的方法、装置、设备和存储介质

技术领域

本公开的示例实施例总体涉及计算机领域,特别地涉及用于训练神经网络的方法、装置、设备和计算机可读存储介质。

背景技术

随着计算机技术的快速发展,神经网络(Neural Networks,NN)被越来越广泛地用于诸如计算机视觉和自然语言处理等的领域。同时,模型大小和数据量的指数级增长使得神经网络的训练较为耗费时间和资源。

目前,加速神经网络训练的常用方法是数据并行,其使用多个计算设备来训练神经网络。尽管数据并行的方法大大加快了训练速度,但由于多个计算设备之间需要频繁的通信交互,使得该方法难以达到线性加速效果。

发明内容

根据本公开的第一方面,提供了一种用于训练神经网络的方法。在该方法中,在多个工作节点中的第一工作节点处,获取针对神经网络中的第一组网络层的第一组全局梯度。该第一组全局梯度是从多个工作节点在当前训练步中对第一组网络层确定的局部梯度聚合得到的。多个工作节点被配置为联合训练神经网络。进一步地,获取针对神经网络中的第二组网络层的第二组全局梯度。该第二组网络层不同于第一组网络层。该第二组全局梯度是从多个工作节点在当前训练步之前的先前训练步中对第二组网络层确定的局部梯度聚合得到的。此外,基于第一组全局梯度和第二组全局梯度,更新神经网络的参数。

根据本公开的第二方面,提供了一种用于训练神经网络的装置。该装置包括第一获取模块、第二获取模块和更新模块。该第一获取模块被配置为:在多个工作节点中的第一工作节点处,获取针对神经网络中的第一组网络层的第一组全局梯度,第一组全局梯度是从多个工作节点在当前训练步中对第一组网络层确定的局部梯度聚合得到的,多个工作节点被配置为联合训练神经网络。该第二获取模块被配置为:获取针对神经网络中的第二组网络层的第二组全局梯度,第二组网络层不同于第一组网络层,第二组全局梯度是从多个工作节点在当前训练步之前的先前训练步中对第二组网络层确定的局部梯度聚合得到的。该更新模块,被配置为:基于第一组全局梯度和第二组全局梯度,更新神经网络的参数。

根据本公开的第三方面,提供了一种电子设备。该电子设备包括至少一个处理单元;以及至少一个存储器,至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。指令在由至少一个处理单元执行时使电子设备执行根据本公开的第一方面的方法。

根据本公开的第四方面,提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序可由处理器执行以执行根据本公开的第一方面的方法。

应当理解,本发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键特征或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的描述而变得容易理解。

附图说明

在下文中,结合附图并参考以下详细说明,本公开各实现方式的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:

图1示出了本公开的实施例能够在其中实现的示例环境的示意图;

图2示出了根据本公开的一些实施例的用于训练神经网络的方法的流程图;

图3示出了根据本公开的一些实施例的神经网络训练流水线;

图4示出了根据本公开的一些实施例的用于训练神经网络的示例装置的框图;以及

图5示出了示出了其中可以实施本公开的一个或多个实施例的计算设备的框图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中示出了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“一些实施例”应当理解为“至少一些实施例”。下文还可能包括其他明确的和隐含的定义。

可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。

可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当根据相关法律法规通过适当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。

例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。

作为一种可选的但非限制性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式,例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或“不同意”向电子设备提供个人信息的选择控件。

可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其他满足相关法律法规的方式也可应用于本公开的实现方式中。

在此使用的术语“响应于”表示相应的事件发生或者条件得以满足的状态。将会理解,响应于该事件或者条件而被执行的后续动作的执行时机,与该事件发生或者条件成立的时间,二者之间未必是强关联的。例如,在某些情况下,后续动作可在事件发生或者条件成立时立即被执行;而在另一些情况下,后续动作可在事件发生或者条件成立后经过一段时间才被执行。

如本文中所使用的,术语“模型”可以从训练数据中学习到相应的输入与输出之间的关联,从而在训练完成后可以针对给定的输入,生成对应的输出。模型的生成可以基于机器学习技术。深度学习是一种机器学习算法,通过使用多层处理单元来处理输入和提供相应输出。神经网络模型是基于深度学习的模型的一个示例。在本文中,“模型”也可以被称为“机器学习模型”、“学习模型”、“机器学习网络”或“学习网络”,这些术语在本文中可互换地使用。

“神经网络”是基于深度学习的机器学习网络。神经网络能够处理输入并且提供相应输出,其通常包括输入层和输出层以及在输入层与输出层之间的一个或多个隐藏层。在深度学习应用中使用的神经网络通常包括许多隐藏层,从而增加网络的深度。神经网络的各个层按顺序相连,从而前一层的输出被提供作为后一层的输入,其中输入层接收神经网络的输入,而输出层的输出作为神经网络的最终输出。神经网络的每个层包括一个或多个节点(也称为处理节点或神经元),每个节点处理来自上一层的输入。在本公开的上下文中,输入层、输出层以及隐藏层也可以单独或统一地被称为网络层。

通常,机器学习大致可以包括三个阶段,即训练阶段、测试阶段和应用阶段(也称为推理阶段)。在训练阶段,给定的模型可以使用大量的训练数据进行训练,不断迭代更新参数值,直到模型能够从训练数据中获取一致的满足预期目标的推理。通过训练,模型可以被认为能够从训练数据中学习从输入到输出之间的关联(也称为输入到输出的映射)。训练后的模型的参数值被确定。在测试阶段,将测试输入应用到训练后的模型,测试模型是否能够提供正确的输出,从而确定模型的性能。在应用阶段,模型可以被用于基于训练得到的参数值,对实际的输入进行处理,确定对应的输出。

图1示出了本公开的实施例能够在其中实现的示例环境100的示意图。环境100涉及基于数据并行的神经网络训练环境,其中包括N个工作节点110-1、110-2、……110-N(其中N为大于1的整数)以及服务节点120。工作节点110-1、110-2……110-N可以分别维护各自的本地训练数据集112-1、112-2、……112-N,并且被配置为联合训练神经网络。为便于讨论,工作节点110-1、110-2、……110-N可以单独或统一地被称为工作节点110,并且本地训练数据集112-1、112-2、……112-N可以单独或统一地被称为本地训练数据集112。

数据并行(Data Parallelism)是一种神经网络训练的加速方法。在数据并行的神经网络训练中,训练任务被切分到多个工作节点110上,每个工作节点110维护相同的模型参数和相同的计算任务,但是处理不同的训练数据。服务节点120可以聚合各个工作节点110处的梯度数据,并将聚合得到的梯度数据同步给各个工作节点110。通过这种方式,同一全局训练数据下的训练和计算被切分到了不同的工作节点110,从而减轻了单个工作节点110处的计算和存储压力。工作节点有时也被称为客户机、工作节点设备、客户端、终端节点、终端设备、边缘设备等。

在数据并行的神经网络训练中,工作节点110存储有各自的本地神经网络132,例如本地神经网络132-1、132-2、……132-N(为便于讨论,在下文中被单独或统一地称为本地神经网络132)。工作节点110利用其对应的本地训练数据集112执行本地训练。工作节点110将在本地训练过程中所确定的针对各个网络层的梯度发送给服务节点120。服务节点120通过聚合来自各个工作节点110的梯度来得到全局梯度,并且将聚合得到的全局梯度同步给各个工作节点110。工作节点110可以基于同步得到的全局梯度来更新本地神经网络132,以执行下一训练步。上述过程可以重复执行,直到神经网络训练收敛。由于最终在各个工作节点110处训练得到的相应神经网络彼此相同,因此为了便于描述,在下文中本地神经网络也可以简称为神经网络。

在一些实施例中,工作节点110和/或服务节点120可以被实现在终端设备或服务器处。终端设备可以是任意类型的移动终端、固定终端或便携式终端,包括移动手机、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、媒体计算机、多媒体平板、个人通信系统(PCS)设备、个人导航设备、个人数字助理(PDA)、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者前述各项的任意组合,包括这些设备的配件和外设或者其任意组合。在一些实施例中,终端设备也能够支持任意类型的针对用户的接口(诸如“可佩戴”电路等)。服务器是能够提供计算能力的各种类型的计算系统/服务器,包括但不限于大型机、边缘计算节点、云环境中的计算设备,等等。

应当理解,图1仅示出了示例的基于数据并行的神经网络训练环境。根据神经网络训练和实际应用需要,环境还可以不同。例如,虽然服务节点120在图1中被示出为单独的节点,但是在某些应用中,服务节点120除了作为中央节点外,还可以作为工作节点110来进行本地训练等。本公开的范围在此方面不受限制。

如上所述,尽管基于数据并行的神经网络训练方法可以大大加快训练速度,但由于多个工作节点110之间需要频繁的通信交互,使得该方法难以达到线性加速效果。目前,已有的方法通过在当前训练步中使用上一训练步中所确定的梯度来更新神经网络的所有网络层,以消除梯度的通信过程与当前训练步的计算过程的依赖关系,并且通过构造通信与计算并行的流水线来隐藏通信开销。然而,针对神经网络的所有网络层引入梯度延迟会对模型的收敛性和准确度带来不利影响。

发明人经过研究发现:由于神经网络的层级结构以及前向传播和反向传播的相反顺序,因此只需要针对神经网络中的部分网络层而非全部网络层引入梯度,就可以隐藏通信开销。对此,本公开的实施例提出了一种改进的基于梯度延迟的神经网络训练方案。具体而言,根据本公开的实施例,神经网络中的网络层被划分为第一组网络层和第二组网络层,分别获取针对第一组网络层的第一组梯度和针对第二组网络层的第二组梯度,其中第一组梯度是从多个工作节点110在当前训练步中对第一组网络层确定的局部梯度聚合得到的,并且第二组梯度是从多个工作节点110在先前训练步中对第二组网络层确定的局部梯度聚合得到的。进一步地,神经网络的参数基于该第一组梯度和第二组梯度而被更新。

通过下文描述将会更清楚地理解,根据本公开的实施例,通过仅针对神经网络中的部分网络层引入梯度延迟来隐藏通信开销。以此方式,可以尽可能减小所引入的梯度延迟对模型收敛性和准确度的影响,从而实现在隐藏通信开销的同时确保模型的收敛性和准确度。

以下将继续参考附图描述本公开的一些示例实施例。

图2示出了根据本公开的一些实施例的用于训练神经网络的方法200的流程图。在一些实施例中,方法200可以由如图1所示的工作节点110执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的某个(或者某些)框,本公开的范围在此方面不受限制。

在框202,工作节点110获取针对神经网络中的第一组网络层的第一组全局梯度。该第一组全局梯度是从多个工作节点110在当前训练步中对第一组网络层确定的局部梯度聚合得到的,即,针对第一组网络层的全局梯度未被延迟。在框204,工作节点110获取针对神经网络中的第二组网络层的第二组全局梯度。第二组网络层不同于第一组网络层。该第二组全局梯度是从多个工作节点110在当前训练步之前的先前训练步中对第二组网络层确定的局部梯度聚合得到的,即针对第二组网络层的梯度被延迟。在一些实施例中,先前训练步可以是当前训练步之前的上一训练步。应当理解的是,先前训练步还可以包括当前训练步之前的其他任何合适的训练步,本公开的范围在此方面不受限制。

为了便于说明,在下文中将参考图3进行描述。图3示出了根据本公开的一些实施例的神经网络训练流水线300。该流水线300以具有3个网络层的神经网络为例进行图示。应当理解的是,根据本公开的实施例的方案可以应用于具有其他任何合适数目的网络层的神经网络,本公开的范围在此方面不受限制。

在图3的示例中,第一组网络层包括神经网络中的输出层,即,第三网络层。第二组网络层包括神经网络中从输入层起的前两个网络层,即,第一网络层和第二网络层。如图3中所示,框302-1、302-2和302-3分别示意性地示出了神经网络中的第一网络层、第二网络层和第三网络层在当前训练步中的反向传播计算过程。注意到,由于反向传播计算过程从输出层开始后向传播至输入层,即首先计算针对第三网络层的梯度,然后计算第二网络层的梯度,最后计算第一网络层的梯度,因此在图3中框302-3被示出为在框302-2之前,并且框302-2被示出为在框302-1之前。框304-1、304-2和304-3分别示意性地示出了神经网络中的第一网络层、第二网络层和第三网络层在当前训练步之后的下一训练步中的前向传播计算过程。框306-1、306-2和306-3分别示意性地示出了神经网络中的第一网络层、第二网络层和第三网络层在当前训练步中的往返通信过程。该往返通信过程对应于工作节点110向服务节点120发送本地确定的局部梯度,并从服务节点120接收从多个工作节点110对相应网络层确定的局部梯度聚合得到的全局梯度。为了简化的目的,“往返通信过程”在下文中也可以被称为“通信过程”。

如图3中所示,由于针对第一组网络层(即,第三网络层)的梯度未被延迟,因此工作节点110可以经由通信过程306-3从服务节点120获取针对第一组网络层的梯度。进一步地,由于针对第二组网络层(即,第一网络层和第二网络层)的梯度被延迟,因此工作节点110可以从缓存器310中取回在当前训练步之前的上一训练步中被存储在该缓存器310中的针对该第二组网络层的第二组全局梯度。

返回参考图2,在框206,工作节点110基于第一组全局梯度和第二组全局梯度来更新神经网络的参数。在一些实施例中,工作节点110可以直接使用所获取的全局梯度来更新神经网络中的相应层。参考图3,工作节点110可以使用从缓存器310取回的针对第一网络层和第二网络层的全局梯度来更新第一网络层和第二网络层的参数,该更新过程对应于图3中的框308-1。工作节点110进而可以基于经更新的参数来执行下一训练步中针对第一网络层和第二网络层的前向传播计算。进一步地,工作节点110可以使用经由通信过程306-3获取的针对第三网络层的全局梯度来更新第三网络层的参数,该更新过程对应于图3中的框308-2。工作节点110进而可以基于经更新的参数来执行下一训练步中针对第三网络层的前向传播计算。

通过仅针对神经网络中的部分网络层而非全部网络层引入梯度延迟来隐藏通信开销,可以尽可能减小所引入的梯度延迟对模型收敛性和准确度的影响,从而实现在隐藏通信开销的同时确保模型的收敛性和准确度。

在一些实施例中,还可以确定用于梯度延迟的网络层的最小数目,以使得通信开销被全部隐藏,从而保证训练流水线不会停滞,即在工作节点110处不存在等待时间。发明人经过研究发现:针对层级结构的神经网络,在没有停滞的训练流水线中,如果某个前向网络层被延迟,则该前向网络层之前的所有前向网络层都被延迟。因此,可以通过求解如下所示的最优化问题来确定使通信开销被全部隐藏所需引入梯度延迟的网络层的最小数目:

最小化k

约束条件

其中k表示需要引入梯度延迟的网络层的数目,v

在一些实施例中,针对神经网络中的每个网络层的前向传播计算时间、反向传播计算时间、以及往返通信时间可以通过在神经网络的预热训练阶段中监测相应网络层的前向传播计算过程、反向传播计算过程、以及通信过程的持续时间来确定。工作节点110进而可以基于所确定的前向传播计算时间、反向传播计算时间、以及往返通信时间,确定用于梯度延迟的网络层的数目。在一个示例中,工作节点110可以通过求解上述最优化问题来得到需要引入梯度延迟的网络层的最小数目,并且基于该最小数目确定用于梯度延迟的网络层的数目。例如,用于梯度延迟的网络层的数目可以被确定为等于或大于该最小数目且小于神经网络中网络层的总数目的任何合适的数值。

进一步地,工作节点110可以基于所确定的网络层的数目来确定第一组网络层和第二组网络层。在一些实施例中,工作节点110可以从神经网络的输入层起选择所确定的数目的网络层作为第二组网络层,并且将神经网络中的其余网络层确定为第一组网络层。参考图3,在所确定的用于梯度延迟的网络层的数目为2的情况下,工作节点110可以将神经网络从输入层起的前2个网络层(即,第一网络层和第二网络层)确定为第二组网络层,并且将神经网络的其余网络层(即,第三网络层)确定为第一组网络层。

在一些实施例中,工作节点110可以基于针对第二组网络层的第二组全局梯度来预测在当前训练步中对第二组网络层确定的第三组全局梯度。在一个示例中,发明人经过研究发现:可以基于梯度函数的泰勒展开来预测该第三组全局梯度,如以下的式子(1)所示出的:

其中gt表示所预测的第三组全局梯度,gt′表示所预测的第三组全局梯度,λ是预先确定的超参数,

在一些实施例中,为了补偿由于梯度延迟所引入的滞后,可以通过预测下一训练步中的模型参数,来获得向后预测一步的梯度。为此,工作节点110可以在本地存储两个相同的神经网络,其中一个神经网络用于训练的目的(在下文中也被称为训练用神经网络),另一个神经网络则用于预测模型参数(在下文中也被称为预测用神经网络)。

在一个实施例中,工作节点110可以获取针对第二组网络层的第一组局部梯度。该第一组局部梯度是在先前训练步中对第二组网络层确定的。工作节点110可以基于该第一组局部梯度来预测神经网络在当前训练步之后的下一训练步中的参数,并且基于所预测的参数来确定在当前训练步中针对第二组网络层的第二组局部梯度,以用于与多个工作节点110中的其余工作节点110确定的局部梯度聚合得到针对第二组网络层的全局梯度。

示例性地,工作节点110可以从缓存器310取回在先前训练步中对第二组网络层确定的第一组局部梯度,并且使用该第一组局部梯度通过考虑神经网络在当前训练步中的参数和学习率来更新预测用神经网络的参数,以获得预测用神经网络在下一训练步中的参数作为对神经网络在下一训练步中的参数的预测。进一步地,工作节点110可以基于预测用神经网络的经更新的参数来确定在当前训练步中针对第二组网络层的第二组局部梯度。注意到,该第二组局部梯度是向后预测一步的梯度。工作节点110进而可以使用该第二组局部梯度与多个工作节点110中的其余工作节点110确定的局部梯度聚合得到针对第二组网络层的全局梯度,以用于在下一训练步中更新训练用神经网络的参数。通过这种方式,可以利用向后预测一步的梯度来更新被引入梯度延迟的网络层的参数,从而可以抵消所引入的梯度延迟,进而减小所引入的梯度延迟对模型收敛性和准确度的影响。

在另一个实施例中,工作节点110可以基于第二组全局梯度预测神经网络在当前训练步之后的下一训练步中的参数,并且基于所预测的参数来确定在当前训练步中针对第二组网络层的一组局部梯度,以用于与多个工作节点110中的其余工作节点110确定的局部梯度聚合得到针对第二组网络层的全局梯度。

示例性地,工作节点110可以使用从缓存器310获取的第二组全局梯度通过考虑神经网络在当前训练步中的参数和学习率来更新预测用神经网络的参数,以获得预测用神经网络在下一训练步中的参数作为对神经网络在下一训练步中的参数的预测。进一步地,工作节点110可以基于预测用神经网络的经更新的参数来确定在当前训练步中针对第二组网络层的一组局部梯度。注意到,该组局部梯度是向后预测一步的梯度。工作节点110进而可以使用该组局部梯度与多个工作节点110中的其余工作节点110确定的局部梯度聚合得到针对第二组网络层的全局梯度,以用于在下一训练步中更新训练用神经网络的参数。通过这种方式,可以利用向后预测一步的梯度来更新被引入梯度延迟的网络层的参数,从而可以抵消所引入的梯度延迟,进而减小所引入的梯度延迟对模型收敛性和准确度的影响。

在又一个实施例中,工作节点110可以获取针对第二组网络层的第一组局部梯度。该第一组局部梯度是在先前训练步中对第二组网络层确定的。工作节点110可以基于第一组局部梯度和第二组全局梯度来预测在当前训练步中对第二组网络层确定的第三组全局梯度。进一步地,工作节点110可以基于第三组全局梯度来预测神经网络在当前训练步之后的下一训练步中的参数,并且基于所预测的参数来确定在当前训练步中针对第二组网络层的第二组局部梯度,以用于与多个工作节点110中的其余工作节点110确定的局部梯度聚合得到针对第二组网络层的全局梯度。

示例性地,工作节点110可以从缓存器310取回在先前训练步中对第二组网络层确定的第一组局部梯度。工作节点110可以基于下面的式子(2)来使用第一组局部梯度和第二组全局梯度预测在当前训练步中对第二组网络层确定的第三组全局梯度:

其中

进一步地,工作节点110可以使用所预测的第三组全局梯度通过考虑神经网络在当前训练步中的参数和学习率来更新预测用神经网络的参数,以获得预测用神经网络在下一训练步中的参数作为对神经网络在下一训练步中的参数的预测。进一步地,工作节点110可以基于预测用神经网络的经更新的参数来确定在当前训练步中针对第二组网络层的第二组局部梯度。注意到,该第二组局部梯度是向后预测一步的梯度。工作节点110进而可以使用该第二组局部梯度与多个工作节点110中的其余工作节点110确定的局部梯度聚合得到针对第二组网络层的全局梯度,以用于在下一训练步中更新训练用神经网络的参数。通过这种方式,可以利用向后预测一步的梯度来更新被引入梯度延迟的网络层的参数,从而可以抵消所引入的梯度延迟,进而减小所引入的梯度延迟对模型收敛性和准确度的影响。

在上文中描述了用于补偿梯度延迟的多种可能方式,应当理解的是,还可以以其他任何合适的方式来补偿所引入的梯度延迟,本公开的范围在此方面不受限制。

通过针对第二组网络层引入梯度延迟,针对第二组网络层的第二组全局梯度可以被存储在缓存器310中。这使得第二组全局梯度可以被同时取回。因此在第二组网络层包括多个网络层的情况下,针对该多个网络层的参数更新可以同时被执行。在一些实施例中,工作节点110可以使用同一个核(Kernel)来更新第二组网络层的参数。通过这种方式,与需要针对不同网络层调用不同核来更新参数的已有方案相比,可以节省系统资源和时间开销,进而提高神经网络的训练速度。

在一些实施例中,缓存器310可以包括两个不同的缓存区,即第一缓存区和第二缓存区。工作节点110可以在先前训练步中将第二组全局梯度存储在缓存器310的第一缓存区中,并且在当前训练步中直接从第一缓存区中读取第二组全局梯度。进一步地,在当前训练步中,工作节点110通过通信过程获取针对第二组网络层的第三组全局梯度。该第三组全局梯度是从多个工作节点110在当前训练步中对第二组网络层确定的局部梯度聚合得到的。工作节点110进而可以将第三组全局梯度存储在缓存器310的第二缓存区中,并且在下一训练步中直接从第二缓存区中读取该第三组全局梯度。通过这种方式,与已有方案相比,可以避免将梯度数据从缓存器中的一个缓存区复制到另一个缓存区所带来的系统开销,进而提高神经网络的训练速度。

在一些实施例中,在先前训练步中,工作节点110可以将第二组全局梯度存储在缓存器310中,并且在第二组全局梯度被存储在缓存器310中之后,锁定缓存器310。进一步地,在当前训练步中需要获取该第二组全局梯度时,工作节点110可以解锁缓存器310,并从缓存器310中读取第二组全局梯度。随后,工作节点110可以将在当前训练步中获取的针对第二组网络层的第三组全局梯度存储在缓存器310中。通过这种方式,可以实现共享缓存器310,从而减小缓存器310对存储器资源的开销。

在一些实施例中,工作节点110可以包括两个不同的处理单元,即第一处理单元和第二处理单元,其中第一处理单元被配置为实现对神经网络的训练,并且第二处理单元被配置为控制该工作节点110处的通信。工作节点110可以基于对神经网络的预热训练来确定针对神经网络在训练步中的总计算时间和总通信时间,并且基于总计算时间与总通信时间的比较,从与第一处理单元相关联的第一缓存器和与第二处理单元相关联的第二缓存器中选择缓存器。进一步地,工作节点110可以将第二组全局梯度存储在所选择的缓存器中。

示例性地,工作节点110可以包括中央处理器(Central Processing Unit,CPU)和图形处理器(Graphics Processing Unit,GPU),其中CPU可以用于控制该工作节点110处的通信,并且GPU可以用于训练神经网络。如果确定神经网络在训练步中的总计算时间大于总通信实现,则可以选择与GPU相关联的缓存器来存储第二组全局梯度。如果确定神经网络在训练步中的总计算时间小于总通信实现,则可以选择与CPU相关联的缓存器来存储第二组全局梯度。通过这种方式,可以将传输开销从相对较慢的流水线级转嫁到相对较快的流水线级,从而平衡神经网络训练流水线,进而提高神经网络的训练速度。

通过以上结合图1至图3的描述可以看到,根据本公开的实施例的用于训练神经网络的方法,通过仅针对神经网络中的部分网络层引入梯度延迟来隐藏通信开销。以此方式,可以尽可能减小所引入的梯度延迟对模型收敛性和准确度的影响,从而实现在隐藏通信开销的同时确保模型的收敛性和准确度。

在上文中已经参考图1至图3详细描述了根据本公开的方法的示例实现,在下文中将参考图4和图5描述相应的装置和设备的实现。

图4示出了根据本公开的一些实施例的用于训练神经网络的示例装置400的框图。该装置400例如可以用于实现如图1所示的工作节点110。装置400可以包括第一获取模块402,其被配置为:在多个工作节点中的第一工作节点处,获取针对神经网络中的第一组网络层的第一组全局梯度,第一组全局梯度是从多个工作节点在当前训练步中对第一组网络层确定的局部梯度聚合得到的,多个工作节点被配置为联合训练神经网络。进一步地,装置400可以包括第二获取模块404,其被配置为:获取针对神经网络中的第二组网络层的第二组全局梯度,第二组网络层不同于第一组网络层,第二组全局梯度是从多个工作节点在当前训练步之前的先前训练步中对第二组网络层确定的局部梯度聚合得到的。此外,装置400还可以包括更新模块406,其被配置为:基于第一组全局梯度和第二组全局梯度,更新神经网络的参数。

在一些实施例中,第一组全局梯度和第二组全局梯度在服务节点被聚合得到,装置400还包括:时间确定模块,其被配置为:基于对神经网络的预热训练,确定针对神经网络中的每个网络层的前向传播计算时间、反向传播计算时间、以及第一工作节点与服务节点之间的往返通信时间;数目确定模块,其被配置为:基于所确定的前向传播计算时间、反向传播计算时间、以及往返通信时间,确定用于梯度延迟的网络层的数目;以及网络层确定模块,其被配置为:基于所确定的网络层的数目,确定第一组网络层和第二组网络层。

在一些实施例中,更新模块406包括:第一参数更新模块,被配置为:利用第一组全局梯度来更新第一组网络层的参数;梯度预测模块,被配置为:基于第二组全局梯度,预测在当前训练步中对第二组网络层确定的第三组全局梯度;以及第二参数更新模块,被配置为:利用第三组全局梯度来更新第二组网络层的参数。

在一些实施例中,装置400还包括:第一梯度获取模块,其被配置为:获取针对第二组网络层的第一组局部梯度,第一组局部梯度是在先前训练步中对第二组网络层确定的;第一参数预测模块,其被配置为:基于第一组局部梯度,预测神经网络在当前训练步之后的下一训练步中的参数;以及第一梯度确定模块,其被配置为:基于所预测的参数,确定在当前训练步中针对第二组网络层的第二组局部梯度,以用于与多个工作节点中的其余工作节点确定的局部梯度聚合得到针对第二组网络层的全局梯度。

在一些实施例中,装置400还包括:第二参数预测模块,其被配置为:基于第二组全局梯度,预测神经网络在当前训练步之后的下一训练步中的参数;以及第二梯度确定模块,其被配置为:基于所预测的参数,确定在当前训练步中针对第二组网络层的一组局部梯度,以用于与多个工作节点中的其余工作节点确定的局部梯度聚合得到针对第二组网络层的全局梯度。

在一些实施例中,装置400还包括:第二梯度获取模块,其被配置为:获取针对第二组网络层的第一组局部梯度,第一组局部梯度是在先前训练步中对第二组网络层确定的;全局梯度预测模块,其被配置为:基于第一组局部梯度和第二组全局梯度,预测在当前训练步中对第二组网络层确定的第三组全局梯度;第三参数预测模块,其被配置为:基于第三组全局梯度,预测神经网络在当前训练步之后的下一训练步中的参数;以及第三梯度确定模块,其被配置为:基于所预测的参数,确定在当前训练步中针对第二组网络层的第二组局部梯度,以用于与多个工作节点中的其余工作节点确定的局部梯度聚合得到针对第二组网络层的全局梯度。

装置400中所包括的模块和/或单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。在一些实施例中,一个或多个单元可以使用软件和/或固件来实现,例如存储在存储介质上的机器可执行指令。除了机器可执行指令之外或者作为替代,装置400中的部分或者全部单元可以至少部分地由一个或多个硬件逻辑组件来实现。作为示例而非限制,可以使用的示范类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD),等等。

图4中所示的这些模块和/或单元可以部分或者全部地实现为硬件模块、软件模块、固件模块或者其任意组合。特别地,在某些实施例中,上文描述的流程、方法或过程可以由存储系统或与存储系统对应的主机或独立于存储系统的其它计算设备中的硬件来实现。

图5示出了示出了其中可以实施本公开的一个或多个实施例的计算设备500的框图。应当理解,图5所示出的计算设备500仅仅是示例性的,而不应当构成对本文所描述的实施例的功能和范围的任何限制。图5所示出的计算设备500可以用于实现图1的工作节点110。

如图5所示,计算设备500是通用计算设备的形式。计算设备500的组件可以包括但不限于一个或多个处理器或处理单元510、存储器520、存储设备530、一个或多个通信单元540、一个或多个输入设备550以及一个或多个输出设备560。处理单元510可以是实际或虚拟处理器并且能够根据存储器520中存储的程序来执行各种处理。在多处理器系统中,多个处理单元并行执行计算机可执行指令,以提高计算设备500的并行处理能力。

计算设备500通常包括多个计算机存储介质。这样的介质可以是计算设备500可访问的任何可以获得的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器520可以是易失性存储器(例如寄存器、高速缓存、随机访问存储器(RAM))、非易失性存储器(例如,只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存)或它们的某种组合。存储设备530可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,诸如闪存驱动、磁盘或者任何其它介质,其可以能够用于存储信息和/或数据(例如用于训练的训练数据)并且可以在计算设备500内被访问。

计算设备500可以进一步包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图5中示出,可以提供用于从可拆卸、非易失性磁盘(例如“软盘”)进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。存储器520可以包括计算机程序产品525,其具有一个或多个程序模块,这些程序模块被配置为执行本公开的各种实施例的各种方法或动作。

通信单元540实现通过通信介质与其它计算设备进行通信。附加地,计算设备500的组件的功能可以以单个计算集群或多个计算机器来实现,这些计算机器能够通过通信连接进行通信。因此,计算设备500可以使用与一个或多个其它服务器、网络个人计算机(PC)或者另一个网络节点的逻辑连接来在联网环境中进行操作。

输入设备550可以是一个或多个输入设备,例如鼠标、键盘、追踪球等。输出设备560可以是一个或多个输出设备,例如显示器、扬声器、打印机等。计算设备500还可以根据需要通过通信单元540与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与计算设备500交互的设备进行通信,或者与使得计算设备500与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接口(未示出)来执行。

根据本公开的示例性实现方式,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,其中计算机可执行指令被处理器执行以实现上文描述的方法。根据本公开的示例性实现方式,还提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,而计算机可执行指令被处理器执行以实现上文描述的方法。

这里参照根据本公开实现的方法、装置、设备和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文公开的各个实现方式。

相关技术
  • 一种神经网络训练方法、装置、计算机设备和存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 用于神经网络的特征图处理方法、装置和系统及存储介质
  • 神经网络模型的优化方法及装置、电子设备和存储介质
  • 卷积神经网络计算的加速方法、装置、设备及存储介质
  • 用于图像补全的修复神经网络训练方法、装置、计算机设备和存储介质
  • 用于训练神经网络的方法、设备和计算机可读存储介质
技术分类

06120115598021