CN116738135A - 用于Transformer类模型训练的矩阵乘法器 - Google Patents

用于Transformer类模型训练的矩阵乘法器 Download PDF

Info

Publication number
CN116738135A
CN116738135A CN202310772645.6A CN202310772645A CN116738135A CN 116738135 A CN116738135 A CN 116738135A CN 202310772645 A CN202310772645 A CN 202310772645A CN 116738135 A CN116738135 A CN 116738135A
Authority
CN
China
Prior art keywords
input
data
weight
output
processing unit
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
CN202310772645.6A
Other languages
English (en)
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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN202310772645.6A priority Critical patent/CN116738135A/zh
Publication of CN116738135A publication Critical patent/CN116738135A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • 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
    • G06N3/0455Auto-encoder networks; Encoder-decoder 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供了用于Transformer类模型训练的矩阵乘法器,包括M行N列个脉动阵列,所述脉动阵列是二维的,通过R行C列个相互连接的处理单元PE构成,每个处理单元PE均包括1个乘法器、1个加法器、2个内部寄存器、1个左侧多路选择器,以及2个右侧多路选择器;所述左侧多路选择器能够选择乘法器的输入是来自处理单元PE外部或是保持上一周期的输入,当选择保持上一周期的输入时,处理单元PE以权重保持WS数据流工作;本发明设计了一种可重构的处理单元(PE),可以在训练的不同阶段和不同周期灵活地支持多种数据流,并根据需求选择数据来源。

Description

用于Transformer类模型训练的矩阵乘法器
技术领域
本发明涉及用于Transformer类模型训练的矩阵乘法器。
背景技术
Transformer是Google的团队在2017年提出的一种应用于NLP(NaturalLanguageProcessing,自然语言处理)的经典模型,Transformer模型使用了Self-Attention(自注意力)机制,使得模型可以并行化训练,而且能够拥有样本的全局信息。现在比较流行的BERT和GPT等也是基于Transformer基础结构实现的模型。
近几年来,基于Transformer的深度神经网络(DNN)在自然语言处理(NLP)、计算机视觉(CV)和语音处理等领域取得了优异的成绩。基于Transformer的模型通常是在大规模数据集上预训练,然后针对下游任务进行微调。随着Transformer类模型应用场景的不断拓展,考虑到数据隐私和实时处理的要求,在边缘平台上训练(微调)此类模型变得十分重要。然而由于Transformer类模型的参数量巨大,计算复杂度较高,将微调的训练过程部署在资源有限的边缘平台上面临着诸多挑战。Transformer类模型的绝大部分计算由矩阵乘法构成,由于自然语言处理任务中样本长度的变化以及训练不同阶段的矩阵转置特点,模型训练过程中的矩阵乘法计算呈现出不规则特性。将这些计算部署到传统的矩阵计算架构上时,会出现资源利用率和计算吞吐量低的问题。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供用于Transformer类模型训练的矩阵乘法器,包括M行N列个脉动阵列,所述脉动阵列是二维的,通过R行C列个相互连接的处理单元PE(Processing Element,处理单元)构成,M,N,R,C均为正整数,M通常设置为2的整数幂;
每个处理单元PE均包括1个乘法器、1个加法器、2个内部寄存器、1个左侧多路选择器,以及2个右侧多路选择器;
通过所述左侧多路选择器,能够选择乘法器的输入b是来自处理单元PE外部或是保持上一周期的输入,当选择保持上一周期的输入时,处理单元PE以权重保持WS数据流工作;
通过所述右侧多路选择器,能够选择加法器的输入c是来自其他处理单元PE或是本处理单元PE上一周期加法器的输出,当选择本处理单元PE上一周期加法器的输出时,处理单元PE以输出保持OS数据流工作。
所述处理单元PE内的右侧多路选择器用于将计算结果在处理单元PE之间传递以输出到脉动阵列外部。
所述脉动阵列中同一行的各处理单元PE的a_in输入来自脉动阵列左侧的广播输入,即各处理单元PE的输入端口a_in均连接到脉动阵列左侧的数据输入,各列之间的由输入端口a_in输入的数据不传递;不同行的输入数据来自脉动阵列左侧不同的输入端口,即第一行的各处理单元PE共享一个输入端口a_in输入,第二行的各处理单元PE共享一个输入端口a_in输入,第三行的各处理单元PE共享一个输入端口a_in输入;
位于同一列的各处理单元PE,其输入b_in来自脉动阵列上方的广播输入,或者来自上方处理单元PE的b_out输出,由处理单元PE之间的多路选择器控制;
当选择脉动阵列上方的广播输入时,脉动阵列以输出保持OS数据流工作,当选择来自上方处理单元PE的b_out输出时,脉动阵列用于输入数据预加载,以进行权重保持WS数据流的后续计算;
位于同一列的各处理单元PE,除了第一行的处理单元PE,其余行的处理单元PE的输入c_in来自其上方处理单元PE的c_out输出,第一行的输入c_in来自脉动阵列外部,各行之间数据c的传输能够用于权重保持WS数据流下的部分和传递和输出保持OS数据流下的结果传递。
第一行处理单元PE的c_in输入来自脉动阵列上方。
当脉动阵列以权重保持WS数据流工作时,包括权重数据预加载和权重保持阶段;
权重数据预加载阶段:当计算处于权重数据预加载阶段时,脉动阵列内部的结构和连接方式按照下面的方式组织:来自脉动阵列上方的权重数据输入到第一行处理单元PE的b_in输入端口,其余行的处理单元PE的b_in输入来自上方处理单元PE上一周期的b_in输入,当前周期的b_out输出;权重加载到所有处理单元PE需要N个时钟周期。设定输入矩阵表示4行3列的实数矩阵,权重矩阵/>输出矩阵/>在权重加载阶段,权重矩阵的元素逐行加载到脉动阵列中对应的处理单元PE,则权重加载到所有处理单元PE需要3个时钟周期。
权重保持阶段:当权重矩阵的元素加载到脉动阵列中对应的处理单元PE后,进入权重保持阶段,此时,脉动阵列内部的结构和连接方式按照下面的方式组织:处理单元PE内乘法器的b输入端口一直保持为对应的权重数据;输入矩阵沿着脉动阵列的每一行广播输入,各行之间的输入数据有一个周期的时间差;部分和沿着c_in和c_out端口在各行之间传播,计算结果沿着脉动阵列下方的处理单元PE输出;设定输入矩阵权重矩阵经过各行之间部分和的累加,最终结果y11=x11w11+x12w21+x13w31,从左下角PE3的c_out端口输出,PE31表示第3行第1列的处理单元PE;x13是输入矩阵x中第1行第3列的元素,w31是权重矩阵W中第3行第1列的元素。
当脉动阵列以输出保持OS数据流工作时,包括处理单元PE内乘累加和结果传出阶段;
处理单元PE内乘累加阶段:在输出保持OS数据流的处理单元PE内乘累加阶段,脉动阵列内部的结构和连接方式按照下面的方式组织:来自脉动阵列上方的权重数据同时广播到一列的所有处理单元PE的b_in输入,来自脉动阵列左侧的输入数据同时广播到同一行所有处理单元PE的a_in输入;处理单元PE内部加法器的c输入连接到上一周期加法器的输出,形成一个累加器;权重数据和输入数据每个周期更新,权重数据和输入数据的乘积在处理单元PE内部累加直到计算得到最终结果;在输出保持OS数据流的处理单元PE内乘累加阶段,各行与各列之间的输入和权重数据没有时间差;设定输入矩阵权重矩阵输出矩阵/>在乘累加阶段内的各个周期,脉动阵列内部各处理单元PE的有效输入数据和权重数据按照下面的方式组织:每个周期输入和权重数据都会更新并同时广播到其所在行或列的所有处理单元PE单元乘法器的输入,计算结果y11=x11w11+x12w21+x13w31+x14w41,在脉动阵列左上角的PE11内累加得到,PE11表示第1行第1列的处理单元PE;
结果传出阶段:当所有输入数据和权重数据传输到脉动阵列之内后,各元素乘积在处理单元PE内部累加得到最终结果,此时进入结果传出阶段,需要将计算结果沿各列处理单元PE的c端口从脉动阵列下方输出,结果传出脉动阵列内部的结构和连接方式按照下面的方式组织:各处理单元PE右半部分c_out输出不再连接到加法器的输出,而是连接到上方处理单元PE上一周期的c_out输出端,从而完成各处理单元PE的计算结果在脉动阵列内的移位输出。以前面所述计算过程为例,其结果沿列从脉动阵列最下面一行的处理单元PE的c_out端口输出。
将M行N列的脉动阵列通过片上网络的模式相互连接,组成矩阵乘法模块;所述矩阵乘法模块分别与输入内存块、权重内存块相连接;
所述输入内存块用于存储片外DRAM传输到片上的输入数据,包括M个片上缓存区,用于存储片外DRAM传输到片上的输入数据;输入内存块中的数据通过输入分配网络传输到各行脉动阵列,并与脉动阵列左侧的a_in输入端口相连接;各行脉动阵列共享同一个输入分配网络;所述输入分配网络是一个包含M个输入端口和M个输出端口的模块,能够实现任意输入端口到任意输出端口的连接,负责将来自不同内存块的输入数据传输到相应的脉动阵列;
所述权重内存块用于存储片外DRAM传输到片上的权重数据,包含N×C个片上缓存区,通过权重分配网络传输到各行脉动阵列,并与脉动阵列上方的b输入端口相连接;同一列的脉动阵列共享一个权重分配网络,不同列的脉动阵列使用不同的权重分配网络;所述权重分配网络是一个包含C个输入端口和C个输出端口的模块,一共有N个,能够实现任意输入端口到任意输出端口的连接,负责将来自不同内存块的权重数据传输到相应的脉动阵列;
所述脉动阵列下方的c_out输出端口连接一个结果生成网络,所述结果生成网络用于将脉动阵列的计算结果传输到对应的输出内存块中;
所述输出内存块与矩阵乘法模块连接,用于存储计算完成后的结果数据,包括N×C个片上缓存区。
所述输入分配网络和权重分配网络负责将来自不同内存块的数据传输到相应的脉动阵列;
设定矩阵乘法模块中脉动阵列的行数为M,相应的输入内存的块数也为M,使用一个M输入,M输出的M-M输入分配网络完成输入数据的路由,包含M个M输入的可配置多路选择器;
设定矩阵乘法模块中脉动阵列的列数为N,脉动阵列内处理单元PE的列数为C,相应的权重内存的块数为N×C,一共有N个权重分配网络,每个权重分配网络均为一个包含C个输入端口和C个输出端口的C-C网络,权重分配网络用于完成权重数据的路由,包含C个C输入的可配置多路选择器。
当M=4时,一个4-4输入分配网络包含4个可配置的多路选择器,送往不同行的数据来自任意一个内存块输入,由多路选择器的控制信号确定。
所述结果生成网络能够对脉动阵列的计算结果进行后处理,当矩阵乘法模块中的脉动阵列处于输出保持OS数据流时,脉动阵列能够得到矩阵乘法计算的最终结果,并使用结果生成网络直接传输到输出内存中;当脉动阵列处于权重保持WS数据流时,结果生成网络通过一个可配置的加法树,实现任意组合的输入数据相加并输出结果。
所述结果生成网络的基础单元包含一种带有旁路的加法器,所述加法器使用一个基础加法器和一个多路选择器,有两个输入端口和两个输出端口;当加法器以第一种状态工作时,能够将输入的两个数据原封不动地传递到两个输出端口;当加法器以第二种状态工作时,加法器上方端口输出两个输入值的和,下方端口输出其中一个输入值;将第二种状态的加法器垂直翻转,得到加法器的第三种状态工作,加法器下方端口输出两个输入值的和,上方端口输出其中一个输入值。
基于所述带有旁路的加法器,构建可配置的结果生成网络,用于实现任意组合的输入值相加;
所述结果生成网络的输入为M时,结果生成网络的左侧有M个输入端口,分别连接到第一列的M/2个带有旁路的加法器,后面各级加法器和多路选择器均为常规结构,各级的输入端口连接到前一级结构的输出端口,各级模块之间插入寄存器形成流水线结构以提高频率和计算吞吐量,网络的输出可以来自任意内部模块的输出端口,由运行时的控制信号确定。
本发明针对Transformer类模型训练过程中的不规则矩阵乘法计算,提出了一种灵活可重构的硬件架构,基于专门设计的处理单元以及灵活的数据分配和合成网络,可以根据计算负载的特点灵活地调整数据流和映射方案,从而更好地利用计算资源,在训练的各个阶段以实现更高的性能和能效。该发明提出的解决方法是目前首次提出、且有效的方案。
本发明具有如下有益效果:
(1)设计了一种可重构的处理单元(PE),可以在训练的不同阶段和不同周期灵活地支持多种数据流,并根据需求选择数据来源。
(2)基于可重构处理单元提出了一种可以灵活支持多种数据流的脉动阵列,并采用了输入数据的广播结构,以减少输入数据的传输时间和内部寄存器的资源开销。
(3)使用向外拓展的方式将多个脉动阵列集成到一个矩阵乘法模块中,在提高计算能力的同时保持高水平的硬件资源利用率。
(4)在矩阵乘法模块和数据存储模块之间设计了输入/权重分配网络和结果生成网络。数据分配网络可以根据计算负载特征将数据灵活地映射到脉动阵列之中。结果生成网络可以对计算结果进行后处理并将结果传递到输出缓存之中。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是可重构处理单元内部结构示意图。
图2是3×3脉动阵列结构示意图。
图3是WS数据流-权重预加载示意图。
图4是输入矩阵、权重矩阵和输出矩阵示意图。
图5是权重预加载示意图。
图6是WS数据流-权重保持示意图。
图7是权重保持前两个周期的数据流示意图。
图8是OS数据流-PE内乘累加示意图。
图9是输入矩阵、权重矩阵和输出矩阵示意图。
图10是PE内乘累加阶段各周期的数据流示意图。
图11是OS数据流-结果传出示意图。
图12是结果传出的过程示意图。
图13是矩阵乘法模块示意图。
图14是4-4输入分配网络示意图。
图15是带有旁路的加法器示意图。
图16是结果生成网络示意图。
图17是结果生成网络应用示例示意图。
图18是4×4传统脉动阵列与WS数据流示意图。
具体实施方式
本发明提供了用于Transformer类模型训练的矩阵乘法器,包括:
1.一种灵活的可重构处理单元
脉动阵列由许多相互连接的处理单元(Processing Element,PE)构成,在与卷积或矩阵乘法相关的算术运算中,处理单元通常是乘累加(Multiply-Accumulator,MAC)单元。MAC单元可以在一个周期内同时执行乘法和加法操作,在实现矩阵乘法等计算时,可以提高计算效率。MAC单元通常由乘法器和加法器组成,乘法器用于计算两个数的乘积,加法器用于将乘积累加。一般的脉动阵列结构设计只支持一种形式的数据流(例如TPU(TensorProcessing Unit)采用WS数据流),这是由于其简单的处理单元结构和互联方式。而在与Transformer训练相关的任务中,不同网络层以及训练不同阶段的矩阵乘法计算适合不同形式的数据流。通过实验可以证明,在Transformer线性层的训练过程中,前向传播FP(Forward Propagation,FP)和反向传播BP(Backward Propagation,BP)阶段的矩阵乘法适合OS数据流,而权重梯度计算WG(Weight Gradient computation,WG)阶段的矩阵乘法适合权重保持WS(Weight Stationary,WS)数据流。因此,支持灵活数据流的脉动阵列可以有效提高矩阵乘法的计算效率和硬件资源利用率。
本发明提出了一种灵活可重构的处理单元(PE)设计,可以在训练的不同阶段和计算的不同周期根据需求重构内部的结构,以在不同数据流模式下工作,并以此PE设计为基础构建支持多种数据流的脉动阵列。PE的结构如图1所示,包含1个乘法器,1个加法器,2个内部寄存器(D),左侧1个多路选择器(①)和右侧两个多路选择器(②和③),来自PE外部的a输入(a_in)连接到乘法器的a端口,来自PE外部的b输入(b_in)经过左侧多路选择器(①)和寄存器连接到乘法器的b端口,乘法器的输出连接到加法器的其中一个输入端口,来自PE外部的c输入(c_in)经过右路多路选择器(②)连接到加法器的c端口;加法器的输出经过右侧多路选择器(③)和寄存器连接到PE的c输出端口(c_out)。所有内部模块可以根据计算需要采用不同的数据格式,例如整数或者浮点数。PE通过多路选择器(Multiplexer,MUX)调整内部结构以支持不同数据流。
左侧MUX(①)可以选择乘法器的输入b是来自PE外部或是保持上一周期的输入,当选择后者时,PE以WS数据流工作;
右侧MUX(②)可以选择加法器的输入c是来自其他PE或是本PE上一周期加法器的输出,当选择后者时,PE以输出保持OS(Output Stationary,OS)数据流工作;右侧MUX(③)可以将计算结果在PE之间传递以输出到阵列外部。
2.支持多种数据流的脉动阵列
基于所述的可重构处理单元,本发明提出了一种可以灵活支持多种数据流的脉动阵列,并采用了输入数据的广播结构,以减少输入数据的传输时间和内部寄存器的资源开销。
以一个3×3大小的脉动阵列为例,PEij表示第i行,第j列的PE。其结构和PE之间的互联方式如图2所示:
1)同一行的各PE的a输入来自阵列左侧的广播输入,即各PE的输入端口a均连接到阵列左侧的数据输入,各列之间的a数据不传递。不同行的输入数据来自阵列左侧不同的输入端口,即第一行的各PE共享一个a输入,第二行的各PE共享一个a输入,第三行的各PE共享一个a输入。
2)位于同一列的各PE,其输入b可以来自阵列上方的广播输入,也可以来自上方PE的b输出,由PE之间的多路选择器控制。当选择前者时,阵列以OS数据流工作,当选择后者时,阵列用于输入数据预加载,以进行权重保持WS数据流的后续计算。
3)位于同一列的各PE,除了第一行的PE,其输入c来自其上方PE的c输出。各行之间数据c的传输可以用于WS数据流下的部分和(Partial Sum)传递和OS数据流下的结果传递。第一行PE的c输入来自阵列上方,可根据计算需求确定。
脉动阵列的具体大小可以根据矩阵乘法计算负载的情况调整,定义为R×C,R表示行数,C表示列数。下面将仍以3×3大小的脉动阵列为例介绍其在WS和OS数据流下的计算过程。
2.1WS数据流的脉动阵列
当脉动阵列以WS数据流工作时,其计算主要分为两个阶段:权重数据预加载和权重保持阶段。
(1)权重数据预加载
当计算处于权重数据预加载阶段时,阵列内部的结构和连接方式如图3所示:实线表示由MUX选择的有效数据路径,虚线表示无效路径,此时,来自阵列上方的权重数据输入到第一行PE的b_in输入端口。其余行的PE的b_in输入来自其上方PE上一周期的b_in输入,当前周期的b_out输出。权重加载到所有PE需要3个时钟周期。假设输入矩阵权重矩阵/>输出矩阵/>如图4所示。在权重加载阶段,权重矩阵的元素逐行加载到阵列中对应的PE,其过程如图5所示。
(2)权重保持
当权重矩阵的元素加载到阵列中对应的PE后,进入权重保持阶段。此时,阵列内部的结构和连接方式如图6所示:实线表示由MUX选择的有效数据路径,虚线表示无效路径,PE内乘法器的b_in输入端口一直保持为对应的权重数据。输入矩阵沿着阵列的每一行广播输入,各行之间的输入数据有一个周期的时间差。部分和沿着c_in和c_out端口在各行之间传播,计算结果沿着阵列下方的PE输出。权重保持阶段前两个周期的数据流如图7所示,经过各行之间部分和的累加,最终结果y11=x11w11+x12w21+x13w31,从左下角PE31的c_out端口输出,结果矩阵中其他元素的计算过程与之类似。
2.1 OS数据流的脉动阵列
当脉动阵列以OS数据流工作时,其计算过程主要分为两个阶段,PE内乘累加和结果传出。
(1)PE内乘累加
在OS数据流的PE内乘累加阶段,阵列内部的结构和连接方式如图8所示:来自阵列上方的的权重数据同时广播到一列的所有PE的b_in输入,来自阵列左侧的输入数据同时广播到同一行所有PE的a_in输入。PE内部加法器的c输入连接到上一周期加法器的输出,形成一个累加器。权重数据和输入数据每个周期更新,其乘积在PE内部累加直到计算得到最终结果。此阶段各行与各列之间的输入和权重数据没有时间差。假设输入矩阵权重矩阵/>输出矩阵/>如图9所示。在乘累加阶段内的各个周期,阵列内部各PE的有效输入数据和权重数据如图10所示,每个周期输入和权重数据都会更新并同时广播到其所在行或列的所有PE单元乘法器的输入。计算结果y11=x11w11+x12w21+x13w31+x14w41,在阵列左上角的PE11内累加得到,其余结果类似。
(2)结果传出
当所有输入数据和权重数据传输到阵列之内以后,各元素乘积在PE内部累加得到最终结果,此时进入结果传出阶段,需要将计算结果沿各列PE的c_in和c_out端口从阵列下方输出。此阶段阵列内部的结构和连接方式如图11所示:各PE右半部分c_out输出不再连接到加法器的输出,而是连接到上方PE上一周期的c_out输出端,以此种结构完成各PE的计算结果在阵列内的移位输出。以前面所述计算过程为例,其结果传出的过程如图12所示。
3.矩阵乘法模块
由可重构PE组成的脉动阵列可以灵活地适应训练不同阶段的计算需求,但Transformer类模型训练过程中不规则的矩阵计算特征仍会影响计算效率。仅仅通过增加脉动阵列大小来提升计算效率会面临矩阵映射时与阵列尺寸不匹配的问题,尤其是在样本序列长度较小时,使用很大的脉动阵列会大幅降低计算效率和硬件资源利用率。本发明使用一种Scale Out(向外拓展)的方式来组织脉动阵列,将多个脉动阵列模块通过片上网络的模式相互连接,在提升计算能力的同时保持较高的资源利用率。
矩阵乘法模块及其相匹配的外围内存模块结构如图13所示:
输入内存块(Memory Bank)由多个片上缓存区(Buffer)组成,用于存储片外DRAM传输到片上的输入数据。输入内存块中的数据通过输入分配网络传输到各行脉动阵列,并与阵列左侧的a输入端口相连接。各行脉动阵列共享同一个输入分配网络。
权重内存块用于存储权重数据,通过权重分配网络传输到各行脉动阵列,并与阵列上方的b输入端口相连接。同一列的脉动阵列共享一个权重分配网络,不同列的脉动阵列使用不同的权重分配网络。
结果生成网络连接到阵列下方的c输出端口,用于将脉动阵列的计算结果传输到对应的输出内存块中。当脉动阵列使用WS数据流工作时,不同行的脉动阵列的计算结果可能需要进一步相加得到最终结果。而且具体哪些行的结果需要相加是不确定的,因此,结果生成网络是一个灵活可重构的加法树,可以实现任意组合的输入数据相加并输出结果。
3.1输入和权重分配网络
输入和权重分配网络负责将来自不同内存块的数据传输到相应的脉动阵列。不同于传统的内存块与阵列的行/列一一对应的方式,为了提高计算效率,本发明使用特殊的输入和权重分配网络将数据灵活地传递到矩阵乘法模块的任意行/列。
假设矩阵乘法模块中脉动阵列的行数为4,相应的输入内存的块(Bank)数也为4,本发明使用一个4输入,4输出的4-4输入分配网络完成输入数据的路由。4-4输入分配网络的内部逻辑结构如图14所示:包含4个可配置的多路选择器,送往(To)不同行(Row)的数据可以来自(From)任意一个内存块输入,由多路选择器的控制信号确定。权重分配网络的结构与输入分配网络相同,来自多个权重内存块的数据可以被传输到矩阵乘法模块同一列内任意行的脉动阵列。
3.2结果生成网络
结果生成网络负责将脉动阵列的计算结果传输到对应的输出内存块中,并且可以对脉动阵列的计算结果进行后处理。当矩阵乘法模块中的脉动阵列处于OS数据流时,脉动阵列可以得到矩阵乘法计算的最终结果,并使用结果生成网络直接传输到输出内存中;而当脉动阵列处于WS数据流时,其计算结果可能只是最终有效结果的一部分,需要和其他行的脉动阵列的计算结果再相加。并且哪些行的结果需要进一步相加是不确定的,要根据计算负载的分配情况而调整。因此结果生成网络包含了一个灵活可配置的加法树,可以实现任意组合的输入数据相加并输出结果。
本发明中的结果生成网络使用了一种带有旁路的加法器,其结构如图15最左侧图所示,使用一个基础加法器和一个多路选择器,有两个输入端口和两个输出端口。当加法器以图15左侧第二幅图所示的结构工作时,其可以将输入的两个数据原封不动地传递到两个输出端口;当加法器以图15从左起第三幅图的所示结构工作时,其上方端口输出两个输入值的和,下方端口输出其中一个输入值;当将图15从左起第三幅图的所示结构垂直翻转,即可以得到图15从左起第四幅图下方输出和的结构。
基于所述的带有旁路的加法器,本发明提出一种灵活可配置的结果生成网络,可以实现任意组合的输入值相加。以16输入的结果生成网络为例,其整体结构如图16所示,左侧有16个输入端口,分别连接到第一列8个带有旁路的加法器,后面各级加法器和多路选择器均为常规结构。各级模块之间插入寄存器形成流水线结构以提高频率和计算吞吐量。网络的输出可以来自任意内部模块的输出端口,由运行时的控制信号确定。
图17是图16输入结果生成网络的应用示例,可以用于计算x1+x2+x3,x4+x5+x6+x7,x8+x9,x10+x11+x12+x13和x14+x15+x16的结果,第一级带有旁路的加法器根据需求分别被配置为有加法功能或者无加法功能的结构,与图15相对应,黑色粗线和灰色粗线表示由多路选择器控制的有效计算路径。结果生成网络的输入与矩阵乘法模块中脉动阵列的行数M保持一致,通常设置为2的整数幂,以形成规则的结构。
实施例
Transformer类模型训练过程中包括很多不规则的矩阵计算,本实施例中,以一个不规则矩阵乘法的计算过程为例,来说明本发明提供的矩阵乘法计算架构对计算效率的大幅提升。在拥有相同计算资源的前提下,比较传统脉动阵列和本发明提供的矩阵乘法计算架构的计算效率。设定传统脉动阵列的大小为16×16(16行,16列),使用WS数据流;矩阵乘法计算架构包括M行N列个脉动阵列,脉动阵列由R行C列个相互连接的处理单元PE构成,使用WS数据流,设定M=N=R=C=4,脉动阵列和矩阵乘法计算架构均包含256个处理单元PE。一个4×4大小的WS数据流的传统脉动阵列的工作方式如图18所示,权重矩阵的元素在计算开始前预加载并存储在每个PE中。然后,输入矩阵的元素从阵列的左边缘流入。每个PE每个周期生成一个部分和,生成的中间结果沿着列传播。
设定矩阵乘法的输入矩阵表示4行4列的实数矩阵,权重矩阵表示4行64列的实数矩阵,输出矩阵/>xij是输入矩阵X中第i行,第j列的元素;wij是权重矩阵W中第i行,第j列的元素,下标表示元素在矩阵中的行和列。当该矩阵乘法映射到传统的16×16大小的脉动阵列上时,在权重预加载阶段阶段,权重矩阵中1-4行,1-16列的元素,加载到传统脉动阵列的1-4行,1-16列的处理单元PE内。权重矩阵的后面48列无法加载到传统脉动阵列的剩余处理单元PE上,因为后面48列的计算和前面16列不相关,而传统脉动阵列中同一列的处理单元PE的计算结果要进行相加。后续48列的计算需要等到前面16列计算完成再依次进行,16列的计算为1个轮次,传统脉动阵列总共需要4个轮次。
而在本发明提出的矩阵乘法计算架构中,权重矩阵中1-4行,1-16列的元素可以加载到矩阵乘法模块中第1列的4个4×4个脉动阵列内;权重矩阵中1-4行,17-32列的元素可以加载到矩阵乘法模块中第2列的4个4×4个脉动阵列内;权重矩阵中1-4行,33-48列的元素可以加载到矩阵乘法模块中第3列的4个4×4个脉动阵列内;权重矩阵中1-4行,49-64列的元素可以加载到矩阵乘法模块中第4列的4个4×4个脉动阵列内。由于各行脉动阵列的计算是相互独立的,所以可以将权重数据加载到不同行的的脉动阵列单独计算,分别输出。在使用相同计算资源的情况下,本发明所提出的矩阵乘法计算模块在1个轮次内就可以完成整个矩阵乘法的所需计算。可以大幅提升计算效率。在Transformer类模型的训练过程中存在着大量类似的矩阵乘法计算,利用本发明提出的矩阵乘法计算架构,可以有效地提升模型训练地效率。
本发明提供了用于Transformer类模型训练的矩阵乘法器,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (10)

1.用于Transformer类模型训练的矩阵乘法器,其特征在于,包括M行N列个脉动阵列,所述脉动阵列是二维的,通过R行C列个相互连接的处理单元PE构成,M,N,R,C均为正整数;
每个处理单元PE均包括1个乘法器、1个加法器、2个内部寄存器、1个左侧多路选择器,以及2个右侧多路选择器;
通过所述左侧多路选择器,能够选择乘法器的输入是来自处理单元PE外部或是保持上一周期的输入,当选择保持上一周期的输入时,处理单元PE以权重保持WS数据流工作;
通过所述右侧多路选择器,能够选择加法器的输入是来自其他处理单元PE或是本处理单元PE上一周期加法器的输出,当选择本处理单元PE上一周期加法器的输出时,处理单元PE以输出保持OS数据流工作。
2.根据权利要求1所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,所述处理单元PE内的右侧多路选择器用于将计算结果在处理单元PE之间传递以输出到脉动阵列外部。
3.根据权利要求2所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,所述脉动阵列中同一行的各处理单元PE的a_in输入来自脉动阵列左侧的广播输入,即各处理单元PE的输入端口a_in均连接到脉动阵列左侧的数据输入,各列之间的由输入端口a_in输入的数据不传递;不同行的输入数据来自脉动阵列左侧不同的输入端口,即第一行的各处理单元PE共享一个输入端口a_in输入,第二行的各处理单元PE共享一个输入端口a_in输入,第三行的各处理单元PE共享一个输入端口a_in输入;
位于同一列的各处理单元PE,其输入b_in来自脉动阵列上方的广播输入,或者来自上方处理单元PE的b_out输出,由处理单元PE之间的多路选择器控制;
当选择脉动阵列上方的广播输入时,脉动阵列以输出保持OS数据流工作,当选择来自上方处理单元PE的b_out输出时,脉动阵列用于输入数据预加载,以进行权重保持WS数据流的后续计算;
位于同一列的各处理单元PE,除了第一行的处理单元PE,其余行的处理单元PE的输入c_in来自其上方处理单元PE的c_out输出,第一行的输入c_in来自脉动阵列外部,各行之间数据c的传输能够用于权重保持WS数据流下的部分和传递和输出保持OS数据流下的结果传递;
第一行处理单元PE的c_in输入来自脉动阵列上方。
4.根据权利要求3所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,当脉动阵列以权重保持WS数据流工作时,包括权重数据预加载和权重保持阶段;
权重数据预加载阶段:当计算处于权重数据预加载阶段时,脉动阵列内部的结构和连接方式按照下面的方式组织:来自脉动阵列上方的权重数据输入到第一行处理单元PE的b_in输入端口,其余行的处理单元PE的b_in输入来自上方处理单元PE上一周期的b_in输入,当前周期的b_out输出;权重加载到所有处理单元PE需要N个时钟周期;设定输入矩阵 表示4行3列的实数矩阵,权重矩阵/>输出矩阵/>在权重加载阶段,权重矩阵的元素逐行加载到脉动阵列中对应的处理单元PE,则权重加载到所有处理单元PE需要3个时钟周期;
权重保持阶段:当权重矩阵的元素加载到脉动阵列中对应的处理单元PE后,进入权重保持阶段,此时,脉动阵列内部的结构和连接方式按照下面的方式组织:处理单元PE内乘法器的b输入端口一直保持为对应的权重数据;输入矩阵沿着脉动阵列的每一行广播输入,各行之间的输入数据有一个周期的时间差;部分和沿着c_in和c_out端口在各行之间传播,计算结果沿着脉动阵列下方的处理单元PE输出;设定输入矩阵权重矩阵/>经过各行之间部分和的累加,最终结果y11=x11w11+x12w21+x13w31,从左下角PE31的c_out端口输出,PE31表示第3行第1列的处理单元PE;x13是输入矩阵X中第1行第3列的元素,w31是权重矩阵W中第3行第1列的元素。
5.根据权利要求4所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,当脉动阵列以输出保持OS数据流工作时,包括处理单元PE内乘累加和结果传出阶段;
处理单元PE内乘累加阶段:在输出保持OS数据流的处理单元PE内乘累加阶段,脉动阵列内部的结构和连接方式按照下面的方式组织:来自脉动阵列上方的权重数据同时广播到一列的所有处理单元PE的b_in输入,来自脉动阵列左侧的输入数据同时广播到同一行所有处理单元PE的a_in输入;处理单元PE内部加法器的c输入连接到上一周期加法器的输出,形成一个累加器;权重数据和输入数据每个周期更新,权重数据和输入数据的乘积在处理单元PE内部累加直到计算得到最终结果;在输出保持OS数据流的处理单元PE内乘累加阶段,各行与各列之间的输入和权重数据没有时间差;设定输入矩阵权重矩阵输出矩阵/>在乘累加阶段内的各个周期,脉动阵列内部各处理单元PE的有效输入数据和权重数据按照下面的方式组织:每个周期输入和权重数据都会更新并同时广播到其所在行或列的所有处理单元PE单元乘法器的输入,计算结果y11=x11w11+x12w21+x13w31+x14w41,在脉动阵列左上角的PE11内累加得到,PE11表示第1行第1列的处理单元PE;
结果传出阶段:当所有输入数据和权重数据传输到脉动阵列之内后,各元素乘积在处理单元PE内部累加得到最终结果,此时进入结果传出阶段,需要将计算结果沿各列处理单元PE的c_in和c_out端口从脉动阵列下方输出,结果传出脉动阵列内部的结构和连接方式按照下面的方式组织:各处理单元PE右半部分c_out输出不再连接到加法器的输出,而是连接到上方处理单元PE上一周期的c_out输出端,从而完成各处理单元PE的计算结果在脉动阵列内的移位输出。
6.根据权利要求5所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,将M行N列的脉动阵列通过片上网络的模式相互连接,组成矩阵乘法模块;所述矩阵乘法模块分别与输入内存块、权重内存块相连接;
所述输入内存块用于存储片外DRAM传输到片上的输入数据,包括M个片上缓存区,用于存储片外DRAM传输到片上的输入数据;输入内存块中的数据通过输入分配网络传输到各行脉动阵列,并与脉动阵列左侧的a_in输入端口相连接;各行脉动阵列共享同一个输入分配网络;所述输入分配网络是一个包含M个输入端口和M个输出端口的模块,能够实现任意输入端口到任意输出端口的连接,负责将来自不同内存块的输入数据传输到相应的脉动阵列;
所述权重内存块用于存储片外DRAM传输到片上的权重数据,包含N×C个片上缓存区,通过权重分配网络传输到各行脉动阵列,并与脉动阵列上方的b输入端口相连接;同一列的脉动阵列共享一个权重分配网络,不同列的脉动阵列使用不同的权重分配网络;所述权重分配网络是一个包含C个输入端口和C个输出端口的模块,一共有N个,能够实现任意输入端口到任意输出端口的连接,负责将来自不同内存块的权重数据传输到相应的脉动阵列;
所述脉动阵列下方的c_out输出端口连接一个结果生成网络,所述结果生成网络用于将脉动阵列的计算结果传输到对应的输出内存块中;
所述输出内存块与矩阵乘法模块连接,用于存储计算完成后的结果数据,包括N×C个片上缓存区。
7.根据权利要求6所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,所述输入分配网络和权重分配网络负责将来自不同内存块的数据传输到相应的脉动阵列;
设定矩阵乘法模块中脉动阵列的行数为M,相应的输入内存的块数也为M,使用一个M输入,M输出的M-M输入分配网络完成输入数据的路由,包含M个M输入的可配置多路选择器;
设定矩阵乘法模块中脉动阵列的列数为N,脉动阵列内处理单元PE的列数为C,相应的权重内存的块数为N×C,一共有N个权重分配网络,每个权重分配网络均为一个包含C个输入端口和C个输出端口的C-C网络,权重分配网络用于完成权重数据的路由,包含C个C输入的可配置多路选择器。
8.根据权利要求7所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,当M=4时,一个4-4输入分配网络包含4个可配置的多路选择器,送往不同行的数据来自任意一个内存块输入,由多路选择器的控制信号确定。
9.根据权利要求7所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,所述结果生成网络能够对脉动阵列的计算结果进行后处理,当矩阵乘法模块中的脉动阵列处于输出保持OS数据流时,脉动阵列能够得到矩阵乘法计算的最终结果,并使用结果生成网络直接传输到输出内存中;当脉动阵列处于权重保持WS数据流时,结果生成网络通过一个可配置的加法树,实现任意组合的输入数据相加并输出结果。
10.根据权利要求9所述的用于Transformer类模型训练的矩阵乘法器,其特征在于,所述结果生成网络的基础单元包含一种带有旁路的加法器,所述加法器使用一个基础加法器和一个多路选择器,有两个输入端口和两个输出端口;当加法器以第一种状态工作时,能够将输入的两个数据原封不动地传递到两个输出端口;当加法器以第二种状态工作时,加法器上方端口输出两个输入值的和,下方端口输出其中一个输入值;将第二种状态的加法器垂直翻转,得到加法器的第三种状态工作,加法器下方端口输出两个输入值的和,上方端口输出其中一个输入值。
CN202310772645.6A 2023-06-28 2023-06-28 用于Transformer类模型训练的矩阵乘法器 Pending CN116738135A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310772645.6A CN116738135A (zh) 2023-06-28 2023-06-28 用于Transformer类模型训练的矩阵乘法器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310772645.6A CN116738135A (zh) 2023-06-28 2023-06-28 用于Transformer类模型训练的矩阵乘法器

Publications (1)

Publication Number Publication Date
CN116738135A true CN116738135A (zh) 2023-09-12

Family

ID=87904352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310772645.6A Pending CN116738135A (zh) 2023-06-28 2023-06-28 用于Transformer类模型训练的矩阵乘法器

Country Status (1)

Country Link
CN (1) CN116738135A (zh)

Similar Documents

Publication Publication Date Title
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
JP7474586B2 (ja) テンソル計算データフロー加速器半導体回路
CN107704916B (zh) 一种基于fpga实现rnn神经网络的硬件加速器及方法
US10698657B2 (en) Hardware accelerator for compressed RNN on FPGA
WO2019128404A1 (zh) 矩阵乘法器
CN110326003A (zh) 用于神经网络处理的具有位置依赖存储器的硬件节点
KR101781057B1 (ko) 실행 유닛들과 벡터 데이터 메모리 사이에 병합 회로를 갖는 벡터 프로세싱 엔진, 및 관련된 방법
KR20190074195A (ko) 뉴럴 프로세싱 가속기
KR101162649B1 (ko) 가변적 크기의 고속 직교 변환을 구현하기 위한 방법 및장치
CN111898733A (zh) 一种深度可分离卷积神经网络加速器架构
CN101847137B (zh) 一种实现基2fft计算的fft处理器
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
WO2020215124A1 (en) An improved hardware primitive for implementations of deep neural networks
CN113033794A (zh) 基于深度可分离卷积的轻量级神经网络硬件加速器
CN112836813A (zh) 一种用于混合精度神经网络计算的可重构脉动阵列系统
CN110580519A (zh) 一种卷积运算结构及其方法
CN114219699B (zh) 匹配代价处理方法及电路和代价聚合处理方法
CN113055060B (zh) 面向大规模mimo信号检测的粗粒度可重构架构系统
CN107368459B (zh) 基于任意维数矩阵乘法的可重构计算结构的调度方法
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
CN116738135A (zh) 用于Transformer类模型训练的矩阵乘法器
JP2005531843A (ja) アレイプロセッサにおける除算
CN112052941B (zh) 一种应用于cnn网络卷积层的高效存算系统及其运算方法
Shao et al. An FPGA-based reconfigurable accelerator for low-bit DNN training
Kim et al. An Asynchronous Inter-Processor Communication Based, Input Recycling Parallel Architecture for Large Scale Neural Network Simulation

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