CN116187408A - 稀疏加速单元、计算方法及稀疏神经网络硬件加速系统 - Google Patents
稀疏加速单元、计算方法及稀疏神经网络硬件加速系统 Download PDFInfo
- Publication number
- CN116187408A CN116187408A CN202310439341.8A CN202310439341A CN116187408A CN 116187408 A CN116187408 A CN 116187408A CN 202310439341 A CN202310439341 A CN 202310439341A CN 116187408 A CN116187408 A CN 116187408A
- Authority
- CN
- China
- Prior art keywords
- sparse
- index
- data
- output
- adder
- 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.)
- Granted
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 88
- 238000004364 calculation method Methods 0.000 title claims abstract description 52
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 27
- 241001442055 Vipera berus Species 0.000 claims abstract description 110
- 239000011159 matrix material Substances 0.000 claims abstract description 57
- 238000012545 processing Methods 0.000 claims description 40
- 238000007493 shaping process Methods 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 13
- 238000011176 pooling Methods 0.000 claims description 9
- 238000000034 method Methods 0.000 claims description 8
- 238000007781 pre-processing Methods 0.000 claims description 7
- 230000001788 irregular Effects 0.000 abstract description 10
- 239000013598 vector Substances 0.000 description 10
- 230000004913 activation Effects 0.000 description 6
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013138 pruning Methods 0.000 description 2
- 238000000547 structure data Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012795 verification 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/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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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
-
- 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)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种稀疏加速单元、计算方法及稀疏神经网络硬件加速系统。所述稀疏加速单元,包括N个计算单元和i级稀疏加法树,所述计算单元为乘法器结构,所述稀疏加法树采用二叉树结构连接,即:上一级稀疏加法树的稀疏加法器数量是下一级的两倍,上一级的每两个稀疏加法器同时连接下一级的一个稀疏加法器;第一级稀疏加法树的稀疏加法器数量为N/2;各级稀疏加法树的稀疏加法器数据位宽依次递增1bit。所述稀疏神经网络硬件加速系统,包括多个所述稀疏加速单元,可兼容多种稀疏神经网络算法模型。本发明还公开了一种稀疏加速计算方法,基于稀疏加速单元硬件架构解决了稀疏矩阵不规则计算问题,同时在不损失效率下兼容密集型矩阵运算加速。
Description
技术领域
本发明涉及集成电路领域及人工智能领域,具体涉及系统级别的集成电路芯片领域,特别涉及一种稀疏加速单元、计算方法及稀疏神经网络硬件加速系统。
背景技术
神经网络已经在图像识别、目标检测、语音识别和自然语言处理等诸多领域受到广泛应用, 并逐渐成为主导算法,但是,复杂的人工智能应用通常需要更复杂的更深的神经网络模型,这些模型包含庞大的参数量和运算量。尽管最近的研究进展表明,网络压缩例如模型剪枝已成为减轻计算负担的有效手段,但模型剪枝引起的神经网络连接不规则性,阻止了现有的运算加速器如CPU、GPU、FPGA等充分利用神经网络的稀疏性。此外,大多数现有的运算加速器都聚焦于密集型的深度神经网络,无法高效解决稀疏神经网络模型中不规则的计算问题。
发明内容
为克服现有技术存在的缺陷,本发明公开了一种稀疏加速单元、计算方法及稀疏神经网络硬件加速系统。
本发明所述稀疏加速单元,包括N个计算单元和i级稀疏加法树,其中i=log2N, 所述计算单元为乘法器结构,所述稀疏加法树采用二叉树结构连接,即:上一级稀疏加法树的稀疏加法器数量是下一级的两倍,上一级的每两个稀疏加法器同时连接下一级的一个稀疏加法器; 第一级稀疏加法树的稀疏加法器数量为N/2;各级稀疏加法树的稀疏加法器数据位宽依次递增1bit;
所述稀疏加法器的功能为:若本次输入的两组数据索引相同,则将两个输入数据相加作为输出结果,并将两组数据索引中任意一个作为输出索引;否则将数据索引较小的一组输入数据和数据索引作为输出结果,将数据索引较大的一组数据锁存,同时从数据索引较小的一组输入端口载入新的数据进行下一次运算;
优选的,所述稀疏加法器包括比较器、加法器和寄存器,比较器和加法器的两个输入端分别连接稀疏加法器的两个输入端,比较器的输出端连接加法器和输出控制器,加法器的输出端连接输出控制器,所述输出控制器连接加法器的输出端、比较器的输出端和稀疏加法器的输出端,并连接寄存器,由输出控制器根据比较器的比较结果进行输出和数据锁存。
稀疏神经网络硬件加速系统,包括稀疏存储编解码模块和与稀疏存储编解码模块连接的稀疏数据中间处理模块,所述稀疏数据中间处理模块还连接有权重分配模块和移位寄存器单元,所述权重分配模块和移位寄存器单元均连接有多个稀疏加速单元,所述稀疏加速单元还连接有输出处理模块,所述输出处理模块的输出端与所述稀疏数据中间处理模块连接;
优选的,所述稀疏数据中间处理模块包括全局缓存和与全局缓存连接的多组数据预处理单元,所述数据预处理单元包括相互连接的算数逻辑单元和数据整形单元,所述全局缓存与所述输出处理模块的输出端连接;
优选的,所述输出处理模块包括与每个稀疏加速单元连接的一个输出缓存,各个输出缓存连接数据处理单元。
稀疏加速计算方法,基于稀疏神经网络硬件加速系统,包括如下步骤:
步骤1. 按照计算配置对输入数据进行预取和排布形成稀疏矩阵,稀疏矩阵的维度为稀疏加速单元中计算单元的数量N;
步骤2. 对所述稀疏矩阵采用列索引稀疏编码方法,即编码为(有效元素值,列索引)的形式,逐行输入所述稀疏加速单元,逐行输入即每一时钟周期输入稀疏矩阵一行的数据;
步骤3.所述稀疏加速单元进行计算并输出结果;
优选的,所述步骤1中稀疏矩阵数量为多个,对每一稀疏矩阵分别重复步骤1至3,输出结果暂存在全局缓存中,当全部稀疏矩阵计算完成后,在全局缓存中的全部数据拼接形成计算结果输出;
优选的,还包括对暂存在全局缓存中的数据进行计算操作,所述计算操作包括池化操作和激活函数操作。
本发明采用通用稀疏神经网络硬件加速系统架构,可兼容多种稀疏神经网络算法模型,例如LeNet、VGGNet、GoogleNet、ResNet、YOLOv2、YOLOv3、MobileNet、Inception-v2、Inception-v3、Transformer等稀疏化算法模型,通过稀疏加速单元硬件架构高效解决稀疏矩阵不规则计算问题,同时在不损失效率的情况下兼容密集型矩阵运算加速。
附图说明
图1为本发明所述稀疏神经网络硬件加速系统的一种具体实施方式示意图。
图2为本发明所述稀疏加速单元的一种具体实施方式示意图。
图3为本发明所述稀疏加法器的一种具体实施方式示意图。
具体实施方式
下面对本发明的具体实施方式作进一步的详细说明。
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施方式及相应的附图对本发明技术方案进行清楚、完整地阐述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明所述稀疏神经网络硬件加速系统,包括稀疏存储编解码模块和与稀疏存储编解码模块连接的稀疏数据中间处理模块,所述稀疏数据中间处理模块还连接有权重分配模块和移位寄存器单元,所述权重分配模块和移位寄存器单元均连接有多个稀疏加速单元,所述稀疏加速单元还连接有输出处理模块,所述输出处理模块的输出端与所述稀疏数据中间处理模块连接;其中,稀疏加速单元负责接收移位寄存器单元输出的输入特征数据和权重分配模块输出的权重数据进行矩阵乘法运算加速,兼容稀疏矩阵乘法和密集矩阵乘法运算;
移位寄存器单元用于缓存和整形每个稀疏加速单元计算所需要的输入特征数据;
权重分配模块根据输入数据的分配模式,从数据整形单元载入权重数据并分配给稀疏加速单元;
稀疏数据中间处理模块用于对输出处理模块返回的稀疏矩阵运算结果数据进行存储和处理,输出处理模块对稀疏加速单元输出的计算结果进行缓存并根据系统控制器的配置将缓存的计算结果返回稀疏数据中间处理模块。
如图1所示给出本发明所述稀疏神经网络硬件加速系统的一个具体实施方式,包括总线接口、稀疏存储编解码模块、全局缓存、算数逻辑单元、数据整形单元、移位寄存器单元、权重分配模块、稀疏加速单元、输出缓存、数据处理单元、系统控制器、配置接口和中断输出;
所述总线接口与稀疏存储编解码模块连接,所述稀疏存储编解码模块和全局缓存连接,所述全局缓存与算术逻辑单元、数据整形单元、数据处理单元连接,所述算术逻辑单元与全局缓存、数据整形单元连接,所述数据整形单元与全局缓存、算术逻辑单元、移位寄存器单元、权重分配模块连接,所述移位寄存器单元与数据整形单元、稀疏加速单元连接,所述权重分配模块与数据整形单元、稀疏加速单元连接,所述稀疏加速单元与移位寄存器单元、权重分配模块、输出缓存连接,所述输出缓存与稀疏加速单元、数据处理单元连接,所述数据处理单元与输出缓存、全局缓存连接,所述系统控制器与稀疏存储编解码模块、全局缓存、算数逻辑单元、数据整形单元、移位寄存器单元、权重分配模块、稀疏加速单元、输出缓存、数据处理单元、配置接口和中断输出模块连接,所述配置接口与系统控制器连接,所述中断输出模块与系统控制器连接。
图1所示的具体实施方式中,所述稀疏数据中间处理模块包括全局缓存和与全局缓存连接的多组数据预处理单元,所述数据预处理单元包括相互连接的算数逻辑单元和数据整形单元,所述全局缓存与所述输出处理模块的输出端连接;
所述输出处理模块包括与每个稀疏加速单元连接的一个输出缓存,各个输出缓存连接数据处理单元;全局缓存负责存放稀疏解码之后算法模型的权重参数、输入特征数据和模型中间计算结果;图1所示的具体实施例中共128个全局缓存,每个全局缓存的存储深度为512,数据位宽为128bit;
算术逻辑单元根据算术逻辑运算类型,从全局缓存中载入中间计算结果数据进行算术逻辑运算,结果可以写回全局缓存;具体实施例中对128个全局缓存的输出数据,进行例如池化和激活函数等操作,其中池化操作可以为计算最大值,平均值和ROI池化,激活函数可以为计算RELU、LeakyRELU、PRELU等非线性函数;
数据整形单元重整理全局缓存输出的数据,用于配合稀疏加速单元、权重分配模块和全局缓存实现稀疏矩阵运算相关的功能;
输出缓存负责接收所有稀疏加速单元的计算结果数据进行缓存,具体实施例,共128个输出缓存,每个输出缓存负责收集对应稀疏加速单元的计算结果;
数据处理单元负责处理输出缓存到全局缓存的返回数据通路。
稀疏神经网络硬件加速系统的外围控制和接口包括:
系统控制器用于接收CPU通过配置接口传递的控制信号,对系统所有部件进行控制;
配置接口负责接收指令和状态反馈,具体实施例中可采用AMBA(片上总线协议)或APB(外围总线)总线;
总线接口负责传输输入特征数据、权重数据和运算结果数据,可采用AMBA或AXI/AHB(AMBA高性能总线)总线;
中断输出模块:提示CPU稀疏神经网络硬件加速系统运算的状态。
稀疏加速单元包括N个计算单元和i级稀疏加法树,其中i=log2N, 所述计算单元为乘法器结构,所述稀疏加法树采用二叉树结构连接,即:上一级稀疏加法树的稀疏加法器数量是下一级的两倍,上一级的每两个稀疏加法器同时连接下一级的一个稀疏加法器; 第一级稀疏加法树的稀疏加法器数量为N/2;各级稀疏加法树的稀疏加法器数据位宽依次递增1bit;
稀疏加法器的数据位宽递进设置原因:例如每个计算单元PE的输入数据位宽为8bit,计算单元为乘法器,相乘后输出结果为16bit,稀疏加法器接收两个计算单元 PE的输出作为输入;两个输入16bit相加的结果为17bit;因此第一级稀疏加法器的位宽均为17bit,以此类推,之后每一级稀疏加法器的位宽递增;稀疏加法器位宽递增设计的优点为相较于所有稀疏加法器使用同样数据位宽的情况,进一步的减少硬件资源开销,同时降低了计算功耗;
图3所示的具体实施方式中,所述稀疏加法器包括比较器、加法器和寄存器,比较器和加法器的两个输入端分别连接稀疏加法器的两个输入端,比较器的输出端连接加法器和输出控制器,加法器的输出端连接输出控制器,所述输出控制器连接加法器的输出端、比较器的输出端和稀疏加法器的输出端,并连接寄存器,由输出控制器根据比较器的比较结果进行输出和数据锁存;
所述稀疏加法器的功能为:若本次输入的两组数据索引相同,则将两个输入数据相加作为输出结果,并将两组数据索引中任意一个作为输出索引;否则将数据索引较小的一组输入数据和数据索引作为输出结果,将数据索引较大的一组数据锁存,同时从数据索引较小的一组输入端口载入新的数据进行下一次运算。本发明中对索引采用由低至高的方式顺序输入,当输入数据索引值不同时,优先保留计算索引值较低的数据,与数据输入顺序配合,索引较高的数据暂存等待到与其索引值相同的数据输入,再进行计算和输出。
图2所示给出稀疏加速单元的硬件架构的一个具体实施方式,包含8个计算单元(简称为PE)和3级稀疏加法树,稀疏加法树采用二叉树结构连接;稀疏加法树中每一级稀疏加法器的数量分别为4、2和1,三级稀疏加法器的数据位宽分别为17bit、18bit和19bit,图2中M表示在本具体实施例的稀疏神经网络硬件加速系统共有M个并行的稀疏加速单元;
本发明针对输入为不规则结构的数据,所谓不规则结构是输入数据的尺寸通常不满足设定的向量计算维数,其在数学上表示为稀疏矩阵,例如设定向量维数为8,不规则结构数据可能只有 1-3个有效数据。通过数据整形单元与权重分配模块将存储在全局缓存中的不规则结构权重数据进行数据重排与分配形成稀疏矩阵,然后传输至稀疏加速单元进行不规则结构数据的稀疏矩阵运算加速。
本发明中利用稀疏加速单元和稀疏神经网络硬件加速系统可以实现一种稀疏加速计算方法,包括如下步骤:
步骤1.按照计算配置对输入数据进行预取和排布形成稀疏矩阵,稀疏矩阵的维度为稀疏加速单元中计算单元的数量N;
步骤2.对所述稀疏矩阵采用列索引稀疏编码方法,即编码为(有效元素值,列索引)的形式,逐行输入所述稀疏加速单元,逐行输入即每一时钟周期输入稀疏矩阵一行的数据;
步骤3.所述稀疏加速单元进行计算并输出结果。
所述步骤1的一个具体实施例,可由数据预处理单元中的数据整形单元、移位寄存器单元和权重分配模块完成;
输入数据连续存放在全局缓存中,这些输入数据包括形成稀疏矩阵的稀疏权重数据和输入特征数据,系统控制器通过控制数据整形单元、移位寄存器单元和权重分配模块,将全局缓存中的稀疏权重数据和输入特征数据按照稀疏加速单元计算所需数据格式进行排布和分配,当稀疏加速单元进行运算的过程中,数据整形单元可以从全局缓存中预取稀疏加速单元下一次运算所需的稀疏权重数据和输入特征数据;
例如,为形成后文所述的稀疏矩阵W,在全局缓存中存放的稀疏权重数据,按地址连续存放的一个具体实施方式如下:
地址A:(w=1,index=0);
地址A+1: (w=1,index=2);
地址A+2: (w=1,index=5);
地址A+3: (w=1,index=0);
地址A+4: (w=1,index=1);
地址A+5: (w=1,index=4);
地址A+6: (w=1,index=7);
地址A+7: (w=1,index=1);
地址A+8: (w=1,index=2);
地址A+9: (w=1,index=4);
地址A+10:(w=1,index=5);
地址A+11:(w=1,index=2);
地址A+12:(w=1,index=4);
地址A+13:(w=1,index=6);
地址A+14:(w=1,index=0);
地址A+15:(w=1,index=2);
地址A+16:(w=1,index=3);
地址A+17:(w=1,index=5);
地址A+18:(w=1,index=2);
地址A+19:(w=1,index=6);
地址A+20:(w=1,index=7);
地址A+21:(w=1,index=1);
地址A+22:(w=1,index=3);
地址A+23:(w=1,index=6);
地址A+24:(w=1,index=0);
地址A+25:(w=1,index=3);
地址A+26:(w=1,index=6);
地址A+27:(w=1,index=7);
按照稀疏加速单元计算所需数据格式对上述数据进行排布和分配,可形成稀疏矩阵W,数据格式一般根据所需计算稀疏矩阵的维度,而稀疏矩阵维度由后续稀疏加速单元和稀疏加速单元中计算单元的具体数量决定;
例如对于8个计算单元,则稀疏矩阵维度为8,则将稀疏权重数据按照维度为8进行排列和位数补齐,通常以零进行补齐;
例如对于前三个地址:
地址A:(w=1,index=0);
地址A+1:(w=1,index=2);
地址A+2:(w=1,index=5);
补齐后形成稀疏矩阵的第一列的列向量(1,0,1,0,0,1,0,0)T;
以此类推,最后可得到稀疏矩阵W:
所述步骤2的一个具体实施例,采用图2所示稀疏加速单元完成稀疏矩阵乘法Y=W*X运算加速方法如下:
稀疏矩阵W为根据输入生成的权重分配矩阵,所有非零元素值均为1,维度为(8,8);X为一维输入列向量,X=[1 2 3 4 5 6 7 8]T,维度为(8,1)。
步骤2-1:W矩阵采用列索引稀疏编码方法,即编码为(有效元素值,列索引)的形式,列索引值从0开始,将W矩阵的编码为:
第1列:(w=1,index=0),(w=1,index=2),(w=1,index=5);
第2列:(w=1,index=0),(w=1,index=1),(w=1,index=4),(w=1,index=7);
第3列:(w=1,index=1),(w=1,index=2),(w=1,index=4),(w=1,index=5);
第4列:(w=1,index=2),(w=1,index=4),(w=1,index=6);
第5列:(w=1,index=0),(w=1,index=2),(w=1,index=3),(w=1,index=5);
第6列:(w=1,index=2),(w=1,index=6),(w=1,index=7);
第7列:(w=1,index=1),(w=1,index=3),(w=1,index=6);
第8列:(w=1,index=0),(w=1,index=3),(w=1,index=6),(w=1,index=7);
有效元素的数据位宽为8bit,列索引的数据位宽为9bit。
步骤2-2:计算单元为乘法器,一个输入端将输入列向量X持续输入保持不变,W矩阵按照每个时钟周期输入一组稀疏编码(有效元素值,列索引)表示的行向量输入到8个计算单元的另一个输入端中,计算单元对输入数据进行相乘计算;
第一个时钟周期,8个计算单元PE的输入数据分别为:
第1个PE的输入为[x=1,w=1,index=0],输出为[p=1,index=0];
第2个PE的输入为[x=2,w=1,index=0],输出为[p=2,index=0];
第3个PE的输入为[x=3,w=1,index=1],输出为[p=3,index=1];
第4个PE的输入为[x=4,w=1,index=2],输出为[p=4,index=2];
第5个PE的输入为[x=5,w=1,index=0],输出为[p=5,index=0];
第6个PE的输入为[x=6,w=1,index=2],输出为[p=6,index=2];
第7个PE的输入为[x=7,w=1,index=1],输出为[p=7,index=1];
第8个PE的输入为[x=8,w=1,index=0],输出为[p=8,index=0];
输出数据形式为(p,index),其中p为计算单元PE的乘积结果,index为PE乘积结果对应的索引值;
第二个时钟周期,8个PE的输入数据分别为:
第1个PE的输入为[x=1,w=1,index=2],输出为[p=1,index=2];
第2个PE的输入为[x=2,w=1,index=1],输出为[p=2,index=1];
第3个PE的输入为[x=3,w=1,index=2],输出为[p=3,index=2];
第4个PE的输入为[x=4,w=1,index=2],输出为[p=4,index=2];
第5个PE的输入为[x=5,w=1,index=2],输出为[p=5,index=2];
第6个PE的输入为[x=6,w=1,index=2],输出为[p=6,index=2];
第7个PE的输入为[x=7,w=1,index=1],输出为[p=7,index=1];
第8个PE的输入为[x=8,w=1,index=3],输出为[p=8,index=3];
第三个时钟周期,8个PE的输入数据分别为:
第1个PE的输入为[x=1,w=1,index=2],输出为[p=1,index=2];
第2个PE的输入为[x=2,w=1,index=4],输出为[p=2,index=4];
第3个PE的输入为[x=3,w=1,index=4],输出为[p=3,index=4];
第4个PE的输入为[x=4,w=1,index=4],输出为[p=4,index=4];
第5个PE的输入为[x=5,w=1,index=3],输出为[p=5,index=3];
第6个PE的输入为[x=6,w=1,index=6],输出为[p=6,index=6];
第7个PE的输入为[x=7,w=1,index=3],输出为[p=7,index=3];
第8个PE的输入为[x=8,w=1,index=3],输出为[p=8,index=3];
第四个时钟周期,8个PE的输入数据分别为:
第1个PE的输入为[x=1,w=1,index=5],输出为[p=1,index=5];
第2个PE的输入为[x=2,w=1,index=4],输出为[p=2,index=4];
第3个PE的输入为[x=3,w=1,index=5],输出为[p=3,index=5];
第4个PE的输入为[x=4,w=1,index=6],输出为[p=4,index=6];
第5个PE的输入为[x=5,w=1,index=5],输出为[p=5,index=5];
第6个PE的输入为[x=6,w=1,index=6],输出为[p=6,index=6];
第7个PE的输入为[x=7,w=1,index=6],输出为[p=7,index=6];
第8个PE的输入为[x=8,w=1,index=6],输出为[p=8,index=6];
第五个时钟周期,8个PE的输入数据分别为:
第1个PE的输入为[x=1,w=1,index=5],输出为[p=1,index=5];
第2个PE的输入为[x=2,w=1,index=7],输出为[p=2,index=7];
第3个PE的输入为[x=0,w=0,index=END],输出为[p=0,index=END];
第4个PE的输入为[x=0,w=0,index=END],输出为[p=0,index=END];
第5个PE的输入为[x=0,w=0,index=END],输出为[p=0,index=END];
第6个PE的输入为[x=6,w=1,index=7],输出为[p=6,index=7];
第7个PE的输入为[x=0,w=0,index=END],输出为[p=0,index=END];
第8个PE的输入为[x=8,w=1,index=7],输出为[p=8,index=7];
此后,每个时钟周期8个PE的所有输入均为[x=0,w=0,index=END],直至将所有的中间累加结果输出,其中END表示计算单元PE运算结束,数据从计算单元输入到稀疏加法器。
步骤2-3:第一级稀疏加法器每个时钟周期从与其相连的两个计算单元PE载入计算单元输出数据进行运算,载入数据包含乘积结果p及其索引值index;
各个稀疏加法器的计算方法为:若输入的两组数据索引值相同,则将两个输入数据的乘积结果p相加作为当前稀疏加法器的输出结果,并将两组输入的索引值中任意一个作为输出索引值;否则将索引值较小的一组数据作为当前稀疏加法器的输出结果,将索引值较大的一组数据输入数据锁存,同时从索引值较小的一组输入端口载入新的数据和锁存数据进行运算;
由于本发明采用索引值从低到高的顺序输入,两次输入索引值不同,优先让低索引值的数据通过,直到稀疏加法器输入的两组数据索引值相同;
第一个时钟周期,第1级稀疏加法器的所有输出分别为:
[s=3,index=0],[s=3,index=1],[s=5,index=0],[s=8,index=0];
第2级稀疏加法器的所有输出分别为:
[s=3,index=0],[s=13,index=0];
第3级稀疏加法器的输出为:[s=16,index=0];
第二个时钟周期,第1级稀疏加法器的所有输出分别为:
[s=2,index=1],[s=7,index=2],[s=11,index=2],[s=7,index=1];
第2级稀疏加法器的所有输出分别为:
[s=5,index=1],[s=7,index=1];
第3级稀疏加法器的输出为:[s=12,index=1];
第三个时钟周期,第1级稀疏加法器的所有输出分别为:
[s=1,index=2],[s=7,index=2],[s=11,index=2],[s=7,index=1];
第2级稀疏加法器的所有输出分别为:
[s=8,index=2],[s=11,index=2];
第3级稀疏加法器的输出为:[s=19,index=2];
第四个时钟周期,第1级稀疏加法器的所有输出分别为:
[s=2,index=4],[s=7,index=4],[s=5,index=3],[s=15,index=3];
第2级稀疏加法器的所有输出分别为:
[s=9,index=4],[s=20,index=3];
第3级稀疏加法器的输出为:[s=20,index=3];
第五个时钟周期,第1级稀疏加法器的所有输出分别为:
[s=1,index=5],[s=3,index=5],[s=5,index=5],[s=15,index=6];
第2级稀疏加法器的所有输出分别为:
[s=9,index=4],[s=5,index=5];
第3级稀疏加法器的输出为:[s=9,index=4];
第六个时钟周期,第1级稀疏加法器的所有输出分别为:
[s=2,index=7],[s=4,index=6],[s=6,index=6],[s=8,index=7];
第2级稀疏加法器的所有输出分别为:
[s=4,index=5],[s=5,index=5];
第3级稀疏加法器的输出为:[s=9,index=5];
第七个时钟周期,第1级稀疏加法器的所有输出分别为:
[s=2,index=7],[s=4,index=6],[s=6,index=6],[s=8,index=7];
第2级稀疏加法器的所有输出分别为:
[s=4,index=6],[s=21,index=6];
第3级稀疏加法器的输出为:[s=25,index=6];
第八个时钟周期,第1级稀疏加法器的所有输出分别为:
[s=2,index=7],[s=4,index=6],[s=6,index=6],[s=8,index=7];
第2级稀疏加法器的所有输出分别为:
[s=2,index=7],[s=14,index=7];
第3级稀疏加法器的输出为:[s=16,index=7];
第3级稀疏加法器的输出结果为本次计算的结果,s表示稀疏加法器的输出结果;
综上所述,本实施例中第3级稀疏加法器每个时钟周期依次输出向量Y的每一个元素值,经过8个时钟周期后,计算得到最终的向量:
Y=W*X=[16 12 19 20 9 9 25 16]T。
本发明中,将不规则的输入向量整形为统一维度的稀疏矩阵形式,从而可以实现对不规则数据的标准化处理;
如果所述步骤1中稀疏矩阵数量为多个,则对每一稀疏矩阵分别重复步骤1至3,输出结果暂存在全局缓存中,当全部稀疏矩阵计算完成后,在全局缓存中的全部数据拼接形成计算结果输出;
对于暂存在全局缓存中的数据,可以对暂存在全局缓存中的数据进行计算操作,所述计算操作包括池化操作和激活函数操作,进行例如池化和激活函数等操作,其中池化操作可以为计算最大值,平均值和ROI池化,激活函数可以为计算RELU、LeakyRELU、PRELU等非线性函数;
此外,本发明所述的稀疏加速单元还兼容密集型矩阵乘法运算加速,具体地为将计算单元和稀疏加法器配置为密集计算模式,密集计算即输入的W矩阵不是稀疏矩阵,矩阵中全部或大部分元素不为零,每个时钟周期计算单元输入X与W进行乘法运算,采用二叉树结构的稀疏加法器进行乘积部分和累加,最终每个时钟周期在第i级稀疏加法器输出X与W矩阵的密集型矩阵乘法结果向量。
本发明采用通用稀疏神经网络硬件加速系统架构,可兼容多种稀疏神经网络算法模型,例如LeNet、VGGNet、GoogleNet、ResNet、YOLOv2、YOLOv3、MobileNet、Inception-v2、Inception-v3、Transformer等稀疏化算法模型,通过稀疏加速单元硬件架构高效解决稀疏矩阵不规则计算问题,同时在不损失效率的情况下兼容密集型矩阵运算加速。
前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
Claims (8)
1.稀疏加速单元,其特征在于, 包括N个计算单元和i级稀疏加法树,其中i=log2N,所述计算单元为乘法器结构,所述稀疏加法树采用二叉树结构连接,即:上一级稀疏加法树的稀疏加法器数量是下一级的两倍,上一级的每两个稀疏加法器同时连接下一级的一个稀疏加法器; 第一级稀疏加法树的稀疏加法器数量为N/2;各级稀疏加法树的稀疏加法器数据位宽依次递增1bit;
所述稀疏加法器的功能为:若本次输入的两组数据索引相同,则将两个输入数据相加作为输出结果,并将两组数据索引中任意一个作为输出索引;否则将数据索引较小的一组输入数据和数据索引作为输出结果,将数据索引较大的一组数据锁存,同时从数据索引较小的一组输入端口载入新的数据进行下一次运算。
2.如权利要求1所述稀疏加速单元,其特征在于,所述稀疏加法器包括比较器、加法器和寄存器,比较器和加法器的两个输入端分别连接稀疏加法器的两个输入端,比较器的输出端连接加法器和输出控制器,加法器的输出端连接输出控制器,所述输出控制器连接加法器的输出端、比较器的输出端和稀疏加法器的输出端,并连接寄存器,由输出控制器根据比较器的比较结果进行输出和数据锁存。
3.稀疏神经网络硬件加速系统,其特征在于,包括稀疏存储编解码模块和与稀疏存储编解码模块连接的稀疏数据中间处理模块,所述稀疏数据中间处理模块还连接有权重分配模块和移位寄存器单元,所述权重分配模块和移位寄存器单元均连接有多个如权利要求1至2任意一项所述稀疏加速单元,所述稀疏加速单元还连接有输出处理模块,所述输出处理模块的输出端与所述稀疏数据中间处理模块连接。
4.如权利要求3所述稀疏神经网络硬件加速系统,其特征在于,所述稀疏数据中间处理模块包括全局缓存和与全局缓存连接的多组数据预处理单元,所述数据预处理单元包括相互连接的算数逻辑单元和数据整形单元,所述全局缓存与所述输出处理模块的输出端连接。
5.如权利要求3所述稀疏神经网络硬件加速系统,其特征在于,所述输出处理模块包括与每个稀疏加速单元连接的一个输出缓存,各个输出缓存连接数据处理单元。
6.稀疏加速计算方法,其特征在于, 基于权利要求4所述稀疏神经网络硬件加速系统,包括如下步骤:
步骤1.按照计算配置对输入数据进行预取和排布形成稀疏矩阵,稀疏矩阵的维度为稀疏加速单元中计算单元的数量N;
步骤2.对所述稀疏矩阵采用列索引稀疏编码方法,即编码为(有效元素值,列索引)的形式,逐行输入权利要求1至2任意一项所述稀疏加速单元,逐行输入即每一时钟周期输入稀疏矩阵一行的数据;
步骤3.所述稀疏加速单元进行计算并输出结果。
7.如权利要求6所述稀疏加速计算方法,其特征在于,所述步骤1中稀疏矩阵数量为多个,对每一稀疏矩阵分别重复步骤1至3,输出结果暂存在全局缓存中,当全部稀疏矩阵计算完成后,在全局缓存中的全部数据拼接形成计算结果输出。
8.如权利要求7所述稀疏加速计算方法,其特征在于,还包括对暂存在全局缓存中的数据进行计算操作,所述计算操作包括池化操作和激活函数操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310439341.8A CN116187408B (zh) | 2023-04-23 | 2023-04-23 | 稀疏加速单元、计算方法及稀疏神经网络硬件加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310439341.8A CN116187408B (zh) | 2023-04-23 | 2023-04-23 | 稀疏加速单元、计算方法及稀疏神经网络硬件加速系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116187408A true CN116187408A (zh) | 2023-05-30 |
CN116187408B CN116187408B (zh) | 2023-07-21 |
Family
ID=86449260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310439341.8A Active CN116187408B (zh) | 2023-04-23 | 2023-04-23 | 稀疏加速单元、计算方法及稀疏神经网络硬件加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116187408B (zh) |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229967A (zh) * | 2016-08-22 | 2017-10-03 | 北京深鉴智能科技有限公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107239823A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN107689948A (zh) * | 2016-08-22 | 2018-02-13 | 北京深鉴科技有限公司 | 应用于神经网络硬件加速系统的高效数据访存管理装置 |
US20180046914A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Compression method for deep neural networks with load balance |
CN107704916A (zh) * | 2016-08-12 | 2018-02-16 | 北京深鉴科技有限公司 | 一种基于fpga实现rnn神经网络的硬件加速器及方法 |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
CN108268422A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 |
CN108268320A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于网络规模k均值群集的硬件加速器架构和模板 |
CN108268424A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理具有偏斜非零分布的稀疏矩阵数据的异构硬件加速器架构 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108932548A (zh) * | 2018-05-22 | 2018-12-04 | 中国科学技术大学苏州研究院 | 一种基于fpga的稀疏度神经网络加速系统 |
CN109598338A (zh) * | 2018-12-07 | 2019-04-09 | 东南大学 | 一种基于fpga的计算优化的卷积神经网络加速器 |
CN109635944A (zh) * | 2018-12-24 | 2019-04-16 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN109993683A (zh) * | 2017-12-29 | 2019-07-09 | 英特尔公司 | 任意神经网络的机器学习稀疏计算机制、用于训练机制的算术计算微架构以及稀疏性 |
WO2021123725A1 (en) * | 2019-12-19 | 2021-06-24 | Arm Limited | Sparse finetuning for artificial neural networks |
US20220019430A1 (en) * | 2020-07-14 | 2022-01-20 | Alibaba Group Holding Limited | Sparse matrix calculations untilizing ightly coupled memory and gather/scatter engine |
-
2023
- 2023-04-23 CN CN202310439341.8A patent/CN116187408B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239823A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
US20180046914A1 (en) * | 2016-08-12 | 2018-02-15 | Beijing Deephi Intelligence Technology Co., Ltd. | Compression method for deep neural networks with load balance |
CN107704916A (zh) * | 2016-08-12 | 2018-02-16 | 北京深鉴科技有限公司 | 一种基于fpga实现rnn神经网络的硬件加速器及方法 |
CN107229967A (zh) * | 2016-08-22 | 2017-10-03 | 北京深鉴智能科技有限公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107689948A (zh) * | 2016-08-22 | 2018-02-13 | 北京深鉴科技有限公司 | 应用于神经网络硬件加速系统的高效数据访存管理装置 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN108268320A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于网络规模k均值群集的硬件加速器架构和模板 |
CN108268422A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 |
CN108268424A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理具有偏斜非零分布的稀疏矩阵数据的异构硬件加速器架构 |
CN109993683A (zh) * | 2017-12-29 | 2019-07-09 | 英特尔公司 | 任意神经网络的机器学习稀疏计算机制、用于训练机制的算术计算微架构以及稀疏性 |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108932548A (zh) * | 2018-05-22 | 2018-12-04 | 中国科学技术大学苏州研究院 | 一种基于fpga的稀疏度神经网络加速系统 |
CN109598338A (zh) * | 2018-12-07 | 2019-04-09 | 东南大学 | 一种基于fpga的计算优化的卷积神经网络加速器 |
CN109635944A (zh) * | 2018-12-24 | 2019-04-16 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
WO2021123725A1 (en) * | 2019-12-19 | 2021-06-24 | Arm Limited | Sparse finetuning for artificial neural networks |
US20220019430A1 (en) * | 2020-07-14 | 2022-01-20 | Alibaba Group Holding Limited | Sparse matrix calculations untilizing ightly coupled memory and gather/scatter engine |
Non-Patent Citations (2)
Title |
---|
伍元聪: "稀疏神经网络芯片设计关键技术研究", 《中国博士学位论文全文数据库信息科技辑》, no. 04, pages 135 - 17 * |
张加浩: "基于异构平台的稀疏神经网络高性能计算优化研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 06, pages 137 - 39 * |
Also Published As
Publication number | Publication date |
---|---|
CN116187408B (zh) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109543140B (zh) | 一种卷积神经网络加速器 | |
Kang | Accelerator-aware pruning for convolutional neural networks | |
US10726336B2 (en) | Apparatus and method for compression coding for artificial neural network | |
Ryu et al. | Bitblade: Area and energy-efficient precision-scalable neural network accelerator with bitwise summation | |
CN107729989B (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
CN112116084A (zh) | 可重构平台上固化全网络层的卷积神经网络硬件加速器 | |
You et al. | RSNN: A software/hardware co-optimized framework for sparse convolutional neural networks on FPGAs | |
CN111797982A (zh) | 基于卷积神经网络的图像处理系统 | |
CN112734020B (zh) | 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法 | |
CN109615071B (zh) | 一种高能效的神经网络处理器、加速系统及方法 | |
CN111368988B (zh) | 一种利用稀疏性的深度学习训练硬件加速器 | |
CN103369326A (zh) | 适于高性能视频编码标准hevc的变换编码器 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN111240746A (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN113283587A (zh) | 一种Winograd卷积运算加速方法及加速模块 | |
CN106656213B (zh) | 基于k段分解的低复杂度极化码折叠硬件构架的实现方法 | |
Mao et al. | Fta-gan: A computation-efficient accelerator for gans with fast transformation algorithm | |
CN116187408B (zh) | 稀疏加速单元、计算方法及稀疏神经网络硬件加速系统 | |
CN116167425B (zh) | 一种神经网络加速方法、装置、设备及介质 | |
Wu et al. | Skeletongcn: a simple yet effective accelerator for gcn training | |
CN115222028A (zh) | 基于fpga的一维cnn-lstm加速平台及实现方法 | |
CN115130672A (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN114065923A (zh) | 一种卷积神经网络的压缩方法、系统及加速装置 | |
CN110555519B (zh) | 一种基于符号随机计算的低复杂度卷积神经网络架构 | |
CN112734021A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231218 Address after: No. 15, Liunan Avenue, Liuwu New District, Lhasa, Xizang Autonomous Region 851414 Patentee after: Lhasa Xingshan Technology Co.,Ltd. Address before: No. 704, 7th Floor, Building 1, No. 1800 Yizhou Avenue Middle Section, Chengdu High tech Zone, Chengdu, Sichuan, 610041 Patentee before: CHENGDU ZHENSHI TECHNOLOGY CO.,LTD. |
|
TR01 | Transfer of patent right |