CN115600637A - 面向数据流神经网络加速器设计的架构自动优化方法 - Google Patents
面向数据流神经网络加速器设计的架构自动优化方法 Download PDFInfo
- Publication number
- CN115600637A CN115600637A CN202211152018.4A CN202211152018A CN115600637A CN 115600637 A CN115600637 A CN 115600637A CN 202211152018 A CN202211152018 A CN 202211152018A CN 115600637 A CN115600637 A CN 115600637A
- Authority
- CN
- China
- Prior art keywords
- resource
- fifo
- data
- layer
- bram
- 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
-
- 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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于人工智能技术领域,具体涉及一种面向数据流神经网络加速器设计的架构自动优化方法。提出前馈数据流架构FPGA加速器网络层间FIFO深度仿真计算方法、计算存储资源分配方法。提高了数据流神经网络加速器架构优化参数搜索速度,减少加速器设计过程中由于手动优化调参、综合布线所耗费大量时间。并通过自动搜索的并行度和FIFO参数保证了网络各计算单元高效流水,可以得到更为合理高效的设计方案。本方法简化了神经网络算法到FPGA加速器实现的过程,减少了用户对神经网络加速器设计师的依赖,使算法设计师无需硬件设计经验便可轻松使用,提高了工具易用性。
Description
技术领域
本发明属于人工智能技术领域,具体涉及一种面向数据流神经网络加速器设计的架构自动优化方法。
背景技术
近年来卷积神经网络得到了广泛应用,在图像处理、语音识别、数据分析等领域取得了很大成功。但目前主流的卷积神经网络算法,往往包含数百万个浮点参数和数十亿次浮点运算,传统的CPU已无法满足实时性要求。目前主流的硬件加速平台是GPU、ASIC和FPGA,其中GPU由大量并行计算单元构成,利用数据级并行加速应用的执行,具有CUDA和OpenGL等成熟的工具,算法开发难度低,但其功耗通常较高。ASIC采用改进硬件架构来对算法进行加速,对特定的神经网络算法具有较高的计算效率。但其专用性也导致其灵活性差。FPGA由大量可重新配置的逻辑电路构成,具有开发成本低、功耗低、灵活性高等特点,成为近年来卷积神经网络加速器研究的热点之一。
FPGA神经网络加速器可分为2种主流的体系架构,分别是处理引擎架构和数据流架构。处理引擎架构通常采用脉动阵列的形式,适合多种神经网络层类型,具有通用性。加速器根据网络拓扑结构按顺序逐层计算,每一层的计算输入要从DDR读取,计算结果要存储于DDR,在不同层之间的数据传递时消耗大量资源。相比之下,数据流架构将神经网络每一层映射为计算模块,将神经网络计算图转换为FPGA加速的流水线。前一层计算结果生成后直接输出到下一层,无需使用DDR进行缓存,因此简化了层与层之间的数据传递,缩短了数据传输时间。目前已有多种数据流架构加速器包括Xilinx公司的BNN-PYNQ、北京工业大学的Ultra_net和加州大学圣地亚哥分校的ReBNet。
由于目前已有的FPGA加速器开发工具远不如GPU开发工具成熟,在FPGA平台实现数据流架构加速器开发,即将某个卷积神经网络模型映射到FPGA加速器,仍然是非常繁重的工作。前馈数据流架构加速器的开发工具实现了网络模型到FPGA IP核的转换,在一定程度上降低了开发难度,但每一层的并行度、乘法器和数据缓存的资源类型、层间FIFO大小等参数仍需手动配置。不同模型在不同资源总量FPGA上的参数配置往往差异较大,为得到模型在特定型号FPGA上接近最佳的运行速度,需要特别复杂的调整。因此,亟需一种面向数据流神经网络加速器设计的架构自动优化方法解决上述问题。
发明内容
本发明提出一种面向数据流神经网络加速器设计的架构自动优化方法,以解决现有技术中每一层的并行度、乘法器和数据缓存的资源类型、层间FIFO大小等参数仍需手动配置、不同模型在不同资源总量FPGA上的参数配置往往差异较大,为得到模型在特定型号FPGA上接近最佳的运行速度,需要特别复杂的调整的问题。
为达上述目的,本发明提出技术方案如下:
一种面向数据流神经网络加速器设计的架构自动优化方法,包括:
步骤三:根据神经网络拓扑结构连接神经网络各层的IP核,在各IP核之间插入自定义FIFO模块,构建加速器模块;增设仿真控制模块,与加速器模块结合,组成FIFO大小仿真计算模型;
使用FIFO大小仿真计算模型计算每一个自定义FIFO模块的大小设定值;
将加速器模块的自定义FIFO模块改为通用FIFO,并依次修改每一个通用FIFO的深度分别对应FIFO大小仿真计算模型的计算获得的对应自定义FIFO模块的大小设定值;
步骤四:使用VIVADO工具综合实现加速器模块,获取资源使用综合报告;
若综合实现失败,则重复步骤一到三,直到综合实现成功或者重试次数超过阈值为止;
若重复次数超过阈值,则表明无法完成当前吞吐率在FPGA下的资源分配,结束进程;
若综合实现成功,且符合程序终止条件,则进入步骤五;
若综合实现成功,且不符合程序终止条件,则根据资源分配情况调整期望吞吐率,进入步骤一;
步骤五:输出结果。
优选的,步骤一神经网络各层并行度计算方法为:
根据神经网络层类型和参数,计算N层神经网络每个层i推理所需的乘法操作数,其中1≤i≤N;
其中pi为输出通道并行度,si为输入通道并行度,qi为输入特征图像素并行度;
其中T(clk)为FPGA的时钟周期。
优选的,步骤一中期望运行时间计算方法为:
优选的,步骤二中,IP核包括乘法器和数据缓存区;
其中位数大于等于8bit的乘法器由DSP构建,位数小于8bit的乘法器由LUT构建;
数据缓存区分为权重缓存区和计算中间变量缓存区;
权重缓存区由BRAM构建,计算中间变量缓存区由LUTRAM构建。
优选的,步骤三中,仿真控制模块由时钟单元、数据生成单元、数据测量单元和数据接收单元构成;其中:
时钟单元,用于为数据生成单元、数据测量单元和数据接收单元提供时钟驱动;
数据生成单元,用于将输入图像输入到加速器模块中;
数据测量单元,用于持续观测自定义FIFO模块在运行期间数据缓存量并记录最大值;
数据接收单元,用于接收仿真结果。
优选的,步骤三中,FIFO大小设定值计算过程为:
数据生成单元将输入图像以时间间隔t(pix)输入到加速器模块中,每次输入数据量为CHin;CHin为输入图像通道数;
时间间隔t(pix)为:
数据测量单元持续观测自定义FIFO模块在运行期间数据缓存量并记录最大值;
数据接收单元持续接收仿真结果,当接收得到2幅图像结果后仿真结束;
数据测量单元将每一个自定义FIFO模块的数据缓存量最大值输出,将输出的数据缓存量最大值向上取整到2的n次方后,分别作为相应自定义FIFO模块的大小设定值。
优选的,步骤四中,具体流程为:
使用VIVADO工具综合实现加速器模块,获取资源使用报告;
检查DSP资源使用是否超出FPGA中DSP的资源总量,调整超出部分的IP核的乘法器构建方式由DSP资源构建改为LUT资源构建;
检查BRAM资源使用是否超出FPGA中BRAM资源总量的占比阈值;若超出则将BRAM资源利用率低的IP核转换为LUTRAM资源构建方式,直到BRAM资源使用低于FPGA中BRAM资源总量的占比阈值;若使能了DDR存储,以全连接层优先级高、OFM小的卷积层优先级中等、OFM大的卷积层优先级低的顺序,将超出部分IP核数据存储构建方式由BRAM资源构建为DDR资源构建;并此时应满足:
检查LUTRAM资源使用是否超出FPGA中LUTRAM资源总量的占比阈值;若超出则将BRAM资源利用率高的IP核转换为BRAM资源构建方法或DDR资源构建方式,直到LUTRAM资源使用低于FPGA中LUTRAM资源总量的占比阈值为止;
再次使用VIVADO工具综合实现加速器模块,获取资源使用报告;
根据综合实现报告得到DSP、LUT、BRAM与LUTRAM资源使用率,进行转换调整;
再次综合实现,根据报告得到调整后的FPGA所有模块中IP核的BRAM和LUTRAM资源使用率;
配置FIFO资源为LUTRAM,使用VIVADO综合,获取综合报告;
配置FIFO资源为BRAM,使用VIVADO综合,获取综合报告;
根据综合报告获取每一个FIFO在LUTRAM方式和BRAM方式构建所需的资源量;
根据FPGA所有模块中IP核的BRAM和LUTRAM资源使用率和每一个FIFO在LUTRAM方式和BRAM方式构建所需的资源量对FIFO资源进行配置;
FIFO资源配置具体流程为:
所选FIFO选择此时BRAM资源和LUTRAM资源中资源使用率较低的一方进行构建;计算此时FPGA所有模块中IP核的BRAM和LUTRAM资源使用率;下一个FIFO选择此时BRAM资源和LUTRAM资源中资源使用率较低的一方进行构建;重复上述步骤,直到最后一个FIFO资源配置完成;
按照上述步骤得到的卷积层配置、全连接层配置和FIFO配置重新生成IP核。
式中,ω的计算公式为:
memwi为存储器位宽,其计算公式为:
优选的,步骤四中,程序终止条件为:
程序运行时间超过阈值,或FPGA资源使用率高于阈值,或期望吞吐率迭代次数超出阈值。
优选的,步骤五中,输出结果包括:
每一层并行度参数配置;网络优化后的运行速度;加速器IP核;各个IP核计算和存储资源类型、FIFO大小。
本发明的有益之处在于:
使用前馈数据流架构FPGA加速器网络层间FIFO深度仿真计算方法和计算存储资源分配方法,实现FPGA神经网络加速器参数自动搜索,减少手工参数设置的工作量,减少加速器设计过程中由于手动优化调参、综合布线所耗费大量时间。
通过自动搜索的并行度和FIFO参数保证了网络各计算单元高效流水,提高了工具的易用性。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为一种面向数据流神经网络加速器设计的架构自动优化方法流程图;
图2为矩阵矢量阈值单元IP核结构示意图;
图3为处理单元结构示意图;
图4为FIFO大小仿真计算模型示意图。
具体实施方式
下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
以下详细说明均是示例性的说明,旨在对本发明提供进一步的详细说明。除非另有指明,本发明所采用的所有技术术语与本发明所属领域的一般技术人员的通常理解的含义相同。本发明所使用的术语仅是为了描述具体实施方式,而并非意图限制根据本发明的示例性实施方式。
实施例1:
一种面向数据流神经网络加速器设计的架构自动优化方法,具体包括:
步骤一、计算网络各层操作数,根据第m次迭代的期望吞吐率和操作数计算各层并行度参数;具体为:
给定量化训练好的网络模型,如ONNX格式;给定FPGA可用的资源数量,包括LUT资源ResLUT,LUTRAM资源ResLUTRAM,Block RAM(BRAM)资源ResBRAM,DSP资源ResDSP;给定期望吞吐率迭代初值
根据神经网络层类型和参数,计算N层神经网络每个层i推理所需的乘法操作数,其中1≤i≤N。对于卷积核尺寸Ki,输出特征图宽度OFMWi高度OFMHi,特征图输入通道数IFM_CHi,特征图输出通道数OFM_CHi的卷积层,其推理所需的乘法操作数计算方法如(1)所示:
网络模型每一层并行度使用表示,构建网络模型每一层的并行参数集合。对于卷积层有三个并行参数,其中pi为输出通道并行度,si为输入通道并行度,qi为输入特征图像素并行度。并行参数需满足si≤IFM_CHi,pi≤OFM_CHi,qi≤OFMWi,IFM_CHi%si=0,OFM_CHi%p=0,OFMWi%q=0条件。对于全连接层有两个并行参数,并行参数需满足si≤Wi,pi≤Hi,Wi%si=0,Hi%pi=0条件。
步骤二、选取并行度参数和资源配置方式,依据高层次综合模板生成每一层的IP核。具体为:
采用高层次综合模板,根据并行度参数,生成神经网络每一层的IP核。
其中每层乘法器中大于等于8bit的乘法器由DSP构建,小于的8bit乘法器由LUT构建;
数据缓存区分为权重缓存区和计算中间变量缓存区;权重缓存区由BRAM构建,中间变量缓存区由LUTRAM构建。
执行矩阵乘法的矩阵矢量阈值单元IP核如图2所示,由输入输出缓存、权重缓存和处理单元构成,其输入输出接口均为AXI-Stream(AXIS)。
处理单元结构如图3所示,由乘法器、累加器和阈值比较器构成。
步骤三、根据神经网络拓扑结构连接神经网络各层的IP核构建加速器,在各IP核之间插入FIFO构建仿真计算模型,仿真计算FIFO大小。具体为:
在加速器各IP核之间加入可观测数据缓存量的自定义FIFO模块,构建加速器模块;增设仿真控制模块,仿真控制模块与加速器模块构成FIFO大小仿真计算模块,如图4所示;
仿真控制模块由时钟单元、数据生成单元、数据测量单元和数据接收单元构成。
加速器模块由神经网络层IP核和FIFO构成。
其中时钟单元用于生成仿真时钟,提供时钟驱动其他模块;仿真控制模块用于生成和测量数据。使用python控制仿真过程。
仿真方法如下:启动仿真,数据生成单元将输入图像以时间间隔t(pix)输入到加速器模块中,每次输入数据量为CHin,其中Chin为输入图像通道数。
数据测量单元持续观测自定义FIFO模块在运行期间数据缓存量并记录最大值。数据接收单元持续接收仿真结果,当接收得到2幅图像结果后结束仿真,数据测量单元将每一个自定义FIFO数据缓存量(深度)最大值输出,将这些数值向上取整到2的n次方后,分别作为相应F IFO大小设定值。
将加速器模块自定义FIFO改为通用FIFO,并依次修改每一个FIFO深度分别对应上一步骤结果数值。
步骤四、综合实现加速器得到各IP核资源使用情况,超出FPGA资源总量时调整IP核资源分配。具体为:
分别配置FIFO资源为LUTRAM和BRAM,并使用VIVADO综合。根据综合报告获取每一个F IFO在LUTRAM方式和BRAM方式构建所需的资源量。
每个卷积层和全连接层IP核可将权重存储于BRAM、LUTRAM或DDR中,在使用BRAM存储权重时,权重数据量往往小于构建该IP核的BRAM所能容纳的数据总量,权重数据量与BRAM容纳的数据总量的比值称为BRAM资源利用率。BRAM资源利用率计算公式如(3):
其中ω的计算公式如(5):
memwi为存储器位宽,其计算公式如(6):
在使用DDR存储权重时,时钟频率Fclk、DMA数据宽度WidthDMA和吞吐率限制了DDR的权重存储量,应满足不等式(7):
其中Resi为第i层卷积或全连接层完成1幅图像计算,IP核与DDR之间所需的权重数据传输量,计算方法如式(8):
使用VIVADO工具综合实现加速器模块,获取资源使用报告,得到各个IP核的资源使用情况。若加速器模块某项资源的实际使用量高于FPGA该项资源总量,则需调整IP核计算和存储资源分配。
本文方法仅对计算和存储资源量大的IP核进行调整,即卷积和全连接IP核。对计算和存储资源量小的IP核不进行调整,如下采样和加法IP核等。
卷积和全连接IP核计算和存储资源类型调整方法如下:
(1)检查DSP资源使用是否超出FPGA中DSP的资源总量,调整超出部分的IP核的乘法器构建方式由DSP资源构建改为LUT资源构建。
(2)检查BRAM资源使用是否超出FPGA中BRAM资源总量的90%(或其他阈值)。若超出则将BRAM资源利用率低的IP核优先转换为LUTRAM资源构建方式,直到满足“BRAM资源使用低于FPGA中BRAM资源总量的90%(或其他阈值)”要求。若使能了DDR存储,以全连接层优先级高、OFM小的卷积层优先级中等、OFM大的卷积层优先级低的顺序,调整超出部分IP核数据存储构建方式由BRAM资源构建为DDR资源构建,应满足公式(7)。
(3)检查LUTRAM资源使用是否超出FPGA中LUTRAM资源总量的90%(或其他阈值)。若超出则将BRAM资源利用率高的IP核优先转换为BRAM或DDR资源构建方式直到满足“L UTRAM资源使用低于FPGA中LUTRAM资源总量的90%(或其他阈值)”要求。
(4)均衡配置FIFO资源,使FPGA所有模块IP核的BRAM和LUTRAM资源使用率接近。
(5)按照上述配置重新生成IP核,根据神经网络拓扑结构连接构建加速器,使用VIVADO工具综合实现。
(6)若综合实现失败,则重复上述步骤(1)-(5)进一步分配IP核计算和存储资源,直到VIVADO工具综合实现通过;
若重试次数超出阈值,则表明无法完成当前吞吐率在FPGA下的资源分配,结束程序。
(7)若综合实验成功,则判断此时神经网络加速器参数自动搜索是否达成终止条件;
神经网络加速器参数自动搜索的终止条件为程序运行时间超过阈值,或FPGA资源使用率高于阈值,或期望吞吐率迭代次数超出阈值;
此时神经网络加速器参数自动搜索达成终止条件,则结束神经网络加速器参数自动搜索过程,进入步骤五;
若未达到终止条件,则根据资源分配情况调整期望吞吐率,转到步骤一继续迭代。
步骤五、输出每一层并行度参数配置;输出网络优化后的运行速度;输出加速器IP核用于部署;输出IP核计算和存储资源类型、FIFO大小。
实施例2:
采用2bit量化后的VGG模型,包含6个卷积层和3个全连接层,输入为32*32*3的图像,输出为10个分类结果。选择FPGA型号为xc7z020clg400,可用的资源数量ResLUT为53200,ResLUTRAM为17400,ResBRAM为140,ResDSP为220。选择FPGA资源使用率75%作为自动搜索终止条件。期望吞吐率为100fps作为迭代初值,经过4次迭代,依次取值为250fps、500fps、750fps、1000fps。
计算每一层的并行参数卷积层有pi、si、qi三个并行参数,对于Conv1,因为IFM_CH1为3,所以s1取值范围为{1,3};因为OFM_CH1为64,所以p1取值范围为{1,2,4,8,16,32,64};因为OFMW1为30,所以qi取值范围为{1,2,3,5,6,10,15,30}。期望运行时间即1000us。计算网络层Conv1并行度满足运行时间小于期望运行时间条件,取972us时,取最小值16,此时s=1,p=16,q=1。以此类推计算所有层的运行时间和并行度结果如表1所示。得到实际吞吐率为868fps。
表1网络层操作数、并行度和运行时间
对神经网络层进行资源配置方法如下:根据乘法器位数决定乘法器构建方式,大于等于8bit乘法器由DSP构建,小于8bit乘法器由LUT构建。本例采用2bit乘法器,因此均使用LUT方式构建。本例数据缓存分为权重缓存和计算中间变量缓存。权重缓存由BRAM(BRAM)构建,中间变量缓存由LUTRAM构建。采用高层次综合模板,应用上述资源配置、并行度参数,生成神经网络每一层的IP核。
在加速器各IP核之间加入自定义FIFO模块,构建仿真模型测量FIFO数值。每次输入数据量为图像通道数,数据量为3字节。根据公式计算时间间隔t(pix)为0.976us。数据测量单元持续观测自定义FIFO模块在运行期间使用量并记录最大值。数据接收单元持续接收仿真结果,当接收得到2幅图像结果后结束仿真,数据测量单元将每一个自定义FIFO使用量(深度)最大值输出,将这些数值向上取整到2的n次方后,分别作为相应FIFO大小设定值。计算得到的FIFO大小结果如表2所示。
分别配置FIFO资源为LUTRAM和BRAM,并使用VIVADO综合。根据综合报告获取每一个F IFO在LUTRAM方式和BRAM方式构建所需的资源量,结果如表2所示。
表2 FIFO深度仿真结果和2种构建方式下的资源使用情况
FIFO | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
深度 | 32 | 1024 | 32 | 1024 | 32 | 32 | 512 | 32 | 1024 | 512 | 64 | 64 |
LUTRAM | 8 | 256 | 32 | 1024 | 128 | 32 | 512 | 32 | 1024 | 256 | 8 | 8 |
BRAM | 0.5 | 0.5 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 0.5 | 0.5 | 0.5 |
表3 BRAM资源使用量和资源利用率
使用PYTHON调用VIVADO TCL脚本工具综合实现加速器模块,获取资源使用报告,得到各个IP核的资源使用情况。分析资源报告发现BRAM资源使用实际使用为148,超出FPGABRAM资源总量140。根据本文方法依据大小将网络层排序,将小的Conv1层、Conv2层、Conv3层、Conv4层权重由BRAM构建方式转换为LUTRAM资源构建方式,转换后BRAM资源使用为118,低于FPGA BRAM资源总量140。调整资源后,Conv1层、Conv2层、Conv3层、Conv4层的BRAM资源使用减少到0,相对应LUTRAM资源使用分别增加至88、2052、3078和6156。再检查网络层LUTRAM资源使用情况,LUTRAM资源使用量为13370,资源总量为17400,没有超出FPGA中LUTRAM资源总量的80%,无需重新分配。均衡配置FIFO资源,使FPGA所有模块BRAM和LUTRAM资源使用率接近,FIFO资源配置结果如表4所示。
表4 FIFO资源配置结果
按照上述配置重新生成IP核,根据神经网络拓扑结构连接构建加速器,使用VIVADO工具综合实现,结果如下:LUT资源使用38518,占总量的72%,DSP资源使用0,占总量的0%,LUTRAM资源使用13602,占总量的78%,BRAM资源使用112,占总量的80%。根据自动搜索终止条件,由于FPGA中LUTRAM和BRAM资源使用率均高于75%,因此结束神经网络加速器参数自动搜索过程。输出并行度参数网络优化后的实际吞吐率输出加速器IP核、计算和存储资源类型、FIFO大小等参数。
由技术常识可知,本发明可以通过其它的不脱离其精神实质或必要特征的实施方案来实现。因此,上述公开的实施方案,就各方面而言,都只是举例说明,并不是仅有的。所有在本发明范围内或在等同于本发明的范围内的改变均被本发明包含。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种面向数据流神经网络加速器设计的架构自动优化方法,其特征在于,包括:
步骤三:根据神经网络拓扑结构连接神经网络各层的IP核,在各IP核之间插入自定义FIFO模块,构建加速器模块;增设仿真控制模块,与加速器模块结合,组成FIFO大小仿真计算模型;
使用FIFO大小仿真计算模型计算每一个自定义FIFO模块的大小设定值;
将加速器模块的自定义FIFO模块改为通用FIFO,并依次修改每一个通用FIFO的深度分别对应FIFO大小仿真计算模型的计算获得的对应自定义FIFO模块的大小设定值;
步骤四:使用VIVADO工具综合实现加速器模块,获取资源使用综合报告;
若综合实现失败,则重复步骤一到三,直到综合实现成功或者重试次数超过阈值为止;
若重复次数超过阈值,则表明无法完成当前吞吐率在FPGA下的资源分配,结束进程;
若综合实现成功,且符合程序终止条件,则进入步骤五;
若综合实现成功,且不符合程序终止条件,则根据资源分配情况调整期望吞吐率,进入步骤一;
步骤五:输出结果。
2.如权利要求1所述的一种面向数据流神经网络加速器设计的架构自动优化方法,其特征在于,步骤一神经网络各层并行度计算方法为:
根据神经网络层类型和参数,计算N层神经网络每个层i推理所需的乘法操作数,其中1≤i≤N;
其中pi为输出通道并行度,si为输入通道并行度,qi为输入特征图像素并行度;
其中T(clk)为FPGA的时钟周期。
4.如权利要求1所述的一种面向数据流神经网络加速器设计的架构自动优化方法,其特征在于,步骤二中,IP核包括乘法器和数据缓存区;
其中位数大于等于8bit的乘法器由DSP构建,位数小于8bit的乘法器由LUT构建;
数据缓存区分为权重缓存区和计算中间变量缓存区;
权重缓存区由BRAM构建,计算中间变量缓存区由LUTRAM构建。
5.如权利要求1所述的一种面向数据流神经网络加速器设计的架构自动优化方法,其特征在于,步骤三中,仿真控制模块由时钟单元、数据生成单元、数据测量单元和数据接收单元构成;其中:
时钟单元,用于为数据生成单元、数据测量单元和数据接收单元提供时钟驱动;
数据生成单元,用于将输入图像输入到加速器模块中;
数据测量单元,用于持续观测自定义FIFO模块在运行期间数据缓存量并记录最大值;
数据接收单元,用于接收仿真结果。
6.如权利要求5所述的一种面向数据流神经网络加速器设计的架构自动优化方法,其特征在于,步骤三中,FIFO大小设定值计算过程为:
数据生成单元将输入图像以时间间隔t(pix)输入到加速器模块中,每次输入数据量为CHin;CHin为输入图像通道数;
时间间隔t(pix)为:
数据测量单元持续观测自定义FIFO模块在运行期间数据缓存量并记录最大值;
数据接收单元持续接收仿真结果,当接收得到2幅图像结果后仿真结束;
数据测量单元将每一个自定义FIFO模块的数据缓存量最大值输出,将输出的数据缓存量最大值向上取整到2的n次方后,分别作为相应自定义FIFO模块的大小设定值。
7.如权利要求1所述的一种面向数据流神经网络加速器设计的架构自动优化方法,其特征在于,步骤四中,具体流程为:
使用VIVADO工具综合实现加速器模块,获取资源使用报告;
检查DSP资源使用是否超出FPGA中DSP的资源总量,调整超出部分的IP核的乘法器构建方式由DSP资源构建改为LUT资源构建;
检查BRAM资源使用是否超出FPGA中BRAM资源总量的占比阈值;若超出则将BRAM资源利用率低的IP核转换为LUTRAM资源构建方式,直到BRAM资源使用低于FPGA中BRAM资源总量的占比阈值;若使能了DDR存储,以全连接层优先级高、OFM小的卷积层优先级中等、OFM大的卷积层优先级低的顺序,将超出部分IP核数据存储构建方式由BRAM资源构建为DDR资源构建;并此时应满足:
检查LUTRAM资源使用是否超出FPGA中LUTRAM资源总量的占比阈值;若超出则将BRAM资源利用率高的IP核转换为BRAM资源构建方法或DDR资源构建方式,直到LUTRAM资源使用低于FPGA中LUTRAM资源总量的占比阈值为止;
再次使用VIVADO工具综合实现加速器模块,获取资源使用报告;
根据综合实现报告得到DSP、LUT、BRAM与LUTRAM资源使用率,进行转换调整;
再次综合实现,根据报告得到调整后的FPGA所有模块中IP核的BRAM和LUTRAM资源使用率;
配置FIFO资源为LUTRAM,使用VIVADO综合,获取综合报告;
配置FIFO资源为BRAM,使用VIVADO综合,获取综合报告;
根据综合报告获取每一个FIFO在LUTRAM方式和BRAM方式构建所需的资源量;
根据FPGA所有模块中IP核的BRAM和LUTRAM资源使用率和每一个FIFO在LUTRAM方式和BRAM方式构建所需的资源量对FIFO资源进行配置;
FIFO资源配置具体流程为:
所选FIFO选择此时BRAM资源和LUTRAM资源中资源使用率较低的一方进行构建;计算此时FPGA所有模块中IP核的BRAM和LUTRAM资源使用率;下一个FIFO选择此时BRAM资源和LUTRAM资源中资源使用率较低的一方进行构建;重复上述步骤,直到最后一个FIFO资源配置完成;
按照上述步骤得到的卷积层配置、全连接层配置和FIFO配置重新生成IP核。
9.如权利要求1所述的一种面向数据流神经网络加速器设计的架构自动优化方法,其特征在于,步骤四中,程序终止条件为:
程序运行时间超过阈值,或FPGA资源使用率高于阈值,或期望吞吐率迭代次数超出阈值。
10.如权利要求7所述的一种面向数据流神经网络加速器设计的架构自动优化方法,其特征在于,步骤五中,输出结果包括:
每一层并行度参数配置;网络优化后的运行速度;加速器IP核;各个IP核计算和存储资源类型、FIFO大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211152018.4A CN115600637A (zh) | 2022-09-21 | 2022-09-21 | 面向数据流神经网络加速器设计的架构自动优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211152018.4A CN115600637A (zh) | 2022-09-21 | 2022-09-21 | 面向数据流神经网络加速器设计的架构自动优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115600637A true CN115600637A (zh) | 2023-01-13 |
Family
ID=84844606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211152018.4A Pending CN115600637A (zh) | 2022-09-21 | 2022-09-21 | 面向数据流神经网络加速器设计的架构自动优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115600637A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117236187A (zh) * | 2023-09-28 | 2023-12-15 | 中国科学院大学 | 一种深度学习加速器芯片的参数化设计方法及系统 |
-
2022
- 2022-09-21 CN CN202211152018.4A patent/CN115600637A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117236187A (zh) * | 2023-09-28 | 2023-12-15 | 中国科学院大学 | 一种深度学习加速器芯片的参数化设计方法及系统 |
CN117236187B (zh) * | 2023-09-28 | 2024-03-19 | 中国科学院大学 | 一种深度学习加速器芯片的参数化设计方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN110058883B (zh) | 一种基于opu的cnn加速方法及系统 | |
CN108280514B (zh) | 基于fpga的稀疏神经网络加速系统和设计方法 | |
US20180204110A1 (en) | Compressed neural network system using sparse parameters and design method thereof | |
CN108090560A (zh) | 基于fpga的lstm递归神经网络硬件加速器的设计方法 | |
CN108764466A (zh) | 基于现场可编程门阵列的卷积神经网络硬件及其加速方法 | |
CN112101525A (zh) | 一种通过nas设计神经网络的方法、装置和系统 | |
CN106570559A (zh) | 一种基于神经网络的数据处理方法和装置 | |
Zhao et al. | Automatic generation of multi-precision multi-arithmetic CNN accelerators for FPGAs | |
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
CN109934336A (zh) | 基于最优结构搜索的神经网络动态加速平台设计方法及神经网络动态加速平台 | |
CN109615071A (zh) | 一种高能效的神经网络处理器、加速系统及方法 | |
CN110084363B (zh) | 一种基于fpga平台的深度学习模型加速方法 | |
CN108304925B (zh) | 一种池化计算装置及方法 | |
CN108304926B (zh) | 一种适用于神经网络的池化计算装置及方法 | |
CN113392973B (zh) | 一种基于fpga的ai芯片神经网络加速方法 | |
CN112513886A (zh) | 信息处理方法、信息处理装置和信息处理程序 | |
CN112200300A (zh) | 卷积神经网络运算方法及装置 | |
CN113283587B (zh) | 一种Winograd卷积运算加速方法及加速模块 | |
CN115600637A (zh) | 面向数据流神经网络加速器设计的架构自动优化方法 | |
CN113312178A (zh) | 一种基于深度强化学习的流水线并行训练任务分配方法 | |
CN113033794A (zh) | 基于深度可分离卷积的轻量级神经网络硬件加速器 | |
Tang et al. | EF-train: Enable efficient on-device CNN training on FPGA through data reshaping for online adaptation or personalization | |
CN109918281A (zh) | 多带宽目标的加速器效能测试方法 | |
CN116762080A (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 |