CN111194451B - 门控激活单元运算的并行执行 - Google Patents

门控激活单元运算的并行执行 Download PDF

Info

Publication number
CN111194451B
CN111194451B CN201780095698.1A CN201780095698A CN111194451B CN 111194451 B CN111194451 B CN 111194451B CN 201780095698 A CN201780095698 A CN 201780095698A CN 111194451 B CN111194451 B CN 111194451B
Authority
CN
China
Prior art keywords
rows
matrix
assigned
weight
thread
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.)
Active
Application number
CN201780095698.1A
Other languages
English (en)
Other versions
CN111194451A (zh
Inventor
埃里克·康拉德·埃尔森
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.)
DeepMind Technologies Ltd
Original Assignee
DeepMind Technologies Ltd
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 DeepMind Technologies Ltd filed Critical DeepMind Technologies Ltd
Publication of CN111194451A publication Critical patent/CN111194451A/zh
Application granted granted Critical
Publication of CN111194451B publication Critical patent/CN111194451B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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
    • 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/505Allocation 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 load
    • 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
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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

Abstract

提供了用于交织门控激活单元的矩阵运算的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。该方法中的一个包括:接收神经网络的门控激活单元的多个权重矩阵,该门控激活单元具有两个或更多个层,每一个层定义包括以下的运算:(i)层的权重矩阵和拼接的输入向量之间的矩阵运算,以及(ii)使用该矩阵运算的结果的非线性激活运算。多个权重矩阵的行通过将对应行的组分配给相应线程块被交织,每一个线程块是用于由并行处理设备的多个独立处理单元中的一个独立处理单元执行的计算单元。

Description

门控激活单元运算的并行执行
背景技术
本说明书涉及在并行处理硬件上实现神经网络的技术。
神经网络是使用一个或多个层的非线性计算单元来预测针对接收到的输入的输出的机器学习模型。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出用作网络中下一个层——即下一个隐藏层或输出层——的输入。网络的每一层根据相应的参数集的当前值从接收到的输入生成输出。
对于当前时间步,循环神经网络生成由针对一个或多个先前的时间步生成的其他输出所通知的输出。一些循环神经网络使用门控激活单元。这种循环神经网络可以被称为门控循环神经网络。
门控激活单元通过实现控制在先前的时间步中生成的信息有多少应记住且有多少应遗忘的功能来维持一种类型的记忆。普通的门控激活单元包括长短期记忆单元(LSTM单元)、门控循环单元(GRU)及其几种变体。
通常,门控激活单元至少使用先前的隐藏状态和当前输入来更新当前隐藏状态。更新隐藏状态通常涉及一种或多种线性变换和一种或多种非线性激活。每个线性变换可以使用权重矩阵和偏置向量。因此,训练门控循环神经网络涉及学习用于每个门控激活单元的权重矩阵和偏置向量。
图1示出了现有技术LSTM单元100。LSTM单元100既保持隐藏状态ht也保持细胞状态ct。LSTM单元100实现确定要遗忘多少先前的隐藏状态的遗忘门;确定要更新细胞状态的哪个值的输入门以及确定要输出哪个值的输出门。
LSTM单元100的运算可以由以下等式定义,其中先前的隐藏状态ht-1对应于ht-1103,先前的细胞状态ct-1对应于ct-1 105,并且当前输入xt对应于xt 107。在这种背景下,“*”指的是逐点乘法,“+”指的是逐点加法,“σ”是sigmoid激活函数。符号“Wx[ht-1,xt]”指的是矩阵Wx与和xt拼接(concatenate)的ht-1向量的矩阵乘法。一些文献将每个矩阵Wx分为两个矩阵W和U,在这种情况下,W与ht-1相乘,U与xt相乘。LSTM单元100的运算由以下等式定义:
ft=σ(Wf[ht-l,xt]+bf) (1)
it=σ(Wi[ht-1,xt]+bi) (2)
ot=σ(Wo[ht-l,xt]+bo) (3)
c_bart=tanh(Wc[ht-l,xt]+bc) (4)
ct=ft*ct-1+it*c_bart (5)
ht=ot*tanh(ct) (6)
遗忘门110对应于等式(1)并生成ft 115;输入门120对应于等式(2)并生成it 125;输出门130对应于等式(3)并生成ot 135。tanh层140对应于等式(4)并生成候选的向量c_bart 145用于添加到当前细胞状态。当前细胞状态ct 155由等式(5)给出。最后的tanh层150根据等式(6)使用计算出的细胞状态ct 155生成当前隐藏状态ht 165。
等式(1)、(2)、(3)和(4)中的每一个指定在用于对应层的相应权重矩阵Wn与当前输入向量xt和ht-1之间执行矩阵运算。然后将结果添加到对于该结果的相应的偏置向量bn。然后将这些计算的结果通过非线性激活函数σ和tanh馈入以生成时间步t的最终输出向量ht
图2示出了现有技术门控循环单元(GRU)200。GRU 200和LSTM单元100之间的主要区别在于GRU 200有效地将LSTM细胞状态和隐藏状态合并为仅隐藏状态。因此,GRU 200接收先前的隐藏状态作为输入并且对于给定的输入xt仅输出当前隐藏状态。
GRU 200的运算通常由以下等式定义,其中先前的隐藏状态ht-1对应于ht-1203并且当前输入xt对应于xt 207。
zt=σ(Wz[ht-l,xt]+bz) (7)
rt=σ(Wr[ht-1,xt]+br) (8)
h_bart=tanh(Wh[rt*ht-l,xt]+bh) (9)
ht=(1-zt)*ht-1+zt*h_bart (10)
重置门210对应于等式(8)并生成rt 215。更新门220对应于等式(7)并生成zt 225。tanh层230对应于等式(9)并生成h_bart 235。然后根据等式(10)计算最终隐藏状态ht 265。
可以看出,GRU 200比LSTM单元100简单一些在于它实现了较少的门和激活函数。但是,与LSTM 100一样,GRU 200也使用了许多使用权重矩阵Wn和当前输入xt的矩阵运算,然后将相应的偏置向量bn添加到结果中。然后,这些计算的结果也通过相应的非线性激活函数σ或tanh馈入。
门控激活单元的体系结构的某些方面使其有助于并行处理技术。特别地,用于LSTM单元的等式(1)至等式(4)的运算都不相互依赖,并且用于GRU的等式(7)至等式(9)的运算也不相互依赖。此外,由于这些运算涉及矩阵乘法和逐点加法,因此可以使用多个处理设备——例如图形处理单元(GPU)的流式多处理器(SM)——来计算矩阵运算的部分结果,然后部分结果可以结合。
发明内容
本说明书描述了在并行处理硬件上执行门控激活单元运算的技术。
因此,一方面,特别是在并行处理设备上实现神经网络的方法,包括接收神经网络的门控激活单元的多个权重矩阵。门控激活单元可以具有两个或更多个层,每一个层定义包括以下的运算:(i)该层的权重矩阵和拼接的输入向量之间的矩阵运算,以及(ii)使用该矩阵运算的结果进行的非线性激活运算。矩阵运算通常包括矩阵乘法但是原则上也可以实现其他矩阵运算。该方法通过将所述多个权重矩阵的对应行的组分配给相应的线程块来交织多个权重矩阵的行。通常,每一个线程块包括用于由并行处理设备的多个独立处理单元中的一个独立处理单元执行的计算单元。如后面所述,这种方法可以提供包括消除执行线程块同步步骤的必要性的优点,该线程块同步步骤否则可能需要将结果集写入到下一个处理阶段可以从中访问该结果集的存储区域。
还描述了使用以这种方式实现的神经网络处理数据的方法。处理可以包括:由每一个线程块接收输入向量;并由每一个线程块生成当前状态向量的相应部分。生成可以包括:使用分配给该线程块的多个权重矩阵的对应行的一个或多个组以及输入向量的拼接来执行多个部分矩阵运算。生成可以进一步包括使用多个部分矩阵运算的相应结果来执行多个非线性激活运算。可选地,可以至少部分地并行生成当前状态向量的多个部分。
在一些实现中,交织行可以包括将来自多个权重矩阵的每个权重矩阵的至少一个行分配给每个线程块,和/或将相同数量的行分配给所有线程块。这可以促进可用的处理硬件的有效使用。
例如,门控激活单元可以包括神经网络的门控循环单元或长短期记忆单元,或另一个循环神经网络单元。
在一些实现中,层的运算可以包括层的矩阵运算的结果和层的偏置向量之间的偏置加法运算;这可以提高神经网络的性能。更特别地,这可以包括将偏置向量的部分指配给多个线程块中的每个线程块并将偏置向量的一部分加到矩阵运算的结果中。
一些实现包括由包(wrap)交织多个权重矩阵的行使得所有包从每个权重矩阵接收一些行并且来自每个权重矩阵的对应行被分配给同一个包。一些实现可以附加地或替代地包括由线程交织多个权重矩阵的值使得所有线程从每个权重矩阵接收一些值并且来自每个权重矩阵的对应值被分配给同一个线程。
在相关方面,系统被配置为在并行处理设备上实现神经网络。神经网络可以包括具有多个权重矩阵的至少一个门控激活单元。门控激活单元可以具有两个或更多个层,每一个层定义的包括以下的运算:(i)层的权重矩阵和拼接的输入向量之间的矩阵运算,以及(ii)使用矩阵运算的结果的非线性激活运算。系统可以被配置为通过将多个权重矩阵的对应行的组分配给相应的线程块来交织多个权重矩阵的行,每个线程块是用于由并行处理设备的多个独立处理单元中的一个独立处理单元执行的计算单元。
系统可以进一步被配置为使得每一个线程块接收输入向量并生成当前状态向量的相应的部分。线程块中的一个或多个可以被配置为使用分配给线程块的多个权重矩阵的对应行的一个或多个组以及输入向量的拼接来执行多个部分矩阵运算。系统可以进一步被配置为执行以上描述的功能中的其他功能。
可以实现本说明书中描述的主题的特定实施例以实现以下优点中的一个或多个。并行处理设备可以并行地或基本并行地生成门控激活单元的所有输出值而无需任何块同步。可以训练模型以精确地适合可用的处理硬件,从而可以导致最优的负载平衡和资源利用。门控循环神经网络可以使用本说明书中描述的并行处理技术来实时或比实时更快地计算输出,即使对于具有很高的吞吐量要求的网络,例如,基于信号的先前生成的值来生成信号值——更具体地,表示信号值的分布的输出数据——的自回归神经网络。这种网络可以包括音频、视频、图像或文本生成神经网络。
本说明书的主题的一个或多个实施例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求书,本主题的其他特征、方面和优点将变得显而易见。
附图说明
图1示出了现有技术长短期记忆(LSTM)单元。
图2示出了现有技术门控循环单元(GRU)。
图3是示出计算单个现有技术GRU的输出所需的数据段的图。
图4A示出了GRU的矩阵运算可以如何交织。
图4B示出了在块之间如何对矩阵进行交织可以允许计算所有GRU运算的输出值而无需块同步。
图5是用于使用并行处理硬件来计算门控激活单元的当前状态向量的示例过程的流程图。
在各种附图中相同的附图标记和符号指示相同的元素。
具体实施方式
本说明书描述了神经网络系统如何可以通过在并行处理设备的多个独立处理单元上交织(interleave)门控激活单元的矩阵运算来提高吞吐量和减少时延。以下描述的示例一般指的是作为具有多个处理核心的流式多处理器(SM)的独立处理单元以及作为图形处理单元(GPU)的并行处理设备。然而,相同的技术也可以在实现与多个独立处理单元的真正线程并行化的其他硬件设备上实现。这种设备包括单个指令,一般地多个数据(SIMD)处理器,张量处理单元(TPU)或其他专用集成电路。此外,在示例提及使用GPU的地方,不一定意味着正在处理或产生图形数据。
在这种并行处理设备上,可以通过定义如何分配线程以由多个独立处理单元执行的程序抽象来提供对线程并行化的控制。为了清楚表示,本说明书使用通用GPU程序抽象的术语,但是控制如何在独立处理单元上调度线程的等效程序抽象可以用于不是GPU的其他系统。
线程块,或简称为块(block),是由单个SM执行的线程组。块中的线程可以通过使用SM的共享存储器进行协调。因此,块中的线程之间的通信通常比与其他块中的线程的通信快几个数量级。
包是块内的线程组并且在某些情况下表示用于GPU的最小可分配计算单元。包中的线程通常步调一致地执行指令。因此,例如,包中的线程可以从存储器中一起获取数据。如果每个线程所需的数据存储在相同的存储器段中,则包中的所有线程只能使用一个存储器事务从存储器中读取。仅举几个例子,普通的包大小为16、32或64个线程。
在执行期间,每个块被分配为由一个相应的SM执行。块中的线程在SM上执行直到块完成为止,此时SM可以执行另一个块。对于具有多个处理核心的SM——有时被称为信号处理器或执行通道——每个处理核心可以执行一个线程。GPU通常具有10至100个SM,并且每个SM可以具有2至32个处理核心。因此,GPU经常可以并行地执行数百个线程。
为了使块将它们的已计算出的数据对于其他块可用,块必须通过执行同步或简称同步(sync)来协调。同步就性能而言是昂贵的,因为执行同步需要停止执行一个或多个块以进行等待。同步要求所有块将它们的数据写入另一个块可以访问的位置。同步位置可以在RAM或单个块的本地存储器中。
在本说明书中,其中门控激活单元具有拥有两个或更多个相应的权重矩阵的两个或更多个层,交织矩阵运算意味着并行处理设备的大部分块,如果不是全部块,将对来自两个或更多个权重矩阵中的每个的一些数据进行运算。
图3是示出计算单个现有技术GRU的输出所需的数据段的图。如上所述,GRU具有三个权重矩阵:更新权重矩阵Wz 310、重置权重矩阵Wr 320和状态权重矩阵Wh 330。每个权重矩阵具有对应的偏置向量:更新偏置向量bz 312、重置偏置向量br 322和状态偏置向量bh332。GRU还接收包括先前的隐藏状态向量ht-1 340和当前输入向量xt 350的输入向量。最后,GRU具有三个偏置向量:更新偏置向量bz 312、重置偏置向量br和状态偏置向量bh 332。每个矩阵具有N行和M列。同时,每个输入向量340、350和偏置向量312、322和332具有M/2个数据元素。
图2所示的数据元素可以用来根据以上等式(7)-等式(10)计算GRU的输出向量。
图4A示出了GRU的矩阵运算可以如何交织。矩阵运算被交织意味着每个块将接收每个矩阵的一些行。
如图4A所示,将更新权重矩阵Wz 210的第一行401z中的一个或多个分配给块0。将更新权重矩阵Wz 210的接下来的一个或多个行402z分配给不同的块,块1。
将行分配给特定的块意味着以下两者:(1)来自该行的数据将被复制到被分配执行该块的SM的存储器中,和(2)当由SM执行一个或多个线程时属于该块的一个或多个线程将对该行执行对应的矩阵运算。
因此,实际的矩阵值和它们的对应的矩阵运算可以通过线程或包来分配。例如,可以从更新权重矩阵Wz 210的行中的一个为块中的每个线程分配一个或多个值。
在一些实现中,系统以半精度存储每个矩阵值,这允许每个寄存器存储两个矩阵值。因此,块中的每个线程可以被分配单个寄存器来存储两个相邻行值。
如上所述,在一些并行处理设备上,包是最小的可分配工作单元。因此,可以将单独行分配给属于块的相应的包。可以以任何适当的方式对被分配给单个包的行进行分配,例如连续地或网格步长地。这可以导致矩阵除了在块级上交织之外还在包级上交织。换言之,从所有三个权重矩阵为每个包分配一些值。此外,矩阵也可以在线程级上交织,这意味着可以从所有三个权重矩阵中为每个线程分配一些值。
在分配给包的行中,每个线程可以被分配由M/#每个包中的线程来给定的一定数量的行值。例如,如果M为1024,包中的每个线程对于分配给包的每行将被分配32个的值。如果以半精度存储值,这样可能只需要使用16个寄存器。
为了使模型完全适合可用的处理硬件,系统可以训练在其中M是SM数量乘以每个块的包的数量的倍数的模型。例如,如果有60个SM且每个块有8个包,系统可以训练具有大小是480的倍数——例如480、960或1440——的模型,仅列出几个示例。在这个示例中,模型的大小指的是每个权重矩阵中的列数。
在块之间交织的行可以要求对应的行具有相同的块或包分布。因此,对于分配给块m的第一权重矩阵的每个行n,块m还被分配了来自其他两个权重矩阵的相同的行n。类似地,如果在块和包之间交织行,对于分配给包m的第一权重矩阵的每个行n,包m还被分配了来自其他两个权重矩阵的相同的行n。
如图4A所示,重置权重矩阵Wz 220的第一行401r中的一个或多个也被分配给块0,并且重置权重矩阵Wz 220的接下来的一个或多个行402r被分配给不同的块,块1。类似地,状态权重矩阵Wh 230的第一行401h中的一个或多个被分配给块0,并且状态权重矩阵Wh 230的接下来一个或多个行402h被分配给不同的块,块1。
图4B示出了在块之间如何对矩阵进行交织可以允许计算所有GRU运算的输出值而无需块同步。在这个示例中,为简单起见假设仅来自每个矩阵的单个行已经被分配给每个块。因此,以下行被分配给块0 406:更新权重矩阵Wz 210的行0 401z、重置权重矩阵Wr 220的行0 401r和状态权重矩阵Wh 230的行0 401h。并且以下行被分配给块1 408:更新权重矩阵Wz 210的行1 402z、重置权重矩阵Wr 220的行1 402r和状态权重矩阵Wh 230的行1402h。
输入向量xt 350和ht-1 340可以全部广播到所有块。因此,块406和块408都具有xt350和ht-1 340的副本。
由于偏置向量bz、br和bh相对较小,因此它们既可以全部广播到所有块也可以以行被交织的方式相同的方式被块、包或线程进行交织。在这个示例中,偏置向量被交织,因此,块0 406仅具有更新偏置向量bz 312的第一元素312a、重置偏置向量br 322的第一元素322a和状态偏置向量332的第一元素332a的副本。因此,块1具有与偏置向量不同的元素集,仅具有更新偏置向量bz 312的第二元素312b、重置偏置向量br 322的第二元素322b和状态偏置向量332的第二元素332b。
一旦块0 406具有这个信息,块0的线程就可以实现由上述等式(7)至等式(10)定义的GRU的所有运算而无需块同步。换言之,块0的任何线程都不需要与来自任何其他块的任何线程进行交互。在这个简单示例中,交织允许块0 406生成输出向量ht的第一元素440。类似地,块1 408可以使用分配给块1 408的数据来生成输出向量ht的第二元素408。在更现实的情况下,每个块将生成输出向量的多个值,并且每个块将生成大致相同数量的输出向量ht的元素。
因此,在一些实现中可以计算输出向量ht的所有值而无需执行任何块同步。输出向量ht的值也可以并行地进行大量地计算而具有最优或接近最优的负载平衡,特别是如果系统训练模型以精确地适合可用的处理硬件。在这种背景下,并行地计算输出向量意味着基本上处理硬件的所有SM都同时执行块以生成输出向量的值而无需在它们之间执行块同步。
图5是用于使用并行处理硬件来计算门控激活单元的当前状态向量的示例过程的流程图。图5中描述的一些动作可以由并行处理设备的独立处理单元执行,而一些动作是具有至少一个中央处理单元的部署系统执行以将适当的数据加载到独立处理单元的存储器中的准备动作。为了方便起见,过程将被描述为由具有所有这些组件的系统执行并根据本说明书被适当地编程。
系统接收神经网络的门控激活单元的多个权重矩阵(510)。如上所述,门控激活单元可以是接收来自先前的时间步的隐藏状态和当前输入向量并为当前时间步生成隐藏状态的任何适当的神经网络计算单元。例如,门控激活单元可以是GRU或LSTM单元。在一些实现中,系统还针对每个权重矩阵接收相应的对应的偏置向量。
系统交织多个权重矩阵的行(520)。如上所述,交织行意味着将行分配给线程块以使得(1)每个线程块从每个权重矩阵中得到一些行,并且(2)对应的行被分配给同一个线程块。在一些实现中,权重矩阵也被包或线程交织。被包交织意味着每个包从每个权重矩阵中得到一些行并且对应的行被分配给同一个包。被线程交织意味着每个线程从每个权重矩阵中得到一些值并且对应的值被分配给同一个线程。
系统接收对门控激活单元的输入向量(530)。如上所述,输入向量至少包括当前输入向量和先前的时间步的隐藏状态。一些门控激活单元甚至具有更多的输入向量。例如,LSTM还包括先前的时间步的细胞状态向量。
系统通过每一个线程块生成当前状态向量的相应部分(540)。在通过块、包、线程或这些的一些组合对权重矩阵的行进行交织之后,每个计算单元具有足够的数据计算用于当前时间步的隐藏状态的对应部分。通常,这要求由每个块对分配给块的权重矩阵和偏置向量值执行许多线性运算然后应用非线性激活函数。
以上已经描述了许多具体涉及矩阵的行和列的实现。然而,如果将行解释为列则可以同等地应用相同的技术,反之亦然。
在本说明书中,并行地或基本上并行地计算值意味着独立处理单元在至少部分重叠的时间窗上执行对生成值的运算。并行地或基本上并行地计算值不需要精确地同时或步调一致地计算所有值。此外,由单个独立处理单元生成的一些值实际上可以由处理单元串行生成,但是在与其他独立处理单元的其他值的计算重叠的时间窗上。
本说明书中描述的主题和功能操作的实施例,包括本说明书中公开的结构及其等同结构,或它们的一个或多个的结合可以在数字电子电路中、在有形体现的计算机软件或固件中和在计算机硬件中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,编码在有形的非暂时性存储介质上用于由数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们的一个或多个的组合。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,该传播信号被生成用于对信息进行编码并传输到合适的接收器装置以由数据处理装置来执行。
术语“数据处理装置”指的是数据处理硬件并且包括用于处理数据的所有类型的装置、设备和机器,作为示例,包括可编程处理器、计算机或多个处理器或计算机。装置还可以是或进一步包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除硬件之外,装置可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们的一个或多个的组合的代码。
也可以被称为或描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码的计算机程序可以以任何形式的编程语言来编写,包括编译的或解释性语言或声明性或程序语言,并且可以以任何形式进行部署,包括作为独立程序或作为模块、组件、子例程或适用于在计算环境中使用的其他单元。程序可以但不必对应于文件系统中的文件。程序可以存储在包含其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本,专用于所讨论的程序的单个文件中或多个协调文件中,例如,存储一个或多个模块、子程序或部分代码的文件。可以将计算机程序部署为在一个计算机上执行或者在位于一个站点上或分布在多个站点上并通过数据通信网络互连的多个计算机上执行。
对于一个或多个要配置为执行特定操作或动作的计算机系统意味着系统已在其上安装了在操作中使系统执行操作或动作的软件、固件、硬件或它们的组合。对于将被配置为执行特定操作或动作的一个或多个计算机程序意味着一个或多个程序包括指令,该指令在由数据处理装置执行时使装置执行操作或动作。
如本说明书中所使用的,“引擎”或“软件引擎”指的是由软件实现的提供与输入不同的输出的输入/输出系统。引擎可以是经过编码的功能块,例如库、平台、软件开发套件(“SDK”)或对象。每个引擎可以在任何适当类型的包括一个或多个处理器和计算机可读介质的计算设备上实现,例如服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、便携式计算机或台式计算机、PDA、智能电话或其他固定或便携式设备。此外,两个或更多个引擎可以在相同的计算设备上或在不同的计算设备上实现。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能的一个或多个可编程计算机执行。过程和逻辑流程还可以由专用逻辑电路——例如,FPGA或ASIC——或者由专用逻辑电路和一个或多个可编程计算机的组合来执行。
适用于执行计算机程序的计算机可以基于通用或专用微处理器或基于两者,或者任何其他类型的中央处理器。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或实施指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。通常,计算机还将包括或可操作地耦合以从一个或多个大容量存储设备——例如磁、磁光盘或光盘——接收数据或将数据传输到一个或多个大容量存储设备或两者。然而,计算机不必具有此类设备。此外,计算机可以被嵌入到另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅列出几例。
适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,作为示例,包括半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;和CD ROM以及DVD-ROM磁盘。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器;和键盘以及定点设备,例如鼠标、轨迹球;或存在敏感显示器或用户可以通过其向计算机提供输入的其他表面的计算机上实现。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感知反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档以及从用户使用的设备接收文档来与用户进行交互;例如,通过响应于从网络浏览器接收到的请求,将网页发送到用户设备上的web浏览器。此外,计算机可以通过向个人设备——例如智能手机——发送文本消息或其他形式的消息,运行消息传递应用以及反过来从用户接收响应消息来与用户进行交互。
本说明书中描述的主题的实施例可以在包括后端组件,例如作为数据服务器;或者包括中间件组件,例如应用服务器;或者包括前端组件,例如具有图形用户界面、Web浏览器或用户可以通过其与本说明书中描述的主题的实现进行交互的app的客户端计算机;或一个或多个这种后端、中间件或前端组件的任意组合的计算系统中实现。系统的组件可以通过任何形式或介质的数字数据通信——例如通信网络——互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是借助于在相应的计算机上运行并彼此具有客户端-服务器关系的计算机程序产生的。在一些实施例中,例如为了向与作为客户端的设备交互的用户显示数据并从中接收用户输入的目的,服务器向用户设备传输例如HTML页面的数据。可以在服务器上从设备接收在用户设备处生成的数据,例如用户交互的结果。
尽管本说明书包含许多特定的实现细节,但是这些细节不应解释为对任何发明的范围或所要求保护的范围的限制,而应解释为对特定发明的特定实施例特定的特征的描述。在本说明书中单独的实施例的上下文中描述的某些特征也可以在单个实施例的组合中实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合来实现。而且,尽管以上可以将特征描述为以某些组合起作用并且甚至最初是这样要求保护的,但是在一些情况下,可以从组合中去除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可能涉及子组合或子组合的变化。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有示出的操作以获得期望的结果。在某些情况下,多任务和并行处理可以是有利的。而且,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解的是所描述的程序组件和系统通常可以被一起集成在单个软件产品或打包成多种软件产品。
已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。

Claims (10)

1.一种在并行处理设备上实现神经网络的方法,所述方法包括:
接收所述神经网络的门控激活单元的多个权重矩阵,所述门控激活单元具有两个或更多个层,每一个层定义包括以下的运算:(i)该层的权重矩阵与拼接的当前输入和先前的隐藏状态向量之间的矩阵运算,以及(ii)使用所述矩阵运算的结果的非线性激活运算;
通过将所述多个权重矩阵的对应行的组分配给多个线程块中相应的线程块来交织所述多个权重矩阵的行,每一个线程块是用于由并行处理设备的多个独立处理单元中的一个独立处理单元执行的计算单元;
由包交织所述多个权重矩阵的行,使得所有包从每个权重矩阵接收一些行并且来自每个权重矩阵的对应行被分配给同一个包,其中,在分配给包的行中,每个线程被分配由M/每个包中的线程的数量来给定的一定数量的行值,其中,M和每个包中的线程的数量二者是整数;
使用所述神经网络通过以下来处理数据:
由每一个线程块,接收门控激活单元的输入向量;
由每一个线程块,生成所述门控激活单元的当前状态向量的相应的部分,包括:
使用分配给该线程块的所述多个权重矩阵的对应行的一个或多个组以及所述输入向量的拼接来执行多个部分矩阵运算,所述输入向量的拼接至少包括当前输入向量和先前的时间步的隐藏状态向量,以及
使用所述多个部分矩阵运算的相应的结果来执行多个非线性激活运算。
2.根据权利要求1所述的方法,其中,交织所述多个权重矩阵的行包括:将来自所述多个权重矩阵中的每一个权重矩阵的至少一个行分配给每一个线程块。
3.根据权利要求1所述的方法,其中,交织所述多个权重矩阵的行包括:将相同数量的行分配给所述多个线程块的全部。
4.根据权利要求1所述的方法,其中,所述门控激活单元是所述神经网络的门控循环单元或长短期记忆单元。
5.根据权利要求1所述的方法,其中,由每一个线程块生成所述当前状态向量的相应的部分包括:由所述多个线程块至少部分地并行生成所述当前状态向量的多个部分。
6.根据权利要求1所述的方法,其中,层的所述运算包括:所述层的矩阵运算的结果和所述层的偏置向量之间的偏置加法运算,并且所述方法进一步包括:
将所述偏置向量的部分指配给所述多个线程块中的每一个线程块;以及
由每一个线程块将所述偏置向量的一部分加到矩阵运算的结果中。
7.根据权利要求1所述的方法,进一步包括:由线程交织所述多个权重矩阵的值,使得所有线程从每个权重矩阵接收一些值并且来自每个权重矩阵的对应值被分配给同一个线程。
8.一种被配置为在并行处理设备上实现神经网络的系统,所述神经网络包括:
具有多个权重矩阵的至少一个门控激活单元,所述门控激活单元具有两个或更多个层,每一个层定义包括以下的运算:(i)该层的权重矩阵和拼接的当前输入和先前的隐藏状态向量之间的矩阵运算,以及(ii)使用所述矩阵运算的结果的非线性激活运算;
其中,所述系统被配置为通过将所述多个权重矩阵的对应行的组分配给相应的线程块来交织所述多个权重矩阵的行,每一个线程块是用于由所述并行处理设备的多个独立处理单元中的一个独立处理单元执行的计算单元;
其中,所述系统被配置为由包交织所述多个权重矩阵的行,使得所有包从每个权重矩阵接收一些行并且来自每个权重矩阵的对应行被分配给同一个包,其中,在分配给包的行中,每个线程被分配由M/每个包中的线程的数量来给定的一定数量的行值,其中,M和每个包中的线程的数量二者是整数;
其中,所述系统进一步被配置为:
由每一个线程块,接收门控激活单元的输入向量;
由每一个线程块,生成所述门控激活单元的当前状态向量的相应的部分,其中,每一个线程块被配置为:
使用分配给该线程块的所述多个权重矩阵的对应行的一个或多个组以及所述输入向量的拼接来执行多个部分矩阵运算,所述输入向量的拼接至少包括当前输入向量和先前的时间步的隐藏状态向量,以及
使用所述多个部分矩阵运算的相应的结果来执行多个非线性激活运算。
9.根据权利要求8所述的系统被配置为实现根据权利要求2-7中的任一项所述的方法。
10.一种存储计算机程序指令的非暂时性计算机可读存储介质,所述计算机程序指令用于实现根据权利要求1-7中的任一项所述的方法。
CN201780095698.1A 2017-10-20 2017-10-20 门控激活单元运算的并行执行 Active CN111194451B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2017/057611 WO2019078885A1 (en) 2017-10-20 2017-10-20 PARALLEL EXECUTION OF OPERATIONS OF ACTIVATION UNITS WITH RELEASE

Publications (2)

Publication Number Publication Date
CN111194451A CN111194451A (zh) 2020-05-22
CN111194451B true CN111194451B (zh) 2024-02-27

Family

ID=60191586

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780095698.1A Active CN111194451B (zh) 2017-10-20 2017-10-20 门控激活单元运算的并行执行

Country Status (4)

Country Link
US (1) US11720781B2 (zh)
EP (1) EP3698287A1 (zh)
CN (1) CN111194451B (zh)
WO (1) WO2019078885A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220011740A (ko) * 2019-08-22 2022-01-28 구글 엘엘씨 전파 지연 감소

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105389772A (zh) * 2015-12-02 2016-03-09 百度在线网络技术(北京)有限公司 基于图形处理器的数据处理方法和装置
WO2016186801A1 (en) * 2015-05-21 2016-11-24 Google Inc. Neural network processor
CN106875013A (zh) * 2015-12-11 2017-06-20 百度(美国)有限责任公司 用于多核优化循环神经网络的系统和方法
CN107229967A (zh) * 2016-08-22 2017-10-03 北京深鉴智能科技有限公司 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2610269C (en) * 2005-06-01 2016-02-02 Loquendo S.P.A. Method of adapting a neural network of an automatic speech recognition device
US9928034B2 (en) 2014-12-17 2018-03-27 Nvidia Corporation Work-efficient, load-balanced, merge-based parallelized consumption of sequences of sequences
US9972063B2 (en) 2015-07-30 2018-05-15 International Business Machines Corporation Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units
WO2017136070A1 (en) * 2016-02-03 2017-08-10 Google Inc. Compressed recurrent neural network models
DE102016209721A1 (de) * 2016-06-02 2017-12-07 Siemens Aktiengesellschaft Modellbasierte Ermittlung eines Systemzustandes mittels eines dynamischen Systems
US10685285B2 (en) * 2016-11-23 2020-06-16 Microsoft Technology Licensing, Llc Mirror deep neural networks that regularize to linear networks
WO2019018693A2 (en) * 2017-07-19 2019-01-24 Altius Institute For Biomedical Sciences METHODS OF ANALYZING MICROSCOPIC IMAGES USING AUTOMATIC LEARNING
WO2019078890A1 (en) 2017-10-20 2019-04-25 Google Llc PARALLEL PROCESSING FOR NEURAL SIGNAL GENERATION NETWORKS

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016186801A1 (en) * 2015-05-21 2016-11-24 Google Inc. Neural network processor
CN105389772A (zh) * 2015-12-02 2016-03-09 百度在线网络技术(北京)有限公司 基于图形处理器的数据处理方法和装置
CN106875013A (zh) * 2015-12-11 2017-06-20 百度(美国)有限责任公司 用于多核优化循环神经网络的系统和方法
CN107229967A (zh) * 2016-08-22 2017-10-03 北京深鉴智能科技有限公司 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"SPEED: Open-source framework to accelerate speech recognition on embedded GPUs";Leonardo Intesa et al;《IEEE 2017 Euromicro Conference on Digital System Design (DSD)》;20170901;94-101 *

Also Published As

Publication number Publication date
US20210201113A1 (en) 2021-07-01
US11720781B2 (en) 2023-08-08
WO2019078885A1 (en) 2019-04-25
CN111194451A (zh) 2020-05-22
EP3698287A1 (en) 2020-08-26

Similar Documents

Publication Publication Date Title
KR102107709B1 (ko) 공간 트랜스포머 모듈들
CN110268422B (zh) 利用强化学习的设备布局优化
US10789544B2 (en) Batching inputs to a machine learning model
US20190266218A1 (en) Matrix computation within a reconfigurable processor fabric
WO2017200597A1 (en) Progressive neural networks
CN110476173B (zh) 利用强化学习的分层设备放置
US11042797B2 (en) Accelerating parallel processing of data in a recurrent neural network
JP7403638B2 (ja) 高速なスパースニューラルネットワーク
EP2738675B1 (en) System and method for efficient resource management of a signal flow programmed digital signal processor code
US10860921B2 (en) Parallel processing for signal generation neural networks
US20190279086A1 (en) Data flow graph node update for machine learning
EP3839834A1 (en) Topological scheduling
CN111194451B (zh) 门控激活单元运算的并行执行
US11163567B2 (en) Multivalue reductions using serial initial reductions in multiple register spaces and parallel subsequent reductions in a single register space
EP3971787A1 (en) Spatial tiling of compute arrays with shared control
KR20210112834A (ko) 뉴럴 네트워크 내 레이어에 관한 컨볼루션 연산의 처리 방법 및 장치
US11972341B2 (en) Parallel processing for signal generation neural networks
US10762035B1 (en) Matrix tiling to accelerate computing in redundant matrices
US20230008777A1 (en) Accelerating convolutions for sparse inputs
WO2023192678A1 (en) Cross-cluster communication for machine learning workloads

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
GR01 Patent grant
GR01 Patent grant