CN114402293A - 具有持续且异步更新的流水线式神经网络处理 - Google Patents

具有持续且异步更新的流水线式神经网络处理 Download PDF

Info

Publication number
CN114402293A
CN114402293A CN202080065102.5A CN202080065102A CN114402293A CN 114402293 A CN114402293 A CN 114402293A CN 202080065102 A CN202080065102 A CN 202080065102A CN 114402293 A CN114402293 A CN 114402293A
Authority
CN
China
Prior art keywords
layers
neural network
layer
computing resource
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080065102.5A
Other languages
English (en)
Inventor
A·瓦格纳
T·米特拉
S·M·库尔卡尼
M·特伦布莱
S·S·巴拉德瓦杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN114402293A publication Critical patent/CN114402293A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Image Analysis (AREA)

Abstract

描述了用于具有持续且异步更新的流水线式神经网络处理的系统和方法。用于处理包括L个层(其中L是大于2的整数)的神经网络的方法包括:在一组计算资源之中划分L个层,该一组计算资源被配置成处理与L个层中的每个层相关联的前向传递和反向传递。方法还包括:使用一组计算资源,发起前向传递和反向传递的处理。方法还包括:在完成与L个层中的第一层相关联的第一组前向传递和第一组反向传递后,当梯度对更新与第一层相关联的参数可用时,发起与第一层相关联的参数的更新,而无需等待计算与L个层中的其余任何层相关联的梯度。

Description

具有持续且异步更新的流水线式神经网络处理
背景技术
神经网络技术用于执行复杂的任务,诸如阅读理解、语言翻译、图像识别或语音识别。已经部署了机器学习服务(诸如基于自然语言处理(NLP)、递归神经网络(RNN)、卷积神经网络(CNN)、长短期记忆(LSTM)神经网络、或门控递归单元(GRU)的那些服务),来执行这种复杂的任务。虽然已经部署了这些类型的神经网络,但需要在底层架构中进行继续改进以执行这些复杂的任务。
发明内容
在一个示例中,本公开涉及一种用于处理包括L个层的神经网络的方法,其中L是大于二的整数。该方法可以包括在一组计算资源之中划分L个层,该一组计算资源被配置成处理与L个层中的每个层相关联的前向传递和反向传递。该方法还可以包括使用一组计算资源来发起前向传递和反向传递的处理。该方法还可以包括:在完成与L个层中的第一层相关联的第一组前向传递和第一组反向传递后,当梯度对更新与第一层相关联的参数可用时,发起与第一层相关联的参数的更新,而无需等待计算与L个层中的其余任何层相关联的梯度。
在另一个示例中,本公开涉及一种用于处理包括L个层的神经网络的系统,其中L是大于二的整数。该系统可以包括一组计算资源,该一组计算资源被配置成处理与L个层中的每个层相关联的前向传递和反向传递,其中L个层在该一组计算资源之中被划分,其中一组计算资源中的每个计算资源被配置成:当梯度对更新与L个层中的层相关联的权重时,异步发起与该层相关联的权重的更新,而不必接收与L个层中的其余任何层相关联的梯度。
在又一示例中,本公开涉及一种用于处理包括L个层的神经网络的方法,其中L是大于二的整数。该方法可以包括:作为流水线的第一级的一部分,使用第一计算资源来发起与L个层中的第一层相关联的第一前向传递的处理。该方法还可以包括:作为流水线的第二级的一部分:(1)使用第一计算资源,发起与L个层中的第二层相关联的第一前向传递的处理,以及(2)使用第二计算资源,发起与L个层中的第一层相关联的第二前向传递的处理。该方法还可以包括:作为流水线的第三级的一部分:(1)使用第一计算资源,发起与L个层中的第三层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第二层相关联的第二前向传递的处理,以及(3)使用第三计算资源,发起与L个层中的第一层相关联的第三前向传递的处理。该方法还可以包括:作为流水线的第四级的一部分:(1)使用第一计算资源,发起与L个层中的第四层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第二层相关联的第二前向传递的处理,以及(3)使用第三计算资源,发起与L个层中的第一层相关联的反向传递。该方法还可以包括:作为流水线的第五级的一部分:(1)使用第一计算资源,发起与L个层中的第五层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第一层相关联的第二反向传递的处理,以及(3)当与关联与L个层中的第一层的权重相关联的梯度被累加时,使用第三计算资源,更新与L个层中的第一层相关联的权重。
提供本发明内容以简化形式介绍一些概念,这些概念在下面的具体实施方式中进一步被描述。本发明内容不旨在标识要求保护的主题的关键特征或基本特征,也不旨在用于限制要求保护的主题的范围。
附图说明
本公开以示例的方式被说明并且不受附图限制,其中相同的附图标记指示相同的元件。图中的元件出于简单和清楚而被图示并且不一定按比例绘制。
图1示出了来自变换器的双向编码器表示(BERT)实现的示例架构,该架构可以使用流水线式模型并行性来被训练;
图2示出了根据一个示例的变换器的框图;
图3示出了根据一个示例的系统,具有将变换器划分到多个计算资源;
图4示出了根据一个示例的被配置成处理神经网络模型的计算资源的实现;
图5示出了图示根据一个示例的用于训练神经网络模型的梯度累加的图解;
图6示出了根据一个示例的在神经网络模型的训练期间进行持续且异步权重更新的流水线图;
图7示出了根据一个示例的用于在神经网络模型的训练期间发起权重的更新的方法的流程图;以及
图8A和图8B示出了根据一个示例的用于在神经网络模型的训练期间更新权重的另一种方法的流程图。
具体实施方式
本示例中公开的示例涉及具有持续异步更新的神经网络处理。某些示例涉及神经网络处理,其中神经网络的层、子层或甚至更小的部分被划分以实现并行性。某些示例还涉及模型并行性。作为示例,在模型并行性中,系统中的不同机器可以负责单个网络的不同部分中的计算-例如,神经网络的每个层、子层或甚至更小的部分可以被指派给系统中的不同机器。因此,作为模型并行性的一部分,神经网络模型可以在不同机器(例如CPU、GPU、IPU、FPGA或其他类型的机器)之中被拆分,但每个机器可以使用相同的数据。作为示例,模型并行性可以通过在机器之中拆分权重来被实现。
通常,神经网络由需要跨计算资源被高效划分的许多数值运算组成。针对这种划分存在很多方法,方法中的每种方法高度特定于模型和架构。一种方法是将神经网络层拆分到顺序计算资源上以实现流水线并行性。流水线并行性对于处理前馈网络可以非常高效,但是在反馈和权重更新被应用时变得复杂得多。针对神经网络的一种技术是基于小批次来更新权重。然而,该方法对于流水线式模型来说效率低下,因为它在继续之前要求将内容从流水线中冲刷掉。冲刷操作要求流水线在小批次结束时被清空,并且在下一个小批次开始时被重新填充,导致效率低下。
本公开中的某些示例涉及在神经网络模型的训练期间,持续且异步地更新权重。权重更新在反向传播期间被应用。作为示例,损失函数相对于网络(或网络的一部分)中的权重的梯度被计算。然后,梯度被馈送给优化方法,该优化方法使用梯度来更新权重以最小化损失函数。反向传播的目标是更新网络中的权重中的每个权重(或权重中的至少一些权重),使得权重使实际输出更接近目标输出,从而将每个输出神经元和作为整体的网络的误差最小化。
作为模型并行性的一部分,网络可以被划分为不同的神经计算单元,神经计算单元中的每个神经计算单元可以由计算资源独立处理。每个计算资源可以被实现为单独的设备(例如,GPU、TPU或IPU),或者计算资源可以共享设备。因此,在一个示例中,每个设备(例如,IPU)可以包括两个计算资源,该两个计算资源可以处理与神经网络模型相关联的两个不同计算单元(例如,两个不同层)。
使用来自变换器的双向编码器表示(BERT)模型的示例来解释流水线式模型并行性。BERT模型可以用于句子的词语补全以及其他自然语言处理(NLP)相关问题。图1示出了可以使用流水线式模型并行性来被训练的BERT实现100的示例架构。BERT实现100可以用于学习文本中词语之间的上下文关系。BERT实现100可以包括输入级,输入级包括嵌入层104和后处理层106。BERT实现100还可以包括变换器110,变换器110包括变换器0 112、变换器1114和变换器L 116。BERT实现100还可以包括解码/损失层120。嵌入层104可以将每个输入词元(例如,序列中的词语)转换成向量表示。向量大小可以是768维向量或1024维向量。后处理层106可以执行附加操作,包括位置嵌入、句子嵌入和词元掩蔽。位置嵌入可以用于示出序列内的词元位置。句子嵌入可以用于将句子映射到向量。词元掩蔽可以包括利用掩蔽词元替换每个序列中某个百分比的词语。变换器将在后面详细描述。解码/损失层120可以基于训练产生预测。
图2示出了根据一个示例的变换器200的框图。变换器200可以与图1的变换器0112、变换器1 114和变换器L 116中的任一个变换器对应。变换器200可以使用自注意力,将输入序列转换为输出序列。变换器200可以被配置成使得它可以处理批次大小为B的一批层。序列(S)长度可以指每个序列中正被处理的词语的数目。变换器200可以被配置成具有12或24个隐藏(H)层。向量大小(也被称为隐藏(H)大小)可以指定每个词语是被转换为768维向量还是被转换为1024维向量。中间(I)大小可以是3072维向量或4096维向量。
继续参考图2,变换器200可以包括全连接网络(FCN)层,包括FCN(查询)202、FCN(键)204和FCN(值)206。自注意力可以将查询和一组键-值对映射到输出。注意力功能可以使用SoftMax块210来被实现。变换器200还可以包括附加的全连接网络(FCN)层,包括FCN(投影)214、FCN(中间)218和FCN(输出)220。FCN(中间)218可以涉及与在输出(FCN(输出)220)中表示的词元相同的词元的中间表示。就与变换器相关联的操作的复杂性而言,全连接层是主要因素。
图3示出了根据一个示例的系统300,其中将变换器划分到计算资源。在该示例中,计算资源可以是处理核和存储器的任何组合。流水线可以以使得流水线中的每个计算资源(例如,处理器或处理器和存储器的组合)处置大致相同量的操作的方式来被构造。这可以有助于确保有效的流水线利用率。在系统300中,BERT模型的嵌入层312和后处理层314可以被配置成由计算资源P0 310处理。变换器0 322可以被配置成由计算资源P1 320处理。变换器1 332可以被配置成由计算资源P2 330处理。变换器5 342可以被配置成由计算资源P5340处理。变换器6 352可以被配置成由计算资源P6 350处理。变换器7362可以被配置成由计算资源P7 360处理。变换器11 372可以被配置成由计算资源P12 370处理。BERT模型的解码/损失层382可以被配置成由计算资源P13 380处理。尽管图3示出了被划分到单独计算资源的每个变换器,但变换器可以共享计算资源。因此,作为示例,每个计算资源可以划分两个变换器。每个计算资源可以使用任意数目的图形处理单元(GPU)、计算机处理单元(CPU)、存储器(例如,SRAM或其他类型的存储器)或现场可编程门阵列(FPGA)来被实现。专用集成电路(ASIC)、可擦除和/或复杂可编程逻辑器件(PLD)、可编程阵列逻辑(PAL)设备和通用阵列逻辑(GAL)设备也可以用于实现计算资源。此外,虽然图3描述了BERT模型的划分,但是任何可序列化的神经网络模型都可以被划分并被处理,只要它使用具有反向传递的梯度下降。
图4示出了根据一个示例的被配置成处理神经网络模型的计算资源400的实现。在该示例中,计算资源400可以与作为图3的一部分描述的计算资源中的每个计算资源对应。计算资源400可以包括处理核和存储器的两个集合,这两个集合经由交换结构440耦合。第一集合410可以包括处理核P 412、P 414、P 416、P 418、P 420、P 422、P 424和P 426。处理核可以被布置成列并且可以访问本地存储器(例如,SRAM或BRAM)。第一集合410可以包括本地存储器M 430、M 432、M 434和M 436。第二集合450可以包括处理核P 452、P 454、P 456、P458、P 460、P 462、P 464和P 466。处理核可以被布置成列并且可以访问本地存储器(例如,SRAM或BRAM)。第二集合450可以包括本地存储器M 470、M 472、M 474和M 476。这两个集合可以经由交换结构440进行通信。作为示例,处理核可以经由消息传递或其他技术与其他处理核进行通信。虽然图4示出了以某种方式布置的计算资源400的某个数目的组件,但是可以存在更多或更少数目的以不同方式布置的组件。处理核可以使用FPGA、CPU、GPU或其他处理布置来被实现。映像文件可以用于配置或重新配置FPGA。可以经由网络链路或本地链路(例如,PCIe)从主机CPU递送映像文件或类似文件或程序。被包括在映像文件中的信息可以用于编程FPGA的逻辑块和可重新配置的互连,以实现期望的功能性。期望的功能性可以被实现为支持可以经由计算、联网和存储资源的组合(诸如经由数据中心或用于递送服务的其他基础设施)被提供的任何服务。
所训练的模型可以被部署在云计算环境中。云计算可以指用于使能对可配置计算资源的共享池进行按需网络访问的模型。例如,可以在市场中采用云计算,以提供对可配置计算资源的共享池的无处不在和方便的按需访问。可配置计算资源的共享池可以经由虚拟化被快速提供,并且以较低的管理工作量或服务提供方交互被发布,并且然后对应地被缩放。云计算模型可以包括各种特性,诸如例如按需自助服务、广泛的网络访问、资源池化、快速弹性、经测量的服务等等。云计算模型可以用于暴露各种服务模型,诸如,例如硬件即服务(“HaaS”)、软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。还可以使用不同的部署模型(诸如私有云、社区云、公共云、混合云等)来部署云计算模型。
除了BERT模型之外,也可以使用本公开中描述的示例来实现机器学习服务,诸如基于递归神经网络(RNN)、卷积神经网络(CNN)、长短期记忆(LSTM)神经网络或门控递归单元(GRU)的那些机器学习服务。在一个示例中,与服务相关的内容或其他信息(诸如词语、句子、图像、视频或其他这样的内容/信息)可以被转换成向量表示。向量表示可以与诸如RNN、CNN、LSTM或GRU的技术对应。在一个示例中,神经网络模型可以包括许多层,并且每个层可以被编码为权重的矩阵或向量,权重的矩阵或向量以已经经由神经网络的离线训练获得的系数或常数的形式来被表示。节点中的可编程硬件逻辑块可以处理矩阵或向量以执行各种操作,包括针对表示与服务有关的编码信息的输入向量的乘法、加法和其他运算。在一个示例中,可以通过使用诸如图划分的技术来跨多个节点地划分和固定权重的矩阵或向量。作为该过程的一部分,大型神经网络可以被转换为中间表示(例如,图),然后中间表示可以被划分为更小的表示(例如,子图),并且对应于每个子图的权重矩阵中的每个矩阵可以被固定到节点的片上存储器。在一个示例中,可以将模型转换为固定大小的矩阵和向量。这样,处理器的资源可以并行地对固定大小的矩阵和向量进行操作。
以LSTM为例,LSTM网络可以包括重复的RNN层或其他类型的层的序列。LSTM网络的每个层可以在给定时间步骤消耗输入(例如来自之前时间步骤的层的状态),并且可以产生一组新的输出或状态。在使用LSTM的情况下,单个内容组块(chunk)可以被编码成单个向量或多个向量。作为示例,词语或词语组合(例如,短语、句子或段落)可以被编码为单个向量。每个组块可以被编码到LSTM网络的单独层(例如,特定时间步长)中。可以使用一组等式来描述LSTM层,例如下面的等式:
it=σ(Wxixt+Whiht-1+Wcict-1+bi
ft=σ(Wxfxt+Whfht-1+Wcfct-1+bf)
ct=ftct-1ittanh(Wxcxt+Whcht-1+bc)
ot=σ(Wxoxt+Whoht-1+Wcoct+bo)
ht=ottanh(ct)
在该示例中,在每个LSTM层内部,可以使用向量运算(例如,点积、内积或向量加法)和非线性函数(例如,sigmoid、双曲线和正切)的组合来处理输入和隐藏状态。在某些情况下,大多数计算密集型操作可能来自点积,点积可以使用稠密矩阵向量和矩阵-矩阵乘法例程来被实现。在一个示例中,向量运算和非线性函数的处理可以被并行执行。
图5示出了图示根据一个示例的用于训练神经网络模型的梯度累加的图500。在神经网络中更新权重的技术之一是批次随机梯度下降,它涉及在更新权重之前通过网络运行多个样本。存在不同的方法来处理更大的批次大小,但它们都要求大量的存储器。在该示例中,为了减少存储器需求,可以使用梯度累加。作为梯度累加的一部分,在每次反向传递之后,所计算的梯度(例如,dW)可以被添加到先前累加的梯度(例如,W)。可以使用以下等式:
Figure BDA0003549710680000091
梯度累加可以在硬件中被执行(例如,通过实现上述等式),硬件可以被包括在前面描述的计算资源中。硬件实现可以包括加法器510和块512,块512可以计算块平均。块平均可以在时间K或在另一个时间被复位。备选地,块平均可以在某个指定数目的反向传递之后被复位。梯度累加的使用可以允许计算资源(例如,图3中所示的处理器)保持对片上权重的改变。在权重更新之后,片上累加的梯度可以被冲刷,并且累加过程可以重新开始。虽然图5示出了累加梯度的某种方式,但也可以使用其他方式。此外,累加的梯度可以用于更新权重以外的参数。这样的参数包括与神经网络模型相关联的任何自适应参数,包括偏置和批次归一化参数。
图6示出了根据一个示例的在神经网络模型的训练期间进行持续且异步权重更新的流水线图600。该流水线图600示出了针对每个流水线级的前向传递(由字母M标示)、反向传递(由字母B标示)和权重更新(由字母W标示)的执行。在该示例中,三个处理器P1、P2和P3被调度来执行这些操作。如前所述,使用模型并行性,神经网络模型可以在计算资源(例如,任意数目的处理器)之中被划分。在流水线级602,针对正被处理的神经网络模型的第一层,处理器P1发起第一前向传递(M1)的处理。在一个示例中,该前向传递可以与先前描述的变换器层中的一个变换器层对应。在该流水线级,处理器P2和P3两者空闲。在流水线级604,在完成针对神经网络模型的第一层的第一前向传递(M1)之后,针对神经网络模型的第二层,处理器P1发起第一前向传递(M2)的处理。此外,在流水线级604,针对神经网络模型的第一层,处理器P2发起第二前向传递(M1)的处理。在该流水线级,处理器P3仍然空闲。在流水线级606,在完成针对第二层的第一前向传递(M2)之后,针对神经网络模型的第三层,处理器P1发起第一前向传递(M3)的处理。此外,在流水线级606,针对神经网络模型的第二层,处理器P2发起第二前向传递(M2)的处理。此外,在流水线级606,针对神经网络模型的第一层,处理器P3发起第三前向传递(M1)的处理。该示例假设模型(或模型的子集(例如,小批次))每层要求三个前向传递。因此,在完成针对神经网络模型的第一层的第三前向传递(M1)之后,反向传播可以开始。
继续参考图6,在级608,针对神经网络模型的第四层,处理器P1发起第一前向传递(M4)的处理。此外,在流水线级608,针对神经网络模型的第三层,处理器P2发起第二前向传递(M3)的处理。此外,在流水线级608,针对神经网络模型的第一层,处理器P3发起第一反向传递(B1)的处理。在级610,针对神经网络模型的第五层,处理器P1发起第一前向传递(M5)的处理。此外,在流水线级610,针对神经网络模型的第一层,处理器P2发起第二反向传递(B1)的处理。此外,在流水线级610,针对神经网络模型的第一层,处理器P3发起权重(W1)的更新。如流水线图600中所示,权重更新被异步且持续地发起。累加的梯度可以用于执行权重更新。在级612,针对神经网络模型的第一层,处理器P1发起第三反向传递(B1)的处理。此外,在流水线级612,针对神经网络模型的第一层,处理器P2发起权重(W1)的更新。此外,在流水线级612,针对神经网络模型的第三层,处理器P3发起第三前向传递的处理。前向传递、反向传递和权重更新如流水线图600中所示那样被处理。作为示例,在流水线级620,处理器P1基于与第三层相关联的第三反向传递,发起对第三层的权重更新。此外,在该级,处理器P2发起与神经网络模型的第六层相关联的第一前向传递的处理,并且处理器P3发起与神经网络模型的第四层相关联的第一反向传递的处理。由处理器中的任何处理器执行的每个计算都可能比流水线中所执行的其他计算花费更少或更多的时间。然而,一般而言,如前所述,神经网络模型处理以使得在每个流水线级,处理器(或其他计算资源)具有类似工作负载的方式被划分。
图7示出了根据一个示例的用于在神经网络模型的训练期间发起权重的更新的方法的流程图700。步骤710可以包括在一组计算资源之中划分L个层,该一组计算资源被配置成处理与L个层中的每个层相关联的前向传递和反向传递。可以使用被配置成基于机器语言框架(诸如Tensorflow、Apache MXNet和
Figure BDA0003549710680000111
Cognitive Toolkit(CNTK))对模型进行划分的代码来执行划分。作为示例,该步骤可以包括对BERT模型进行划分,如图3中所示。因此,BERT模型的各个层可以被指派为使用不同的处理器(或类似的计算资源)进行处理。这样,与层相关联的各种参数可以被并行处理。因此,对于具有12层的BERT模型示例,可能存在1.1亿个参数。每个计算资源每层可以处理大约900万个参数。对于具有24层的更大BERT模型,可能存在3.4亿个参数。如果跨8个计算资源(例如,类似于图4的计算资源400的计算资源)划分模型,则每个计算资源可以处理大约6400万个参数。在另一个示例中,如果跨16个计算资源划分BERT模型,则每个计算资源可以处理大约3200万个参数。作为该步骤的一部分,其他类型的神经网络模型也可以被划分以用于处理。
步骤720可以包括:使用一组计算资源发起前向传递和反向传递的处理。作为该步骤的一部分,调度器(或某种其他软件)可以发起前向传递和反向传递的处理。在该示例中,该处理可以以类似于关于图6描述的流水线式方式发生。
步骤730可以包括,在完成与L个层中的第一层相关联的第一组前向传递和第一组反向传递后,当梯度对更新与第一层相关联的参数可用时,发起与第一层相关联的参数的更新,而无需等待计算与L个层中的其余任何层相关联的梯度。在该示例中,参数可以包括权重。作为该步骤的一部分,类似于图6中所示,与第一层相关联的权重更新可以在不等待计算与其余层相关联的梯度的情况下被发起。权重更新可以是基于累加的梯度(例如,如关于图5所解释的)。虽然图7描述了以特定次序执行的特定数目的步骤,但是可以以不同次序执行附加的或更少的步骤。
图8A和图8B示出了根据一个示例的用于在神经网络模型的训练期间更新权重的另一种方法的流程图800。步骤810可以包括:作为流水线的第一级的一部分,使用第一计算资源来发起与L个层中的第一层相关联的第一前向传递的处理。在该示例中,该步骤可以与图6的流水线状态602对应。因此,作为该步骤的一部分,针对正被处理的神经网络模型的第一层,处理器P1可以发起第一前向传递(M1)的处理。在一个示例中,该前向传递可以与先前描述的变换器层中的一个变换器层对应。
步骤820可以包括:作为流水线的第二级的一部分,(1)使用第一计算资源,发起与L个层中的第二层相关联的第一前向传递的处理,以及(2)使用第二计算资源,发起与L个层中的第一层相关联的第二前向传递的处理。在该示例中,该步骤可以与图6的流水线级604对应。因此,作为该步骤的一部分,针对神经网络模型的第二层,处理器P1可以发起第一前向传递(M2)的处理,并且针对神经网络模型的第一层,处理器P2可以发起第二前向传递(M1)的处理。
步骤830可以包括:作为流水线的第三级的一部分,(1)使用第一计算资源,发起与L个层中的第三层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第二层相关联的第二前向传递的处理,以及(3)使用第三计算资源,发起与L个层中的第一层相关联的第三前向传递的处理。在该示例中,该步骤可以对应于图6的流水线级606。因此,作为该步骤的一部分,针对神经网络模型的第三层,处理器P1可以发起第一前向传递(M3)的处理;针对神经网络模型的第二层,处理器P2可以发起第二前向传递(M2)的处理;并且针对神经网络模型的第一层,处理器P3可以发起第三前向传递(M1)的处理。
步骤840可以包括:作为流水线的第四级的一部分,(1)使用第一计算资源,发起与L个层中的第四层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第二层相关联的第二前向传递的处理,以及(3)使用第三计算资源,发起与L个层中的第一层相关联的反向传递。在该示例中,该步骤可以与图6的流水线级608对应。因此,作为该步骤的一部分,针对神经网络模型的第四层,处理器P1可以发起第一前向传递(M4)的处理;针对神经网络模型的第三层,处理器P2可以发起第二前向传递(M3)的处理;并且针对神经网络模型的第一层,处理器P3可以发起第一反向传递(B1)的处理。
步骤850可以包括:作为流水线的第五级的一部分,(1)使用第一计算资源,发起与L个层中的第五层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第一层相关联的第二反向传递的处理,以及(3)当与关联于L个层中的第一层的权重相关联的梯度被累加时,使用第三计算资源,更新与L个层中的第一层相关联的权重。在该示例中,该步骤可以与图6的流水线级608对应。因此,作为该步骤的一部分,针对神经网络模型的第五层,处理器P1可以发起第一前向传递(M5)的处理;针对神经网络模型的第一层,处理器P2可以发起第二反向传递(B1)的处理;并且针对神经网络模型的第一层,处理器P3可以发起权重(W1)的更新。尽管图8A和图8B描述了以特定次序执行的特定数目的步骤,但是可以以不同次序执行附加的或更少的步骤。
总之,本公开涉及一种用于处理包括L个层的神经网络的方法,其中L是大于二的整数。该方法可以包括在一组计算资源之中划分L个层,该一组计算资源被配置成处理与L个层中的每个层相关联的前向传递和反向传递。该方法还可以包括使用一组计算资源来发起前向传递和反向传递的处理。该方法还可以包括:在完成与L个层中的第一层相关联的第一组前向传递和第一组反向传递后,当梯度对更新与第一层相关联的参数可用时,发起与第一层相关联的参数的更新,而无需等待计算与L个层中的其余任何层相关联的梯度。
在一组计算资源之中划分L个层可以包括:在一组计算资源之中基本均等地拆分与神经网络相关联的参数。神经网络可以被配置成执行自然语言处理。神经网络还可以包括输入级,该输入级被耦合以向L个层提供输入,并且其中神经网络还包括输出级,该输出级被耦合以接收来自L个层的输出。
参数可以包括权重,并且该方法还可以包括:当梯度对更新与L个层中的第二层相关联的权重可用时,发起与第二层相关联的权重的更新,并且其中发起与L个层中的第二层相关联的权重的更新、与发起与L个层中的第一层相关联的权重的更新是异步的。该一组计算资源可以包括顺序布置的第一计算资源、第二计算资源和第三计算资源,使得前向传递和反向传递以流水线式的方式被处理。该方法还可以包括累加指定数目的反向传递之上的梯度。
在另一个示例中,本公开涉及用于处理包括L个层的神经网络的系统,其中L是大于二的整数。该系统可以包括一组计算资源,该一组计算资源被配置成处理与L个层中的每个层相关联的前向传递和反向传递,其中L个层在一组计算资源之中被划分,其中该一组计算资源中的每个计算资源被配置成:当梯度对更新与L个层中的层相关联的权重时,异步发起与该层相关联的权重的更新,而不必接收与L个层中的其余任何层相关联的梯度。
与神经网络相关联的权重可以在一组计算资源之中基本均等地被拆分。神经网络还可以被配置成执行自然语言处理。神经网络还可以包括输入级,该输入级被耦合以向L个层提供输入,并且神经网络还可以输出级,该输出级包括被耦合以接收来自L个层的输出。
一组计算资源可以包括顺序布置的第一计算资源、第二计算资源和第三计算资源,使得前向传递和反向传递以流水线式的方式被处理。一组计算资源的子集还可以包括累加器,改累加器被配置成在累加指定数目的反向传递之上的梯度。
在又一个示例中,本公开涉及一种用于处理包括L个层的神经网络的方法,其中L是大于二的整数。该方法可以包括:作为流水线的第一级的一部分,使用第一计算资源,发起与L个层中的第一层相关联的第一前向传递的处理。该方法还可以包括:作为流水线的第二级的一部分,(1)使用第一计算资源,发起与L个层中的第二层相关联的第一前向传递的处理,以及(2)使用第二计算资源,发起与L个层中的第一层相关联的第二前向传递的处理。方法还可以包括:作为流水线的第三级的一部分,(1)使用第一计算资源,发起与L个层中的第三层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第二层相关联的第二前向传递的处理,以及(3)使用第三计算资源,发起与L个层中的第一层相关联的第三前向传递的处理。方法还可以包括:作为流水线的第四级的一部分,(1)使用第一计算资源,发起与L个层中的第四层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第二层相关联的第二前向传递的处理,以及(3)使用第三计算资源,发起与L个层中的第一层相关联的反向传递。方法还可以包括:作为流水线的第五级的一部分,(1)使用第一计算资源,发起与L个层中的第五层相关联的第一前向传递的处理,(2)使用第二计算资源,发起与L个层中的第一层相关联的第二反向传递的处理,以及(3)当与关联于L个层中的第一层的权重相关联的梯度被累加时,使用第三计算资源,更新与L个层中的第一层相关联的权重。
第一层、第二层、第三层、第四层和第五层中的每个层可以与变换器对应。该方法还可以包括在至少第一计算资源、第二计算资源和第三计算资源之中基本均等地划分L个层。神经网络还可以被配置成执行自然语言处理。神经网络还可以包括输入级,该输入级被耦合以向L个层提供输入,并且神经网络还可以包括输出级,该输出级被耦合以接收来自L个层的输出。
该方法还可以包括累加指定数目的反向传递之上的梯度。该方法还可以包括累加与流水线相关联的指定数目的循环之上的梯度。
应当理解,本文描述的方法、模块和组件仅仅是示例性的。备选地或附加地,本文描述的功能可以至少部分地由一个或多个硬件逻辑组件执行。例如但不限于,可以使用的示例性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。在抽象的但仍然确定的意义上,实现相同功能性的组件的任何布置都有效地“被关联”,从而实现期望的功能。因此,本文中被组合以实现特定功能性的任何两个组件可以被视为彼此“相关联”,从而实现期望的功能性,而不管架构或中间组件如何。类似地,如此关联的任何两个组件也可以被视为彼此“可操作地连接”或“耦合”以实现期望的功能性。
与本公开中描述的一些示例相关联的功能性还可以包括被存储在非瞬态介质中的指令。这里使用的术语“非瞬态介质”是指存储使机器以特定方式操作的数据和/或指令的任何介质。示例性非瞬态介质包括非易失性介质和/或易失性介质。非易失性介质例如包括硬盘、固态驱动器、磁盘或磁带、光盘或光带、闪存、EPROM、NVRAM、PRAM,或其他这样介质,或这样的介质的联网版本。易失性介质包括例如动态存储器,例如DRAM、SRAM、高速缓存或其他这样的介质。非瞬态介质不同于传输介质,但可以与传输介质结合使用。传输介质用于将数据和/或指令传送给机器或从机器传送。示例性传输介质包括同轴电缆、光纤电缆、铜线和无线介质(例如,无线电波)。
此外,本领域技术人员将认识到,上述操作的功能之间的界限仅仅是说明性的。多个操作的功能性可以被组合成单个操作,和/或单个操作的功能性可以被分布在另外的操作中。此外,备选实施例可以包括特定操作的多个实例,并且操作的次序可以在各种其他实施例中改变。
虽然本公开提供了具体示例,但是可以在不背离如下权利要求中阐述的本公开的范围的情况下做出各种修改和变化。因此,说明书和附图被认为是说明性的而不是限制性的,并且所有这样的修改意图包含于本公开的范围内。本文关于具体示例所描述的任何益处、优点或对问题的解决方案不意图被解释为任何或所有权利要求的关键的、必需的或必要的特征或元素。
此外,本文使用的术语“一”或“一个”被定义为一个或多于一个。而且,在权利要求中使用诸如“至少一个”和“一个或多个”的介绍性短语不应当被解释为暗示由不定冠词语“一”或“一个”引入的另一权利要求元素将包含这样引入的权利要求元素的任何特定权利要求限制为仅包含一个这样的元素的发明,即使当相同的权利要求包括介绍性短语“一个或多个”或“至少一个”以及不定冠词语如“一”或“一个”时。对于定冠词的使用是如此。
除非另有说明,否则诸如“第一”和“第二”的术语被用于任意区分这些术语所描述的元件。因此,这些术语不一定意在指示这些元素的时间或其他优先级。

Claims (15)

1.一种用于处理包括L个层的神经网络的方法,其中L是大于二的整数,所述方法包括:
在一组计算资源之中划分所述L个层,所述一组计算资源被配置成处理与所述L个层中的每个层相关联的前向传递和反向传递;
使用所述一组计算资源,发起所述前向传递和所述反向传递的处理;以及
在完成与所述L个层中的第一层相关联的第一组前向传递和第一组反向传递后,当梯度对更新与所述第一层相关联的参数可用时,发起与所述第一层相关联的所述参数的更新,而无需等待计算与L个层中的其余任何层相关联的梯度。
2.根据权利要求1所述的方法,其中所述在所述一组计算资源之中划分所述L个层包括:在所述一组计算资源之中基本均等地拆分与所述神经网络相关联的参数。
3.根据权利要求1所述的方法,其中所述神经网络被配置成执行自然语言处理。
4.根据权利要求1所述的方法,其中所述神经网络还包括输入级,所述输入级被耦合以向所述L个层提供输入,并且其中所述神经网络还包括输出级,所述输出级被耦合以接收来自所述L个层的输出。
5.根据权利要求1所述的方法,其中所述参数包括权重,还包括:当梯度对更新与所述L个层中的第二层相关联的权重可用时,发起与所述第二层相关联的所述权重的更新,并且其中所述发起与所述L个层中的所述第二层相关联的所述权重的所述更新、与所述发起与所述L个层中的所述第一层相关联的所述权重的所述更新是异步的。
6.根据权利要求1所述的方法,其中所述一组计算资源包括顺序布置的第一计算资源、第二计算资源和第三计算资源,使得所述前向传递和所述反向传递以流水线式的方式被处理。
7.根据权利要求1所述的方法,还包括累加指定数目的反向传递之上的梯度。
8.一种用于处理包括L个层的神经网络的系统,其中L是大于二的整数,所述系统包括:
一组计算资源,被配置成处理与所述L个层中的每个层相关联的前向传递和反向传递,其中所述L个层在所述一组计算资源之中被划分,其中所述一组计算资源中的每个计算资源被配置成:当梯度对更新与所述L个层中的层相关联的权重可用时,异步发起与所述层相关联的所述权重的更新,而不必接收与L个层中的其余任何层相关联的梯度。
9.根据权利要求8所述的系统,其中与所述神经网络相关联的权重在所述一组计算资源之中基本均等地被拆分。
10.根据权利要求8所述的系统,其中所述神经网络被配置成执行自然语言处理。
11.根据权利要求8所述的系统,其中所述神经网络还包括输入级,所述输入级被耦合以向所述L个层提供输入,并且其中所述神经网络还包括输出级,所述输出级被耦合以接收来自所述L个层的输出。
12.根据权利要求8所述的系统,其中所述一组计算资源包括顺序布置的第一计算资源、第二计算资源和第三计算资源,使得所述前向传递和所述反向传递以流水线式的方式被处理。
13.根据权利要求8所述的系统,其中所述一组计算资源的子集还包括累加器,所述累加器被配置成累加指定数目的反向传递之上的梯度。
14.一种用于处理包括L个层的神经网络的方法,其中L是大于二的整数,所述方法包括:
作为流水线的第一级的一部分:使用第一计算资源,发起与所述L个层中的第一层相关联的第一前向传递的处理;
作为所述流水线的第二级的一部分:(1)使用所述第一计算资源,发起与所述L个层中的第二层相关联的第一前向传递的处理,以及(2)使用第二计算资源,发起与所述L个层中的所述第一层相关联的第二前向传递的处理;
作为所述流水线的第三级的一部分:(1)使用所述第一计算资源,发起与所述L个层中的第三层相关联的第一前向传递的处理,(2)使用所述第二计算资源,发起与所述L个层中的所述第二层相关联的第二前向传递的处理,以及(3)使用第三计算资源,发起与所述L个层中的所述第一层相关联的第三前向传递的处理;
作为所述流水线的第四级的一部分:(1)使用所述第一计算资源,发起与所述L个层中的第四层相关联的第一前向传递的处理,(2)使用所述第二计算资源,发起与所述L个层中的所述第二层相关联的第二前向传递的处理,以及(3)使用所述第三计算资源,发起与所述L个层中的所述第一层相关联的反向传递;以及
作为所述流水线的第五级的一部分:(1)使用所述第一计算资源,发起与所述L个层中的第五层相关联的第一前向传递的处理,(2)使用所述第二计算资源,发起与所述L个层中的所述第一层相关联的第二反向传递的处理,以及(3)当与关联于所述L个层中的所述第一层的权重相关联的梯度被累加时,使用所述第三计算资源来更新所述权重。
15.根据权利要求14所述的方法,其中所述第一层、所述第二层、所述第三层、所述第四层和所述第五层中的每个层与变换器对应。
CN202080065102.5A 2019-09-27 2020-06-18 具有持续且异步更新的流水线式神经网络处理 Pending CN114402293A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/585,105 US11663444B2 (en) 2019-09-27 2019-09-27 Pipelined neural network processing with continuous and asynchronous updates
US16/585,105 2019-09-27
PCT/US2020/038301 WO2021061232A1 (en) 2019-09-27 2020-06-18 Pipelined neural network processing with continuous and asynchronous updates

Publications (1)

Publication Number Publication Date
CN114402293A true CN114402293A (zh) 2022-04-26

Family

ID=71465474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080065102.5A Pending CN114402293A (zh) 2019-09-27 2020-06-18 具有持续且异步更新的流水线式神经网络处理

Country Status (4)

Country Link
US (1) US11663444B2 (zh)
EP (1) EP4035080A1 (zh)
CN (1) CN114402293A (zh)
WO (1) WO2021061232A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11568252B2 (en) 2020-06-29 2023-01-31 Alibaba Group Holding Limited Variable input size techniques for neural networks
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11182221B1 (en) 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)
US11237880B1 (en) 2020-12-18 2022-02-01 SambaNova Systems, Inc. Dataflow all-reduce for reconfigurable processor systems
US11392740B2 (en) 2020-12-18 2022-07-19 SambaNova Systems, Inc. Dataflow function offload to reconfigurable processors
US11782760B2 (en) 2021-02-25 2023-10-10 SambaNova Systems, Inc. Time-multiplexed use of reconfigurable hardware

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477925B2 (en) 2012-11-20 2016-10-25 Microsoft Technology Licensing, Llc Deep neural networks training for speech and pattern recognition
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11288575B2 (en) 2017-05-18 2022-03-29 Microsoft Technology Licensing, Llc Asynchronous neural network training
CA3050334C (en) 2017-05-23 2023-04-11 Google Llc Attention-based sequence transduction neural networks
US11604956B2 (en) * 2017-10-27 2023-03-14 Salesforce.Com, Inc. Sequence-to-sequence prediction using a neural network model
US11232356B2 (en) * 2019-08-09 2022-01-25 Google Llc Training giant neural networks using pipeline parallelism

Also Published As

Publication number Publication date
US11663444B2 (en) 2023-05-30
EP4035080A1 (en) 2022-08-03
WO2021061232A1 (en) 2021-04-01
US20210097366A1 (en) 2021-04-01

Similar Documents

Publication Publication Date Title
CN114402293A (zh) 具有持续且异步更新的流水线式神经网络处理
CN110998570B (zh) 具有带有块浮点处理的矩阵矢量单元的硬件节点
US11151445B2 (en) Neural network processor with a window expander circuit
US20180260710A1 (en) Calculating device and method for a sparsely connected artificial neural network
CN112005214B (zh) 具有包括多端口存储器的向量寄存器文件的矩阵向量乘法器
US11562201B2 (en) Neural network layer processing with normalization and transformation of data
US20220121903A1 (en) Method of performing splitting in neural network model by means of multi-core processor, and related product
US11556764B2 (en) Deriving a concordant software neural network layer from a quantized firmware neural network layer
CN114035937A (zh) 一种基于人工智能的分布式训练和推理方法、系统、设备和可读存储介质
CN115066692A (zh) 用于表示神经网络中的稀疏矩阵的装置和方法
US11775832B2 (en) Device and method for artificial neural network operation
US11544521B2 (en) Neural network layer processing with scaled quantization
US20220076095A1 (en) Multi-level sparse neural networks with dynamic rerouting
KR20210044180A (ko) 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템
CN115398395A (zh) 具有用于同时处理不同类运算的独立数据路径的深度神经网络加速器
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速系统
US11449752B2 (en) System and method for gradient accumulation with free momentum
Sun et al. Computation on sparse neural networks and its implications for future hardware
CN115688917A (zh) 神经网络模型的训练方法、装置、电子设备及存储介质
CN115461754A (zh) 深度过参数化
RU2795887C2 (ru) Матрично-векторный умножитель с набором регистров для хранения векторов, содержащим многопортовую память
CN112784575A (zh) 语句的处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination