CN115545177A - 一种基于FPGA的Transformer硬件加速器 - Google Patents
一种基于FPGA的Transformer硬件加速器 Download PDFInfo
- Publication number
- CN115545177A CN115545177A CN202211135583.XA CN202211135583A CN115545177A CN 115545177 A CN115545177 A CN 115545177A CN 202211135583 A CN202211135583 A CN 202211135583A CN 115545177 A CN115545177 A CN 115545177A
- Authority
- CN
- China
- Prior art keywords
- matrix
- unit
- fpga
- cache
- data
- 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
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于FPGA的Transformer硬件加速器;其包括数据预处理模块、计算单元和控制器;计算单元包括矩阵处理单元和非线性处理单元;非线性处理单元包括激活函数单元、层标准化模块和Softmax模块;数据预处理模块部署在CPU上,控制器和计算单元部署在FPGA上,数据预处理模块对需要处理的文本进行预处理,转化为整数序列输入到FPGA中,数据在计算单元中经过控制器的调度完成计算过程,最终得到输出结果。本发明在计算时只需要使用更少的逻辑资源,就可以在更短的时间内得到结果,同时不影响最终的计算精度。
Description
技术领域
本发明属于硬件加速器技术领域,具体的说,涉及一种基于FPGA的Transformer硬件加速器。
背景技术
Transformer是近年来兴起的一种深度学习算法,Transformer初始被用于机器翻译。随着算法的发展,Transformer及其衍生算法被应用于诸多其他领域,例如应用于自然语言理解的BERT,针对语言生成模型的GPT,以及图像处理领域的ViT等等。与传统的文本处理算法不同,Transformer引入了attention机制,这使得算法可以捕获到词汇间距很远的文本依赖信息,从而提高了精度,同时,attention机制还支持并行计算,这进一步提高了它的实用性。
传统上,深度学习算法的部署平台往往采用CPU或GPU,但随着算法规模日益增大,并行度较低的CPU无法高效的完成推理过程,同时,边缘计算的发展使得功耗性能比日益重要,而GPU的功耗过大,限制了它在边缘端的应用。FPGA作为一种可编程设备,可以同时满足并行性和低功耗的要求,是一种理想的边缘计算设备。
Sehoon Kim等在[1] Kim S, Gholami A, Yao Z, et al. I-bert: Integer-only bert quantization[C]//International conference on machine learning.PMLR, 2021: 5506-5518中使用量化的方式对Transformer的衍生模型BERT进行模型压缩。作者采用全量化的量化方案,具体细节上,对于模型中的线性层,权重和激活被压缩为8位,在非线性层,作者使用近似函数替代模型中的非线性函数,实现了性能的提升。但是这一工作依然需要计算完整的模型,并没有去掉模型中的冗余部分,因此在计算效率和硬件消耗上存在提升空间。
Zejian Liu等在[2] Liu Z, Li G, Cheng J. Hardware acceleration offully quantized bert for efficient natural language processing[C]//2021Design, Automation & Test in Europe Conference & Exhibition (DATE). IEEE,2021: 513-516.中使用量化的方式对模型进行压缩,同时设计了一种乘法计算单元,分别计算高位和低位,降低了模型的硬件消耗。但这篇文章的设计依然仅采用量化的方式计算,并不能完全实现模型计算和硬件的最优化。
发明内容
针对现有技术中Transformer计算延迟过高,以及存储和计算资源消耗过大的问题,本发明使用量化和剪枝等模型压缩技术,设计了一种实现transformer算法的FPGA硬件架构,本发明使用只包括乘加运算的多项式函数近似模型中的非线性函数,提高了模型的速度;本发明在计算时只需要使用更少的逻辑资源,就可以在更短的时间内得到结果,同时不影响最终的计算精度。本发明的技术方案具体如下。
一种基于FPGA的Transformer硬件加速器,其包括数据预处理模块、计算单元和控制器;数据预处理模块部署在CPU上,控制器和计算单元部署在FPGA上,数据预处理模块对需要处理的文本进行预处理,转化为整数序列输入到FPGA中,数据在计算单元中经过控制器的调度完成计算过程,最终得到输出结果;其中:
计算单元包括矩阵处理单元和非线性处理单元;
矩阵处理单元用于计算多头注意力机制和前馈神经网络中的矩阵乘法,以及执行层标准化之前的残差连接,矩阵处理单元包括矩阵乘法单元和矩阵加法单元,矩阵乘法单元采用脉动阵列结构,矩阵乘法单元中,输入缓存依次和脉冲阵列、中间缓存和累加器相连;矩阵乘法单元的输入缓存根据脉动阵列单元的大小,将输入矩阵分割为多个小矩阵的组合,小矩阵经过脉动阵列得到矩阵乘法的部分结果,部分结果被存储在中间缓存中,中间缓存与累加器相连,每当脉动阵列得到新的部分结果,累加器都会将新的结果和当前存储在中间缓存的结果相加,并重新存储在中间缓存里,当矩阵乘法单元完成每一行小矩阵的乘法后,中间缓存都会将结果传递到数据缓存中,在所有行的小矩阵完成计算后,数据缓存将每一行的结果组合,就得到最终的矩阵乘法运算结果;
非线性处理单元包括激活函数单元、层标准化模块和Softmax模块;激活函数单元使用多项式近似的方式计算;层标准化模块用于对多头注意力机制的结果进行层标准化的计算,其首先进行均值的计算,方差的计算,以及计算方差的平方根,得到标准差,然后根据均值和标准差标准化输入矩阵,再乘以层标准化模块的权重,加上层标准化模块的偏置;softmax模块使用多项式拟合的方式计算;
控制器用于根据输入矩阵的大小调整矩阵乘法单元中的中间缓存和累加器的循环周期。
本发明中,FPGA上部署有权重缓存和偏置缓存,权重缓存和偏置缓存分别用于存储模型的权重和偏置,权重缓存和偏置缓存分别和矩阵处理单元相连。
本发明中,FPGA上部署有数据缓存,计算单元的输入输出数据存储在数据缓存中。
本发明中,FPGA上部署有LN缓存, 用于存储层标准化模块的权重和偏置。
和现有技术相比,本发明的有益效果在于:
本发明基于量化,剪枝和硬件优化,设计了一套基于FPGA的Transformer 硬件加速器,其使单个参数的存储空间占用从32位降低到8位,降低了参数存储的内存占用,同时其去掉模型中对精度影响不大的结构,提高了计算效率并减少了硬件消耗。其次,其使用unroll,pipline等并行计算策略,充分利用FPGA的硬件资源,减少硬件的空闲时间,最大程度的提高了计算效率和吞吐率。
本发明可用于边缘端的语言处理领域,例如移动设备以及采集和处理文本的边缘设备等。
附图说明
图1是Transformer的计算流程。
图2是指数函数真实值和拟合值的对比。
图3是Transformer加速器的系统架构。
具体实施方式
下面结合附图和实施例对本发明的技术方案进行详细介绍。
本发明使用量化和剪枝等模型压缩技术,得到优化的Transformer模型,再编写设计代码,并使用HLS的设计策略:pipline,unroll优化硬件架构,最后得到一种用于实现Transformer模型的计算硬件架构。
Transformer的具体计算流程如图1所示。Transformer所需实现的主要计算功能为多头注意力机制和前馈神经网络,因此需要设计包括矩阵乘法,加法,Softmax,层标准化等子模块。由于Transformer模型规模较大,因此需要使用模型压缩的方法减少计算开销,本发明主要使用量化和剪枝两种模型压缩方法。量化过程采用线性对称量化方案,权重参数通过线性变换从原本的32位浮点数转换为8位整数,偏置参数从32位浮点数转换为16位整数,这里的线性变换只包括缩放变换。在具体的计算过程中,8位的权重和8位的输入相乘,得到16位的激活值,激活值与16位的偏置相加,得到的结果乘以总的量化系数S,
其中Sw,Sx,Sa分别表示权重,输入以及激活值的量化系数。剪枝过程采用间隔剪枝的策略,也就是每间隔一层去除一层,达到50%的剪枝率,在剪枝之前,通过对模型的适应性裁剪训练,提高了模型对于剪枝的鲁棒性。
最终设计的硬件架构如图3所示,硬件包括数据预处理模块、计算单元、控制器、权重缓存、偏置缓存、数据缓存和LN缓存;数据预处理模块部署在CPU上,计算单元、控制器、权重缓存、偏置缓存、数据缓存和LN缓存部署在FPGA上,数据预处理模块对需要处理的文本进行预处理,转化为整数序列输入到FPGA中,数据在计算单元中经过控制器的调度完成计算过程,最终得到输出结果;计算单元包括矩阵处理单元和非线性处理单元。
在非线性函数的处理上,本发明采用多项式近似的方式计算,这种方式可以同时引入量化操作,使得非线性计算过程进一步得到优化。具体来说,模型中的非线性运算主要包括指数和算数平方根操作。在指数运算中,本发明采用二次函数拟合指数函数的部分区间,再通过移位等方式得到最终的计算结果,图2对比了指数的真实值和拟合值,可以看到两者差距很小。而平方根运算则是采用一种迭代算法实现,这种算法可以高效的计算整数的平方根,充足的数据实验证明,计算16位以内整数的平方根最多只需要五次迭代,只要在计算整数平方根之前对其进行移位操作,就可以得到精度很高的结果。
下面说明本发明如何使用图3所示架构实现图1所示计算流程。控制器控制图3中的硬件,按照图1的计算流程计算。首先,文本数据输入到CPU中,经过数据预处理模块,将文本分解为词汇库中词汇的组合,词汇库中每个词汇与一个整数对应,因此文本将被表达为一个整数序列,输入FPGA并存储在数据缓存里。
图1左侧被称为编码器,数据首先输入编码器并经过词嵌入的处理,词嵌入的相关权重存储在权重缓存中,数据缓存访问权重缓存,得到文本的嵌入表达,位置编码的相关权重同样存储在权重缓存中,嵌入表达和位置编码输入矩阵加法单元,两者相加并将结果存储在数据缓存中。
上述结果接下来进行多头注意力机制的计算,这部分主要包括按照一定顺序组合的矩阵乘法,矩阵加法和softmax,相关的权重数据存储在权重缓存中,偏置数据存储在偏置缓存中,其运算顺序由控制器调度。在矩阵乘法阶段,矩阵乘法单元的输入缓存根据脉动阵列单元的大小,将输入矩阵分割为多个小矩阵的组合,小矩阵经过脉动阵列得到矩阵乘法的部分结果,部分结果被存储在中间缓存中,中间缓存与累加器相连,每当脉动阵列得到新的部分结果,累加器都会将新的结果和当前存储在中间缓存的结果相加,并重新存储在中间缓存里,当矩阵乘法单元完成每一行小矩阵的乘法后,中间缓存都会将结果传递到数据缓存中,在所有行的小矩阵完成计算后,数据缓存将每一行的结果组合,就可以得到最终的矩阵运算结果。矩阵加法主要指乘法结果与偏置的相加,矩阵加法单元访问偏置缓存和数据缓存中的数据,并将二者相加,得到结果重新存储在数据缓存中。执行softmax时,数据缓存将数据传递到softmax模块,softmax模块使用多项式拟合的方式计算,结果存储在数据缓存中。
多头注意力机制的结果接下来进行层标准化的计算,这一部分在层标准化模块进行。这部分首先进行均值的计算,方差的计算,以及计算方差的平方根,得到标准差,然后根据均值和标准差标准化输入矩阵,再乘以LN权重,加上LN偏置,结果传回数据缓存。LN权重和LN偏置都存储在LN缓存中。
接下来执行前馈神经网络的计算,在前馈神经网络,首先进行矩阵乘法和加法,其具体流程和多头注意力机制中的矩阵乘法加法运算类似,然后计算激活函数,激活函数的计算在激活函数单元进行,激活函数单元同样使用多项式近似的方式计算,结果返回数据缓存中。前馈神经网络之后是层标准化,具体计算和多头注意力机制后的层标准化类似。经过多头注意力机制,层标准化,前馈神经网络,层标准化四层的计算结果,被称为编码器输出,被存储在数据缓存中。
图1 的右侧被称为解码器,编码器的输出并不直接作为解码器的输入,而是输入解码器的第二层多头注意力机制中。解码器的输出是一个概率分布,用来表示词汇表中每个词汇的出现概率,概率最高者作为当前循环的输出,前面所有循环的输出串联起来,是解码器的输入,解码器按这种方式不断循环,直到输出结束标志。解码器中的掩蔽多头注意力机制添加了一个掩蔽矩阵,它可以根据循环周期,在数据缓存自动生成,除此以外,解码器的多头注意力机制和编码器中的计算流程完全相同。经过掩蔽的多头注意力机制,层标准化,多头注意力机制,层标准化,前馈神经网络以及层标准化,得到的结果输入线性层,线性层在矩阵乘法单元和矩阵加法单元计算,得到的结果输入softmax,这一步在softmax单元计算,得到的结果存储在数据缓存中。
Claims (4)
1.一种基于FPGA的Transformer硬件加速器,其特征在于,其包括数据预处理模块、计算单元和控制器;数据预处理模块部署在CPU上,控制器和计算单元部署在FPGA上,数据预处理模块对需要处理的文本进行预处理,转化为整数序列输入到FPGA中,数据在计算单元中经过控制器的调度完成计算过程,最终得到输出结果;其中:
计算单元包括矩阵处理单元和非线性处理单元;
矩阵处理单元用于计算多头注意力机制和前馈神经网络中的矩阵乘法,以及执行层标准化之前的残差连接,矩阵处理单元包括矩阵乘法单元和矩阵加法单元,矩阵乘法单元采用脉动阵列结构,矩阵乘法单元中,输入缓存依次和脉冲阵列、中间缓存和累加器相连;矩阵乘法单元的输入缓存根据脉动阵列单元的大小,将输入矩阵分割为多个小矩阵的组合,小矩阵经过脉动阵列得到矩阵乘法的部分结果,部分结果被存储在中间缓存中,中间缓存与累加器相连,每当脉动阵列得到新的部分结果,累加器都会将新的结果和当前存储在中间缓存的结果相加,并重新存储在中间缓存里,当矩阵乘法单元完成每一行小矩阵的乘法后,中间缓存都会将结果传递到数据缓存中,在所有行的小矩阵完成计算后,数据缓存将每一行的结果组合,就得到最终的矩阵乘法运算结果;
非线性处理单元包括激活函数单元、层标准化模块和Softmax模块;激活函数单元使用多项式近似的方式计算;层标准化模块用于对多头注意力机制的结果进行层标准化的计算,其首先进行均值的计算,方差的计算,以及计算方差的平方根,得到标准差,然后根据均值和标准差标准化输入矩阵,再乘以层标准化模块的权重,加上层标准化模块的偏置;softmax模块使用多项式拟合的方式计算;
控制器用于根据输入矩阵的大小调整矩阵乘法单元中的中间缓存和累加器的循环周期。
2.根据权利要求1所述的Transformer硬件加速器,其特征在于,FPGA上部署有权重缓存和偏置缓存,权重缓存和偏置缓存分别用于存储模型的权重和偏置,权重缓存和偏置缓存分别和矩阵处理单元相连。
3.根据权利要求1所述的Transformer硬件加速器,其特征在于,FPGA上部署有数据缓存,计算单元的输入输出数据存储在数据缓存中。
4.根据权利要求1所述的Transformer硬件加速器,其特征在于,FPGA上部署有LN缓存,用于存储层标准化模块的权重和偏置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211135583.XA CN115545177A (zh) | 2022-09-19 | 2022-09-19 | 一种基于FPGA的Transformer硬件加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211135583.XA CN115545177A (zh) | 2022-09-19 | 2022-09-19 | 一种基于FPGA的Transformer硬件加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115545177A true CN115545177A (zh) | 2022-12-30 |
Family
ID=84727613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211135583.XA Pending CN115545177A (zh) | 2022-09-19 | 2022-09-19 | 一种基于FPGA的Transformer硬件加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115545177A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116861966A (zh) * | 2023-09-04 | 2023-10-10 | 苏州浪潮智能科技有限公司 | Transformer模型加速器及其构建和数据处理方法、装置 |
CN116882468A (zh) * | 2023-09-05 | 2023-10-13 | 苏州浪潮智能科技有限公司 | 一种硬件加速器、硬件加速方法和电子设备 |
CN117274027A (zh) * | 2023-08-22 | 2023-12-22 | 北京辉羲智能科技有限公司 | 一种硬件安全冗余的图像处理芯片 |
-
2022
- 2022-09-19 CN CN202211135583.XA patent/CN115545177A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117274027A (zh) * | 2023-08-22 | 2023-12-22 | 北京辉羲智能科技有限公司 | 一种硬件安全冗余的图像处理芯片 |
CN117274027B (zh) * | 2023-08-22 | 2024-05-24 | 北京辉羲智能科技有限公司 | 一种硬件安全冗余的图像处理芯片 |
CN116861966A (zh) * | 2023-09-04 | 2023-10-10 | 苏州浪潮智能科技有限公司 | Transformer模型加速器及其构建和数据处理方法、装置 |
CN116861966B (zh) * | 2023-09-04 | 2024-01-23 | 苏州浪潮智能科技有限公司 | Transformer模型加速器及其构建和数据处理方法、装置 |
CN116882468A (zh) * | 2023-09-05 | 2023-10-13 | 苏州浪潮智能科技有限公司 | 一种硬件加速器、硬件加速方法和电子设备 |
CN116882468B (zh) * | 2023-09-05 | 2024-01-16 | 苏州浪潮智能科技有限公司 | 一种硬件加速器、硬件加速方法和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115545177A (zh) | 一种基于FPGA的Transformer硬件加速器 | |
Kim et al. | I-bert: Integer-only bert quantization | |
Sung et al. | Resiliency of deep neural networks under quantization | |
Chen et al. | Exploiting approximate computing for deep learning acceleration | |
CN108491926B (zh) | 一种基于对数量化的低比特高效深度卷积神经网络硬件加速设计方法、模块及系统 | |
CN111079781A (zh) | 基于低秩与稀疏分解的轻量化卷积神经网络图像识别方法 | |
Dai et al. | SparseTrain: Exploiting dataflow sparsity for efficient convolutional neural networks training | |
CN113988449B (zh) | 基于Transformer模型的风电功率预测方法 | |
CN112329922A (zh) | 一种基于质谱数据集的神经网络模型压缩方法及系统 | |
CN111368988B (zh) | 一种利用稀疏性的深度学习训练硬件加速器 | |
CN113159276A (zh) | 模型优化部署方法、系统、设备及存储介质 | |
CN111950715A (zh) | 基于自适应动态移位的8位整型全量化推理方法及装置 | |
CN112434891A (zh) | 基于wcnn-alstm的太阳辐照度时间序列的预测方法 | |
CN111382581B (zh) | 一种机器翻译中的一次剪枝压缩方法 | |
CN111797132A (zh) | 考虑时空相关性的多可再生能源电站功率场景生成方法 | |
CN110782013A (zh) | 一种基于广义互熵自编码器的火电厂NOx排放量预测方法 | |
Xi et al. | Training transformers with 4-bit integers | |
CN113918882A (zh) | 可硬件实现的动态稀疏注意力机制的数据处理加速方法 | |
CN117251705A (zh) | 一种每日天然气负荷预测方法 | |
CN116960978A (zh) | 基于风速-功率组合分解重构的海上风电功率预测方法 | |
CN116843012A (zh) | 一种融合个性化上下文和时域动态特征的时序预测方法 | |
CN116611313A (zh) | 一种面向超算平台基于Transformer的风力发电功率预测方法 | |
CN115615575A (zh) | 一种多时间图谱卷积注意力网络的锅炉炉壁温度预测方法 | |
CN115600675A (zh) | 一种基于轻量多出口网络的模型压缩与推断加速方法 | |
CN110852361B (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 |