CN113112002A - 一种基于fpga轻量级卷积加速器的设计方法 - Google Patents
一种基于fpga轻量级卷积加速器的设计方法 Download PDFInfo
- Publication number
- CN113112002A CN113112002A CN202110365541.4A CN202110365541A CN113112002A CN 113112002 A CN113112002 A CN 113112002A CN 202110365541 A CN202110365541 A CN 202110365541A CN 113112002 A CN113112002 A CN 113112002A
- Authority
- CN
- China
- Prior art keywords
- data
- fpga
- convolution
- neural network
- configuration information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 13
- 238000013461 design Methods 0.000 title abstract description 9
- 238000013528 artificial neural network Methods 0.000 claims abstract description 19
- 230000001133 acceleration Effects 0.000 claims abstract description 6
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 6
- 239000011159 matrix material Substances 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 15
- 238000005457 optimization Methods 0.000 claims description 14
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 4
- 238000011176 pooling Methods 0.000 claims description 4
- 238000013139 quantization Methods 0.000 claims description 2
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 238000009825 accumulation Methods 0.000 claims 3
- 238000007781 pre-processing Methods 0.000 claims 1
- 238000004364 calculation method Methods 0.000 abstract description 9
- 230000000903 blocking effect Effects 0.000 abstract description 3
- 238000012549 training Methods 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000003062 neural network model Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000005284 excitation Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000010008 shearing Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
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/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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种基于FPGA卷积加速的方法。首先通用处理器用于解析神经网络配置信息以及权值数据,并将神经网络配置信息以及权值数据写入RAM中,针对外存访问带宽限制,基于设计空间探索确定循环分块因子以最大化数据重用,从而提高整个网络的运算性能。然后FPGA从RAM中读取配置信息,用于生成FPGA加速器,接着通用处理器读入图片信息,并把它写入DRAM中,然后FPGA加速器从DRAM中读取图片数据并开始计算,并把计算结果写入DRAM中。本发明加速器使得各层能够同时部署在FPGA芯片上,并以流水线的方式运行,提高了运算性能和数据吞吐率。
Description
技术领域
本发明涉及卷积加速领域,具体涉及基于FPGA轻量级卷积加速器的设计方法。
背景技术
随着消费电子、汽车电子、工业控制等越来越多的应用引入人工智能(AI),人工智能面临着前所未有的快速发展,深度学习、神经网络等技术迎来了发展高潮。神经网络越大,需要的计算量就越大,传统的VPU虽然也能完成人工智能运算,但因为高功耗和高延迟已经略显疲惫。在VPU上加载人工智能计算能力则可以规避这些问题,而且具有更高的可靠性。目标应用包括车载系统中的影像拍摄,以及基于行人、自行车等高精度物体识别的辅助驾驶以及自动泊车。另一个重要的应用便是显示系统,例如电视、数字标牌,NNA可在超分辨率处理时增强图像识别,提高4K/8K屏幕高清晰度成像。Socionext将不断创新并开发出高效、高性能产品,以适应各种边缘计算环境中广泛的AI应用。人工智能专用加速器强调的是适当时间提供给合适的智能。对现有的制造业的提升,包括缩短开发周期、降低成本、提升效率等。采用虚拟制造技术可以在产品设计阶段就模拟出该产品的整个生命周期,从而更有效,更经济、更灵活的组织生产,实现了产品开发周期最短,产品成本最低,产品质量最优,生产效率最高的保证。发展出全新的制造模式,加快这些产业的发展,加速普及市场应用,就能够形成一个个新的经济增长点。
由于通用处理器CPU需要在各种应用场景下提供良好的性能,因此CPU内部大部分是控制逻辑,计算单元只占很小一部分,通用处理器的这种特性难以保证神经网络推断对实时性的要求。在卷积神经网络的研究初期,研究人员使用中央处理器在计算机上对卷积神经网络进行训练和预测的工作。但随着卷积神经网络层数的不断加深,网络中的计算量和参数量都变得十分巨大,对于以串行处理结构的CPU来说,对于卷积神经网络的处理速度有很大的局限性。而图形处理器(GPU)内部包含几千个流处理器,可以并行执行大量计算任务。利用GPU这一特性,使其成为了研究人员加速卷积神经网络训练阶段的主要方式。但是GPU的缺点也十分明显,虽然有着较高的性能,但是功耗也十分巨大。尤其在PC端使用GPU对卷积神经网络进行训练时,功耗可高达数百瓦特。由于GPU自身存在体积大、功耗高的缺点,限制它在体积小,功耗低的移动端和嵌入式平台上的推广与应用。
这项发明卷积加速器研究,基于现有的神经网络,本发明公开了一种基于FPGA的深度神经网络平台,包括通用处理器和FPGA和RAM,第一个通用处理器用来解决神经网络的权重配置信息和数据,以及神经网络的权重配置信息和数据内存,访问带宽限制CRT,基于设计周期确定的空间探索块因子是为了最大限度地重用数据,然后FPGA从RAM读取配置信息,利用FPGA加速卡生成加速卡,然后通用处理器读取图像信息,然后FPGA加速卡从DRAM中读取图像数据并开始计算,并将计算结果写入DRAM中。最后,通用处理器从DRAM中读取分类结果。本发明的加速器可以使各层同时部署在FPGA芯片上,并以流水线的方式运行,使没有硬件知识的程序员可以利用现有的FPGA资源轻松获得良好的性能。
发明内容
本发明的目的在于提供轻量型卷积神经网络加速的方法。本发明具体实现如下所示:
(1)模型初始化,使用通用处理器解析神经网络配置信息以及权重数据并写到缓存RAM中模型初始化后进行归一化操作,所有权值在0~1的范围内服从正太分布。
(2)在(1)中针对外部存储访问限制的问题,基于空间探索确定循环分块的方式进行访问优化。使用原始权值矩阵的部分参数构造分块矩阵去代替原始矩阵。
(3)针对卷积层进行拆分优化对深度卷积、点卷积和池化进行优化压缩,针对卷积层各层内与各层间的并行卷积操作进行设计,采用混合乒乓流水的方式进行并行优化。
(4)对训练后的网络进行分组量化,接着分组训练至收敛;对量化后的网络进行轻微的剪切操作,最后训练至收敛,得到最终压缩后的网络。
(5)对输入数据进行特征提取与存储,输出展示。
本发明的有益效果在于:
(1)对于卷积神经网络的卷积层进行并行优化,提高数据复用程度成分挖掘硬件潜力。
(2)利用空间探索、乒乓流水、动态数据量化等方法进一步管理片上资源增加数据重用提高计算能力。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实例一起用于解释本发明,并不构成对本发明的限制。
图1为本发明的系统架构图。
图2为本发明FPGA加速器的硬件架构图。
图3框架设计流程。
具体实施方式
本发明提出一种基于FPGA的卷积加速的方法。首先对现有的数据进行预训练,如果现有的网络参数超过存储上限时,采用参数压缩等方式对现有数据进行稀疏压缩,对压缩数据进行编码以便进行索引调用。针对不同卷积层进行特殊的设计和优化。
对于神经网络进行运算时可以更加便捷的通行传输和运算。具体实现步骤如下:
步骤01. 模型初始化,使用通用处理器解析神经网络配置信息以及权重数据并写到缓存RAM中模型初始化后进行归一化操作,所有权值在0~1的范围内服从正太分布;
步骤02. 在步骤01中针对外部存储访问限制的问题,基于空间探索确定循环分块的方式进行访问优化。使用原始权值矩阵的部分参数构造分块矩阵去代替原始矩阵。除此之外,激活函数采用分段线性近似的方法;
步骤03. 针对卷积层进行拆分优化对深度卷积、点卷积和池化进行优化压缩,针对卷积层各层内与各层间的并行卷积操作进行设计,采用混合乒乓流水的方式进行并行优化。
步骤04. 对训练后的网络进行分组量化,接着分组训练至收敛;对量化后的网络进行轻微的剪切操作,最后训练至收敛,得到最终压缩后的网络。
步骤05. 对输入数据进行特征提取与存储,输出展示。
本发明中步骤01提出的模型初始化。
所述步骤01具体包括以下步骤:
步骤0101. 准备数据。
步骤0102. 模型初始化,使用通用处理器解析神经网络配置信息以及权重数据并写到缓存RAM中。
步骤0103. 模型初始化后进行归一化操作,所有权值在0~1的范围内服从正太分布。
本发明中步骤02中的在(1)中针对外部存储访问限制的问题,为了满足轻量型网络能够正常运行在FPGA平台上,满足平台及模型实时性和资源利用的合理性。针对轻量化网络模型进行了软硬件整体框架设计。根据相互关系设计出软硬件协同加速框架。基于空间探索确定循环分块的方式进行访问优化。使用原始权值矩阵的部分参数构造分块矩阵去代替原始矩阵。除此之外,激活函数采用分段线性近似的方法。
所述步骤02具体包括以下步骤:
步骤0201. 对卷积六个循环进行设计空间探索,以确定循环分块因子,提高数据复用程度以减小带宽需求。
步骤0202. 使用原始权值矩阵的部分参数构造分块矩阵去代替原始矩阵。
步骤03. 针对卷积层进行拆分优化对深度卷积、点卷积和池化进行优化压缩,针对卷积层各层内与各层间的并行卷积操作进行设计,采用混合乒乓流水的方式进行并行优化。为了满足轻量型网络能够正常运行在FPGA平台上,满足平台及模型实时性和资源利用的合理性。针对轻量化网络模型进行了软硬件整体框架设计。根据相互关系设计出软硬件协同加速框架。软件部分负责计算任务的调度和控制,硬件部分负责计算数据。由于加速器的存储资源和计算资源有限,所以我们通过软件将轻量化神经网络模型中一层计算所需的参数通过PCIE 存储到 DDR 中,图片数据通过上位机直接写入到计算单元 PU 中,计算出来的结果保存到 DDR 中。通过以一层计算为单位,旨在减少模型对于硬件存储资源的需求。
所述步骤03具体包括以下几个步骤:
步骤0301. 轻量化神经网络模型中一层计算所需的参数通过PCIE 存储到 DDR中,图片数据通过上位机直接写入到计算单元 PU 中,计算出来的结果保存到 DDR 中。
步骤0302. 图片数据通过上位机直接写入到计算单元 PU 中,计算出来的结果保存到 DDR 中。
步骤04. 对训练后的网络进行分组量化,接着分组训练至收敛;对量化后的网络进行轻微的剪切操作,最后训练至收敛,得到最终压缩后的网络。图1是基于FPGA的用于优化系统运算性能的神经网络加速器的系统架构图。当原有的神经网络参数规模超过了FPGA的存储资源限制时,采用剪枝量化等手段,对模型参数进行压缩。压缩后的神经网络模型变得更加稀疏,其权重矩阵变成了稀疏矩阵,为了提高并行和运算单元的运算均衡性,对压缩后的稀疏矩阵按行进行重排,由上至下,每一行的非零权重个数逐渐递减。按非零权重值的个数均匀地分配给每个运算单元,保证每个运算单元处理的非零权重数量尽可能地相等;将重排后的矩阵内的非零元素值进行编码(每一个数标出它的值以及行索引值),将所有的非零权重值按列进行存储,即每一列的非零值存到一个地址空间,用特殊标识符将其间隔开来,并标明其行索引指针。当需要用神经网络进行前向运算的时候,将运算任务(相关数据量和参数量)通过千兆网络从上位机传到FPGA的硬件端完成。稀疏矩阵向量乘模块的操作步骤如下:
步骤0401. 控制器从DDR读取所需励磁输入到非零检测模块,确定励磁值。如果不等于0,有效信号是高的,使能信号写拉起,否则是低的。对有效信号进行统计,得到激励信号在原始矢量中的指标值。当写使能被拉起时,非零激励值及其对应的索引值被写入相应的FIFO。
步骤0402. 将非零检测模块检测到的非零值的地址索引输入权值解码模块,读取该索引对应的整列权值。编码权值由两部分组成(权值和权值在列中的行索引)。输出的有效值与读使能信号有关。
步骤0403. 操作模块将激励值与相应指标下整列的每个权重值通过乘法树相乘。根据权值的行索引,从对应地址下的BRAM中读取部分和,并将之前的乘法结果进行累加,将结果存储在RAM中的相同地址中。
步骤05. 对输入数据进行特征提取与存储,输出展示。
Claims (3)
1.一种基于FPGA的卷积加速器的加速方法,其特征在于,包括以下步骤:
步骤1),使用通用处理器解析神经网络配置信息以及权重数据并写到缓存RAM中;
步骤2),在1)中针对外部存储访问限制的问题,基于空间探索确定循环分块的方式进行访问优化;
步骤3),针对卷积层进行拆分优化对深度卷积、点卷积和池化进行优化压缩;
步骤4)针对卷积层各层内与各层间的并行卷积操作进行设计,设计一种混合乒乓流水的方式进行并行优化;
步骤5),对输入数据进行特征提取。
2.根据权利要求所述其特征在于数据定点量化和卷积设计。
3.在该加速器中包括:存储单元、预处理单元、运算单元和控制单元等,其中,存储单元包括原始数据和各个权值矩阵的存储以及中间值的存储;运算单元包括矩阵运算单元、累加乘运算单元等通过卷积核与视野域中的数据进行乘积累加运算输出到下一运算单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110365541.4A CN113112002A (zh) | 2021-04-06 | 2021-04-06 | 一种基于fpga轻量级卷积加速器的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110365541.4A CN113112002A (zh) | 2021-04-06 | 2021-04-06 | 一种基于fpga轻量级卷积加速器的设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113112002A true CN113112002A (zh) | 2021-07-13 |
Family
ID=76713950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110365541.4A Pending CN113112002A (zh) | 2021-04-06 | 2021-04-06 | 一种基于fpga轻量级卷积加速器的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113112002A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875012A (zh) * | 2017-02-09 | 2017-06-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速系统 |
CN107463990A (zh) * | 2016-06-02 | 2017-12-12 | 国家计算机网络与信息安全管理中心 | 一种卷积神经网络的fpga并行加速方法 |
CN108229670A (zh) * | 2018-01-05 | 2018-06-29 | 中国科学技术大学苏州研究院 | 基于fpga的深度神经网络加速平台 |
CN108932548A (zh) * | 2018-05-22 | 2018-12-04 | 中国科学技术大学苏州研究院 | 一种基于fpga的稀疏度神经网络加速系统 |
CN208283943U (zh) * | 2018-06-08 | 2018-12-25 | 南京信息工程大学 | 一种基于fpga的cnn加速优化装置 |
CN110110851A (zh) * | 2019-04-30 | 2019-08-09 | 南京大学 | 一种lstm神经网络的fpga加速器及其加速方法 |
CN111382860A (zh) * | 2019-11-13 | 2020-07-07 | 南京航空航天大学 | 一种lstm网络的压缩加速方法及fpga加速器 |
-
2021
- 2021-04-06 CN CN202110365541.4A patent/CN113112002A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463990A (zh) * | 2016-06-02 | 2017-12-12 | 国家计算机网络与信息安全管理中心 | 一种卷积神经网络的fpga并行加速方法 |
CN106875012A (zh) * | 2017-02-09 | 2017-06-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速系统 |
CN108229670A (zh) * | 2018-01-05 | 2018-06-29 | 中国科学技术大学苏州研究院 | 基于fpga的深度神经网络加速平台 |
CN108932548A (zh) * | 2018-05-22 | 2018-12-04 | 中国科学技术大学苏州研究院 | 一种基于fpga的稀疏度神经网络加速系统 |
CN208283943U (zh) * | 2018-06-08 | 2018-12-25 | 南京信息工程大学 | 一种基于fpga的cnn加速优化装置 |
CN110110851A (zh) * | 2019-04-30 | 2019-08-09 | 南京大学 | 一种lstm神经网络的fpga加速器及其加速方法 |
CN111382860A (zh) * | 2019-11-13 | 2020-07-07 | 南京航空航天大学 | 一种lstm网络的压缩加速方法及fpga加速器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111967468B (zh) | 一种基于fpga的轻量级目标检测神经网络的实现方法 | |
US11995767B2 (en) | Apparatus and method for compressing ray tracing acceleration structure build data | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
CN107451659B (zh) | 用于位宽分区的神经网络加速器及其实现方法 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
NL2028745B1 (en) | Apparatus and method for efficient graphics processing including ray tracing | |
US11586417B2 (en) | Exploiting activation sparsity in deep neural networks | |
WO2021057713A1 (zh) | 用多核处理器实现神经网络模型拆分方法及相关产品 | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
US11586601B2 (en) | Apparatus and method for representation of a sparse matrix in a neural network | |
CN110110851A (zh) | 一种lstm神经网络的fpga加速器及其加速方法 | |
CN111062472A (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
US20220343554A1 (en) | Context-aware compression with quantization of hierarchical transform matrices | |
US20230215091A1 (en) | Apparatus and method for tree structure data reduction | |
Chang et al. | A mixed-pruning based framework for embedded convolutional neural network acceleration | |
EP4246449A1 (en) | Apparatus and method for accelerating bvh builds by merging bounding boxes | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN113792621A (zh) | 一种基于fpga的目标检测加速器设计方法 | |
WO2023146669A1 (en) | Stack access throttling for synchronous ray tracing | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
Jang et al. | Smart-Infinity: Fast Large Language Model Training using Near-Storage Processing on a Real System | |
US20220103831A1 (en) | Intelligent computing resources allocation for feature network based on feature propagation | |
EP4246450A1 (en) | Apparatus and method for biased bvh traversal path | |
CN113112002A (zh) | 一种基于fpga轻量级卷积加速器的设计方法 | |
US20230350641A1 (en) | Apparatus and method for generating a quasi-random sequence |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210713 |