掌桥专利:专业的专利平台
掌桥专利
首页

面向工业应用场景的FPGA二值神经网络加速方法

文献发布时间:2024-04-18 19:58:21


面向工业应用场景的FPGA二值神经网络加速方法

技术领域

本申请涉及神经网络模型领域,尤其涉及一种面向工业应用场景的FPGA二值神经网络加速方法。

背景技术

工业互联网的发展使得大量的传感器、设备和生产线之间可以实现高度的数据互通,同时也带来了海量的数据处理需求。传统的中央处理器和图形处理器在处理大规模数据时可能面临性能瓶颈。

采用现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)部署二值神经网络(Binary Neural Networks,BNN)成为了一种新的解决方案。

目前,现有部署BNN的FPGA计算系统,其系统性能易受到对应的硬件资源的限制,计算效率较差。

发明内容

本申请实施例提供一种面向工业应用场景的FPGA二值神经网络加速方法,可以提升计算效率。

第一方面,本申请实施例提供一种面向工业应用场景的FPGA二值神经网络加速方法,包括:

确定二值神经网络BNN模型部署于FPGA时,获取第一目标数据,以及,所述BNN模型的网络层;所述第一目标数据包括所述BNN模型的权重参数和所述BNN模型的网络结构参数;

对所述第一目标数据进行第一预处理后进行存储,以及,为所述BNN模型不同的网络层分配对应的计算资源;

响应于对第二目标数据的处理请求,对所述第二目标数据进行第二预处理后进行存储;所述第二目标数据包括用于预测工业器件寿命的多变量时序数据;

读取所述第一目标数据和第二目标数据,并使用所述计算资源,以及,所述第一目标数据运行所述BNN模型对所述第二目标数据进行处理,得到所述BNN模型输出的寿命回归数据。

可选的,所述对所述第一目标数据进行第一预处理,包括:

获取所述第一目标数据的类型;

若所述第一目标数据的类型为权重参数,则采用1位量化的方式处理所述权重参数;

若所述第一目标数据的类型为网络结构参数,则采用静态处理的方式处理所述网络结构参数;

所述对所述第二目标数据进行第二预处理,包括:

根据所述第二目标数据的分布范围,确定所述第二目标数据的符号位、整数位以及小数位的占比,根据所述占比对所述第二目标数据进行处理。

可选的,所述采用1位量化的方式所述权重参数,包括:

判断所述权重参数的正负值;

根据所述正负值,获取所述权重参数对应的异或参数;

根据所述异或参数对所述权重参数进行异或运算,得到处理后的权重参数。

可选的,所述为所述BNN模型不同的网络层分配对应的计算资源,包括:

获取所述BNN模型中网络层的存储开销,以及,网络层的计算操作的复杂度;

根据所述存储开销和所述计算操作的复杂度,确定所述网络层所需的目标计算资源;

根据所述目标计算资源和所述FPGA的计算资源,为所述网络层分配对应的计算资源。

可选的,所述获取所述BNN模型中网络层的存储开销,包括:

根据所述网络层对应的计算数据,获取所述网络层的输出数据;所述计算数据包括输入数据、卷积核尺寸,以及,输出通道中的至少一种;

根据所述权重参数、所述输出数据,以及,所述输入数据三者所需的存储空间之和,得到网络层的存储开销。

可选的,所述为所述网络层分配对应的计算资源之后,所述方法还包括:

获取所述网络层对应的控制逻辑,以使所述网络层根据所述控制逻辑利用所述计算资源进行数据处理;所述控制逻辑由如下控制信号中的至少一种控制信号进行实现:

启动信号、停止信号、更新信号、数据读取信号,以及,数据写入信号。

可选的,所述方法还包括:

对所述BNN模型中的网络层的串并行计算逻辑进行时序优化。

可选的,所述对所述BNN模型中的网络层的串并行计算逻辑进行时序优化,包括:

获取所述BNN模型中的网络层的时间复杂度;

根据所述时间复杂度、所述网络层对应的计算资源,以及,所述网络层的类型,确定所述网络层对应的时序优化方案;所述时序优化方案包括串行流水线、串并行加法树和并行乘法分配中的至少一种。

可选的,所述串行流水线包括:

根据所述网络层的计算资源,将所述网络层的计算过程划分为M个计算阶段;M为正整数;

在不同的时钟周期内执行不同计算阶段的计算操作。

可选的,所述读取所述第一目标数据和第二目标数据之后,所述方法还包括:

将所述第一目标数据和所述第二目标数据写入缓冲寄存器中;所述缓冲寄存器为乒乓缓存结构。

第二方面,本申请实施例提供一种面向工业应用场景的FPGA二值神经网络加速装置,包括:

确定模块,用于确定二值神经网络BNN模型部署于FPGA时,获取第一目标数据,以及,所述BNN模型的网络层;所述第一目标数据包括所述BNN模型的权重参数和所述BNN模型的网络结构参数;

处理模块,用于对所述第一目标数据进行第一预处理后进行存储,以及,为所述BNN模型不同的网络层分配对应的计算资源;

响应模块,用于响应于对第二目标数据的处理请求,对所述第二目标数据进行第二预处理后进行存储;所述第二目标数据包括用于预测工业器件寿命的多变量时序数据;

计算模块,用于读取所述第一目标数据和第二目标数据,并使用所述计算资源,以及,所述第一目标数据运行所述BNN模型对所述第二目标数据进行处理,得到所述BNN模型输出的寿命回归数据。

第三方面,本申请提供一种电子设备,包括:存储器和处理器;

存储器用于存储计算机指令;处理器用于运行存储器存储的计算机指令实现第一方面中任一项的方法。

第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现第一方面中任一项的方法。

第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项的方法。

本申请实施例提供的面向工业应用场景的FPGA二值神经网络加速方法,可以提升BNN模型的计算效率。

附图说明

图1为本申请实施例提供的面向工业应用场景的FPGA二值神经网络加速方法的流程示意图;

图2为本申请实施例提供的模型数据存取模块框架的结构示意图;

图3为本申请实施例提供的模型动态量化模块框架的结构示意图;

图4为本申请实施例提供的模块化二值计算单元部署模块的结构示意图;

图5为本申请实施例提供的硬件适配的计算加速时序优化模块框架的示意图;

图6为本申请实施例提供的串行流水线的时序示意图;

图7为本申请实施例提供的面向工业应用场景的FPGA二值神经网络加速装置的结构示意图;

图8为本申请实施例提供的电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。

需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

在当今工业领域,工业互联网、人工智能和边缘计算等关键词正引领生产制造的巨大变革。随着制造业向智能化和自动化方向迈进,如何高效地处理海量数据、实现实时决策以及降低能源消耗等问题成为了亟待解决的挑战。采用现场FPGA部署BNN模型成为了一种新的解决方案。

具体来说,工业互联网的发展使得大量的传感器、设备和生产线之间可以实现高度的数据互通。然而,这也带来了海量的数据处理需求。传统的中央处理器和图形处理器在处理大规模数据时可能面临性能瓶颈,而且能源效率也难以达到工业领域的实际需求。

人工智能,尤其是深度学习模型,在解决大规模数据预测处理上有着明显的优势,但其计算复杂度也不容忽视。FPGA作为一种灵活可编程的硬件平台,能够在硬件层面上实现深度学习模型的高效执行。

在这个背景下,BNN模型作为一种特殊类型的深度学习模型,具有显著的优势。BNN使用二值化的权重和激活函数,极大地减少了模型中乘法和加法操作的数量,降低了计算复杂度。这种特性与FPGA的并行计算能力相得益彰,使得FPGA可以高效地执行BNN的推理任务。

但是,现有部署BNN模型的FPGA计算系统,其系统性能易受到对应的硬件资源的限制,使得其计算效率偏低。

有鉴于此,本申请提供一种面向工业应用场景的FPGA二值神经网络加速方法,通过对BNN模型计算过程中的数据进行量化处理,权衡计算精度和性能的关系,以及,对BNN模型各网络层分配合适的计算资源,从而提升计算效率。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

图1为本申请实施例提供的面向工业应用场景的FPGA二值神经网络加速方法的流程示意图,如图1所示,包括:

S101、确定二值神经网络BNN模型部署于FPGA时,获取第一目标数据,以及,所述BNN模型的网络层。

本申请实施例的执行主体可以为FPGA的Processing System。

所述第一目标数据包括所述BNN模型的权重参数和所述BNN模型的网络结构参数。其中,所述网络结构参数可以为表征模型特征的参数,例如,激活函数、批归一化(BatchNormalization,BN)参数等。

在一些实施例中,所述第一目标数据可以为通过对所述BNN模型进行分析进行获取。或者,所述第一目标数据可以为外部用户写入所述FPGA的存储空间中,通过进行数据读取进行获取。

本申请实施例中,BNN模型的网络层可以为BNN模型包括的各神经网络层,例如,池化层、卷积层、注意力层、全连接层等。

通过对BNN模型进行解析,可以获取所述BNN模型中包括的各网络层的类型。

在一些实施例中,BNN模型的网络层也可以为外部用户写入所述FPGA的存储空间中,通过进行数据读取进行获取。

S102、对所述第一目标数据进行第一预处理后进行存储,以及,为所述BNN模型不同的网络层分配对应的计算资源。

本申请实施例中,第一预处理可以为对第一目标数据进行动态量化处理,调整第一数据的表示精度,从而降低BNN模型在运算过程中的计算开销,提升模型的计算效率。

在一些实施例中,可以根据第一目标数据的类型采用不同的量化处理方式。

示例性的,获取所述第一目标数据的类型;若所述第一目标数据的类型为权重参数,则采用1位量化的方式以及异或操作处理所述权重参数;若所述第一目标数据的类型为网络结构参数,则采用静态处理的方式处理所述网络结构参数。

其中,针对权重参数,由于BNN模型的中的权重通常被限制为正负1,可以采用1位量化的方式对所述权重参数进行处理。1位量化又可以称为1bit量化。

针对所述网络结构参数,通常不受数据分布的影响,因此可以采用静态处理的方式对所述网络结构参数进行处理。静态处理可以指将数据以固定的位数进行处理,例如,32位。

本申请实施例中,对所述第一目标数据进行处理后,可以将所述第一目标数据进行存储。例如,将所述第一目标数据存储于FPGA的片上存储器Block RAM(BRAM)中。

本申请实施例中,确定BNN模型包括的各网络层时,可以根据各网络层对应的计算和数据处理需求进行计算资源的分配。

示例性的,获取所述BNN模型中网络层的存储开销,以及,网络层的计算操作的复杂度;根据所述存储开销和所述计算操作的复杂度,确定所述网络层所需的目标计算资源;根据所述目标计算资源和所述FPGA的计算资源,为所述网络层分配对应的计算资源。

BNN模型中各网络层的存储开销可以根据权重参数、输入数据、中间计算结果等的存储需求分析进行获取。网络层的计算操作的复杂度可以根据网络层中的内部结构以及处理数据的结构采用相应的算法进行获取。

通过分析计算操作的复杂度,以及FPGA的计算和存储资源,可以得出每个计算单元所需的资源情况。

S103、响应于对第二目标数据的处理请求,对所述第二目标数据进行第二预处理后进行存储。

本申请实施例中,所述第二目标数据包括用于预测工业器件寿命的多变量时序数据。以工业器件为发动机为例,所述多变量时序数据可以包括:多时间的操作参数、振动、温度等数据。工业器件还可以包括类似锂电池、轴承等器件,本申请实施例对工业器件的类型不进行限制。

对所述第二目标数据进行第二预处理也可以为进行动态量化处理。

示例性的,根据所述第二目标数据的分布范围,确定所述第二目标数据的符号位、整数位以及小数位的占比,根据所述占比对所述第二目标数据进行处理。

例如,动态量化会根据数据的正负确定符号位,根据数据的最大值和最小值来决定小数点的位置,然后根据数据范围来分配整数位和小数位的占比。这种动态量化方式允许数据在保持一定的精度的前提下,有效地减少了表示数据所需的位数,从而降低了存储和计算的开销。通过在量化过程中考虑数据的实际分布,动态量化可以实现更紧致的数据表示,以适应不同输入和输出数据的变化。

示例性的,对于某一段需要动态量化的数据,其范围为[a,b]。记录Q=max{abs(a),abs(b)},Q二进制后的位数作为动态量化的整数位数,除去一位符号位,其余位数都作为小数位。

以第二目标数据为16位为例,若整数位的数据范围为[-1,1],Q=1,二进制位数为1,小数位精度为2

本申请实施例中,对所述第二目标数据进行处理后,可以将所述第一目标数据进行存储。例如,将所述第一目标数据存储于FPGA的外接的双倍速率存储器(Double DataRate,DDR)中。

S104、读取所述第一目标数据和第二目标数据,并使用所述计算资源,以及,所述第一目标数据运行所述BNN模型对所述第二目标数据进行处理,得到所述BNN模型输出的寿命回归数据。

本申请实施例中,接收到处理第二目标数据的指令时,对第二数据进行处理并存储后,从对应的存储器中读取所述第一目标数据和第二目标数据,将所述第一目标数据和第二目标数据,以及,计算资源分配结果输入至BNN模型,以使BNN模型利用所述计算资源,以及,所述第一目标数据对所述第二目标数据进行处理,得到对应的寿命预测回归结果。

本申请实施例提供的面向工业应用场景的FPGA二值神经网络加速方法,通过确定二值神经网络BNN模型部署于FPGA时,获取第一目标数据,以及,所述BNN模型的网络层;对所述第一目标数据进行第一预处理后进行存储,以及,为所述BNN模型不同的网络层分配对应的计算资源;响应于对第二目标数据的处理请求,对所述第二目标数据进行第二预处理后进行存储;读取所述第一目标数据和第二目标数据,并使用所述计算资源,以及,所述第一目标数据运行BNN模型对所述第二目标数据进行处理,得到所述BNN模型输出的寿命回归数据。通过对BNN模型计算过程中的数据进行量化处理,权衡计算精度和性能的关系,以及,对BNN模型各网络层分配合适的计算资源,从而提升计算效率。

在上述实施例的基础上,本申请实施例提供的加速方法,还可以根据如下所示方式对所述权重数据进行1位量化处理。

示例性的,判断所述权重参数的正负值;根据所述正负值,获取所述权重参数对应的异或参数;根据所述异或参数对所述权重参数进行异或运算,得到处理后的权重参数。

BNN中的权重通常被限制为正负1,通过判断权重的正负,获取权重参数对应的异或参数来表示正负1,从而在存储时减少了数据表示所需的位数。

示例性的,以16bit数据16’F4a8f为例,存储权重为1时,异或参数为16’F0000,计算结果为16’F4a8f⊕16’F0000,存储权重为0时,即需要修改数据符号时,异或参数为16’F8000,输出数据为16’F4a8f⊕16’F8000,这种量化方式在保持权重精度的前提下,大幅减少了权重参数的存储开销,提高了模型的计算效率,利用异或操作代替乘法操作,减少使用的乘法器数量,使用逻辑单元(LE for multiply)来实现相同功能,同时每次乘法减少一个时钟。

应理解,异或参数可以根据实际需求进行设置,本申请实施例对此不进行限制。

本申请实施例提供的加速方法,在分配各网络层的计算资源时,还可以根据如下所示方式获取BNN模型中网络层的存储开销:

示例性的,根据所述网络层对应的计算数据,获取所述网络层的输出数据;所述计算数据包括输入数据、卷积核尺寸,以及,输出通道中的至少一种;根据所述权重参数、所述输出数据,以及,所述输入数据三者所需的存储空间之和,得到网络层的存储开销。

在确定网络层类型之后,对于每一种层进行存储分析。这涉及权重参数、输入数据、中间计算结果等的存储需求分析。针对二值计算,存储分析需要考虑数据的二值表示,以及相应的存储方式,以最大程度地减少存储开销,优化存储结构。

示例性的,以(n,c,t)维度的工业多变量时序数据为例,其中,n表示变量种类,c表示变量维度,t表示时间窗口。

当卷积核尺寸Kernel_size为(1,k),膨胀dilations为(1, k, k^2),输出通道为m,无填充。则输出数据维度可以表示为(n, m, t/(k^3))。

所需存储开销为输入数据,权重参数和输出数据所需存储之和16*(n, c, t) +16*(n, m, t/(k^3))+ *(k + k^2 + k^3)。

确定存储开销时,通过分析计算操作的复杂度,以及FPGA的计算和存储资源,可以得出每个计算单元所需的资源情况,从而有针对性地进行资源配置和优化。

示例性的,对于上述时序卷积操作,所需乘法次数为n * c * m * k * (1 + k +k^2),加法操作为n * c * m * (1 + k + k^2),按照预计的硬件资源分配乘法模块和操作模块。例如,对于dilations为(1, k, k^2)的三层时序卷积层,逐层分配x,k*x,k^2*x个逻辑单元,每层所需的时间则都为n * c * m * k / x个时钟,加法操作逐层分别实例化k^3,k^2, k个输入的加法树,以保证尽可能的使用硬件资源,节省计算时钟,提高计算效率。

本申请实施例中,为模型的各网络层分配对应的计算资源时,为保证模型的正常执行,还需要设计对应的控制逻辑。

示例性的,获取所述网络层对应的控制逻辑,以使所述网络层根据所述控制逻辑利用所述计算资源进行数据处理;所述控制逻辑由如下控制信号中的至少一种控制信号进行实现:

启动信号、停止信号、更新信号、数据读取信号,以及,数据写入信号。

其中,启动信号:启动该层的计算,并同时设输入数据读取为1,输出数据写入缓冲为1。

停止信号:停止该层的计算,并同时设输入数据读取为0,输出数据写入缓冲为0。

更新信号:新的一轮次计算开始,并清理输出数据缓冲层。

数据读取:从输入数据缓冲区读取输入数据。

数据写入:将计算所得数据存储入输出数据缓冲区。

通过计算资源的分配以及控制逻辑的设计,数据通路将被建立。这意味着计算单元、存储单元和控制逻辑将被连接起来,形成一个高效的计算流程,保证数据的正确流动和同步,以及最大程度地减少延迟,提高计算效率。

在一些实施例中,为进一步提升模型的计算效率,还可以对BNN模型中的网络层的串并行计算逻辑进行时序优化。

示例性的,获取所述BNN模型中的网络层的时间复杂度;根据所述时间复杂度、所述网络层对应的计算资源,以及,所述网络层的类型,确定所述网络层对应的时序优化方案;所述时序优化方案包括串行流水线、串并行加法树和并行乘法分配中的至少一种。

本申请实施例中,通过前述的计算资源的分配,结合时间复杂度分析,旨在通过合理的时序设计来实现串行流水线、串并行加法树和并行乘法分配三个关键内容,同时对并行乘法分配进行更细粒度的优化,包括卷积通道并行、窗口并行和注意力层并行,从而提升模型的计算效率。

其中,不同的网络层可以对应不同的优化方案,例如,层与层之间通过串行流水线进行时序优化,每个层内通过串并行加法树的设计,可以将多个加法操作并行地执行,然后将结果按层级结构进行串行相加,从而实现更高效的加法运算。针对具备多乘法操作的网络层,例如,卷积层、权连接层等,将乘法操作分配到多个计算单元中并行执行。这种分配可以在更短的时间内完成乘法操作,从而提高计算效率。

在一种可能的实现中,所述串行流水线包括:

根据所述网络层的计算资源,将所述网络层的计算过程划分为M个计算阶段;M为正整数;在不同的时钟周期内执行不同计算阶段的计算操作。

其中,M可以根据先验知识确定,本申请实施例对此不进行限制。

在一些实施例中,读取第一目标数据和第二目标数据后,可以将将所述第一目标数据和所述第二目标数据写入缓冲寄存器中;所述缓冲寄存器为乒乓缓存结构。

缓冲寄存器在数据传输的过程中起到缓冲和调节的作用,确保数据在不同时钟域之间的同步,减少数据丢失和时序冲突的可能性。

在上述面向工业应用场景的FPGA二值神经网络加速方法的基础上,本申请实施例还提供一种面向工业应用场景的FPGA二值神经网络加速系统。

在一些实施例中,本申请实施例提供的面向工业应用场景的FPGA二值神经网络加速系统包括:模型数据存取模块、模型动态量化模块、模块化计算单元部署模块、硬件适配的计算加速时序优化模块。

模型数据存取模块,以工业互联网领域的多变量时序数据为基础,深度神经网络为模型,FPGA片上内存和外部存储为硬件资源,规划各种类型数据的存储和读取方式,划定数据的存储地址和存储空间,设置每种数据的存取控制信号。

模型动态量化模块,训练好的二值神经网络被量化为可以直接部署在FPGA上的数据格式,权衡硬件存储、计算资源和精度要求,该部分动态的调整数据整数和小数分配方式,对不同类型的网络模块,数据类型进行动态的量化。

模块化部署计算单元模块,将深度二值神经网络按照功能层被划分为不同的部分,结合硬件资源期望和网络结构参数,每种网络层通过计算得到合理的数据通路,资源和性能分析。

硬件适配的计算加速时需优化模块,对指定的FPGA设备和硬件资源,优化时序上的串并行计算先后,平衡流水线进程中的负载,分配并行计算资源。

下面对上述模块的具体实现依次进行介绍。

图2为模型数据存取模块框架的结构示意图,如图2所示:包括多种数据存储方式。

为了在FPGA上实现高效的DNN加速,任务的第一个关键步骤是设计模型数据存取模块。这个模块在网络的不同层之间,向内部的Block RAM(BRAM)和外部双数据率(DDR)内存传输数据,以支持BNN的推理过程。数据的存取是整个推理过程的基础,它影响了计算的效率和性能。具体来说,这个模块涉及以下关键步骤:

BRAM被配置为存储权重参数、激活函数和批归一化(BN)参数。这些参数对于DNN的推理至关重要,它们在模型的不同层之间共享和传递。通过适当的控制逻辑信号和时钟信号,模型数据存取模块将从BRAM中直接读取这些参数,为推理过程提供必要的数据。

DDR被用来存储多变量的输入数据、输出数据和层间计算结果。这些数据在推理过程中需要被读取和写入。通过来自PS(Processing System)端的控制信号和系统时钟信号,模型数据存取模块通过AXI Interface实现与DDR的高速数据传输,确保数据在PS端和DDR之间的正确流动,为推理过程提供必要的数据。

读取到需要使用的数据时,数据被送入缓冲寄存器(Buffer Register)中。缓冲寄存器在数据传输的过程中起到缓冲和调节的作用,确保数据在不同时钟域之间的同步,减少数据丢失和时序冲突的可能性。

缓冲寄存器以乒乓设计为基础,设置为两个缓存区,可以称为"A缓存"和"B缓存"。这两个缓存区的大小和结构相同。初始状态下,一个缓存区(比如A缓存)被用来读取或写入数据,而另一个缓存区(B缓存)处于空闲状态。当一个缓存区(A缓存)填满或读取完毕后,系统会切换到另一个缓存区(B缓存)进行数据传输。这种交替切换会持续进行,实现数据的连续传输。由于缓存区的交替使用,乒乓缓存可以实现无间隙的数据传输。当一个缓存区用于传输数据时,另一个缓存区可以同时准备好下一次传输的数据,从而减少传输中断的时间。乒乓缓存的设计使得数据传输和计算可以更紧密地结合,减少了等待数据传输的时间,提高了整体计算效率。可以帮助优化工业互联网场景下的多变量数据传输,使得计算和数据传输更加协调和高效。

图3为模型动态量化模块框架的结构示意图,如图3所示:不同的数据采取不同的量化方式。

在工业领域的BNN模型的应用中,动态量化技术作为一种优化策略,对于提高模型的效率和性能至关重要。动态量化在模型推理过程中,根据数据的分布和范围,灵活地调整数据的表示精度,以在减少计算和存储开销的同时,尽可能保持模型的预测性能。

输入和输出数据的动态量化过程是基于数据的分布范围来确定符号位、整数位和小数位的占比。

对于权重参数,由于BNN中的权重通常被限制为正负1,可以采用更为紧凑的量化方式。例如,采用1位量化来存储权重参数。

网络结构参数,如激活函数和批归一化(BN)参数,通常不受数据分布的影响,因此可以采用静态的32位存储。这种方式保留了参数的高精度,确保了网络结构参数在推理过程中的稳定性和准确性。

二值模型动态量化模块中的三种量化方法针对不同类型的数据,采用灵活的策略来调整数据的表示精度。动态量化使得数据能够以更紧凑的方式存储,减少了存储和计算开销,同时在不影响模型性能的情况下,提高了推理效率。

图4为模块化二值计算单元部署模块的结构示意图,如图4所示,包括:模型网络层分解、网络层类型判断,计算资源分配等。

为了在FPGA上实现高效的二值计算加速,通用二值计算单元部署模块的设计成为关键环节。这个模块旨在将BNN模型分解为各个层,根据网络层类型进行相应的优化部署,并在进行计算资源分配(存储分析、性能资源分析)和控制逻辑的基础上,建立数据通路并进行集成测试。

网络分解是通用二值计算单元部署的基础。这一步骤将BNN模型分解为不同的层,如卷积、池化、批归一化、注意力层、全连接层等。每种层类型都有不同的计算和数据处理需求,因此分解过程有助于为后续的部署和优化提供清晰的目标。

在判断网络层类型之后,对于每一种网络层,存储分析将进行。这涉及权重参数、输入数据、中间计算结果等的存储需求分析。针对二值计算,存储分析需要考虑数据的二值表示,以及相应的存储方式,以最大程度地减少存储开销,优化存储结构。

性能资源分析是在确定存储需求的基础上进行的。通过分析计算操作的复杂度,以及FPGA的计算和存储资源,可以得出每个计算单元所需的资源情况,从而有针对性地进行资源配置和优化。

同时,控制逻辑的设计也是不可或缺的一环。控制逻辑需要确保计算单元按照正确的顺序启动和停止,以及确保数据的正确流动。这包括控制信号的生成、传递和解析等步骤,以保证整个计算过程的顺利运行。

在这些分析和优化的基础上,数据通路将被建立。这意味着计算单元、存储单元和控制逻辑将被连接起来,形成一个高效的计算流程,保证数据的正确流动和同步,以及最大程度地减少延迟,提高计算效率。

最终,集成测试将对整个通用二值计算单元部署模块进行验证。这将确保模块的各个部分能够协同工作,实现高效的BNN推理。集成测试将涉及各种输入数据、各种网络层类型以及各种计算负载,以验证模块的稳定性、准确性和性能。

在一些实施例中,通过对模型的网络层进行分解,若模型结构进行修改,可以只针对修改的网络进行计算资源的分配、控制逻辑设计等关键步骤的更新,降低FPGA编程的复杂性。

示例性的,以FPGA部署BNN实现工业应用场景中剩余寿命预测的实例模型为例。实验所用数据集为C-MAPSS数据集,是针对航空发动机剩余寿命预测的数据集。实验所用硬件板卡为Zynq UltraScale+MPSoC ZCU104。神经网络按照功能分层、数据尺寸、操作数、硬件分配方式和推理时钟数如下表所示。

以上表中的卷积层(Quant_conv1d)为例,输入数据为(1,16,30),输出数据为(1,32,30),所分配的存储权重参数的BRAM为18KB,16个卷积核并行计算,Kernel_Size为(1,3),分配逻辑单元为16个,计算所需要时钟为30个。

当修改神经网络层参数:输出通道由32改为64时,利用通用二值计算单元部署模块中所提出的方法,实现过程如下:修改卷积层中的卷积核的数量为64,首先判断网络层类型为一维卷积层,然后进行存储分析,输入数据为(1,16,30),输出需要从(1,32,30)更改为(1,64,30),数据存储资源由15360 bit变为30720 bit,权重存储资源由2048 bit变为4096bit。其次进行性能资源分析,在控制计算时钟数30不变时,调整数据分割存取顺序,新增数据在现有计算时序下并行进行,申请使用逻辑单元数由16变为32。控制逻辑启动和停止信号不变,数据更新,读取和写入信号添加新申请的内存地址,后续层的数据存取地址依次修改。在控制逻辑单元数不变为16时,计算时钟数加倍为60个,新增数据在现有计算时序下串行进行,启动信号不变,停止信号、更新信号、数据读取信号延迟30个时钟,后续网络层的启停信号,数据存取信号依次延迟。

1、存储资源更新:按照修改的神经网络层参数计算所需要修改的数据存储资源和权重存储资源数量。修改存取数据的地址和存取权重的地址,修改数据和权重存取信号。

2、乘法运算和加法运算更新:按照修改的神经网络层参数计算所需要修改的该层操作数。若优先考虑计算时间,硬件资源充足,则成比例增加逻辑单元数量和加法树数量,新增乘加操作与原有网络并行计算,保证总时钟数量不变。若硬件资源受限,则不修改硬件资源分配数量,新增乘加操作与原有网络串行计算。

3、根据时钟数调整控制信号更新:按照修改的神经网络层参数计算和新的硬件资源分配情况修改该层的五种控制信号。若优先考虑计算时间,则启动,停止信号不变,该层和下一层数据的更新、读取和写入信号添加新的内存地址,若优先考虑硬件资源,则该层启动信号不变,停止、数据更新、数据读取和数据写入信号延迟时钟。下一层所有五种信号依次延迟。

图5为硬件适配的计算加速时序优化模块框架的示意图,如图5所示,时序设计包括串行流水线、串并行加法树和并行乘法分配。

本模块的设计基于前述的性能资源分析,结合时间复杂度分析,旨在通过合理的时序设计来实现串行流水线、串并行加法树和并行乘法分配三个关键内容,同时对并行乘法分配进行更细粒度的优化,包括卷积通道并行、窗口并行和注意力层并行。

串行流水线:针对不同层的计算操作,通过流水线化设计,将计算过程划分为多个阶段,在不同时钟周期内执行不同的计算操作。这样可以实现多个计算操作的重叠执行,减少单个操作的延迟,提高整体计算吞吐量。

如图6中所示,不同轮次的推理操作并行进行,每行的第一格表示第一层网络推理,在第一次推理进行到第二层网络推理时,第二次推理的第一层网络推理可以同时进行,并更新第一层网络的输出缓冲层。

串并行加法树:在一些计算操作中,涉及大量的加法操作。通过串并行加法树的设计,可以将多个加法操作并行地执行,然后将结果按层级结构进行串行相加,从而实现更高效的加法运算。

并行乘法分配:对于乘法操作,可以考虑将乘法操作分配到多个计算单元中并行执行。这种分配可以在更短的时间内完成乘法操作,从而提高计算效率。并行乘法分配可以进一步优化,包括以下三个部分:

卷积池化通道并行:对于卷积操作,可以将输入通道和输出通道划分为多个组,每个组分配给一组硬件计算资源,实现通道级别的并行计算。

窗口并行:在卷积操作中,窗口内数据计算之间是独立的,可以将一个窗口中的数据分配给不同的计算单元,并行计算卷积结果再送入加法树得到结果。

全连接层并行:在全连接层中,可以控制张量维度之间的并行程度,每一行或者每一列分配给固定的计算单元。

综上所述,本申请通过数据存储设计、数据动态量化设计、计算资源分配设计以及时序优化设计,可以有效的提升FPGA对BNN模型的加速效果。

本申请实施例还提供一种面向工业应用场景的FPGA二值神经网络加速装置。

图7为本申请实施例提供的面向工业应用场景的FPGA二值神经网络加速装置70的结构示意图,如图7所示,包括:

确定模块701,用于确定二值神经网络BNN模型部署于FPGA时,获取第一目标数据,以及,所述BNN模型的网络层;所述第一目标数据包括所述BNN模型的权重参数和所述BNN模型的网络结构参数。

处理模块702,用于对所述第一目标数据进行第一预处理后进行存储,以及,为所述BNN模型不同的网络层分配对应的计算资源。

响应模块703,用于响应于对第二目标数据的处理请求,对所述第二目标数据进行第二预处理后进行存储;所述第二目标数据包括用于预测工业器件寿命的多变量时序数据。

计算模块704,用于读取所述第一目标数据和第二目标数据,并使用所述计算资源,以及,所述第一目标数据运行所述BNN模型对所述第二目标数据进行处理,得到所述BNN模型输出的寿命回归数据。

可选的,处理模块702,还用于获取所述第一目标数据的类型;若所述第一目标数据的类型为权重参数,则采用1位量化的方式处理所述权重参数;若所述第一目标数据的类型为网络结构参数,则采用静态处理的方式处理所述网络结构参数。

可选的,响应模块703还用于根据所述第二目标数据的分布范围,确定所述第二目标数据的符号位、整数位以及小数位的占比,根据所述占比对所述第二目标数据进行处理。

可选的,处理模块702,还用于判断所述权重参数的正负值;根据所述正负值,获取所述权重参数对应的异或参数;根据所述异或参数对所述权重参数进行异或运算,得到处理后的权重参数。

可选的,处理模块702,还用于获取所述BNN模型中网络层的存储开销,以及,网络层的计算操作的复杂度;根据所述存储开销和所述计算操作的复杂度,确定所述网络层所需的目标计算资源;根据所述目标计算资源和所述FPGA的计算资源,为所述网络层分配对应的计算资源。

可选的,处理模块702,还用于根据所述网络层对应的计算数据,获取所述网络层的输出数据;所述计算数据包括输入数据、卷积核尺寸,以及,输出通道中的至少一种;根据所述权重参数、所述输出数据,以及,所述输入数据三者所需的存储空间之和,得到网络层的存储开销。

可选的,计算模块704,还用于获取所述网络层对应的控制逻辑,以使所述网络层根据所述控制逻辑利用所述计算资源进行数据处理;所述控制逻辑由如下控制信号中的至少一种控制信号进行实现:

启动信号、停止信号、更新信号、数据读取信号,以及,数据写入信号。

可选的,计算模块704,还用于对所述BNN模型中的网络层的串并行计算逻辑进行时序优化。

可选的,计算模块704,还用于获取所述BNN模型中的网络层的时间复杂度;根据所述时间复杂度、所述网络层对应的计算资源,以及,所述网络层的类型,确定所述网络层对应的时序优化方案;所述时序优化方案包括串行流水线、串并行加法树和并行乘法分配中的至少一种。

可选的,计算模块704,还用于根据所述网络层的计算资源,将所述网络层的计算过程划分为M个计算阶段;M为正整数;在不同的时钟周期内执行不同计算阶段的计算操作。

可选的,计算模块704,还用于将所述第一目标数据和所述第二目标数据写入缓冲寄存器中;所述缓冲寄存器为乒乓缓存结构。

本申请实施例提供的面向工业应用场景的FPGA二值神经网络加速装置可以执行上述任一实施例提供的面向工业应用场景的FPGA二值神经网络加速方法,其原理和技术效果类似,此处不再赘述。

本申请实施例还提供一种电子设备。

图8为本申请实施例提供的电子设备80的结构示意图,如图8所示,包括:

处理器801。

存储器802,用于存储终端设备的可执行指令。

具体的,程序可以包括程序代码,程序代码包括计算机操作指令。存储器802可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

处理器801用于执行存储器802存储的计算机执行指令,以实现前述方法实施例所描述的技术方案。

其中,处理器801可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。

可选的,电子设备80还可以包括通信接口803,以通过通信接口803可以与外部设备进行通信交互,外部设备例如可以是用户终端(例如,手机、平板)。在具体实现上,如果通信接口803、存储器802和处理器801独立实现,则通信接口803、存储器802和处理器801可以通过总线相互连接并完成相互间的通信。

总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果通信接口803、存储器802和处理器801集成在一块芯片上实现,则通信接口803、存储器802和处理器801可以通过内部接口完成通信。

本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述面向工业应用场景的FPGA二值神经网络加速方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

一种可能的实现方式中,计算机可读介质可以包括随机存取存储器(RandomAccess Memory,RAM),只读存储器(Read-Only Memory,ROM),只读光盘(compact discread-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(Digital Subscriber Line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(Digital Versatile Disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。

本申请实施例中还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述面向工业应用场景的FPGA二值神经网络加速方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

在上述终端设备或者服务器的具体实现中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:ApplicationSpecific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

本领域技术人员可以理解,上述任一方法实施例的全部或部分步骤可以通过与程序指令相关的硬件来完成。前述的程序可以存储于计算机可读取存储介质中,该程序被执行时,执行上述方法实施例的全部或部分的步骤。

本申请技术方案如果以软件的形式实现并作为产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本申请的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括计算机程序或者若干指令。该计算机软件产品使得计算机设备(可以是个人计算机、服务器、网络设备或者类似的电子设备)执行本申请实施例所述方法的全部或部分步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。

进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。

另外,若无特别说明,在本申请各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 一种基于FPGA的二值神经网络加速方法及系统
  • 一种基于FPGA的二值神经网络加速方法及系统
技术分类

06120116483780