CN106875013B - 用于多核优化循环神经网络的***和方法 - Google Patents
用于多核优化循环神经网络的***和方法 Download PDFInfo
- Publication number
- CN106875013B CN106875013B CN201611132073.1A CN201611132073A CN106875013B CN 106875013 B CN106875013 B CN 106875013B CN 201611132073 A CN201611132073 A CN 201611132073A CN 106875013 B CN106875013 B CN 106875013B
- Authority
- CN
- China
- Prior art keywords
- modules
- neural network
- recurrent neural
- module
- processor
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
公开用于多核优化循环神经网络(RNN)架构的***和方法。各种架构根据给定的处理器的多整体式同步并行(MBSP)模型来影响通信操作和同步操作。称为MBSP‑RNN的所得的网络架构族类似具有相同数量的参数的常规RNN那样执行,但是在映射至现代通用处理器上时,显著更为有效。由于在计算效率上大幅提高,因此,对于固定计算预算来说,MBSP‑RNN在应用诸如端对端的语音识别上优于RNN。
Description
技术领域
本发明涉及计算机处理,并且更具体地涉及通过降低同步和通信的成本来提高计算效率的***、设备和方法。
背景技术
循环神经网络(RNN)是一种类型的人工神经网络,其中在给定时间步长中的单元集合的输出被馈送至在下一时间步长中的相同单元的输入,由此,赋予网络随时间持续的记忆的概念。RNN的计算结构使其本身形成可解决复杂的序列至序列映射问题的网络,例如要求时间序列数据的变换的问题。例如,语音识别应用中的将记录的音频波形从模拟域映射到该音频数据的文本表示的变换。
然而,尽管CMOS技术的发展和RNN架构利用以小独立块的方式同时执行大任务中的多个部分的并行性的能力使得算数运算的吞吐量增加,但是常用RNN仍然存在显著缺点,例如,同步成本和通信成本的提高。
详细来说,由于计算机的基本物理限制,RNN神经元的全部至全部的连接要求相对大量的通信带宽。另外,每当连接在时间序列中的连续时间步长中建立在计算单元(神经元)之间时,必须执行昂贵的同步操作。RNN内的每个单元读取所有输入并且写入所有输出,使得当单元映射到计算机中的处理单元中时,数据必须在有限量的时间内跨越多个计算机。然而,单元之间的此类通信减慢连续时间步长中连接的执行,并且增加其中数据可被传输的时间间隔,由此无论实际在单元之间移动的数据的量多少,都会致使通信发生时延。因此,将会期望,通过增加从一个神经元的输出至另一神经元的输入的通信之间经过的允许时段来放宽现有时延要求,使得多个时间步长可发生在数据通信步骤之间。
另外,除了同步操作所造成的时间约束问题之外,现有RNN架构的另一限制基于以下事实:单独单元必须跨越位于第一地点的计算机来彼此通信。这种通信受到计算机在给定时段内能够在相邻的神经元之间通信的最大总数据量的限制。
常用设计方法主要集中于改进RNN的算法性质,例如,在较长时间尺度上存储数据的能力或在多个时间尺度上处理信号的能力。这些方法通常不涉及通过降低同步成本和计算成本来实现RNN计算效率的提高。
因此,将会期望有这样的结构和方法,即,该方法和机构利用简单、全连接的RNN所提供的精确序列至序列变换,同时减少由RNN执行的同步和通信的量,以在映射到现代通用处理器上时提高计算效率,并且最终提高性能。
发明内容
本申请提供了一种通过将循环神经网络架构映射至计算设备的处理器的微架构来改进计算设备的计算性能的方法、一种循环神经网络架构、以及一种在计算设备的处理器的微架构上操作循环神经网络架构而改进计算设备的计算性能的方法。
根据本申请的一方面,提供了一种通过将循环神经网络架构映射至计算设备的处理器的微架构来改进计算设备的计算性能的方法,包括:基于处理器的微架构的描述,获得与存储器的级相关联的值;以及对于循环神经网络架构的层级中的最低级至最高级,每个级与处理器的微架构相关联并通过存储器容量、处理器核心数、带宽、计算带宽和时延中的至少两个来描述;将神经元分组成模块,每个模块表示循环神经网络构架内的循环神经网络层中的逻辑单元;以及将连接布置在模块之间,使得模块满足循环神经网络架构的预定条件,循环神经网络架构的预定条件与存储器容量、处理器核心数、带宽、计算带宽和时延中的至少两个有关。
根据本申请的另一方面,提供了一种循环神经网络架构,该循环神经网络架构设计用于在计算设备处理器微架构上操作,以改进计算设备的计算性能,循环神经网络架构包括:神经元;包括神经元的模块,模块表示逻辑单元,并且根据处理器微架构的分级结构的级来布置以模拟包括处理器的单独计算资源的分级结构,使得分级结构中的每级与处理器存储器中的至少一级相关联并且包括第一循环神经网络层和第二循环神经网络层,分级结构中的每级是用存储容量、处理器核心数、存储器带宽、计算带宽和存储器时延中的至少两个来描述的;以及模块间的双向连接,模块间的双向连接使得第一循环神经网络层与第二循环神经网络层之间能够通信,以满足循环神经网络架构的预定条件,循环神经网络架构的预定条件与存储容量、处理器核心数、带宽、计算带宽和时延中的至少两个有关。
根据本申请的再一方面,提供了一种在计算设备的处理器的微架构上操作循环神经网络架构而改进计算设备的计算性能的方法,包括:基于以处理器的微架构的描述为基础的与存储器级相关联的值,对于循环神经网络架构的分级结构的最低至最高级来说,每个级与处理器微架构相关联并用存储容量、处理器核心数、带宽、计算带宽和时延中的至少两者描述;将神经元分组成模块,每个模块表示循环神经网络构架内的循环神经网络层中的逻辑单元;以及将连接布置在模块之间,使得模块满足循环神经网络架构的预定条件,循环神经网络架构的预定条件是与存储容量、处理器核心数、带宽、计算带宽和时延中的至少两者有关。
附图说明
将参考本发明的实施方式,它们的示例可在附图中示出。这些附图旨在是说明性的而非限制性的。虽然本发明大体上在这些实施方式的上下文中描述,但应理解,本发明的范围并不旨在限于这些特定实施方式。附图中的元件可能不按比例绘制。
图1描绘根据本公开多种实施方式的包括RNN以提高计算效率的计算***的简化框图。
图2A示出常用的、全连接的基线RNN层架构。
图2B示出在时间序列中使用快速模块和慢速模块的常用RNN层架构中的模块之间的连接性。
图2C描绘多整体式同步并行(MBSP)机器模型的层级中的单个级。
图2D是最低级的层级MBSP模块的示例。
图3A示出根据本公开的多种实施方式的在RNN的层级中的第二级中的两个MBSP模块之间的互连。
图3B示出根据本公开的多种实施方式的用于示例性处理器的MBSP机器模型层级。
图3C是根据本公开的多种实施方式的用于形成有效RNN层架构的过程的流程图。
图3D是根据本公开的多种实施方式的用于平衡RNN的预定条件的过程的流程图。
图4示出根据本公开的多种实施方式的在特定的处理器上执行的RNN中的模块的层级的级的概念。
图5示出根据本公开的多种实施方式的分成快速模块和慢速模块的RNN。
图6示出根据本公开的多种实施方式的连接性的并行前缀模式。
图7示出根据本公开的多种实施方式的允许全局通信同时使时延和带宽要求最小化的另一方法。
具体实施方式
在以下描述中,出于解释目的,阐明具体细节以便提供本发明的理解。然而,将对本领域的技术人员显而易见的是,可在没有这些细节的情况下实践本发明。本领域的技术人员将认识到,下文描述的本发明的实施方式可以以各种方式并用各种手段执行。本领域的技术人员还将认识到,另外的修改、应用和实施方式只要是本发明可提供效用的另外领域,便处于本发明的范围内。因此,下述实施方式是本发明的具体实施方式的说明,并且意图避免使本发明不清楚。
在本说明书中对“一个实施方式”或“实施方式”的提及表示结合实施方式所描述的具体特征、结构、特性或功能包括在本发明的至少一个实施方式中。短语“在一个实施方式中”、“在实施方式中”等在本说明书的各个地方的出现不必指代相同的实施方式。
此外,附图中的部件之间或方法步骤之间的连接不限于直接受影响的连接。相反,在不背离本发明的教导的情况下,附图中所示的在部件之间或方法步骤之间的连接可以通过向其添加中间部件或中间方法步骤进行修改或以其它方式改变。在本文件中,术语“架构”和“网络架构”是指在RNN层中的神经元之间的连接性的特定模式。“全局通信”是指神经元与网络中的所有其它神经元交流同时使时延和带宽要求最小化的能力。
图1描绘根据本发明的多种实施方式的包括RNN以提高计算效率的计算***的简化框图。应当理解,针对***1000所示出的功能可操作来支持信息处理***的各种实施方式,但应理解,信息处理***可不同地配置并且包括不同组件。如图1所示,***1000包括中央处理单元(CPU)1001,CPU提供计算资源并且控制计算机。CPU 1001可实施有微处理器等,并且还可包括图形处理器(GPU)1017和/或用于数学计算的浮点协处理器。***1000还可包括***存储器1002,***存储器可呈随机存取存储器(RAM)和只读存储器(ROM)形式。
如图1所示,还可提供多个控制器和***设备。输入控制器1003表示至多种输入设备1004的接口,例如,键盘、鼠标或定位笔。还可存在与扫描仪1006通信的扫描仪控制器1005。***1000还可包括用于与一个或多个存储设备1008相接的存储控制器1007,其中,存储设备1008中的每个包括存储介质(例如,磁带或盘)、或光学介质(其可用于记录用于操作***、实用程序和应用程序的指令的程序,这些程序可包括实施本发明的各方面的程序的实施方式)。存储设备1008还可根据本发明用于存储经过处理的数据或是待处理的数据。***1000还可包括用于为显示设备1011提供接口的显示控制器1009,显示设备1011可为阴极射线管(CRT)显示器、薄膜晶体管(TFT)显示器或其它类型的显示器。计算***1000还可包括用于与打印机1013通信的打印机控制器1012。通信控制器1014可以与一个或多个通信设备1015相接,这使***1000能够通过各种网络(包括因特网、以太网云、FCoE/DCB云、局域网(LAN)、广域网(WAN)、存储区域网络(SAN))中的任一网络、或通过任何合适的电磁载波信号(包括红外信号))连接至远程设备。
在示出的***中,所有主要***组件可连接至总线1016,总线1016可以表示多于一个的物理总线。然而,各种***组件可在物理上彼此接近或可不在物理上彼此接近。例如,输入数据和/或输出数据可远程地从一个物理位置传输到另一物理位置。另外,实施本发明的各方面的程序可通过网络从远程位置(例如,服务器)访问。此类数据和/或程序可通过各种机器可读介质中的任一机器可读介质来传送,其中,机器可读介质包括但不限于:诸如硬盘、软盘和磁带的磁性介质;诸如CD-ROM和全息设备的光学介质;磁光介质;以及专门配置成存储或存储并执行程序代码的硬件设备,例如,专用集成电路(ASIC)、可编程逻辑器件(PLD)、闪存设备、以及ROM和RAM设备。
本发明的实施方式可使用用于一个或多个处理器或处理单元以使步骤执行的指令来在一个或多个非暂态计算机可读介质上编码。应当注意,一个或多个非暂态计算机可读介质应包括易失性存储器和非易失性存储器。应当注意,替代实现方式是可能的,包括硬件实现方式或软件/硬件实现方式。硬件实施的功能可使用ASIC、可编程阵列、数字信号处理电路等来实现。因此,任何权利要求中的术语“手段”旨在涵盖软件实现方式和硬件实现方式两者。类似地,如本文使用的术语“计算机可读媒介或介质”包括具有实施在其上的指令程序的软件和/或硬件或它们的组合。利用所构想的这些替代实现方式,应当理解,附图以及随附描述提供本领域的技术人员编写程序代码(即,软件)和/或制造电路(即,硬件)以执行所需处理所需要的功能信息。
应当注意,本发明的实施方式还可涉及具有其上具有用于执行各种计算机实施的操作的计算机代码的非暂态有形计算机可读介质的计算机产品。介质和计算机代码可以是出于本发明的目的专门设计和构造的介质和计算机代码,或者它们可以是对相关领域中的技术人员已知的或可用的。有形计算机可读介质的示例包括但不限于:诸如硬盘、软盘和磁带的磁性介质;诸如CD-ROM和全息设备的光学介质;磁光介质;以及专门配置成存储或存储并执行程序代码的硬件设备,例如,专用集成电路(ASIC)、可编程逻辑器件(PLD)、闪存设备、以及ROM和RAM设备。计算机代码的示例包括机器代码(例如,编译器产生的代码)以及包含可由计算机使用解释器来执行的更高级的代码的文件。本发明的实施方式可完全地或部分地实施为可在由处理设备执行的程序模块中的机器可执行指令。程序模块的示例包括库、程序、例程、对象、组件和数据结构。在分散式计算环境中,程序模块可以以以下设定在物理上定位,即本地地、远程地或两者皆有地。
本领域的技术人员将认识到,计算***或编程语言对本发明的实践来说并不重要。本领域的技术人员还将认识到,多个上述元件可物理地和/或在功能上划分成子模块或组合在一起。
人工神经网络中的神经元是处理N维输入列向量x并且输出函数f(WT x)的计算单元,其中W是N维输入行向量,以及f(实际范围的和定域的函数)称为激活函数。常用激活函数包括sigmoid函数、修正线性函数和tanh函数。神经网络包括多个“神经元”,使得给定“神经元”的输入可以是至网络的输入,或另一神经元的输出。神经元之间的连接性的特定模式称为该网络的“架构”。
常用网络架构为全连接层的堆叠。全连接层接收N个输入值,N个输入值中的每个直接连接至全连接层中的M个神经元中的每个,并且产生M个输出值,每个神经元一个。
当实施在软件中和执行在处理器上时,这些神经网络架构常常使用一个针对每个层的浮点数的二维矩阵(称为权重矩阵,或W)表示,其中一个维度表示层中的神经元,并且另一维度表示至该层的输入。然后,网络的输入和输出使用稠密单维矢量表示。这使网络能够被评估为一系列的矩阵-矢量乘积,每个层一个,随后针对每个层应用激活函数。这个方法允许简单且有效的实现方式,因为提供矩阵-矢量和矩阵-矩阵乘积运算的经高度调谐的稠密线性代数库容易对大多数通用处理器可用。
该运算在映射到现代通用处理器时的主要成本在于针对每个层加载权重矩阵W,这是因为以下事实:现代通用处理器具有比存储带宽更高的运算带宽。该成本可分摊在多个网络输入之上,通常称为“分批”。分批有效地将多个输入矢量封包到更大矩阵中,从而允许使用矩阵-矩阵乘积而非矩阵-矢量乘积执行对网络的评估。为了足够大的分批大小,该运算可能受处理器的浮点运算带宽限制,而非受限于其存储带宽。
具有全连接层的循环神经网络以正常全连接层为起始,并使用从当前时间步长上的每个神经元的输出至下一时间步长上的所有其它神经元的附加连接增强这些正常全连接层。
令单个输入序列x和对应输出序列y从训练集合X={(x(1);y(1));(x(2);y(2)),...}被采样。每个输入序列x(i)是长度T(i)的时间序列,其中每个时间分片是专用特征(例如,音频样本)的矢量,t=0,...,T(i)-1。
时间正向(forward-in-time)hl循环层激活被计算为:
函数f可为标准循环运算:
其中Wl是输入隐藏权重矩阵,Ul是循环权重矩阵,并且bl是偏置项。
RNN的实现方式通常针对每个时间步长来将计算分成两个阶段。在第一阶段中,对每个时间步长的每个神经元的输出的贡献使用该时间步长的神经元输入来计算。就像正向反馈网络那样,第一阶段将在层中的所有神经元的输入权重表示为稠密二维矩阵,并且将每个时间步长的至层的输入表示为一维稠密矢量。常用优化是将时间维度展开,并将多个一维输入矢量一起封包成单个二维矩阵。这是有可能的,因为权重矩阵在所有时间步长上共享。
在第二阶段中,在给定时间步长上的层神经元的输出与在下一时间步长上的层神经元的输入之间的连接由二维矩阵表示,称为循环权重矩阵。在这种情况下,每个时间步长顺序处理,因为下一时间步长的输出取决于当前时间步长的输出,因此,要求使用矩阵-矢量乘积执行该运算,然后应用激活函数。
图2A示出常用的全连接的基线RNN层架构。标记为118-124的方框表示矢量,该矢量包括输入数据的集合,诸如在特定时间上获得的测量的电信号,例如,在时间t=0秒时采样的音频波形信号的幅度数据。每个矢量118-124包括单独值116,并且布置在输入时间序列102中的将每个矢量118-124与采样时间相关联的时间尺度上。应当注意,在样本之间的时间间隔无需等距,并且矢量中的值可等同地为变换的值。
与输入矢量118-124类似,输出矢量136-138中的数据布置在输出时间序列104中。输出矢量136-138包括多个样本的输出数据的集合。输出矢量136中的每个单独值134对应于与来自输入数据矢量118-124的至少一个输入值相关联的字符。每个字符134表示对应于从测量到的音频信号得出的值116的预测值。举例来说,矢量136中的值134可以表示例如字符“b”。每个字符可分配有解释为概率的值,例如0.2。在此,RNN150将预测,在与输出矢量136相关联的时间步长上输出的字符中的一个有20%的概率为字符“b”。
中间层106处的计算可考虑为通过允许变换的线性和非线性网络组件的功能结构执行。线性变换可由矩阵108表示,矩阵108继而是层106中的等效图形的表示。例如,图2A中的矩阵108成行并成列地存储网络参数,其中矩阵108中的行表示单独神经元,并且列表示进入和离开单独神经元的连接。层106和108的各自的功能针对每个时间步长重复,由此限定整个RNN 100。
图2A中的中间层106包括包含输入值145的模块140、非线性变换模块148和线性变换模块152(例如,求和模块)。模块140包括连接至输入值145并产生可经历线性和/或非线性变换的输出值146的单独神经元142的子组。
在操作中,RNN 150中的所有的神经元彼此通信。连接至神经元142的一个或多个输入值145产生输出值146,并且可在某点156处连接至神经元142本身之中,因为神经元142可表示为具有指回其本身的环路,该环路包括元件142-156。在实施方式中,在通过求和元件152求和后,接着,神经元142被连接至RNN 150中的所有其它神经元。输出进一步与后续时间步长的对应于输入序列102中的矢量120的矢量120的输出求和。在同步操作中,在后续时间步长中,神经元143的输出由神经元142使用。
应当清楚,第二阶段是计算成本最高的。即使循环权重矩阵可对每个时间步长再使用,在时间步长之间的顺序的相关性也涉及在时间步长之间的明确同步,并且涉及在矩阵太大而难以适配到芯片上存储器中时,在每个时间步长上从存储器中重载循环权重矩阵。
多整体式同步并行(MBSP)抽象机器模型是用于描述处理器的特性的高级性能模型,其考虑到具有有限的存储容量和计算资源的多个处理器核心的物理现实以及随处理器核心数增加的通信成本和同步成本。这些成本源自处理器核心的物理特性以及在处理器核心之间的物理距离。
MBSP模型是适应任意数量的级的层级模型。在每级上,模型从芯片上存储器容量和缓存容量的角度描述处理器核心集。具体来说,存储量的物理限制可在固定量的时间内从物理处理器核心得到,以及用于每个核心的存储器的物理区域和更多数量的核心之间的基本权衡形成了对存储器层级的需求。MBSP模型中的层级中的每级可由四个参数描述:1)子组件/核心的数量;2)通信带宽;3)同步成本;以及4)缓存/存储器大小。
对给定问题的最佳MBSP算法同时在以下方面中是最佳的:i)并行计算操作;ii)并行通信成本;以及iii)对恒定乘法因子的同步成本。能够将MBSP模型直接应用至RNN的第一阶段,因为它在计算上等效于稠密矩阵乘法,并且MBSO最佳算法可直接应用于稠密矩阵乘法。然而,第二阶段更加困难。使用一系列的矩阵-矢量乘法的直接算法就并行计算操作来说是最佳的。然而,如果循环权重矩阵在MBSP层级的给定级上不适配存储器,那么必须使用将支配计算成本的通信操作从层级的下一级来访问。类似地,时间步长之间的顺序依赖和神经元之间的全部至全部连接性一起迫使在每个时间步长之间、在所有的处理器间进行全局同步操作。对于通信成本比计算成本高约80倍并且全局同步成本比计算成本高约6百万倍的现代处理器,预期到的是,通信成本或同步成本占支配地位,并且处理器的可用计算资源在极大程度上并未得到充分利用。频繁的通信步骤和全部至全部的同步步骤大大降低效率,因为在现代处理器(例如图1所示CPU或GPU)中,通信操作和同步操作的吞吐量基本上低于算数运算的吞吐量。
随着层大小随更大的数据集而继续增大,大型网络无法分摊加载权重的成本,因为时间步长之间的顺序依赖要求层在移动到下一时间步长上前,评估整个时间步长。另外,芯片上存储器、尤其最快速且最有效的那种(例如L1缓存和寄存器)通常不足够大,以致无法存储全部的层。
同时针对若干样本计算更新(称为“小型分批”)(与使用整个数据集的分批方法和使用单个样本的纯随机方法相反)通过以下方式缓解通信问题中的一些问题:将多个输入矢量组合成更大矩阵来使用矩阵-矩阵乘积而非矩阵-矢量乘法评估RNN 150,并且在对应于不同时间步长的多个输入数据元素上重新使用相同数量的权重。然而,这种方法的一个主要缺点是,所处理的所有不同样本以及它们的中间计算阶段必须以等于分批大小的因子存储,由此基本上增加评估RNN 100的存储器要求,这是因为相对大的分批大小(例如,128-256)是在现代处理器上实现高效率所要求的。另一主要缺点在于,方法仅对训练RNN 100有用,而训练完成后并不使用。另外,小型分批方法无法改进模型训练时间,因为它们仅仅增加每次更新完成的工作量,而非更新速率本身。
总体来说,RNN所要求的全部至全部连接性增加评估它们所要求的带宽和时延。因此,将会期望有这样的方法和结构,它们允许RNN架构提供序列-序列变换,而不受到常规RNN设计中固有的同步时延和带宽限制的限制。
图2B示出在时间序列中使用快速模块和慢速模块的常用RNN层架构中的模块之间的连接性。如图2A中的基线网络150那样,图2B中的网络200使用包括单独神经元的模块的概念。网络200包含快速模块254-260的单个层252以及相对较慢模块204-206的两个或更多个层202。在操作中,分别经由适当连接220和270,网络200中的快速模块254-260彼此通信,并且慢速模块204-206彼此通信。快速层252中的快速模块254-260与慢速层202中的慢速模块204-206之间的通信是不频繁的。另外,此类通信限于从慢速层202至快速层252的单向通信222。换句话说,快速层252中的快速模块254-260不馈送入慢速层202中的慢速模块204-206。
应当注意,所述设计主要旨在允许网络200在多个分辨率下处理信号。这个目的基于以下假设:网络200的结构下的通信模型类型更好地近似于特定类的函数,例如,对于全连接的模型(例如图2A所示基线模型)来说。在音频应用中,例如,在输入音频数据中的频率分量通常以不同的速度变化并且同时导致快速改变的分量和慢速地改变的分量的情况下,网络200的映射函数更有可能自然地模拟待由该函数建模的下层采样过程。
图2C描绘多整体式同步并行(MBSP)机器模型的层级中的单个级中的模块。图2D示出跨越六个时间步长展开的最低级的层级MBSP模块的示例。每个模块包含四个神经元。
在图2C中,模块282中的层级中的级包含具有相关联的时延和带宽的存储器、以及六个子级。最后一个子级在图2C的右侧上以放大图示出。每个模块282用M(m,n)标记,其中m是层级中的级(从最低至最高),并且n是层级中的给定级内的模块的索引编号。模块282包括人工神经网络单元的全连接集。单元可为简单线性阈值单元,或为更复杂的单元,例如,长短期存储(LSTM)单元或门限循环单元(GRU)。
根据本公开实施方式的MBSP-RNN可以包括模块的层级。在层级的的最低级上,MBSP-RNN模块可为简单RNN层。在层级中的所有其它级上,模块被递归地限定为MBSP-RNN层的实例。图3A示出根据本公开的多个实施方式的在RNN层级的第二级中的两个MBSP模块之间的互连性。网络300包括单独神经元303,单独神经元303在策略上分组并在子组或逻辑模块(例如,304)中连接在一起,其中,数据可划为分子组或逻辑模块。在实施方式中,网络300包括快速模块或远程模块(例如,310-312)的一个或多个层352以及相对较慢模块或本地模块(例如,304-308)的一个或多个层302。在实施方式中,层302中的每个模块被连接至层302中的所有其它模块。类似地,在实施方式中,层352中的每个模块被连接至层352中的所有其它模块。另外,任何数量的模块可被连接为经由连接330彼此通信,连接330表示模块间的连接。
在操作中,在层级中的给定级内,模块可稀疏地连接、在较低频率下更新、以及随时间延迟更新。在实施方式中,稀疏连接332被设计成使得给定模块的输出仅连接至其它模块的输入的子集。例如,如果层级中的给定级包含四个模块,那么每个模块可连接至其两个最近相邻模块,而不连接至其它所有其它模块。稀疏连接减小模块所要求的通信带宽。它们还通过减少需要被模块存储的权重数量来降低模块的芯片上存储器要求。
在实施方式中,网络300具有为3的时间延迟(td),这意味着模块间的连接330向前跳过三个时间步长。时间延迟的连接在每个时间步长上发送数据,但是所述数据无需在若干另外时间步长内到达目的地。换句话说,输出在到达下一模块的输入之前延迟D个时间步长。这个时间延迟给予神经元更多时间来执行同步,并且减少沿时间延迟的连接的同步总数。
在实施方式中,用于MBSP-RNN的第一级的激活可用层级中的M个级和每级N个模块来表达为:
对层级中的每个连续级激活的贡献可表达为:
我们可将层级中的最高级上的每个模块的完整激活形成为:
最后,作为层级中的最高级上的每个模块的串联的全部层的完整激活可表达为:
图3A中的RNN 300具有为2的慢速更新因子,使得模块间的连接370仅每隔一个时间步长被应用。函数S(x)372表示稀疏的模块间连接性,例如,远程模块352中的神经元311的输出仅连接至本地模块302中的神经元的子集。慢速更新连接以比正常连接低的频率采样。慢速更新可视为稀疏的连接性(其完全省略连接)与每个时间步长后更新的规则连接之间的妥协。
在实施方式中,从输入序列变换的输出序列用作下一层(未示出)的输入序列。以此方式,任意数量的层可被堆叠以生成层级中的阶段或级的堆叠,这使RNN 300能够为更复杂的函数建模。子组304内(例如,在层级中的非常底层的位置)的神经元303可以执行与规则层中的神经元相同的功能。
应当理解,图3A所示的RNN 300的元件的数量和大小(例如,神经元的数量、连接、以及在连接之间的时间步长)仅为参数,而非旨在作为限制。任何数量的元件可添加至RNN300和从其上删除,例如,以在操作前及操作期间改变网络大小。另外,非线性功能的不同组合可以用于不同类型应用中。
在实施方式中,两个或更多个模块可以形成与层级中的更高级关联的、比单独模块304的单元更大的单元,同时保持以下特性:在通信之间经过的时间增加且通信的数据量减少。实际上,RNN 300寻求模拟构成处理器的单独计算资源的结构。
在实施方式中,RNN 300被设计成用于在目标处理器或处理器族上执行。对于目标处理器来说,在实施方式中,RNN 300设有参数(子模块或处理器核心、通信带宽、同步成本和缓存/存储器容量)集列表,其中每个参数集表示类似于图2C的处理器存储器层级中的级。然而,应当注意,可以选择任何数量的级或子级。基于对处理器的该描述,在实施方式中,在以层级中的最低级为起始并工作直到最高级的情况下,单独神经元的集合被分成逻辑模块,并且模块之间的连接以满足以下约束中的一个或多个的方式被删减:
-针对给定模块来选择的表示神经元的参数完全适配存储器层级中的该级的缓存/存储器容量,例如,使得缓存/存储器容量确定模块大小。
-执行模块内的连接和模块间的连接所需要的通信成本近似等于评估模块的神经元的计算成本。带宽确定连接数量以减少在模块之间的连接数量。单独神经元可视作模块的最低层。
-执行模块间的连接所需要的同步成本近似等于评估模块的神经元的计算成本。
时延可定义为数据通过模块之间的连接被发送的时间与数据被接收的时间之间的延迟量。增加模块之间的连接通信数据的时间延迟具有减少所要求的同步操作数量的效果。本地通信在每个时间步长上发生,但是全局通信可以在延迟下发生。这些改变平衡RNN的计算、通信、同步和存储器容量要求,使得不会出现某一个资源成为显著瓶颈的情况,由此提高带宽并且实现较不严格的时延要求。
在实施方式中,约束通过在多个时间步长上重新使用MBSP-RNN权重参数来平衡,以避免从芯片外存储器(例如,DRAM)中重复加载权重,并且减少同步以及芯片外存储器访问,它们与浮点运算相比成本明显更高。应当注意,实际实现方式可将两个或更多个策略组合,以便实现所要求量的权重重新使用,从而使RNN的评估在计算操作和通信操作之间平衡。
在实施方式中,在每个时间步长上,经由相应连接,快速模块(例如,RNN 300中的310-312)的所有连接彼此通信,并且慢速模块(例如,304-308)的所有连接彼此通信。在实施方式中,快速层352中的快速模块(例如,310-312)与慢速层302中的慢速模块(例如,304-308)之间的模块间的通信330相对较不频繁,因此造成数据交换减少。
应当注意,模块间的通信330不限于单向通信,因为在每个层302、352之间的双向通信也是有可能的。在实施方式中,在层级中的最低级上,模块(例如,304-312)形成单个RNN层,其中每个模块304-312包括人工神经网络单元的全接连集。单元可为简单线性阈值单元,或为更复杂的单元,例如,LSTM单元或GRU。在实施方式中,在层级中的所有其它级上,模块可以递归地限定为简单RNN层的实例。在实施方式中,在层级中的给定级内,模块(例如,304-312)被稀疏地连接、以相对低的频率更新,以及随时间延迟更新。
在实施方式中,在层级中的给定级内的模块(例如,模块310)的输出仅连接至其它模块(在此,310和308)的输入的子集,而非被连接至所有其它模块。因此,形成稀疏连接,这减小所要求的通信带宽。另外,通过完全省略一些连接,稀疏的连接性通过减少模块需要存储的权重数量来减小模块304-312所要求的芯片上存储器。在实施方式中,RNN 300包括慢速更新连接(例如,320-322),该慢速更新连接可以以比在每个时间步长后更新的正常RNN连接低的频率采样。
如将参考图6更详细论述的,在某些实施方式中,在层级中的给定级内,模块的输出不传送至在下一时间步长上的其它模块的输入。替代地,输出以较低频率发送(每P个时间步长一次),并且在到达下一模块的输入前延迟D个时间步长。模块之间的这种时间延迟的连接性允许模块之间的同步操作与未来时间步长上的计算重叠。
在实施方式中,单个全局障碍多层结构跟随在多级之后;然而,RNN大小被设定为使得该模块的所有权重适配芯片上存储器(例如,寄存器、L2缓存和L3缓存)。这允许权重仅被加载一次,并且接着在所有时间步长上重新使用。在实施方式中,在每个时间步长后,处理器核心中的全部交换输出激活并且同步。模块数量、模块之间的连接性的量和同步的频率可根据处理器的MBSP参数来设定。因此,MBSP-RNN执行计算操作、通信操作和同步操作所要求的时间被近似地平衡。虽然这个架构在给定层中存在最大参数数量限制,但是在实施方式中,限制通过将多个层堆叠以形成更大网络而被克服。层可竖直地或水平地堆叠,以对网络深度与参数数量进行权衡。
在实施方式中,稀疏时间延迟的MBSP-RNN架构使用相对更完整的层级来支持单个层中的任意数量的参数。这个架构类似图3A中示出的架构。在实施方式中,层级中的第一级(例如,最低级)将RNN模块直接匹配至处理器核心(例如,线程),并且后续的级被匹配至存储器层级的其它级(例如,寄存器、L2缓存、L3缓存、DRAM、分布式共享存储器等),直到芯片上存储器的所有级被匹配至对应存储器元件,以允许所有网络参数被存储。在实施方式中,存储器级可扩展为包括另外的处理器(例如,芯片外处理器),所述另外的处理器可以彼此通信和/或与具有不同特性的不同类型的存储器(例如,盘)通信。
在实施方式中,由前馈层RNN架构分开的MBSP包括两个层。第一层可以包括多个并行模块,例如图2D所示的模块。每个模块可工作于层输入的(不必须互斥的)子集。模块可根据用于目标处理器的MBSP层级与它们的相邻模块通信,使得操作将工作保持为有限的。在实施方式中,并不要求用于第一层的所有权重适配芯片上存储器,因此,并不限制该层中的参数数量。然而,具有更多的参数的网络可能需要执行比具有更少的参数的网络更不频繁的模块之间的通信。在实施方式中,第二层是纯前馈层,其处理与第一层执行的变换的逆变换对应的、来自第一MBSP-RNN层的模块的子集的输出,例如,以生成具有不同大小或维度的中间表示,使得逆变换的处理产生第一层的原始格式。直观地,第一层中的模块处理输入的子集,以及第二层将在第一层中未强力连接的模块的结果组合。
应当理解,如本文公开的将模块之间的连接分组和删减的策略可递归地应用(例如,应用至映射至处理器的一个部分的RNN的分区,并且随后再应用至映射至处理器的一个子部分的RNN的子分区),同时维持层级中的每个层处的模块的基础结构。
图3B示出根据本公开的多种实施方式的用于示例性处理器的MBSP机器模型层级。如参考3A所提及的,MBSP机器模型中的层级中的每个级可用表示目标处理器的参数或属性(包括处理器核心数、通信带宽、同步时延和存储器容量)的集合的列表来描述。具体处理器的细节可从处理器的操作手册或数据表获得。
在图3B中的示例中,层级352-356中的每级包括与时延362和带宽364关联的存储器容量360、以及子级或计算单元368的集合。图3B中的示例性标记GPU、核心和线程表示在三个不同层级的级352-356处生成的元件,其中,级352-356对应于用于示例性处理器的处理器元件372-376的存储器层级370中的三个不同的级(例如,级1-3)。在所描绘的实例中,GPU表示可视为包括子级核心354和最低子级线程356的顶级352。存储器容量360可以以字节表示。处理器核心计算能力是可以以每秒浮点运算表示的参数,作为对应计算电路的计算速率368(例如,每线程2GFLOPS/s),但应注意,其它单位或度量是可能的。通信带宽364以GB/s来表示,以及在一级(例如,线程级356)内可访问存储器时的同步时延362可以以纳秒表示。
在图3B的实例中,处理器372表示包括24个单独核心374的目标处理器,每个单独核心374还进一步包括128个单独线程376。在实施方式中,层级的级或子集352-356的数量基于目标处理器的存储器级来选择。在实施方式中,基于这个对处理器的描述,从层级中的最低级356至最高级352,规则被应用于每级。
当每个神经元要求某个量的存储和计算时,表示神经元的参数可例如基于存储器容量360来选择,以确定每个神经元的大小以及适配存储器372-376的神经元的数量。通信成本是访问存储器中的所有神经元所需的成本,并且可隐含于模块间的模块连接。在实施方式中,神经元之间的通信成本从带宽和时延确定。带宽364是具体的存储器372-376可由计算单元访问的最大速率的度量。由带宽(即,访问速率)划分的存储器的总量是访问存储器所需的时间总量。在实施方式中,这个时间等于执行计算所需的时间总量。在实施方式中,通信成本与计算成本相比较,并设计成近似等于计算成本。计算成本可从计算速率确定、通过时间来归一化,其方法是:将所有神经元的数量乘以每神经元成本除以计算速率,同时归一化单位(例如,归一化至秒)。
基于MBSP模型,可将线程网格378中的每个线程376视为包括RNN中的所有神经元的一些子集的层356。在实施方式中,线程级356中的神经元的模块映射到线程376上,使得不同模块映射到不同线程376。当网格378中的线程376单独操作以访问存储在存储器中的任何数据时,神经元经由模块内的连接在线程376内通信,而访问网格378中的不同线程中的神经元则构成模块间的连接。在前一种情况中,对于最低级356来说,时延的值为6ns,而在后一种情况中,当线程376彼此共同操作时,时延的值是处理器372的层级中的下一更高级(在此,核心级354)的时延的值,即,30ns。
这可在考虑每128个线程376有一个核心372并且带宽在128个线程376间共享的情况下与带宽信息(即,对于模块内的连接来说是16GB/s,并且对于模块间的连接来说是128GB/s)一起使用以确定用于通信的时间。
在实施方式中,表示神经元的参数的数量通过删减来减少,即,去除神经元之间连接中的一些,以便平衡参数。在实施方式中,模块之间的连接以使得参考图3A来论述的约束中的一个或多个被满足的方式删减。在实施方式中,删减包括填满存储器并且检查与每个规则的顺应性,如果必要(即,如果存在过多神经元或神经元之间的连接),去除连接。其余神经元和连接构成目标处理器372的性能优化配置(例如,呈矩阵的形式)的最终数量。
本领域的技术人员将会了解,处理器元件372-376的值针对示例性处理器给出。类似地,用于目标处理器372的值仅是示例性的,所以其它处理器和处理器元件可具有不同值。
本领域的技术人员还将了解,矩阵计算方法可随后用于增强性能特性,例如吞吐量。
图3C是根据本公开的多个实施方式的用于形成有效RNN层架构的过程的流程图。过程380在伴随设计用于在一个或多个目标处理器上执行的MBSP模型的步骤382处开始。在步骤384处,在实施方式中,从最低处理器存储器层级至最高处理器存储器层级,神经元被分组成逻辑模块。
在步骤386处,将神经元在模块之间连接,例如以便平衡RNN的预定条件。示例性的条件为RNN的计算要求、通信要求、同步要求和存储器容量要求。平衡结果用于根据参考例如图5-7所论述的各种方法删减(即,去除)神经元之间的连接。
最后,在步骤388处,包括未在平衡过程期间被删减掉的其余连接的所得到的经过删减的RNN在一个或多个目标处理器上执行。
图3D是根据本公开的多个实施方式的用于平衡RNN的预定条件的过程的流程图。在过程390的步骤392处,对于存储器层级中的给定级,连接被布置成使得针对给定处理器选择的表示神经元的参数的数量适配缓存或存储器容量。
在步骤394处,连接被布置成使得执行模块间的连接所需要的同步成本近似等于对神经元进行评估的计算成本。
在步骤396处,连接被布置成使得执行模块间的连接和模块内的连接所需要的通信成本近似等于对神经元进行评估的成本,以使得时延要求和带宽要求减小。
在实施方式中,神经元的数量可被计数并乘以每神经元的成本,其结果随后与RNN模型中的某个限制(例如,计算成本)进行比较。如果超过参数限制,那么神经元的数量被减少,直到数量降至阈值限制以下。在实施方式中,这个过程对限制中的每个和针对每个级(例如,图3B中的所有级)重复进行,直到满足所有条件。例如,神经元的数量可首先被适配,接着就是通信成本、同步成本和时延。可以选择任何任意次序而无任何代价,因为后续适配过程不增加RNN模型中的神经元的数量。本领域的技术人员将了解,可将每个条件限定为可写入等式的变量。
图4示出根据本公开的多个实施方式的在特定的处理器上执行的RNN中的模块的层级中的级的概念。RNN 400利用以下事实:芯片设计人员目标在于将包括电路元件的一种类型的物理设备(例如某个类型的存储器)定位在密切接近相同类型的其它设备的分区中,由此在位于芯片上的单独电路之间形成存储器层级。处理器的分区内的附近电路可组织成执行计算功能的单元(例如,加法器或乘法器)以及缓存和存储器设备。
在实施方式中,RNN 400包括根据物理设备的存储器层级中的级来形成的层级中的级,其中,RNN 400被设计成在该物理设备上操作。例如,层级中的第一级可由表示层级中的最底层的模块402和404形成,每个模块包括一组神经元。下一个更高的级,即第二级,可由另一模块410形成,该另一模块410将两个模块402和404分组在一起。模块410的该第二级可对应于物理设备(诸如可由两个或更多分区来访问的一组共享存储器设备)的层级中的第二级。第三级可对应于物理设备的层级中的另一级,例如,处理器的所有分区被连接至一个更大类型的存储器设备的级。第四级可对应于物理设备的层级中的又一级,例如,分区被连接至提供更多存储器的另一组设备的级,等等。理想地,神经元之间的连接性的层级中的级的数量准确匹配物理设备中的层级中的级的数量。然而,这不旨在作为限制。应当理解,层级中的级不限于任何特定数量。
在实施方式中,模块402在不同时间步长上与其本身通信。模块402和404中的内部通信(例如,从402至404)的量具有比跨越模块410和420的通信更高的带宽。
在实施方式中,在层级中的任何给定级上,参考图3A来论述的约束用作以下项的准则:1)基于处理器的可用存储器资源,选择模块大小;2)基于处理器的容量(即,基于在每个时间步长上可发送的数据的量)的在模块之间通信的数据量;以及3)与处理器的不同组件之间的同步时延相关联的成本,即,由于从一个模块发送至另一模块的数据之间必定存在的时间间隙,从处理器的一个部分向另一部分发送消息所花费的时间。通过遵守准则,分级的模块能够承受更长的延迟,使得RNN 400能够在更严格的时延要求下操作。另外,分级的模块减少通信量并增加在其它层上的带宽。
图5示出根据本公开的多个实施方式的分成快速模块和慢速模块的RNN。除了具有以不同频率更新的模块之间的连接外,在实施方式中,通过明确地将模块分成快速模块554-576和相对缓慢模块504-510来降低全局通信要求。慢速模块504-510以慢于快速模块502-552的速率来更新,其中,快速模块502-552以较高频率并使用更多数据更新。在实施方式中,如图5所描绘的,这些模块布置到包括快速模块的第一层502和包括慢速模块的第二层552中。在实施方式中,两个或更多个快速模块554-576并行操作并连接成使得建立从一个快速模块至另一快速模块的通信路径的唯一方式是经由慢速模块504-510中的一个。
在实施方式中,快速模块554-576用频繁更新的连接密集地内部连接,但是随后仅连接至慢速模块504-510而不连接至快速模块572-576。慢速模块504-510内部地连接,并连接至其它快速模块;以及所有连接以慢于快速模块554-576的速率更新。直观地,慢速模块504-510允许快速模块554-576之间的高级通信,其中快速模块554-576处理输入数据的几乎独立的子集。
在实施方式中,快速模块554-576可仅内部地通信,而慢速模块504-510协调快速模块554-576之间的通信。在实施方式中,为了建立在示例性源快速模块554与示例性目的地快速模块560之间的通信,在周期性间隔中,首先建立从快速模块554至慢速模块506的通信。在另一步骤中,建立从慢速模块506至目的地快速模块560的通信。
图6示出根据本公开的多种实施方式的连接性的并行前缀模式。网络600还包括模块的两个类型:快速和慢速。在实施方式中,为了减少RNN的通信要求和同步要求,输入顺序数据时间步长分成独立的连续子分部,它们中的每个由RNN处理以针对每个子分部生成中间结果,如图6所示。然后另一RNN在(更小的)中间结果上运行,并且最终,使用处理过的中间结果作为另一输入,又一RNN再次在输入数据子分部上运行。概念上,每个子分部中的时间序列信息可通过第一步骤减小至压缩的中间表示。来自每个子分部的信息可通过第二步骤有效地组合。最后,单独的子部分可使用来自所有时间步长的组合的情景信息来处理。该形式是由前缀树的形式启发得到的。
在图6中,针对网络600中的通信来生成单独的时间序列输入662-672的输入时间序列660分成时间分段680-684,而非将层分段。在实施方式中,虽然网络600中的某些模块(例如,模块642和模块644)在输入时间序列660的时间分段(例如,时间分段680)内彼此通信,但是网络600中的其它模块(例如,模块644和模块646)决不在时间分段(例如,在时间分段680和682之间)之间彼此通信,由此降低频率,从而减小时间步长之间通信的数据量,从而减少通信所花费的时间。对时延的任何潜在不利影响由以下事实补偿:更多操作同时并行执行。
图7示出根据本公开的多个实施方式的允许全局通信同时使时延要求和带宽要求最小化的另一方法。网络700包括第一层702中的子模块710-716和镜像的第二层760中的子模块762-768、置换模块750、输入层(未示出)、以及输出层790。
在操作中,层702中的模块710-716和层760中的模块762-768选择性地经由置换模块752通信。在实施方式中,模块710-716独立于模块762-768工作并以相对更快的速率来工作。每个模块710在时间序列中的第一时间步长中生成例如四个输出,使得层702中的所有模块710-716每时间步长生成总共16个输出730。该通信可以在处理器的不同局部部分上执行第一遍。在获得所有输出730后,在时间步长之间的第二遍中,打乱模块710-716的所有计算的且可用的输出730,并且随后1:1复制到模块762-768的输入上。
在实施方式中,置换模块752通过选择和混合输出来重新布置这些16个输出的次序。例如,模块710中的神经元0、1、2和3的输出730可相应地映射到模块770的输出780(例如,12、13、8和9)中,由此,改变两个层702和760中的模块之间的通信模式。应当理解,置换模块750可自由地选择并重新布置任何任意数量的输出。在实施方式中,第一遍过程不涉及全部时间序列,使得不是所有输出730都需要在至处理器的映射开始之前被首先获得。
应当注意,在实施方式中,可考虑到其它或附加的因素。以下是在设计MBSP-RNN时的一些附加的考虑因素。
至MBSP-RNN层的输入激活在模块间均匀划分,使得每个输入在层级中的任何级上通过单个模块处理。
MBSP-RNN层应当具有足够的模块来完全预定或甚至过量预定***中的处理器核心。这确保了层具有足够的并行任务,使得可以利用所有处理器资源。
层级中的任何级上的MBSP-RNN模块不应使用太多的存储,以免用于相关连接的权重无法存储在处理器存储器层级中的对应级中。
层级中的较低级上的神经元应当更密集地连接,并且连接应在没有延迟的情况下并以高频率来更新。沿着层级向上行进,神经元变为更稀疏地连接,并且连接以增加的延迟和以较低频率更新。层级中的级的准确数量以及连接性、时间延迟和更新频率使用RNN被映射到的处理器的MBSP参数确定。具体来说,值应选择为使得计算成本、通信成本和同步成本近似相等。
RNN的主要芯片上处理器要求是用于每个连接的权重参数。为了平衡评估网络的计算组件和通信组件,从芯片外处理器加载的每个权重参数应当多次重新使用。用于重新使用权重参数的三个基本策略包括随时间分批、随样本分批和随连接分批。
仅以较低频率或伴随时间延迟来将模块输出发送到其它模块的能力允许多个时间步长在不从存储器中重新加载与该模块相关联的权重的情况下被处理。具体来说,在同步之间的时间步长(以比每个时间步长低的频率发生)可由给定模块处理,而不重新加载权重,即使RNN在层级中的该级上包括过多模块以致不适配芯片上存储器。一个模块可被评估,直至同步点,在同步点处,处理器可切换至另一模块。相同效果应用于在时间延迟后同步的连接。一个模块可从当前时间步长行进直至下一时间日期(time-day),在该下一时间日期处,处理器可切换至另一模块,该另一模块在相同范围的时间步长上进行评估。
用于重新使用权重参数的另一策略是同时针对多个独立的输入序列评估相同的时间步长。该方法对于训练RNN尤其有效,因为许多优化算法要求一定程度随输入的分批。然而,该策略在使用经过训练的网络实时执行任务时不太有效,因为所述方法假定在一些情况下可能不可用的多个输入序列是可用的。例如,在移动设备上执行语音识别的神经网络将通常一次仅支持单个用户对其说话。
最后,在多个连接上重新使用相同的权重参数是可能的,这类似于卷积神经网络层。在这种情况下,模块可以具有来自全部共享相同权重的不同其它模块的若干输入。这同时减少了需要支持给定数量连接的模块的存储器占用,并增加了每个权重在每个时间步长由模块使用的次数。
本领域的技术人员将了解,本文中的示例以及实施方式是示例性的,而非限制本发明的范围。其意在表达的是,在本领域技术人员阅读本文献后,对本领域的技术人员显而易见的对本发明的所有置换、增强、等同、组合或改进包括在本发明的真实精神和范围内。
Claims (16)
1.一种通过将循环神经网络架构映射至计算设备的处理器的微架构来改进所述计算设备的计算性能的方法,所述方法包括:
基于所述处理器的微架构的描述,获得与存储器的级相关联的值;以及
对于所述循环神经网络架构的层级中的最低级至最高级,每个级与所述处理器的微架构相关联并通过存储器容量、处理器核心数、带宽、计算带宽和时延中的至少两个来描述;
将神经元分组成模块,每个模块表示所述循环神经网络架构内的循环神经网络层中的逻辑单元;以及
将连接布置在所述模块之间,使得所述模块满足所述循环神经网络架构的预定条件,所述循环神经网络架构的所述预定条件与存储器容量、处理器核心数、带宽、计算带宽和时延中的所述至少两个有关;
将位于第一循环神经网络层中的快速模块中的单独神经元连接至位于第二循环神经网络层中的慢速模块中的单独神经元;
将各层中的每个模块连接至该层中的其它模块;以及
经由模块间的连接将所述快速模块连接至所述慢速模块。
2.根据权利要求1所述的方法,其中,布置连接包括删减在所述模块之间的双向连接以平衡所述预定条件。
3.根据权利要求1所述的方法,其中,对于处理器存储器的每个级,所述预定条件包括表示神经元的参数适配所述处理器存储器的容量。
4.根据权利要求1所述的方法,其中,对于处理器存储器的每个级,所述预定条件包括与模块间的连接有关的同步成本近似等于对所述神经元进行评估的计算成本。
5.根据权利要求1所述的方法,其中,对于处理器存储器的每个级,所述预定条件包括与模块内的连接和模块间的连接有关的带宽成本和时延成本中的至少一个近似等于对所述神经元进行评估的计算成本。
6.根据权利要求1所述的方法,其中,布置连接包括通过在下一时间步长上将一个模块的输出连接至其它模块的输入的子集来形成稀疏连接,以减小通信带宽,使得用于加载在芯片上存储器上的所述模块的所有权重在所有时间步长上可被重新使用。
7.根据权利要求1所述的方法,还包括随时间延迟更新模块之间的连接,其中,所述时间延迟增加神经元必须执行同步以改善模块之间的通信带宽和同步中的至少一个的时间。
8.根据权利要求1所述的方法,还包括,在相同层内:
将时间序列输入划分成独立连续的时间分段,所述独立连续的时间分段通过所述循环神经网络的第一部分处理,以对每个时间分段生成中间结果;
在所述中间结果上运行所述循环神经网络的第二部分;以及
使用所处理的中间结果在输入数据子分部上运行所述循环神经网络的第三部分。
9.一种循环神经网络架构,所述循环神经网络架构设计用于在计算设备处理器微架构上操作,以改进所述计算设备的计算性能,所述循环神经网络架构包括:
神经元;
包括所述神经元的模块,所述模块表示逻辑单元,并且根据处理器微架构的分级结构的级来布置以模拟包括处理器的单独计算资源的分级结构,使得分级结构中的每级与处理器存储器中的至少一级相关联并且包括第一循环神经网络层和第二循环神经网络层,所述分级结构中的每级是用存储容量、处理器核心数、存储器带宽、计算带宽和存储器时延中的至少两个来描述的;以及
模块间的双向连接,所述模块间的双向连接使得所述第一循环神经网络层与所述第二循环神经网络层之间能够通信,以满足所述循环神经网络架构的预定条件,所述循环神经网络架构的所述预定条件与存储容量、处理器核心数、带宽、计算带宽和时延中的所述至少两个有关;
快速模块,所述快速模块的连接比慢速模块的连接更频繁地更新,所述快速模块并行操作,并且经由所述慢速模块彼此通信以增加快速模块之间的通信。
10.根据权利要求9所述的循环神经网络架构,其中模块之间的同步频率和连接性的量根据所述处理器中的多整体式同步并行参数设定,以平衡所述循环神经网络架构执行计算、通信和同步操作中的至少之一所要求的时间。
11.根据权利要求10所述的循环神经网络架构,其中在分级结构的相同级中,通过以减小速率更新所述模块间的连接来减小数据交换的量,慢速更新连接以比在每个时间步长后更新的正常循环神经网络连接低的频率采样,模块输出以该频率传送为下一模块输入。
12.根据权利要求11所述的循环神经网络架构,其中对所述输出的传送延迟预定数量时间步长,使得模块间的连接在所述预定数量时间步长下应用。
13.根据权利要求10所述的循环神经网络架构,其中连续时间分段中的模块不与彼此通信,由此,降低在时间步长间传送数据的频率和量,以减少通信时间以及增加并行操作数量。
14.根据权利要求10所述的循环神经网络架构,其中所述快速模块是内部密集连接的,并且对输入数据的独立子集进行处理。
15.根据权利要求10所述的循环神经网络架构,其中所述快速模块和所述慢速模块选择性地经由置换模块通信,所述置换模块重新布置所述快速模块的计算输出的次序,以将快速模块中神经元的输出映射到慢速模块的神经元的输出上,从而改变两层中模块之间的通信模式。
16.根据权利要求9所述的循环神经网络架构,其中从一层中的输入序列变换的输出序列用作另一层的输入序列,由此将层堆叠以扩展所述循环神经网络架构。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562266515P | 2015-12-11 | 2015-12-11 | |
US62/266,515 | 2015-12-11 | ||
US15/091,413 US10832120B2 (en) | 2015-12-11 | 2016-04-05 | Systems and methods for a multi-core optimized recurrent neural network |
US15/091,413 | 2016-04-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106875013A CN106875013A (zh) | 2017-06-20 |
CN106875013B true CN106875013B (zh) | 2020-06-02 |
Family
ID=57530591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611132073.1A Active CN106875013B (zh) | 2015-12-11 | 2016-12-09 | 用于多核优化循环神经网络的***和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10832120B2 (zh) |
EP (1) | EP3179415B1 (zh) |
JP (1) | JP6348561B2 (zh) |
KR (1) | KR101959376B1 (zh) |
CN (1) | CN106875013B (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170178346A1 (en) * | 2015-12-16 | 2017-06-22 | High School Cube, Llc | Neural network architecture for analyzing video data |
EP3374932B1 (en) * | 2016-02-03 | 2022-03-16 | Google LLC | Compressed recurrent neural network models |
CN107203807B (zh) * | 2016-03-16 | 2020-10-02 | 中国科学院计算技术研究所 | 神经网络加速器的片上缓存带宽均衡方法、***及其装置 |
US10635969B2 (en) * | 2016-10-14 | 2020-04-28 | International Business Machines Corporation | Core utilization optimization by dividing computational blocks across cores |
WO2018084576A1 (en) | 2016-11-03 | 2018-05-11 | Samsung Electronics Co., Ltd. | Electronic device and controlling method thereof |
WO2018228399A1 (zh) * | 2017-06-13 | 2018-12-20 | 上海寒武纪信息科技有限公司 | 运算装置和方法 |
US11276071B2 (en) * | 2017-08-31 | 2022-03-15 | Paypal, Inc. | Unified artificial intelligence model for multiple customer value variable prediction |
WO2019078885A1 (en) * | 2017-10-20 | 2019-04-25 | Google Llc | PARALLEL EXECUTION OF OPERATIONS OF ACTIVATION UNITS WITH RELEASE |
GB2569098B (en) * | 2017-10-20 | 2020-01-08 | Graphcore Ltd | Combining states of multiple threads in a multi-threaded processor |
US11521046B2 (en) | 2017-11-08 | 2022-12-06 | Samsung Electronics Co., Ltd. | Time-delayed convolutions for neural network device and method |
US10417304B2 (en) | 2017-12-15 | 2019-09-17 | International Business Machines Corporation | Dual phase matrix-vector multiplication system |
CN108196882A (zh) * | 2017-12-29 | 2018-06-22 | 普强信息技术(北京)有限公司 | 一种针对神经网络计算的加速方法及装置 |
CN109992198B (zh) * | 2017-12-29 | 2020-07-24 | 深圳云天励飞技术有限公司 | 神经网络的数据传输方法及相关产品 |
US10657426B2 (en) * | 2018-01-25 | 2020-05-19 | Samsung Electronics Co., Ltd. | Accelerating long short-term memory networks via selective pruning |
JP6574004B2 (ja) * | 2018-01-25 | 2019-09-11 | 株式会社モルフォ | 計算手法決定システム、計算手法決定装置、処理装置、計算手法決定方法、処理方法、計算手法決定プログラム、及び、処理プログラム |
EP3701351A4 (en) * | 2018-01-30 | 2021-01-27 | D5Ai Llc | SELF-ORGANIZING PARTIALLY ORGANIZED NETWORKS |
CN108647045B (zh) * | 2018-03-20 | 2021-10-01 | 科大讯飞股份有限公司 | 激活函数的实现方法及装置、存储介质、电子设备 |
CN108564168B (zh) * | 2018-04-03 | 2021-03-09 | 中国科学院计算技术研究所 | 一种对支持多精度卷积神经网络处理器的设计方法 |
US11568237B2 (en) | 2018-05-10 | 2023-01-31 | Samsung Electronics Co., Ltd. | Electronic apparatus for compressing recurrent neural network and method thereof |
RU2702978C1 (ru) * | 2018-10-15 | 2019-10-14 | Самсунг Электроникс Ко., Лтд. | Байесовское разреживание рекуррентных нейронных сетей |
US11847553B2 (en) * | 2018-06-14 | 2023-12-19 | International Business Machines Corporation | Parallel computational architecture with reconfigurable core-level and vector-level parallelism |
KR102607880B1 (ko) * | 2018-06-19 | 2023-11-29 | 삼성전자주식회사 | 전자 장치 및 그의 제어 방법 |
US11663461B2 (en) | 2018-07-05 | 2023-05-30 | International Business Machines Corporation | Instruction distribution in an array of neural network cores |
KR20200013162A (ko) * | 2018-07-19 | 2020-02-06 | 삼성전자주식회사 | 전자 장치 및 그의 제어 방법 |
US11315020B2 (en) * | 2018-09-24 | 2022-04-26 | International Business Machines Corporation | Optimized partitioning of multi-layer networks in core-based neurosynaptic architectures |
CN109409513B (zh) * | 2018-10-10 | 2021-03-12 | 广州市百果园信息技术有限公司 | 一种基于神经网络的任务处理方法及相关设备 |
US11599779B2 (en) * | 2018-11-15 | 2023-03-07 | Arizona Board Of Regents On Behalf Of Arizona State University | Neural network circuitry having approximate multiplier units |
KR20200069901A (ko) | 2018-12-07 | 2020-06-17 | 삼성전자주식회사 | 뉴럴 네트워크를 분할하는 방법 및 뉴로모픽 장치 |
WO2020149511A1 (ko) * | 2019-01-17 | 2020-07-23 | 삼성전자주식회사 | 전자 장치 및 이의 제어 방법 |
CN109767622B (zh) * | 2019-02-14 | 2021-12-17 | 重庆邮电大学 | 面向卡口相似性划分和循环神经网络的交通流量预测方法 |
US11436019B2 (en) * | 2019-07-15 | 2022-09-06 | Microsoft Technology Licensing, Llc | Data parallelism in distributed training of artificial intelligence models |
US11520592B2 (en) | 2019-07-15 | 2022-12-06 | Microsoft Technology Licensing, Llc | Executing large artificial intelligence models on memory-constrained devices |
US11354579B2 (en) | 2019-07-15 | 2022-06-07 | Microsoft Technology Licensing, Llc | Dynamic multi-layer execution for artificial intelligence modeling |
KR102149495B1 (ko) * | 2019-08-19 | 2020-08-28 | 고려대학교 산학협력단 | 환경 예측 모델의 훈련지표 최적화 장치 및 그 동작방법 |
CN112446483B (zh) * | 2019-08-30 | 2024-04-23 | 阿里巴巴集团控股有限公司 | 一种基于机器学习的计算方法和计算单元 |
US11573828B2 (en) * | 2019-09-16 | 2023-02-07 | Nec Corporation | Efficient and scalable enclave protection for machine learning programs |
CN111047017B (zh) * | 2019-12-18 | 2023-06-23 | 北京安兔兔科技有限公司 | 一种神经网络算法的评估方法、装置及电子设备 |
CN111752689B (zh) * | 2020-06-22 | 2023-08-25 | 深圳鲲云信息科技有限公司 | 一种基于数据流的神经网络多引擎同步计算*** |
CN111860818B (zh) * | 2020-07-23 | 2022-11-08 | 哈尔滨工业大学(威海) | 基于智能芯片的som神经网络算法处理方法 |
US20220111860A1 (en) * | 2020-10-14 | 2022-04-14 | Volkswagen Aktiengesellschaft | Detecting objects and determining behaviors of objects |
CN112561056A (zh) * | 2020-12-07 | 2021-03-26 | 北京百度网讯科技有限公司 | 神经网络模型的训练方法、装置、电子设备和存储介质 |
WO2021178981A1 (en) * | 2021-05-03 | 2021-09-10 | Innopeak Technology, Inc. | Hardware-friendly multi-model compression of neural networks |
KR20230001877A (ko) * | 2021-06-29 | 2023-01-05 | 삼성전자주식회사 | 신경망을 통해 이미지를 처리하는 방법 및 그 전자 장치 |
CN113377546B (zh) * | 2021-07-12 | 2022-02-01 | 中科弘云科技(北京)有限公司 | 通信避免方法、装置、电子设备和存储介质 |
WO2023053222A1 (ja) * | 2021-09-28 | 2023-04-06 | 日本電気株式会社 | データ変換装置、データ変換方法、及びプログラムが格納された非一時的なコンピュータ可読媒体 |
CN113884857B (zh) * | 2021-09-29 | 2024-03-08 | 上海阵量智能科技有限公司 | 芯片、芯片压力测试方法、装置、电子设备及存储介质 |
CN114154616B (zh) * | 2021-10-15 | 2023-08-18 | 西安交通大学 | 一种rnn并行模型及其在多核cpu上的实现方法及*** |
WO2023128009A1 (ko) * | 2021-12-30 | 2023-07-06 | 리벨리온 주식회사 | 뉴럴 프로세싱 장치 및 그의 동기화 방법 |
CN118093455A (zh) * | 2024-04-23 | 2024-05-28 | 北京壁仞科技开发有限公司 | 数据加载方法、数据加载装置、处理器和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308551A (zh) * | 2008-05-05 | 2008-11-19 | 西安理工大学 | Ls-svm分类与回归学习递归神经网络硬件电路及实现方法 |
CN103023839A (zh) * | 2012-12-04 | 2013-04-03 | 温州大学 | 基于输出反馈偏置型复连续反馈神经网络结构的无线光通信***盲均衡方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05159087A (ja) * | 1991-12-06 | 1993-06-25 | Matsushita Electric Ind Co Ltd | ニューロプロセッサ |
JP2007299366A (ja) | 2006-01-31 | 2007-11-15 | Sony Corp | 学習装置および学習方法、認識装置および認識方法、生成装置および生成方法、認識生成装置および認識生成方法、並びにプログラム |
JP2009099008A (ja) * | 2007-10-18 | 2009-05-07 | Seiko Epson Corp | 並列演算装置および並列演算方法 |
WO2012109407A1 (en) * | 2011-02-09 | 2012-08-16 | The Trustees Of Columbia University In The City Of New York | Encoding and decoding machine with recurrent neural networks |
US20160328644A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Adaptive selection of artificial neural networks |
-
2016
- 2016-04-05 US US15/091,413 patent/US10832120B2/en active Active
- 2016-12-08 EP EP16202973.0A patent/EP3179415B1/en active Active
- 2016-12-09 CN CN201611132073.1A patent/CN106875013B/zh active Active
- 2016-12-09 KR KR1020160167747A patent/KR101959376B1/ko active
- 2016-12-09 JP JP2016239363A patent/JP6348561B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308551A (zh) * | 2008-05-05 | 2008-11-19 | 西安理工大学 | Ls-svm分类与回归学习递归神经网络硬件电路及实现方法 |
CN103023839A (zh) * | 2012-12-04 | 2013-04-03 | 温州大学 | 基于输出反馈偏置型复连续反馈神经网络结构的无线光通信***盲均衡方法 |
Non-Patent Citations (2)
Title |
---|
"A Bridging Model for Multi-Core Computing";Leslie G. Valiant;《Preprint submitted to Elsevier》;20110101;第154-166页 * |
"Multicore and GPU Parallelization of Neural Networks for Face Recognition";Altaf Ahmad Huqqani etal.;《SciVerse ScienceDirect》;20130101;第349-358页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106875013A (zh) | 2017-06-20 |
US20170169326A1 (en) | 2017-06-15 |
KR101959376B1 (ko) | 2019-07-04 |
JP2017107568A (ja) | 2017-06-15 |
JP6348561B2 (ja) | 2018-06-27 |
EP3179415B1 (en) | 2019-09-18 |
US10832120B2 (en) | 2020-11-10 |
EP3179415A1 (en) | 2017-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106875013B (zh) | 用于多核优化循环神经网络的***和方法 | |
Mittal et al. | A survey of techniques for optimizing deep learning on GPUs | |
Srivastava et al. | Matraptor: A sparse-sparse matrix multiplication accelerator based on row-wise product | |
US11645529B2 (en) | Sparsifying neural network models | |
US20160196488A1 (en) | Neural network computing device, system and method | |
CN108009627A (zh) | 神经网络指令集架构 | |
WO2012076379A2 (en) | Data structure for tiling and packetizing a sparse matrix | |
Brette et al. | Vectorized algorithms for spiking neural network simulation | |
WO2012076377A2 (en) | Optimizing output vector data generation using a formatted matrix data structure | |
US20210390381A1 (en) | Hardware architecture for processing data in neural network | |
Hurkat et al. | VIP: A versatile inference processor | |
Dey et al. | Accelerating training of deep neural networks via sparse edge processing | |
WO2022016261A1 (en) | System and method for accelerating training of deep learning networks | |
Hailesellasie et al. | A fast FPGA-based deep convolutional neural network using pseudo parallel memories | |
Ahn | Computation of deep belief networks using special-purpose hardware architecture | |
Jang et al. | Deep partitioned training from near-storage computing to DNN accelerators | |
Wu | Residual Neural Network on a Many-Core Platform | |
Dey et al. | An application specific processor architecture with 3D integration for recurrent neural networks | |
Ngo | FPGA hardware acceleration of inception style parameter reduced convolution neural networks | |
Zeng | FPGA-based high throughput merge sorter | |
Mahapatra et al. | DFG partitioning algorithms for coarse grained reconfigurable array assisted RTL simulation accelerators | |
Sikdokur et al. | Image Classification on Accelerated Neural Networks | |
Caron et al. | Event management for large scale event-driven digital hardware spiking neural networks | |
Czajkowski et al. | Hybrid parallelization of evolutionary model tree induction | |
CN110765413A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |