CN115885249A - 用于加速深度学习网络的训练的系统和方法 - Google Patents
用于加速深度学习网络的训练的系统和方法 Download PDFInfo
- Publication number
- CN115885249A CN115885249A CN202180050933.XA CN202180050933A CN115885249A CN 115885249 A CN115885249 A CN 115885249A CN 202180050933 A CN202180050933 A CN 202180050933A CN 115885249 A CN115885249 A CN 115885249A
- Authority
- CN
- China
- Prior art keywords
- exponent
- data stream
- training
- module
- value
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of 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/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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Nonlinear Science (AREA)
Abstract
公开了一种用于在深度学习网络的训练期间加速乘法累加(MAC)浮点单元的系统和方法。所述方法包括:接收第一输入数据流A和第二输入数据流B;将所述第一数据流A和所述第二数据流B的指数成对相加以产生乘积指数;使用比较器来确定最大指数;通过将乘积指数增量添加到所述第一数据流中的对应项来确定所述第二数据流中的每个有效数在累加之前必须移位的位数并且使用加法器树将所述第二数据流中的操作数归约为单个部分和;使用所述最大指数将所述部分和添加到对应的对齐值以确定累加值;以及输出所述累加值。
Description
技术领域
下文总体上涉及深度学习网络,并且更具体地涉及一种用于加速深度学习网络的训练的系统和方法。
背景技术
深度学习的普遍应用和登纳德缩放定律(Dennard scaling)的终结一直在推动加速深度学习推理和训练的工作。这些工作跨越整个系统堆栈,从算法到中间件和硬件架构。训练是包括推断作为子任务的任务。训练是计算和存储密集型任务,通常需要数周的计算时间。
发明内容
在一方面,提供了一种用于在深度学习网络的训练或推断期间加速乘法累加(MAC)浮点单元的方法,所述方法包括:接收第一输入数据流A和第二输入数据流B;将所述第一数据流A和所述第二数据流B的指数成对相加以产生乘积指数;使用比较器来确定最大指数;通过将乘积指数增量添加到所述第一数据流中的对应项来确定所述第二数据流中的每个有效数在累加之前必须移位的位数并且使用加法器树将所述第二数据流中的操作数归约为单个部分和;使用所述最大指数将所述部分和添加到对应的对齐值以确定累加值;以及输出所述累加值。
在所述方法的特定情况下,确定所述第二数据流中的每个有效数在累加之前必须移位的所述位数包括跳过映射在定义的累加器宽度外的无效项。
在所述方法的另一情况下,每个有效数包括有符号的2的幂。
在所述方法的又一情况下,在多个MAC浮点单元之间共享将所述指数相加和确定所述最大指数。
在所述方法的又一情况下,所述指数被设置为固定值。
在所述方法的又一情况下,所述方法还包括将浮点值存储在组中,并且其中所述指数增量被编码为与基数指数的差值。
在所述方法的又一情况下,所述基数指数是所述组中的第一指数。
在所述方法的又一情况下,使用所述比较器包括将所述最大指数与累加器位宽的阈值进行比较。
在所述方法的又一情况下,设置所述阈值以确保模型收敛。
在所述方法的又一情况下,所述阈值被设置在训练准确度的0.5%内。
在另一方面,提供了一种用于在深度学习网络的训练或推断期间加速乘法累加(MAC)浮点单元的系统,所述系统包括一个或多个处理器,所述一个或多个处理器与数据存储器通信以执行:输入模块,所述输入模块用于接收第一输入数据流A和第二输入数据流B;指数模块,所述指数模块用于将所述第一数据流A和所述第二数据流B的指数成对相加以产生乘积指数并且使用比较器来确定最大指数;归约模块,所述归约模块用于通过将乘积指数增量添加到所述第一数据流中的对应项来确定所述第二数据流中的每个有效数在累加之前必须移位的位数并且使用加法器树将所述第二数据流中的操作数归约为单个部分和;以及累加模块,所述累加模块用于使用所述最大指数将所述部分和添加到对应的对齐值以确定累加值,并且输出所述累加值。
在所述系统的特定情况下,确定所述第二数据流中的每个有效数在累加之前必须移位的所述位数包括跳过映射在定义的累加器宽度外的无效项。
在所述系统的另一情况下,每个有效数包括有符号的2的幂。
在所述系统的又一情况下,所述指数模块、所述归约模块和所述累加模块位于处理单元上,并且其中在多个处理单元之间共享将所述指数相加和确定所述最大指数。
在所述系统的又一情况下,所述多个处理单元被配置为分块布置。
在所述系统的又一情况下,同一列中的处理单元共享来自所述指数模块的相同输出,并且同一行中的处理单元共享来自所述输入模块的相同输出。
在所述系统的又一情况下,所述指数被设置为固定值。
在所述系统的又一情况下,所述系统还包括将浮点值存储在组中,并且其中所述指数增量被编码为与基数指数的差值,并且其中所述基数指数是所述组中的第一指数。
在所述系统的又一情况下,使用所述比较器包括将所述最大指数与累加器位宽的阈值进行比较,其中设置所述阈值以确保模型收敛。
在所述系统的又一情况下,所述阈值被设置在训练准确度的0.5%内。
在本文中预期并描述这些和其他方面。应当理解,前述发明内容阐述了实施方案的代表性方面以帮助技术读者理解以下详细描述。
附图说明
将参考附图更好地理解实施方案,在附图中:
图1是根据实施方案的用于加速深度学习网络的训练的系统的示意图;
图2是示出图1的系统和示例性操作环境的示意图;
图3是根据实施方案的用于加速深度学习网络的训练的方法的流程图;
图4示出了零项和越界项的说明性示例;
图5示出了根据图1的系统的包括指数模块、归约模块和累加模块的处理元件的示例;
图6示出了在ImageNet上训练ResNet34的0轮和89轮中的层Conv2d_8的指数分布示例;
图7示出了根据图1的系统的处理元件的另一个实施方案;
图8示出了根据图1的系统的处理元件的2×2分块的示例;
图9示出了值按通道分块的示例;
图10示出了图1的系统相对于基线的性能改进;
图11示出了在每个模型中图1的系统超过基线架构的总能量效率;
图12将归一化到基线的由图1的系统消耗的能量示出为跨三个主要成分的细目:计算逻辑、片外和片上数据传送;
图13示出了图1的系统可跳过的项的细目;
图14示出了三个训练阶段中的每一者的加速比;
图15示出了图1的系统随时间且在整个训练过程中超过基线的加速比;
图16示出了在改变每分块的行数的情况下图1的系统超过基线的加速比;
图17示出了在每个循环改变行数的效果;
图18示出了通过在PlaidML中模拟图1的系统来训练ResNet18的准确度;并且
图19示出了图1的系统在按层剖析累加器宽度相对于固定累加器宽度下的性能。
具体实施方式
现在将参考附图描述实施方案。为了说明的简单和清楚起见,在认为适当的情况下,可在附图中重复附图标记以指示对应或类似的元件。另外,阐述了许多特定细节以便提供对本文描述的实施方案的透彻理解。然而,本领域的技术人员将理解,可在没有这些特定细节的情况下实践本文描述的实施方案。在其他情况下,没有详细地描述众所周知的方法、过程和部件以免模糊本文描述的实施方案。此外,该描述不应被视为限制本文描述的实施方案的范围。
本文例示的执行指令的任何模块、单元、部件、服务器、终端或装置可包括或以其他方式访问计算机可读介质,诸如存储介质、计算机存储介质或数据存储装置(可移动和/或不可移动),例如,诸如磁盘、光盘或磁带。计算机存储介质可包括在任何方法或技术中实施的易失性和非易失性介质、可移动和不可移动介质,以用于存储信息,诸如计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质的示例包括RAM、ROM、EEPROM、闪存存储器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁性存储装置,或可用来存储期望信息并可由应用程序、模块或这两者访问的任何其他介质。任何此类计算机存储介质都可以是装置的一部分,或者可访问或连接到装置。本文描述的任何应用程序或模块可使用计算机可读/可执行指令来实施,所述计算机可读/可执行指令可由此类计算机可读介质存储或以其他方式保存。
在一些深度学习网络的训练期间,通过重复地执行前向和反向传递来处理已知其期望输出的一组带注释的输入。前向传递执行输出最初不准确的推断。然而,鉴于期望输出是已知的,训练可计算损失,即,输出与期望输出相差多远的度量。在反向传递期间,此损失用于调整网络参数并使其缓慢收敛到最佳可能精度。
已经开发了许多方法来加速训练,幸运的是它们通常可结合使用。分布式训练利用数据、模型或流水线并行将训练工作负载划分到多个计算节点上。定时通信和计算可进一步减少训练时间。促进数据分块和最大化数据重用的数据流优化降低了节点内的片上和片外访问成本,从而最大化存储器分级结构的低成本部件的重用。另一类方法减少了训练期间所需的中间数据的占用空间。例如,在最简单的训练形式中,在前向传递期间产生的所有神经元值都被保留在反向传播期间使用。批处理并只保留一个或几个样本反而降低了这一成本。无损和有损压缩方法进一步减少此类数据的占用空间。最后,选择性反向传播方法通过仅针对一些神经元传播损失来改变反向传递,因此减少工作。
另一方面,在推断期间提高能量效率的需要导致了在训练期间增加计算和存储器需要的技术。这包括在训练期间执行网络修剪和量化的工作。修剪使权重归零,并且因此为在推断期间减少工作和模型大小创造了机会。量化产生的模型使用更短且更节能的数据类型(诸如16b、8b或4b定点值)进行计算。参数有效训练和记忆稀疏反向传播是修剪方法的示例。PACT和异常值感知量化是训练时间量化方法。网络架构搜索技术在调整模型的架构时也会增加训练时间。
尽管如此,进一步加速在数据中心和边缘处的训练的需要仍然有增无减。运营和维护成本、延时、吞吐量和节点计数是数据中心的主要考虑因素。在边缘处,能量和延时是主要考虑因素,其中训练可主要用于改进或增强已训练的模型。无论目标应用程序如何,提高节点性能都将非常有利。因此,本实施方案可补充现有的训练加速方法。一般而言,训练期间的大部分计算和数据传送都用于在前向和后向传递期间执行乘法累加运算(MAC)。如上所述,压缩方法可大大降低数据传送的成本。本公开的实施方案的目标是用于这些操作的处理元件并且利用在训练期间自然发生并通过量化、修剪和选择性反向传播来放大其频率的无效工作。
一些加速器依赖于在许多模型的激活中自然出现零,尤其是当它们使用ReLU时。有几种加速器针对修剪后的模型。另一类设计受益于减小的值范围,无论这些范围是自然发生的还是由量化产生的。这包括位串行设计以及支持多种不同数据类型(诸如BitFusion)的设计。最后,另一类设计针对位稀疏性,其中通过将乘法分解为一系列移位和加法运算,它们暴露了位级的无效工作。
虽然上述加速了推断,但训练带来了截然不同的挑战。首先是数据类型。虽然推断期间的模型使用范围相对有限的定点值,但训练所依据的值往往分布在很大的范围内。因此,训练实施使用浮点运算,其中单精度IEEE浮点运算(FP32)足够用于几乎所有模型。与FP32相比,有助于使用更节能和更面积有效的乘法累加单元的其他数据类型已成功用于训练许多模型。这些包括bfloat16和8b或更小的浮点格式。此外,由于浮点运算比整数运算昂贵得多,因此混合数据类型训练方法很少使用浮点运算。尽管有这些提议,FP32仍然是标准回退格式,尤其是对于大型和具有挑战性的数据集的训练。由于其范围有限且缺少指数,在推断期间使用的定点表示会产生零值(太小而无法表示的值)、零位前缀(可表示的小值)和前述推断加速器所依赖的位稀疏性(大多数值往往较小且少数值较大)。FP32可表示小得多的值,它的尾数是归一化的,并且是否存在位稀疏性还没有得到普遍证明。
另外地,挑战是计算结构。推断对两个张量、权重和激活进行操作,从而在按层执行矩阵/矩阵或矩阵/向量乘法或成对向量运算来以前馈方式产生用于下一层的激活。训练包括此计算作为其前向传递,然后是涉及第三张量(即,梯度)的反向传递。最重要的是,反向传递以与前向传递不同的方式使用激活和权重张量,这使得难以将它们有效地打包在存储器中,如针对稀疏性的推断加速器所做的那样去除零更是如此。另外地,与计算结构相关的是值易变性和值内容。虽然在推断中权重是静态的,但在训练期间它们并非如此。此外,训练用随机值将网络初始化,然后缓慢调整这些值。因此,人们不一定期望在训练期间处理的值表现出类似的行为,诸如稀疏性或位稀疏性。梯度更是如此,梯度是在推断期间根本不会出现的值。
本发明人已经证明,在训练期间执行的大部分工作可被视为无效的。为了揭示这种无效工作,将每个乘法被分解为一系列单位乘法累加运算。这表明无效工作的两个来源:首先,超过60%的计算是无效的,因为其中一个输入为零。其次,高动态范围(指数)和有限精度(尾数)的组合通常产生非零但太小而无法影响累加结果的值,即使在使用扩展精度(例如,尝试将2-64累加为264)时也是如此。
上述观察导致本发明人考虑是否可以使用跳位(跳过零位的位串行)处理来利用这两种行为。对于推断,Bit-Pragmatic是在一个操作数侧执行这种跳位的数据并行处理元件,而Laconic对两侧执行这个操作。由于这些方法仅针对推断,因此它们适用于定点值。由于在训练期间权重存在很少的位稀疏性,因此将定点设计转换为浮点设计是非平凡的任务。简单地将Bit-Pragmatic转换为浮点会导致在ISO计算面积约束下表现不佳的面积昂贵的单元。具体地,与执行8个MAC运算的经优化Bfloat16处理元件相比,在ISO计算约束下,使用Bfloat16 Bit-Pragmatic PE的经优化加速器配置平均慢1.72倍且能量效率低1.96倍。在最坏情况下,Bfloat16 bit-pragmatic PE慢2.86倍且能量效率低3.2倍。Bfloat16BitPragmatic PE比位并行PE小2.5倍,并且虽然可在同一区域使用更多此类PE,但无法容纳足够多的PE以根据所有位串行和跳位设计的要求经由并行性来提高性能。
本实施方案(非正式地称为FPRaker)提供用于训练加速器的处理分块,该处理分块利用位稀疏性和越界计算两者。在一些情况下,FPRaker包括以网格组织的若干基于加法器树的处理元件,使得它可在空间和时间上利用数据重用。处理元件同时将多个值对相乘并将它们的乘积累加到输出累加器中。它们将每次相乘的输入操作数中的一者处理为一系列有符号的二的幂,迄今为止称为项。将该操作数转换为二的次幂可即时执行;所有操作数都以浮点形式存储在存储器中。处理元件利用源自为零的尾数位或在给定当前累加器值的情况下源于越界乘法的无效工作。分块是为面积效率而设计的。在分块的一些情况下,处理元件限制了它们可同时处理的二的次幂的范围,从而大大降低了其移位和加法部件的成本。另外地,在分块的一些情况下,使用在多个处理元件之间时分复用的公共指数处理单元。另外地,在分块的一些情况下,沿行共享二的次幂编码器。另外地,在分块的一些情况下,每个处理元件缓冲区减少了跨处理元件的工作不平衡的影响。另外地,在分块的一些情况下,PE实施低成本机制来消除超出范围的中间值。
另外地,在一些情况下,本实施方案可有利地提供以下特性中的至少一些:
●不影响数值准确度,所产生的结果遵循在训练期间使用的浮点运算。
●跳过可能由零尾数位和超出范围的中间值造成的无效运算。
●不管多于一个循环的各个MAC运算如何,与其他浮点单元相比,计算吞吐量都更高;鉴于每面积的处理元件要小得多。
●支持更短的尾数长度,因此为用混合或更短数据类型的训练提供增强的;而一般不要求普遍适用于所有模型的训练。
●允许选择按层串行处理哪个张量输入;允许根据层和传递(向前或向后)来定位那些具有更多稀疏性的张量。
本实施方案还有利地为依赖于深度学习训练典型的值分布的浮点值提供低开销存储器编码。本发明人已经观察到,跨通道的连续值具有相似的值和因此指数。因此,可将指数编码为此类值的组的增量。这些编码可在存储和读取芯片的值时使用,因此进一步降低内存储器传送的成本。
通过示例实验,本发明人确定了以下实验观察:
●虽然一些神经网络在训练期间自然地表现出零值(稀疏性),但除非使用修剪,否则这一般限于激活和梯度。
●项稀疏性一般存在于包括权重在内的所有张量中,并且远高于稀疏性。
●与使用经优化的位并行FP32处理元件并且每循环可执行4Kbfloat16 MAC的加速器相比,使用相同的计算面积来部署本实施方案的PE的配置快1.5倍且能量效率高1.4倍。
●本实施方案的性能益处在所有三个主要运算的整个训练过程中一般是稳定的。
●本实施方案可与指定每层要使用的不同累加器精度的训练方法结合使用。与使用具有固定宽度有效数的累加器相比,它可将ResNet18的性能提高38%。
本发明人用两种相关方法测量了理论上可能的工作减少:
1)通过去除其中至少一个操作数为零的所有MAC(值稀疏性,或简称稀疏性),以及
2)通过仅处理操作数中的一者的尾数的非零位(位稀疏性)。
进行示例实验以检查本实施方案在不同应用上的性能。表1列出了示例实验中研究的模型。ResNet18-Q是使用PACT训练的ResNet18的变体,其在训练期间将激活和权重量化直到四位(4b)。ResNet50-S2是使用动态稀疏重新参数化训练的ResNet50的变体,其目标是在整个训练过程中保持高权重稀疏性而同时达到与基线训练相当的准确度水平的稀疏学习。SNLI执行自然语言推断并且由全连接层、LSTM编码器层、ReLU层和丢弃层组成。Image2Text是用于图像到标记生成的编码器-解码器模型。根据MLPerf训练基准检查了三种不同任务的模型:1)Detectron2:基于Mask R-CNN的对象检测模型,2)NCF:协同过滤模型,以及3)Bert:使用注意力的基于转换器的模型。对于测量,根据需要在尽可能多轮对每轮一个随机选择的批次进行采样,以将网络训练到其最初报告的准确度(最多90轮就足够了)。
表1
模型 | 应用 | 数据集 |
SqueezeNet 1.1 | 图像分类 | ImageNet[61] |
VGG16 | 图像分类 | ImageNet[61] |
ResNet18-Q | 图像分类 | ImageNet[61] |
ResNet50-S2 | 图像分类 | ImageNet[61] |
SNLI | 自然语言推断 | SNLI语料库[62] |
Image2Text | 图像到文本转换 | im2latex-100k[63] |
Detectron2 | 对象检测 | COCO[64] |
NCF | 推荐 | WMT17[65] |
Bert | 语言翻译 | ml-20m[66] |
一般而言,训练期间的大部分计算工作是因为按层的三个主要运算:
对于卷积层,上面的等式(1)描述了在前向传播期间产生输出激活(Z)的激活(I)和权重(W)的卷积。其中,输出Z先通过激活函数,然后再用作下一层的输入。上面的等式(1)和等式(3)分别描述了反向传播中激活和权重/>梯度的计算。只有激活梯度是跨层反向传播的。权重梯度每批次更新一次层的权重。对于全连接层,等式描述了若干矩阵向量运算。对于其他运算,它们描述了向量运算或矩阵向量运算。为了清楚起见,在本公开中,梯度被称为G。术语项稀疏性在本文中用于表示对于这些测量,首先使用作为Booth编码的变型的规范编码将尾数编码为有符号的二的幂。这是因为对尾数进行了跳位处理。
在示例中,图像分类网络中的激活在所有情况下都表现出超过35%的稀疏性。这是预期的,因为这些网络一般使用将负值裁剪为零的ReLU激活函数。然而,权重稀疏性典型地很低,并且只有一些分类模型在其梯度上表现出稀疏性。然而,对于其余模型,诸如用于自然语言处理的模型,所有三个张量的值稀疏性可能都非常低。无论如何,由于模型一般确实表现出一些稀疏性,因此本发明人研究了在训练期间是否可利用这种稀疏性。这是非平凡的任务,因为训练不同于推断,并且在反向传递期间在所有张量和不同计算结构上表现出动态稀疏模式。人们发现,一般而言,无论目标应用如何,所有模型的所有三个张量都表现出高项稀疏性。鉴于项稀疏性比值稀疏性更普遍并且存在于所有模型中,本实施方案在训练期间利用这种稀疏性来提高训练模型的效率。
可通过跳过串行输入中的零项来实现由于乘法工作减少而产生的理想的潜在加速比。超过基线的潜在加速比可被确定为:
本实施方案利用在训练期间执行的三个运算(上面的等式(1)到(3))中使用的操作数中的一者的位稀疏性,所有运算都由许多MAC运算组成。将MAC运算分解为一系列移位和加法运算可暴露无效工作,从而提供节省能量和时间的机会。
为了暴露MAC运算期间的无效工作,可将运算分解为一系列“移位和加法”运算。对于乘法,设A=2Ae×Am和B=2Be×Bm是浮点中的两个值,均表示为指数(Ae和Be)和尾数(Am和Bm),其已归一化并包含隐含的“1.”。常规的浮点单元在单步中执行此乘法(符号位被异或):
例如,如果Am=1.0000001b,Ae=10b,Bm=1.1010011b并且Be=11b,则A×B可作为Bm<<(10b+11b-0)和Bm<<(10b+11b-111b)的两次移位和加法运算来进行。尽管对为零的六个位执行无效工作,但常规乘法器将处理Am的所有位。
然而,上述分解进一步暴露了常规单元由于浮点试图表示的高动态值范围而执行的无效工作。非正式地,在乘法期间完成的一些工作将导致在给定累加器值的情况下越界的值。要理解为什么会这样,不仅考虑乘法还要考虑累加。假设乘积A×B将累加成运行和S并且Se远大于Ae+Be。鉴于尾数的有限精度,将不可能表示和S+A×B。在其他情况下,即使考虑到用于执行舍入的增加的尾数长度,一些“移位和加法”运算也将保证落在尾数之外,即,部分错检(swamping)。图图4示出了零项和越界项的说明性示例。常规的流水线MAC单元最多在比较指数之后并且仅当整个乘法结果超出范围时对乘法器和累加器进行电源门控。然而,它无法利用这个机会来减少循环计数。通过将乘法分解为若干更简单的运算,本实施方案可鉴于从最高有效数到最低有效数处理位而在单个循环中终止该运算,并且因此通过更早地启动另一个MAC来提高性能。当加法器树处理单元中并行处理多个A×B乘积时也是如此。常规的基于加法器树的MAC单元可潜在地对乘法器和与将越界的乘积相对应的加法器树分支进行电源门控。循环仍将被消耗。有利地,在本实施方案中,基于移位和加法的方法将能够在单个循环中终止此类乘积并在其位置上推进其他乘积。
现在参考图1和图2,示出了根据实施方案的用于加速深度学习网络的训练的系统100(非正式地称为“FPRaker”)。在该实施方案中,系统100在计算装置26上运行并且通过网络24(诸如互联网)访问位于服务器32上的内容。在其他实施方案中,系统100可仅在装置26上或仅在服务器32上运行,或者在任何其他计算装置上运行和/或分布;例如,台式电脑、膝上型电脑、智能手机、平板计算机、服务器、智能手表、分布式或云计算装置等。在一些实施方案中,系统100的部件由单个计算机系统存储并在其上执行。在其他实施方案中,系统100的部件分布在可本地地或远程地分布的两个或更多个计算机系统中。
图1示出了系统100的实施方案的各种物理和逻辑部件。如图所示,系统100具有多个物理和逻辑部件,包括处理单元102(包括一个或多个处理器)、随机存取存储器(“RAM”)104、输入接口106、输出接口108、网络接口110、非易失性存储设备112,以及使处理单元102能够与其他部件通信的本地总线114。处理单元102可执行或指导各种模块的执行,如下文更详细地描述。RAM 104向处理单元102提供相对响应的易失性存储。输入接口106使管理员或用户能够经由输入装置(例如,键盘和鼠标)提供输入。输出接口108将信息输出到输出装置,例如,显示器和/或扬声器。网络接口110准许与其他系统通信,诸如距系统100远程地定位的其他计算装置和服务器,诸如对于典型的基于云的访问模型。非易失性存储设备112存储操作系统和程序,包括用于实施操作系统和模块的计算机可执行指令,以及这些服务使用的任何数据。如下所述,额外的存储数据可存储在数据库116中。在系统100的操作期间,可从非易失性存储设备112检索操作系统、模块和相关数据并将其放置在RAM 104中以便于执行。
在实施方案中,系统100包括一个或多个模块和一个或多个处理元件(PE)122。在一些情况下,PE可组合成分块。在实施方案中,系统100包括输入模块120、压缩模块130和转置器模块132。每个处理元件122包括多个模块,包括指数模块124、归约模块126和累加模块128。在一些情况下,上述模块中的一些可至少部分地在专用或单独的硬件上运行,而在其他情况下,一些模块的至少一些功能在处理单元102上执行。
输入模块120接收两个输入数据流以对其执行MAC运算,该两个输入数据流分别是A数据和B数据。
PE 122执行8个Bfloat16(A,B)值对的乘法,同时将结果累加到累加模块128中。Bfloat16格式由符号位、接着是偏置的8b指数和归一化的7b有效数(尾数)组成。图5示出了在以下3个块中执行计算的PE 122设计的基线:指数模块124、归约模块126和累加模块128。在一些情况下,这3个块可在单个循环中执行。PE 122可被组合以构建包括若干PE 122的更面积有效的分块。使用规范编码将A操作数中的每一者的有效数即时转换为一系列项(有符号的二的幂);例如,A=(1.1110000)被编码为(+2+1,-2-4)。这种编码恰好发生在输入到PE122之前。在存储器中时,所有值都以bfloat16保留。PE 122将按项连续地处理A值。累加模块128具有扩展的13b(13位)尾数;1b表示前导1(隐藏),9b表示遵循组块大小为64的基于组块的累加方案的扩展精度,加上3b表示舍入到最近偶数。它在隐藏位之后有3个附加的整数位,因此它可适应由累加8个乘积造成的最坏情况。累加模块128总共具有16b、4个整数和12个小数。
PE 122接受8个8位A指数Ae0、……、Ae7,它们对应的8个3位有效数项t0、……、t7(在规范编码之后)和符号位As0、……、As7,以及8个8位B指数Be0、……、Be7,它们的有效数Bm0、……、Bm7(原样)和它们的符号位Bs0、……、Bs7;如图6所示。图6示出了在ImageNet上训练ResNet34的0轮和89轮中的层Conv2d_8的指数分布的示例。图6仅示出了8b指数的完整范围[-127:128]的已利用部分。
指数模块124将A和B指数成对相加以产生对应乘积的指数ABei。比较器树采用这些乘积指数和累加器的指数并且计算最大指数emax。最大指数用于对齐所有乘积,以便它们可正确求和。为了确定每乘积的适当对齐,指数模块124从emax中减去所有乘积指数,从而计算对齐偏移δei。最大指数还用于丢弃在累加时将越界的项。PE 122将跳过落在emax-12范围外的任何项。无论如何,处理8个MAC的最小循环数量将是1个循环,而不管值如何。在所得乘积中的一个的指数大于当前累加器指数的情况下,累加模块128将在累加之前相应地移位(累加移位信号)。指数模块124的示例在图5的第一框中示出。
由于与项相乘等于移位,因此归约模块126确定每个B有效数在累加之前必须移位的位数。这些是4位项K0、……、K7。为了计算Ki,归约模块126a将乘积指数增量(δei)与对应A项ti相加。为了跳过越界项,归约模块126在每个K项之前放置比较器,该比较器将该项与可用累加器位宽的阈值进行比较。可设置阈值以确保模型在ImageNet数据集的FP32训练准确度的0.5%内收敛。然而,可有效地控制阈值来实现动态位宽累加器,这可通过增加被跳过的“越界”位的数量来提高性能。A符号位与其对应的B符号位进行异或,以确定乘积Ps0、……、Ps7的符号。B有效数根据其相应的乘积符号进行补码,并且然后使用偏移K0、……、K7进行移位。归约模块126对每B有效数使用移位器以实施乘法。相反,常规的浮点单元将在乘法器的输出处需要移位器。因此,归约模块126有效地消除了乘法器的成本。在一些情况下,从每个B操作数移出累加器范围的位可使用向最近偶数舍入(RNE)方法进行舍入。加法器树将8个B操作数归约为单个部分和。归约模块126的示例在图5的第二框中示出。
对于累加模块128,将来自归约模块126的所得部分和加到累加寄存器的正确对齐的值。在每个累加步骤中,累加寄存器使用向最近偶数舍入(RNE)方案进行归一化和舍入。归一化块更新累加器指数。当读出累加器值时,通过针对有效数仅提取7b来将该累加器值转换为bfloat16。累加模块128的示例在图5的第三框中说明。
在最坏情况下,两个Ki偏移可能相差高达12,因为图5的示例中的累加模块128具有12个小数位。这意味着基线PE 122需要相对较大的移位器和接受宽输入的累加器树。具体地,PE 122需要可将8b(7b有效位+隐藏位)的值移位最多12个位置的移位器。如果这是整数运算,则它需要累加12+8=20b宽。然而,由于这是浮点单元,因此只要累加14个最高有效位(1b隐藏位,12b小数位和符号位)。低于此范围的任何位都将包括在粘滞位中,该粘滞位是每个输入操作数的最低有效位。通过利用指数的预期分布,可以大大降低这个成本。对于ResNet34层的指数分布,输入的绝大多数指数、权重和输出梯度都在窄范围内。这表明在常见情况下,指数增量将相对较小。另外,保证激活的MSB为一(鉴于不支持非规格化数)。这表明K0、……、K7偏移量通常位于窄范围内。系统100利用这个行为来减少PE 122面积。在示例配置中,可在单个循环中处理的Ki个偏移之间的最大差值被限制为最多3。因此,移位器需要支持最多3b的移位,并且加法器现在需要处理12b输入(1b隐藏位,7b+3b有效位和符号位)。在这种情况下,项编码器单元被修改,使得它们在最大差值为3的组中发送A项。
在一些情况下,处理一组A值将需要多个循环,因为它们中的一些将被转换为多个项。在该时间期间,指数模块124的输入不会改变。为了进一步减少面积,系统100可以利用这种预期行为并且在多个PE 122之间共享指数块。多少PE 122共享指数模块124的决定可基于预期的位稀疏性。位稀疏性越低,则每PE 122的处理时间越长,并且它需要一组新指数的频率就越低。因此,可共享指数模块124的PE 122越多。由于一些模型是高度稀疏的,因此在这种情况下,每两个PE 122共享一个指数模块124可能是最好的。图7示出了PE 122的另一个实施方案。总的来说,PE 122接受一组8个A输入和两组B输入(B和B')作为输入。指数模块124一次可处理(A,B)或(A,B')中的一个。在它处理(A,B)的循环期间,PE#1的多路复用器将emax和指数增量直接传递到PE 122。同时,这些值将被锁存到PE 122前面的寄存器中,使得它们在PE 122处理输入A的所有项时保持不变。当指数块处理(A,B’)时,对PE#2继续进行上述过程。通过这种布置,两个PE 122必须先完成对所有A项的处理,然后才能继续处理另一组A值。由于共享指数模块124,因此将花至少2个循环来处理每组8个A值(即使它包含零项)。
通过利用每PE 122的缓冲区,可以在时间上利用数据重用。为了在空间上利用数据重用,系统100可将若干PE 122布置成分块。图8示出了PE 122的2×2分块的示例,并且每个PE 122并行执行8个MAC运算。每列的每对PE 122共享指数模块124,如上所述。B和B'输入在同一行中的PE 122之间共享。例如,在前向传递期间,可由每一行处理不同的过滤器,并且跨列处理不同的窗口。由于共享B和B'输入,因此所有列都必须等待具有最多Ai项的列完成,然后再前进到下一组B和B'输入。为了减少这些停顿,分块可包含每B和B'缓冲区。每PE122具有N个此类缓冲区允许列提前最多N组值。
本发明人研究了训练期间的值的空间相关性并发现跨通道的连续值具有相似值。激活、权重和输出梯度也是如此。相似的浮点值具有相似的指数,这是系统100可通过基本增量压缩方案利用的特性。在一些情况下,值可按通道分到各32个值的组中,其中组中第一个值的指数是基数,并且相对于该基数来计算组中其余值的增量指数,如图9的示例所示。增量指数的位宽(δ)按组动态地确定,并且设置为每组所得增量指数的最大精度。增量指数位宽(3b)作为元数据附加到每个组的标头。
图10示出了在基本增量压缩之后的总归一化指数占用面积存储器节省量。压缩模块130使用该压缩方案来减少片外存储器带宽。值在每一层的输出处并且在片外写入之前对值进行压缩,并且当在片上读回时对值进行解压缩。
本发明人已经确定跳过越界项可能是低廉的。处理元件122可使用每通道的比较器来检查其当前K项是否位于具有累加器精度值的阈值内。比较器可通过合成工具进行优化以与常数进行比较。处理元件122可以将该信号反馈给对应的项编码器,从而指示鉴于当前e_acc值,来自同一输入对的任何后续项都保证是无效(越界)的。因此,系统100可通过跳过后续越界项的处理来提高其性能和能量效率。跨同一分块列的PE的指示某个通道的越界项的反馈信号可一起同步。
一般地,数据传送占很大部分,并且通常在深度学习中主导能量消耗。因此,有用的是考虑存储器分级结构需要做什么来保持执行单元繁忙。训练带来的挑战是虽然它处理三个阵列I、W和G,但元素分组的顺序在三个主要计算(上面的等式1到3)中是不同的。然而,可以在从片外读取阵列时重新排列阵列。为此,系统100可使用32×32个bfloat16值的“正方形”容器将阵列存储在存储器中。这个大小一般与DDR4存储器的典型行大小相匹配,并且允许系统100在从片外读取值时实现高带宽。容器包括从坐标(c,r,k)(通道,行,列)到(c+31,r,k+31)的值,其中c和k可被32整除(必要时使用填充)。容器按通道、列、行顺序存储。当从片外存储器读取时,容器值可按完全相同的顺序存储在多组块片上缓冲区中。然后,分块可直接访问数据,每次访问读取8个bfloat16值。根据执行的运算,可能需要按不同的顺序处理权重和激活梯度。一般地,在运算中的一个期间必须按转置顺序访问相应的阵列。为此,系统100可包括芯片上的转置器模块132。在示例中,转置器模块132从片上存储器读入8个bfloat16值的8个块。这8次读取中的每一次都使用8值宽读取,并且块作为行写入转置器缓冲区的内部。这些块共同形成值的8x8块。转置器模块132可读出8个块(每块8个值),并且将它们发送到PE 122。这些块中的每一者都可作为列从其内部缓冲区读出。这有效地转置了8x8值组。
本发明人进行了示例实验,以评估系统100与使用常规浮点单元的等效基线架构相比的优势。
开发了定制的周期精确的模拟器以对系统100(非正式地称为FPRaker)和基线架构的执行时间进行建模。除了对时序行为进行建模外,模拟器还忠实时间地对值传送和计算进行了建模,并且检查所产生的值对照黄金值的正确性。该模拟器已通过微基准测试进行验证。对于面积和功率分析,系统100和基准设计都在Veri log中实施并且使用Synopsys的设计编译器和65nm TSMC技术以及给定技术的商业库进行综合。Cadence Innovus用于布局生成。英特尔的PSG ModelSim用于生成数据驱动的活动因子,这些因子被馈送到Innovus以估计功率。基线MAC单元针对面积、能量和延迟进行优化。一般地,不可能针对所有三者都进行优化;然而,在MAC单元的情况下,这是可能的。将有效的位并行融合MAC单元用作基线PE。组成乘法器具有面积和延时效率,并且得自由Synopsys开发的Des ignWare IP库。此外,基线单元通过将其I/O操作数的精度减少至bfloat16并以减少的精度用基于组块的累加进行累加来针对深度学习训练进行优化。片上SRAM全局缓冲区(GB)的面积和能量消耗分为使用CACTI建模的激活、权重和梯度存储器。全局缓冲区具有奇数个组块,以减少跨步大于一的层的组块冲突。系统100(FPRaker)和基线的配置在表2中示出。
表2
为了评估系统100,在每一轮训练中的前向和反向传递期间收集了一个随机小批次的轨迹。所有模型都训练足够长的时间,以获得所报告的最大top-1准确度。为了收集轨迹,每个模型在NVIDIA RTX2080Ti GPU上进行训练,并且使用Pytorch前向和后向钩子存储每一层的所有输入和输出。对于BERT,跟踪了BERT-base和GLUE任务的微调训练。模拟器使用轨迹对执行时间进行建模并收集活动统计数据,使得可对能量进行建模。
由于系统100的实施方案按项连续地处理输入中的一个,因此系统100使用并行性来获得更多性能。在一种方法中,iso计算面积约束可用于确定有多少PE 122分块可容纳在基线分块的相同面积中。
与之比较的常规PE同时处理8对bfloat16值并累加它们的和。可包括用于输入(A和B)和输出的缓冲区,使得可在时间上利用数据重用。多个PE 122可布置在共享缓冲区以及跨行和列的输入的网格中,以便还在空间上利用重用。系统100和基线都被配置为具有按比例放大的GPU张量核心样分块,所述分块执行8×8向量矩阵乘法,其中64个PE 122被组织在8×8网格中并且每个PE并行地执行8个MAC运算。
在布局后,并且仅考虑计算区域,系统100的实施方案的分块相对于基线分块占据0.22%的面积。表3报告了每分块的对应面积和功率。因此,为了进行iso计算面积比较,基线加速器必须被配置为具有8个区块并且系统100被配置为具有36个分块。对于激活、权重和梯度,片上SRAM全局缓冲区的面积分别为344mm2、93.6mm2和334mm2。
表3
图10示出了系统100相对于基线的性能改进。平均而言,系统100优于基线1.5倍。根据所研究的基于卷积的模型,ResNet18-Q从系统100获益最多,性能比基线提高了2.04倍。该网络的训练结合了PACT量化,并且因此,整个训练中的大多数激活和权重都可适应4b或更小。这转变为系统100所利用的高项稀疏性。该结果表明系统100可通过专门的量化方法带来益处,而不需要也专门用于此目的的硬件。
SNLI、NCF和Bert以全连接层为主。虽然在全连接层中,不同输出激活之间没有权重重用,但训练可利用批处理来最大化跨同一输入语句的多个输入(例如,词语)的权重重用,这导致对分块PE的更高利用。加速比遵循位稀疏性。例如,对于SNLI,系统100因其高位稀疏性而实现了超过基线1.8倍的加速比。
图11示出了在每个所研究的模型中系统100超过基线架构的总能量效率。平均而言,仅考虑计算逻辑,系统100的能量效率比基线高1.4倍,并且当考虑到所有因素时,能量效率高1.36倍。能量效率提高紧跟性能益处。例如,对于SNLI和Detectron2,益处在1.7倍左右更高。ResNet18-Q中的量化将计算逻辑能量效率提高到高达1.97倍。图12将归一化到基线的由系统100消耗的能量示出为跨三个主要成分的细目:计算逻辑、片外和片上数据传送。系统100连同指数基本增量压缩显著降低了计算逻辑和片外存储器的能量消耗。
图13示出了系统100跳过的项的细目。存在两种情况:1)跳过零项,以及2)跳过由于浮点表示的精度有限而越界的非零项。跳过越界项会使ResNet50-S2和Detectron2的项稀疏性分别提高约10%和5.1%。具有高稀疏性(零值)的网络(诸如VGG16和SNLI)从跳过越界项受益最少,其中大多数的项稀疏性来自零项。这是因为开始的项很少。对于ResNet18-Q,大部分的益处来自跳过零项,因为激活和权重被有效地量化为4b值。
图14示出了3个训练阶段中的每一者的加速比:前向传播中的A×W,以及分别用于计算反向传播中的权重和输入梯度的A×G和G×W。在所有三个阶段,系统100始终优于基线。加速比取决于项稀疏性的数以及A、W和G在模型、层和训练阶段的值分布。值具有的项越少,系统100提高性能的潜力就越大。然而,由于PE 122在每个循环可执行的有限移位(最多3个位置),项在值内的分布方式会影响处理它所需的循环数量。该行为跨通道适用于相同的PE 122并且在同一区块中的PE 122上适用。一般而言,同时处理的一组值将转变为特定的项稀疏模式。在一些情况下,系统100可能偏爱项在数值上彼此接近的模式。
图15示出了在所有研究的网络中系统100随时间且在整个训练过程中超过基线的加速比。测量显示出三种不同的趋势。对于VGG16,前30轮的加速比更高,在这之后下降约15%并趋于平稳。对于ResNet18-Q,加速比在30轮后增加约12.5%并稳定。这可归因于PACT剪裁超参数被优化以激活和权重量化在4位内或以下。对于其余网络,加速比在整个训练过程中保持稳定。总的来说,测量表明系统100的性能是稳健的,并且它在所有训练轮上都提供性能改进。分块组织的效果:如图16所示,增加每分块的行数平均将性能降低6%。这种性能降低是由于每列大量PE 122之间的同步。当行数增加时,更多的PE 122共享同一组A值。具有比其他值多的项的A值现在将影响必须等待完成处理的更大量PE 122。由于每个PE122处理输入向量的不同组合,因此每一者会被PE 122内停顿(诸如“无项”停顿或“有限移位”停顿)不同地影响。图17示出了每个配置中时间流逝的细目。可看出,PE 122间同步的停顿增加,并且其他通道的停顿也增加(“无项”)。
图3示出了根据实施方案的用于在深度学习网络的训练期间加速乘法累加单元(MAC)的方法300的流程图。
在框302处,输入模块120接收两个输入数据流以对其执行MAC运算,该两个输入数据流分别是A数据和B数据。
在框304处,指数模块124将A数据和B数据的指数成对相加以产生乘积指数并使用比较器确定最大指数。
在框306处,归约模块126通过将乘积指数增量添加到A数据中的对应项来确定每个B有效数在累加之前必须移位的位数,并且使用加法器树将B操作数归约为单个部分和。
在框308处,累加模块128使用最大指数将部分和添加到对应的对齐值以确定累加值。
在框310处,累加模块128输出累加值。
为了研究用FPRaker训练对准确度的影响,示例实验在PlaidML中的端到端训练期间模拟PE 122的位串行处理,PlaidML是在后端的基于OpenCL编译器的机器学习框架。PlaidML在训练期间被迫对每个乘加使用mad()函数。mad()函数被本公开的实施方式覆盖以模拟PE的处理。ResNet18在CIFAR-10和CIFAR-100数据集上进行训练。第一行显示了以FP32精度在PlaidML中本机训练的top-1验证准确度。基线执行位并行MAC,其中呈bfloat16的I/O操作数精度已知会收敛并在本领域得到支持。图18示出了对于两个数据集,两个模拟版本在60轮收敛,其中相对于本机训练版本的准确度差异在0.1%内。这是预期的,因为系统100跳过无效工作,即,不影响基线MAC处理中的最终结果的工作。
常规地,训练使用bfloat16进行所有计算。在一些情况下,可使用混合数据类型运算,其中一些计算反而使用定点。在其他情况下,可使用浮点,其中尾数使用的位数按运算和按层变化。在一些情况下,当在Imagenet上训练AlexNet和ResNet18时可使用建议的尾数精度。图19示出了采用这种方法的系统100的性能。系统100可动态地利用按层可变累加器宽度来跳过映射在累加器外的无效项,从而提高整体性能。对于A×W、G×W和A×G,在ImageNet上用按层剖析累加器宽度训练ResNet18可将系统100的加速比分别提高1.51倍、1.45倍和1.22倍。与在用固定累加器宽度训练时可能实现的1.13倍相比,实现超过基线的1.56倍整体加速比。在使用bfloat16容器时调整尾数长度会在尾数中将其自身显示为零位后缀。
有利地,系统100可执行多个乘法累加浮点运算,这些运算都促成单个最终值。处理元件122可用作用于训练神经网络的加速器的构建块。系统100利用所有值在训练期间表现出的相对较高的项级稀疏性。虽然本实施方案描述了使用系统100进行训练,但应理解它也可用于推断。系统100对于使用浮点的模型可能特别有利;例如,处理语言或推荐系统的模型。
有利地,系统100允许有效的精度训练。根据层对量化的敏感度,可在训练期间为每一层分配不同的精度。此外,训练可以较低精度开始,并且在接近转换每一轮增加精度。系统100可允许不同精度的动态适应并且可提高性能和能量效率。
系统100也可用于执行定点运算。因此,它可用于实施训练,其中一些运算使用浮点执行并且一些运算使用定点执行。为了执行定点运算:(1)将指数设置为已知的固定值,通常等于零,并且(2)外部覆写信号指示有效数不包含隐式前导位1。此外,由于在训练期间执行的运算可能是在推断期间执行的运算的超集,因此系统100可用于推断。
尽管已参考某些具体实施方案了描述本发明,但在不脱离如所附权利要求书中概述的本发明的精神和范围的情况下,本发明的各种修改对于本领域技术人员将是显而易见的。
Claims (20)
1.一种用于在深度学习网络的训练或推断期间加速乘法累加(MAC)浮点单元的方法,所述方法包括:
接收第一输入数据流A和第二输入数据流B;
将所述第一数据流A和所述第二数据流B的指数成对相加以产生乘积指数;
使用比较器来确定最大指数;
通过将乘积指数增量添加到所述第一数据流中的对应项来确定所述第二数据流中的每个有效数在累加之前必须移位的位数并且使用加法器树将所述第二数据流中的操作数归约为单个部分和;
使用所述最大指数将所述部分和添加到对应的对齐值以确定累加值;以及
输出所述累加值。
2.如权利要求1所述的方法,其中确定所述第二数据流中的每个有效数在累加之前必须移位的所述位数包括跳过映射在定义的累加器宽度外的无效项。
3.如权利要求1所述的方法,其中每个有效数包括有符号的2的幂。
4.如权利要求1所述的方法,其中在多个MAC浮点单元之间共享将所述指数相加和确定所述最大指数。
5.如权利要求1所述的方法,其中所述指数被设置为固定值。
6.如权利要求1所述的方法,所述方法还包括将浮点值存储在组中,并且其中所述指数增量被编码为与基数指数的差值。
7.如权利要求6所述的方法,其中所述基数指数是所述组中的第一指数。
8.如权利要求1所述的方法,其中使用所述比较器包括将所述最大指数与累加器位宽的阈值进行比较。
9.如权利要求8所述的方法,其中设置所述阈值以确保模型收敛。
10.如权利要求9所述的方法,其中所述阈值被设置在训练准确度的0.5%内。
11.一种用于在深度学习网络的训练或推断期间加速乘法累加(MAC)浮点单元的系统,所述系统包括一个或多个处理器,所述一个或多个处理器与数据存储器通信以执行:
输入模块,所述输入模块用于接收第一输入数据流A和第二输入数据流B;
指数模块,所述指数模块用于将所述第一数据流A和所述第二数据流B的指数成对相加以产生乘积指数,并且使用比较器来确定最大指数;
归约模块,所述归约模块用于通过将乘积指数增量添加到所述第一数据流中的对应项来确定所述第二数据流中的每个有效数在累加之前必须移位的位数并且使用加法器树将所述第二数据流中的所述操作数归约为单个部分和;以及
累加模块,所述累加模块用于使用所述最大指数将所述部分和添加到对应的对齐值以确定累加值,并且输出所述累加值。
12.如权利要求11所述的系统,其中确定所述第二数据流中的每个有效数在累加之前必须移位的所述位数包括跳过映射在定义的累加器宽度外的无效项。
13.如权利要求11所述的系统,其中每个有效数包括有符号的2的幂。
14.如权利要求11所述的系统,其中所述指数模块、所述归约模块和所述累加模块位于处理单元上,并且其中在多个处理单元之间共享将所述指数相加和确定所述最大指数。
15.如权利要求14所述的系统,其中所述多个处理单元被配置为分块布置。
16.如权利要求15所述的系统,其中同一列中的处理单元共享来自所述指数模块的相同输出,并且同一行中的处理单元共享来自所述输入模块的相同输出。
17.如权利要求11所述的系统,其中所述指数被设置为固定值。
18.如权利要求11所述的系统,所述系统还包括将浮点值存储在组中,并且其中所述指数增量被编码为与基数指数的差值,并且其中所述基数指数是所述组中的第一指数。
19.如权利要求11所述的系统,其中使用所述比较器包括将所述最大指数与累加器位宽的阈值进行比较,其中设置所述阈值以确保模型收敛。
20.如权利要求19所述的系统,其中所述阈值被设置在训练准确度的0.5%内。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063054502P | 2020-07-21 | 2020-07-21 | |
US63/054,502 | 2020-07-21 | ||
PCT/CA2021/050994 WO2022016261A1 (en) | 2020-07-21 | 2021-07-19 | System and method for accelerating training of deep learning networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115885249A true CN115885249A (zh) | 2023-03-31 |
Family
ID=79728350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180050933.XA Pending CN115885249A (zh) | 2020-07-21 | 2021-07-19 | 用于加速深度学习网络的训练的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230297337A1 (zh) |
EP (1) | EP4168943A1 (zh) |
JP (1) | JP2023534314A (zh) |
KR (1) | KR20230042052A (zh) |
CN (1) | CN115885249A (zh) |
CA (1) | CA3186227A1 (zh) |
WO (1) | WO2022016261A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210319079A1 (en) * | 2020-04-10 | 2021-10-14 | Samsung Electronics Co., Ltd. | Supporting floating point 16 (fp16) in dot product architecture |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9823897B2 (en) * | 2015-09-25 | 2017-11-21 | Arm Limited | Apparatus and method for floating-point multiplication |
KR20200118815A (ko) * | 2018-02-16 | 2020-10-16 | 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 | 신경망 가속기 |
US10963246B2 (en) * | 2018-11-09 | 2021-03-30 | Intel Corporation | Systems and methods for performing 16-bit floating-point matrix dot product instructions |
US20200202195A1 (en) * | 2018-12-06 | 2020-06-25 | MIPS Tech, LLC | Neural network processing using mixed-precision data representation |
-
2021
- 2021-07-19 JP JP2023504147A patent/JP2023534314A/ja active Pending
- 2021-07-19 WO PCT/CA2021/050994 patent/WO2022016261A1/en unknown
- 2021-07-19 CA CA3186227A patent/CA3186227A1/en active Pending
- 2021-07-19 US US18/005,717 patent/US20230297337A1/en active Pending
- 2021-07-19 EP EP21845885.9A patent/EP4168943A1/en active Pending
- 2021-07-19 CN CN202180050933.XA patent/CN115885249A/zh active Pending
- 2021-07-19 KR KR1020237005452A patent/KR20230042052A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
EP4168943A1 (en) | 2023-04-26 |
CA3186227A1 (en) | 2022-01-27 |
WO2022016261A1 (en) | 2022-01-27 |
KR20230042052A (ko) | 2023-03-27 |
JP2023534314A (ja) | 2023-08-08 |
US20230297337A1 (en) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109543830B (zh) | 一种用于卷积神经网络加速器的拆分累加器 | |
US20210125046A1 (en) | Neural network processing element | |
Daghero et al. | Energy-efficient deep learning inference on edge devices | |
Awad et al. | FPRaker: A processing element for accelerating neural network training | |
Liu et al. | Algorithm and hardware co-design co-optimization framework for LSTM accelerator using quantized fully decomposed tensor train | |
CN115885249A (zh) | 用于加速深度学习网络的训练的系统和方法 | |
Mattingly et al. | Computing the stationary distribution vector of an irreducible Markov chain on a shared-memory multiprocessor | |
Wang et al. | Cta: Hardware-software co-design for compressed token attention mechanism | |
Andri et al. | Extending the RISC-V ISA for efficient RNN-based 5G radio resource management | |
CN103049716B (zh) | 基于一阶矩的卷积器 | |
Zhang et al. | Pass-efficient randomized LU algorithms for computing low-rank matrix approximation | |
CN116842304A (zh) | 一种不规则稀疏矩阵的计算方法及系统 | |
US20230146689A1 (en) | Deep neural network | |
Wong et al. | Low bitwidth CNN accelerator on FPGA using Winograd and block floating point arithmetic | |
US20230334285A1 (en) | Quantization for neural network computation | |
Reddy et al. | Quantization aware approximate multiplier and hardware accelerator for edge computing of deep learning applications | |
Li et al. | DiVIT: Algorithm and architecture co-design of differential attention in vision transformer | |
CN110659014A (zh) | 乘法器及神经网络计算平台 | |
CN115034360A (zh) | 三维卷积神经网络卷积层的处理方法和处理装置 | |
Dey et al. | An application specific processor architecture with 3D integration for recurrent neural networks | |
CN111582444A (zh) | 一种矩阵数据的处理、装置、电子设备及存储介质 | |
CN110889259A (zh) | 针对排列的块对角权重矩阵的稀疏矩阵向量乘法计算单元 | |
Prema et al. | Enhanced high speed modular multiplier using Karatsuba algorithm | |
Khan et al. | Mixed precision iterative refinement with adaptive precision sparse approximate inverse preconditioning | |
Lam et al. | Quantized neural network inference with precision batching |
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 |