使用带有急速更新的分布式参数服务器对神经网络进行优化的异步训练的制作方法

文档序号:22626698发布日期:2020-10-23 19:35阅读:110来源:国知局
使用带有急速更新的分布式参数服务器对神经网络进行优化的异步训练的制作方法

政府权利

本发明是在美国劳伦斯·利弗莫尔国家安全局的pathforward项目(doe授予的主要合同编号de-ac52-07na27344,分包合同编号b620717)的政府支持下完成的。政府享有本发明中的某些权利。



背景技术:

近年来,诸如深度神经网络之类的学习体系结构已经在计算机视觉、语音识别、自然语言处理、翻译以及许多其他领域取得了进步,从而在许多情况下允许计算机可比较地操作,或者在一些情况下甚至超出了人类执行这些任务的能力。神经网络的基本构建块是神经元,并且单个神经网络可以包括任意数量(例如,数千或数百万)的神经元,这些神经元以层连接,其中每一层中的神经元都从先前层接收其输入并向后续层提供其输出。每个神经元基于对其输入执行功能(例如求和)而生成输出,其中可调整的权重应用于输入。也可以调整添加到输出的偏差值。

反向传播是一种用于在神经网络中执行机器学习的技术,在这种技术中,基于将神经网络的最终输出与特定输入的期望输出进行比较来计算每个神经元的误差贡献。然后调整导致误差的各个神经元的权重和偏差,以使神经网络获得期望输出。计算在输出处的误差,并且权重调整从神经网络的最终层向初始层向后传播。

附图说明

在附图的图示中通过举例的方式而非限制的方式示出了本公开。

图1示出了计算节点集群的实施方案,该计算节点集群包括用于训练神经网络的集中式参数服务器。

图2示出了根据实施方案的包括用于训练神经网络的计算节点集群的计算系统。

图3示出了根据实施方案的用于训练神经网络的计算节点集群。

图4示出了根据实施方案的包括参数服务器的计算节点中的部件。

图5示出了根据实施方案的计算节点集群中的分布式参数服务器。

图6是示出根据实施方案的用于训练神经网络的过程的流程图。

具体实施方式

以下描述阐述了许多具体细节,诸如具体系统、部件、方法等的示例,以便提供对实施方案的良好理解。然而,本领域的技术人员将明白,可以在没有这些具体细节的情况下实践至少一些实施方案。在其他情况下,未详细描述公知的部件或方法,或以简单的框图格式呈现公知的部件或方法,以避免对实施方案不必要的混淆。因此,阐述的具体细节仅是示例性的。特定实现方式可以与这些示例性细节不同,并且仍被认为在实施方案的范围内。

在神经网络中执行多实例学习时可以使用反向传播技术,其中基于神经网络对训练集中多个实例的操作来调整神经网络中的参数。每个实例代表输入和期望输出的集合,与神经网络生成的实际输出进行比较。可以在单个计算节点的有限资源中实现根据这些方法运行的用于较小神经网络的训练框架。然而,扩展训练框架以适应大得多的神经网络可涉及将计算分布在多个计算节点(例如,多个图形处理单元(gpu)节点)上,每个计算节点对神经网络的对应部分(即,神经元子集)和/或使用训练集的对应部分执行反向传播过程。

一种用于在多个计算节点上扩展神经网络训练框架的方法使用集中式参数服务器来实现异步随机梯度下降(sgd)过程。图1示出了计算节点集群100的实施方案的框图,其中这种集中式参数服务器101用于训练包括层参数l1-ln的神经网络,其中lx表示神经网络的x层的本地参数。在训练过程期间,集中式参数服务器101负责更新和计算这些层l1-ln中的层参数(例如,权重和偏差),并且将参数传达给计算节点102-104。

根据反向传播过程对神经网络的训练包括向前传递和向后传递。在向前传递期间,神经网络用于计算针对训练实例中一个的最终输出(即,来自最终层的输出)。在向后传递期间,确定由向前传递计算的输出与期望输出之间的误差,并且将该误差向后传播通过神经网络的每一层,以计算网络中神经元的调整权重。在图1中,向后传递112在计算节点102中执行,而向前传递113和114分别在计算节点103和104中执行。

完整的向后传递生成针对神经网络中所有层的一批更新参数,包括神经网络中一些或所有神经元的更新的权重和/或偏差值。在向后传递112结束时,使用点对点通信将从向后传递112计算的一批更新参数传输到集中式参数服务器101。集中式参数服务器101通过将更新参数传输到其他计算节点103-104来更新计算节点103-104中的参数。计算节点102-104并行操作,并且可以在任何给定时间执行训练循环的不同迭代。然而,在该实现方式中,结合向后传递的完成,参数被传输到参数服务器101和从该参数服务器传输参数。

集中式参数服务器101促进了多个计算节点102-104之间更新参数的通信,从而允许神经网络训练框架在计算节点102-104间扩展,而不是限制为单个节点。然而,可以根据集中式参数服务器101的带宽和计算限制来限制进一步的可扩展性。计算节点102-104在开始计算用于计算随后一批参数的向前传递之前更新它们的参数,并且在向后传递结束时将新参数写入集中式参数服务器101。因此,计算节点102-104与集中式参数服务器101之间的更新参数的通信以批粒度来完成(即,在传输更新参数之前,对所有层都完成了向后传递)并且处于训练过程的关键路径中。节点102-104与参数服务器101之间的通信是点对点的,并且因此每次迭代包括两次关键路径通信,这可能会对性能产生负面影响。此外,使用参数服务器101的集中化性质倾向于增加网络争用。另外,由于其中实现了参数服务器的计算节点没有用于训练神经网络,因此在计算节点中实现集中式参数服务器101会导致计算资源的低效使用。

此外,在使用集中式参数服务器101的训练框架中,计算节点102-104有时可以使用陈旧的参数数据进行操作。例如,计算节点102可能已经计算了层ln-l2的更新参数。但是,节点103直到完成向后传递112后才接收到ln-l2的更新参数。同时,向前传递113继续使用ln-l2的先前的陈旧值来计算其输出。此更新延时可能导致多个计算节点间的训练差异。

在神经网络训练框架的一个实施方案中,每个计算节点都实现其自身的参数服务器,该参数服务器使用单侧(而不是点对点)集体通信语义向其他计算节点提供异步参数更新,更新参数通过该语义广播到集群中的所有其他计算节点。在一个实施方案中,计算节点的本地参数服务器响应于通过计算节点中通过向后传递来完成针对层或层的子集的更新参数的计算,而将更新参数异步地传输到其他节点。因此,可以同时执行针对特定层的更新参数的通信和针对一个或多个后续层的更新参数的计算。该方法提高了训练框架的可扩展性,因为节点之间的更新通信不受单个集中式参数服务器的计算和通信吞吐量的限制,并且还减少了由于使用陈旧数据而导致的差异。

图2示出了计算系统200的实施方案,该计算系统为神经网络训练框架实现了分布在多个计算节点间的参数服务器,如上所述。通常,计算系统200可以体现为许多不同类型的装置中的任一种,包括但不限于膝上型计算机或台式计算机、移动电话、服务器等。计算系统200包括通过总线201彼此通信的许多部件202-208。在计算系统200中,部件202-208中的每一个都能够直接通过总线201或者经由其他部件202-208中的一个或多个与任何其他部件202-208通信。计算系统200中的部件201-208被包含在单个物理外壳内,诸如膝上型或台式计算机机架或移动电话外壳。在替代实施方案中,计算系统200的一些部件体现为外围装置,使得整个计算系统200不驻留在单个物理外壳内。

计算系统200还包括用于从用户接收信息或向用户提供信息的用户接口装置。具体地,计算系统200包括输入装置202,诸如键盘、鼠标、触摸屏或用于从用户接收信息的其他装置。计算系统200经由诸如监测器、发光二极管(led)显示器、液晶显示器或其他输出装置的显示器205向用户显示信息。

计算系统200另外包括用于通过有线或无线网络传输和接收数据的网络适配器207。计算系统200还包括一个或多个外围装置208。外围装置208可以包括大容量存储装置、位置检测装置、传感器、输入装置、或由计算系统200使用的其他类型装置。

计算系统200包括处理器204,该处理器被配置为接收并执行存储器子系统206中存储的指令206a。存储器子系统206包括计算系统200使用的存储器装置,诸如随机存取存储器(ram)模块、只读存储器(rom)模块、硬盘和其他非暂时性计算机可读介质。在一个实施方案中,存储器子系统206包括实现一个或多个存储器保留控制器的逻辑,每个存储器保留控制器对应于存储器子系统206中的存储器区域。

计算系统200的一些实施方案可以包括比图2所示的实施方案更少或更多的部件。例如,在没有任何显示器205或输入装置202的情况下实现某些实施方案。其他实施方案具有多于一个特定部件;例如,计算系统200的实施方案可以具有多个处理器204、网络适配器207等。

计算系统200还包括计算节点集群209,该计算节点集群包含在其中实现了神经网络训练框架的计算节点集合。在一个实施方案中,在计算节点集群209中执行的计算由根据指令206a定义的程序进行操作的处理器204执导。

图3示出了计算节点集群209的实施方案。计算节点集群209包括通过通信网络310彼此连接的多个计算节点301-304。通信网络310允许计算节点301-304中的每个与其他计算节点301-304中的任何之间的通信。在一个实施方案中,通信网络310是单个计算机系统机架或外壳内的内部总线,计算节点301-304中的每个都连接到该内部总线。可替代地,在计算节点301-304不位于同一机架或外壳内的实施方案中,通信网络310-304被实现为诸如局域网(lan)或广域网(wan)的较大网络。可以使用允许如本文所述的计算节点301-304之间的通信的各种通信协议和拓扑的任意组合来实现通信网络。

在一个实施方案中,计算节点集群209可以包括任意数量的计算节点301-304。集群209中的计算节点301-304中的每个维护其自身的神经网络副本,并确定神经网络中不同神经元子集的更新参数。在一个实施方案中,还在计算节点301-304间划分了训练实例的大集合,使得计算节点301-304中的每个使用不同训练实例子集来训练其神经网络的本地副本或其本地副本中的神经元子集。

图4示出了计算节点集群209中的计算节点301的实施方案。在一个实施方案中,计算节点301包括处理单元402,诸如安装在载板或主板上的cpu或gpu,其与类似计算节点(例如,节点302-304)一起安装在单个计算机机箱或机架内。在替代实施方案中,计算节点301被包含在其自身的机箱或机架中,并且经由lan或wan连接到类似计算节点(例如,节点302-304)。在一个实施方案中,处理单元402和计算节点301中的其他部件401和403-405经由总线406彼此通信。

计算节点301还包括存储数据的存储器403。存储器403可以包括易失性和/或非易失性存储器,所述存储器是使用各种存储器技术中的任一种实现的,诸如动态随机存取存储器(dram)、静态随机存取存储器(sram)、快闪存储器等。在一个实施方案中,用于定义神经网络404的数据(例如,变量和数据结构)存储在存储器403中。存储器403中的这种数据定义了神经网络404的神经元、神经元之间的连接、神经元的权重和偏差等。

计算节点301还包括通信网络接口401,该通信网络接口允许计算节点301经由通信网络310传输和接收消息。特别地,通信网络接口401从远程计算节点302-304中的一个或多个接收远程参数,以更新本地神经网络404。在一个实施方案中,使用远程直接存储器访问(rdma)或具有类似语义的协议来使远程节点302-304能够将更新参数直接写入计算节点301的存储器403中的本地神经网络模型404。在从远程计算节点接收到更新参数之后,通信网络接口401将接收到的参数直接写入存储器403中的神经网络404,而无需涉及计算节点301的操作系统或其处理器402。也经由远程直接存储器访问或类似机制在不涉及操作系统和处理器402的情况下完成更新参数从计算节点301到其他计算节点302-304的传输。

在神经网络训练过程期间,参数服务器405确定是否应将神经网络404的更新参数传输到远程计算节点(例如,302-304),并经由通信网络接口401酌情传输更新参数。参数服务器405在计算节点301-304中的每个中被复制,并且在每个实例中类似地起作用。在一个实施方案中,参数服务器405被实现为硬件电路模块。在替代实施方案中,参数服务器405被实现在固件、软件(例如,由处理单元402执行的存储器403中的指令所定义)或硬件、软件和/或固件的组合中。在一个实施方案中,参数服务器405被实现为在计算节点301-304中的每个上运行的内核,其被调整为使资源利用最小化。

图5是示出根据实施方案的将神经网络的更新参数从集群中的一个计算节点单侧集体异步传输到其他计算节点的框图。计算节点301-304使用反向传播技术训练神经网络,包括向前和向后传递计算。在计算节点301中,处理单元402在神经网络404中执行向前传递,以基于训练实例提供的输入集合并基于针对神经网络404中的神经元的先前建立的参数(例如,权重和偏差)来计算神经网络的最终输出。先前建立的参数可以是初始参数集合,或者是从其他计算节点接收的远程参数。处理单元402使用神经网络中第一层神经元中的初始或远程参数基于训练实例提供的输入集合来计算第一层的中间输出。针对本地神经网络中每个后续神经元层,处理单元402基于本地神经网络中至少一个先前层的中间输出而计算所述层的中间输出。每一层的输出包括一个或多个输出信号。最终层的输出是神经网络的最终输出。

在一个实施方案中,响应于从集群209中的另一个计算节点接收到更新的远程参数,计算节点301异步地更新神经网络404中的参数。因此,在执行向前传递期间更新参数。换句话说,处理单元402在接收远程参数之前开始向前传递的执行,并且在用远程参数更新神经网络之后,完成向前传递的执行以基于新更新的远程参数来计算输出。

在计算节点301中的通信网络接口401处,从集群209中的其他计算节点302-304接收远程参数。通信网络接口401响应于接收到远程参数而用远程参数异步地更新神经网络。即,参数更新的定时与接收节点是否已经完成向前传递或者一个或多个传输节点是否已经完成它们各自的向后传递无关。在一个实施方案中,接收远程参数足以引起神经网络的更新发生。

在一个实施方案中,集群中的其他计算节点302-304中的每个以类似的方式在它们各自的神经网络实例中更新参数。因此,在每个计算节点302-304中,计算节点的通信网络接口在执行向前传递期间(即,在向前传递开始之后并且在向前传递完成之前)利用接收到的远程参数来更新神经网络,以便使用最新参数计算向前传递的输出。

在一个实施方案中,计算节点301的通信网络接口401支持直接存储器写入机制,该机制允许远程装置经由通信网络接口401直接写入本地存储器403,而无需处理单元402和计算节点301的操作系统的参与。因此,通信网络接口401通过用远程参数异步地更新其神经网络404的本地副本,来对从远程计算节点接收更新参数做出响应。这需要执行直接存储器写入以将远程参数存储在本地存储器403中存储神经网络404参数的位置处。

在计算节点301中计算向前传递之后,处理单元402在本地神经网络404中执行向后传递以确定神经网络的更新参数501。处理单元402通过针对本地神经网络404中的每一层,基于从向前传递确定的最终输出与用于经由向前传递生成最终输出的训练实例的期望输出之间的误差来计算该层的更新参数集合,而执行向后传递。在执行向后传递期间,计算节点301直接将更新参数501细粒度地传达到其他计算节点302-304,而不是经由任何中间装置(例如,集中式参数服务器)传输更新参数。

在一个实施方案中,更新参数501由参数服务器405传输到其他计算节点302-304中的参数服务器415-425,因为每一层的参数通过向后传递计算,然后再完成整个向后传递。例如,可以在执行向后传递期间响应于向后传递中的层或层的子集的完成而执行更新参数501的传输。由于更新参数501是在整个向后传递完成之前传输的,因此参数501表示通过整个向后传递计算的参数的子集(例如,一层中的神经元或层子集中的神经元的参数)。

处理单元402通过执行向后传递的段502(包括对神经网络404中的层子集(包括层ln’-l2’)的计算)来生成更新参数501子集。在一个实施方案中,段502包括神经网络404的多个层,如图5所示。在替代实施方案中,段502包括不多于单个层。因此,更新参数501可以包括针对多个层或单个层中的神经元的参数。

在一个实施方案中,参数服务器405响应于在执行向后传递时每第n层的完成而传输更新参数子集。例如,向后传递的段502包括n个层,并且更新参数501子集在段502完成之后传输,并且包括针对n个层中的神经元的参数。参数服务器405还可以在执行向后传递期间响应于网络状况、计算资源利用或其他因素调整n。在一个实施方案中,参数服务器405确定更新参数501是否与该层的对应先前参数(即,从向后传递的较早迭代计算的)不同,并且如果参数没有改变,则不传输任何更新参数501。

在执行向后传递期间响应于处理单元402确定针对神经网络中的n个层中的神经元的更新参数,由参数服务器405异步地执行更新参数的传输。换句话说,传输的定时与计算节点301中是否已开始或完成任何特定的向后传递或向前传递无关。该参数更新机制还允许处理单元402在传输从前一段502计算出的更新参数501的同时,继续执行向后传递的下一段505。

另外,接收到更新参数501的计算节点302-304在接收到更新参数501之后,在可行的范围内尽快对它们各自的神经网络副本执行急速更新。在一个实施方案中,这是通过将更新参数501直接存储器写入节点302-304的存储器中来实现的。分别在计算节点302和304中执行的向前传递段503和504能够基于由向后传递段502计算的最新参数(例如,神经元权重和偏差)来计算输出,而无需等待整个向后传递在节点301中完成。例如,甚至在节点301中完成向后传递之前,向前传递段503和504也使用由向后传递段502确定的层l2的更新权重。

异步参数更新允许不同的计算节点同时处理不同的训练实例。例如,当计算节点301-304用于在每个节点中使用相同训练实例集合来训练神经网络时,节点301-304中的每个都可以在任何给定时间在相同或不同的训练实例上执行向前传递或向后传递。如图5所示,计算节点301执行向后传递(包括段502),而计算节点302和304执行向前传递(分别包括段503和504)。计算节点301中的向前传递还可以与针对计算节点302-304中的一个或多个执行向后传递同时执行。

图6是示出根据实施方案的用于训练神经网络的过程600的流程图。训练过程600在计算节点集群209中的计算节点301-304中的每个中类似地执行。在图6中,执行该过程的计算节点(例如,计算节点301)被称为本地计算节点,而集群209中的其他节点(例如,计算节点302-304)被称为远程计算节点。本地计算节点和远程计算节点中的每一个都可以同时或在不同时间执行过程600的特定部分。

过程600在框601处开始。在框601处,处理逻辑402开始针对计算节点301的本地神经网络404执行向前传递。向前传递接受训练实例提供的输入,并使用神经网络404来基于提供的输入生成输出。

在框603处,计算节点301确定是否已从远程计算节点302-304中的一个或多个接收到远程参数。远程参数是通过在远程计算节点中执行向后传递而生成的更新参数,并且经由通信网络310传输到本地计算节点301。远程参数由本地计算节点301在通信网络接口401处接收。在框603处,如果尚未接收到远程参数,则过程600在框607处继续,其中处理单元402使用神经网络的现有参数继续执行向前传递。在框603处,如果已经接收到远程参数,则过程600在框605处继续。

在框605处,响应于接收到远程参数,计算节点301用远程参数更新其神经网络副本。在一个实施方案中,通信网络接口401包括逻辑电路,该逻辑电路用于执行将远程参数直接存储器写入存储神经网络404参数的本地存储器403。因此,通信网络接口401通过将接收到的远程参数直接写入存储器403中存储对应神经网络参数的存储器位置来更新本地神经网络404。在一个实施方案中,响应于接收到远程参数,用接收到的远程参数异步地更新神经网络404,以便正在进行的向前传递使用更新参数。因此,计算节点301从其他计算节点302-304接收远程参数,并因此在执行向前传递期间的任何时间更新本地神经网络404中的参数。

在框607处,在用远程参数更新神经网络404之后,处理单元402继续执行向前传递,以基于远程参数计算训练实例的输出。例如,远程参数可以用作神经网络的神经元中的权重和/或偏差,其中权重和/或偏差会影响从向前传递生成的输出。

在框609处,如果向前传递未完成(即,尚未针对神经网络中的所有层执行计算),则过程600返回到框603。因此,处理单元402在根据任何接收到的远程参数来更新神经网络中的参数(如在框603-605处提供)时执行向前传递(如在框607处提供),直到在框609处完成向前传递。当完成向前传递时,过程600在框611处继续。

在框611处,处理单元402在计算节点301中开始执行向后传递。在向后传递期间,处理单元402确定训练实例的期望输出与由向前传递生成的最终输出之间的差异,然后以向后的顺序使该误差传播通过神经网络的层,以确定每个神经元对误差的贡献。基于每个神经元各自的贡献调整它们的参数以减小误差。因此,向后传递计算确定了神经网络的更新参数集合。

在框613处,针对神经网络404中的神经元层的子集执行向后传递的段502;因此,确定更新参数的对应子集。在一个实施方案中,层子集仅包括一层;可替代地,层子集包括神经网络404中的一个以上的层并且少于所有的层(例如,如图5所示)。

在框615处,参数服务器405将从框613确定的更新参数子集传输到远程计算节点302-304。在一个实施方案中,参数服务器405避免传输未被向后传递改变的参数。因此,参数服务器405响应于确定一个或多个层的子集的更新参数子集与该子集的对应先前参数的集合不同而传输更新参数501。在一个实施方案中,参数服务器405仅传输相对于对应先前参数已改变的参数,其中对应先前参数是在正在进行的向后传递之前的最近的向前传递期间用于相同神经元的最近使用的参数值。

更新参数501子集的传输是在执行向后传递期间响应于确定针对向后传递的段502中的层子集的更新参数501而异步地执行。在一个实施方案中,段502包括多个层ln'-l2',使得响应于段502中的最后一层的完成而异步地传输更新参数501。在替代实施方案中,向后传递的段502包括不超过单个层,使得在执行向后传递期间响应于确定单个层的更新参数501而异步地传输更新参数501子集。

在框617处,如果向后传递未完成(即,向后传递尚未遍历神经网络中的所有层),则过程600返回到框613。在框613处,处理单元402继续执行针对尚未处理的层的向后传递。在一个实施方案中,传输更新参数501子集(如在框615处提供)与继续执行针对本地神经网络中一个或多个后续层的向后传递(如框613处提供)同时执行。

因此,重复框613-617,直到完成向后传递。在一个实施方案中,向后传递包括多个段,每个段遍历神经网络中的层的不同子集。因此,更新参数501的子集是响应于在执行向后传递时每个段的完成而传输的许多参数子集之一。在一个实施方案中,每个段遍历n个层,并且更新参数的每个子集因此包括n个层的参数。在一些实施方案中,在执行向后传递期间响应于网络状况、计算资源利用或其他因素,动态地调整n的值。在框617处,如果向后传递完成,则过程600返回到框601以开始下一后续向前传递。

在一个实施方案中,对在执行向后传递期间从其他节点302-304接收的远程参数更新进行排队,直到向前传递开始。因此,在框601处开始向前传递之前,用排队的远程参数来更新神经网络404。可替代地,在执行向后传递期间接收的远程参数可用于在执行向后传递期间(即,在向后传递完成之前)更新神经网络。在一个实施方案中,通过与在框603和605处提供的类似过程,用在执行向后传递期间(在框611-617处)接收到的任何远程参数来更新神经网络404,因为这些参数是经由对本地存储器403的直接存储器写入而接收到的。

其他计算节点302-304中的每一个都包括类似于计算节点301的部件;因此,这些节点中的每一个也执行类似于过程600的过程。在一个实施方案中,计算节点301-304中的每个执行类似的反向传播过程,包括向前传递和向后传递,以计算针对同一神经网络的不同部分的参数。特别地,计算节点301-304中的每个存储其自身的神经网络副本,并计算针对神经网络中不同神经元子集的参数。在一个实施方案中,神经网络中的每个神经元都被包括在不超过这些神经元子集之一中。例如,节点301可以计算针对第一神经元子集的参数,而节点302计算针对第二神经元子集的参数,其中第一神经元子集和第二神经元子集是互斥集合。在替代实施方案中,神经网络中的每个神经元都被包括在一个以上的神经元子集中。每个计算节点301-304基于其自身的计算并基于从其他计算节点接收的更新参数来更新其自身的神经网络副本中的参数。

将计算节点301视为本地计算节点,则远程计算节点302-304还各自执行过程600以计算不同神经元子集的参数。在节点301-304的任一个中执行向后传递和向前传递的时间与在其他节点中向后和向前传递的执行时间无关。

因此,本地计算节点301中的向后传递可以与在远程计算节点302-304中的一个或多个中的向前传递同时执行,以便由本地计算节点301在本地向后传递期间传输的更新参数用于在远程计算节点302-304在其各自的向前传递期间更新其神经网络的远程副本。远程计算节点302-304中的每个都执行其自身版本的框603,并响应于从本地计算节点301接收到更新参数501的子集,用接收到的参数501更新其神经网络的副本,如在框605处类似地提供。在一个实施方案中,在每个远程计算节点处接收到的参数501用于神经元子集,该神经元子集与在远程计算节点中为其计算参数的神经元集合互斥。每个远程计算节点302-304基于更新参数501完成其自身的远程向前传递,该更新参数是在存储在远程计算节点中的它们各自的神经网络副本中被更新的。

远程计算节点302-304中的一个或多个中的向后传递(类似于框611-617)可以与本地计算节点301的本地神经网络404中向前传递的执行同时执行。在这种情况下,从远程向后传递确定的更新参数被传输到本地计算节点301,并在执行本地向前传递期间用于更新本地神经网络404。远程计算节点302-304中的每个在其自身的神经网络副本中执行远程向后传递,以确定用于其分配的神经元子集的更新参数。

通过计算节点301-304中的每个中的训练过程600的操作,每个计算节点执行向后传递(其中在确定更新参数时以细粒度异步地传输所述参数),并且执行向前传递(其中在执行向前传递期间在接收到神经网络中的参数时异步地更新所述参数)。使用该方法,在一个计算节点中确定更新参数与在另一个计算节点中更新参数之间的延迟被最小化。由于网络负载可以随着时间的推移更均匀地分布,因此更新的细粒度以及所导致的更新消息的更小大小降低了网络拥塞的可能性。此外,由于消息和更新的异步性质,成功发送和接收更新消息不在训练过程的关键路径上。总体而言,这将导致训练过程更快地收敛,同时更高效地利用可用的网络和计算资源。

训练神经网络404的方法600包括:在本地计算节点301处,从一个或多个远程计算节点302-304的集合接收远程参数;在本地计算节点301中的本地神经网络404中开始执行向前传递,以基于所述远程参数确定输出;在本地神经网络404中开始执行向后传递以确定本地神经网络404的更新参数501;并且在完成所述向后传递之前,将更新参数501子集传输到远程计算节点302-304的集合。

在方法600中,向后传递的执行包括:计算针对本地神经网络404中第一层的更新参数501子集,并且响应于确定该层的更新参数501子集与该层的对应先前参数的集合不同而执行传输更新参数501子集。

在方法600中,向后传递的执行包括:计算针对本地神经网络404中第一层的更新参数501子集,其中传输更新参数501子集与针对本地神经网络404中一个或多个后续层执行向后传递同时执行。

在方法600中,更新参数501的子集是在执行向后传递时响应于每第n层的完成而传输的更新参数501的多个子集之一,其中方法600还包括在执行向后传递期间动态地调整n的值。

在方法600中,在接收到远程参数之前开始执行向前传递,并且方法600还包括用远程参数更新本地神经网络404,并且完成向前传递的执行以基于远程参数计算输出。

方法600还包括:响应于接收到远程参数而用远程参数异步地更新本地神经网络404,其中在执行向后传递期间响应于确定针对神经网络404中多个层之一的更新参数501,异步地执行传输更新参数501子集。

方法600还包括:响应于接收到远程参数,通过执行将远程参数直接存储器写入本地计算节点301中的本地存储器403,用远程参数更新本地神经网络404。

在方法600中,确定针对本地神经网络404中第一神经元子集的更新参数501,并且方法600还包括:用远程参数更新本地神经网络404中的第二神经元子集,其中第一神经元子集和第二神经元子集是互斥的。

方法600还包括:针对远程计算节点302-304的集合中的每个远程计算节点:在远程计算节点处,从本地计算节点301接收更新参数501子集;基于更新参数501,在远程计算节点中存储的本地神经网络404的副本中执行远程向前传递;在本地神经网络404的副本中执行远程向后传递期间确定远程参数;并且在完成远程向后传递之前,将远程参数从远程计算节点传输到本地计算节点301。

方法600还包括:与在远程计算节点302-304的集合中的至少一个中执行远程向后传递同时在本地神经网络404中执行向前传递。

计算节点301包括:通信网络接口401,其被配置为从一个或多个远程计算节点302-304的集合接收远程参数;处理单元402,其被配置为在神经网络404中执行向前传递以基于远程参数计算输出,并且在神经网络404中执行向后传递以确定神经网络404的更新参数501;以及参数服务器405,其与处理单元402耦接并且被配置为在完成向后传递之前,将更新参数501子集传输到远程计算节点302-304的集合。

在计算节点301中,处理单元402还被配置为通过计算针对神经网络404中的层的更新参数501子集来执行向后传递,并且参数服务器405还被配置为响应于确定更新参数501子集与该层的对应先前参数的集合不同而传输更新参数501子集。

在计算节点301中,参数服务器405被配置为响应于在执行向后传递时每第n层的完成而传输更新参数501的多个子集中的一个或多个,并且处理单元402还被配置为在执行向后传递期间动态地调整n的值。

计算节点301还包括与通信网络接口401耦接的存储器403,其中通信网络接口401还被配置为通过经由直接存储器写入将远程参数存储在存储器403中来更新神经网络404,并且其中处理单元402还被配置为在接收到远程参数之前开始执行向前传递,并且在用远程参数更新神经网络404之后,完成向前传递的执行以基于远程参数计算输出。

在计算节点301中,通信网络接口401还被配置为响应于接收到远程参数而用远程参数异步地更新神经网络404,并且参数服务器405还被配置为在执行向后传递期间响应于确定针对神经网络404中多个层之一的更新参数501而异步地传输更新参数501子集。

计算系统200包括通信网络310和与通信网络310耦接的多个计算节点301-304,其中多个计算节点301-304中的每个计算节点都包括:通信网络接口401,其被配置为从多个计算节点301-304中的其他计算节点接收远程参数;处理单元402,其被配置为在神经网络404中执行向前传递以基于远程参数计算输出,并且在神经网络404中执行向后传递以确定神经网络404的更新参数501;以及参数服务器405,其与处理单元402耦接并且被配置为在完成向后传递之前,将更新参数501子集传输到其他计算节点。

在计算系统200中,针对多个计算节点301-304中第一计算节点的向前传递与针对多个计算节点301-304中第二计算节点的向后传递的执行同时执行。

在计算系统200中,多个计算节点301-304中的每个计算节点被配置为确定针对神经网络404中的不同神经元子集的更新参数501。

在计算系统200中,针对多个计算节点301-304中的每个计算节点,计算节点的通信网络接口401还被配置为在开始向前传递之后并且在完成向前传递之前用远程参数更新神经网络404。

在计算系统200中,针对多个计算节点301-304中的每个计算节点,计算节点的通信网络接口401还被配置为响应于接收到远程参数,通过执行将远程参数直接存储器写入本地计算节点301中的本地存储器403来用远程参数异步地更新神经网络404,并且计算节点的参数服务器405还被配置为在执行向后传递期间,响应于处理单元402确定针对神经网络404中多个层之一的更新参数501而异步地传输更新参数501子集。

如本文所用,术语“耦接到”可意味着直接或通过一个或多个中间部件间接地耦接。通过本文所述的各种总线提供的任何信号可以与其他信号进行时分复用,并且可以通过一根或多根公共总线提供。另外,电路部件或框之间的互连可以显示为总线或单根信号线。总线中的每根可以可替代地是一根或多根单信号线,并且单信号线中的每根可以可替代地是总线。

某些实施方案可以实现为计算机程序产品,其可以包括存储在非暂时性计算机可读介质上的指令。这些指令可以用于对通用或专用处理器进行编程以执行所描述的操作。计算机可读介质包括用于以机器(例如,计算机)可读的形式(例如,软件、处理应用)存储或传输信息的任何机制。非暂时性计算机可读存储介质可以包括但不限于磁存储介质(例如,软盘);光存储介质(例如,cd-rom);磁光存储介质;只读存储器(rom);随机存取存储器(ram);可擦可编程存储器(例如,eprom和eeprom);闪存或另一类型的适合存储电子指令的介质。

另外,一些实施方案可以在分布式计算环境中实践,计算机可读介质存储在其上和/或由多于一个计算机系统执行。另外,可以在连接计算机系统的传输介质间拉动或推动计算机系统之间传递的信息。

通常,表示计算系统200的数据结构和/或其承载在计算机可读存储介质上的部分可以是数据库或其他数据结构,其可以由程序读取并直接或间接地用于制造包括计算系统200的硬件。例如,数据结构可以是采用高级设计语言((hdl),诸如verilog或vhdl)的硬件功能的行为级描述或寄存器传送级(rtl)描述。所述描述可以由合成工具读取,该合成工具可对描述进行合成以从合成库产生包括一系列门的网表。所述网表包括门集合,该门集合还表示包括计算系统200的硬件的功能性。然后,可以放置并且路由该网表以产生描述要应用于掩模的几何形状的数据集。所述掩模然后可以用于各种半导体制造步骤中,以产生对应于计算系统200的一个或多个半导体电路。可替代地,计算机可读存储介质上的数据库可以是网表(带有或没有合成库)或数据集(根据需要),或图形数据系统(gds)ii数据。

尽管以特定顺序显示和描述了本文方法的操作,但是可以更改每种方法的操作顺序,以便可以以相反的顺序执行某些操作或者以便可以至少部分地与其他操作同时执行某些操作。在另一个实施方案中,不同操作的指令或子操作可以是间歇和/或交替的方式。

在以上说明书中,已经参照其具体示例性实施方案描述了实施方案。然而,将明显的是:在不脱离如在所附权利要求书中阐述的实施方案的更广范围的情况下,可以对其做出各种修改和改变。因此,说明书和附图被认为是说明性的意义而不是限制性的意义。

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