CN114970810A - 适用于稀疏神经网络计算阵列的数据处理方法和加速器 - Google Patents
适用于稀疏神经网络计算阵列的数据处理方法和加速器 Download PDFInfo
- Publication number
- CN114970810A CN114970810A CN202210462549.7A CN202210462549A CN114970810A CN 114970810 A CN114970810 A CN 114970810A CN 202210462549 A CN202210462549 A CN 202210462549A CN 114970810 A CN114970810 A CN 114970810A
- Authority
- CN
- China
- Prior art keywords
- data
- column
- continuous
- effective
- vector
- 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/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/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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提出一种适用于稀疏神经网络计算阵列的数据处理方法和加速器。本发明将特征图数据进行编码存储,采用的编码方法是将数据以行向量为单位进行存储,以行向量为单位进行编码存储和解码输出,有利于大型矩阵的分块操作,解决了稀疏矩阵中连续全零行的存储问题,存储开销比较小。本发明编码传输方式,保留传输必要有效的列向量数据,对于无效计算的零向量使用游程编码,可快速跳过大量无效零向量,直接选择有效向量计算,加快计算速度减少执行周期。
Description
技术领域
本发明涉及深度学习数据编解码领域,具有涉及适用于稀疏神经网络计算阵列的数据处理方法和加速器。
背景技术
近年来随着深度学习在图像处理、自然语言文本处理、序列建模等方面的技术应用落地实现,为了解决深度学习神经网络计算需求不断增长的问题,通过定制化专用计算硬件(例如GPU、FPGA、ASIC),通过对深度神经网络进行领域特定体系结构设计提升神经网络的计算效率和速度。随着越来越多的公司开发出了用于深度学习的硬件加速器应用于这些领域,优秀的硬件架构也不断设计实现。例如脉动阵列TPU结构、脉动阵列行固定数据流结构。
在神经网络深度学习领域方面,用于雷达回波图像处理、医学造影成像、文本挖掘、电商股票预测、语音识别、序列建模等方面的卷积神经网络模型中,由于数据收集过程中绝大部分数值为零或当处理图像时包含许多黑色像素,特征图数据包含大量的零元素且零元素呈不规则分布呈稀疏化,因此这些方面的神经网络模型的输入数据经常是稀疏矩阵。另外由于神经网络推断过程中激活函数引入大量的零,多层网络模型的输入值较多为零,并且通过剪枝操作,神经网络的权重数据也是包含大量零元素的稀疏矩阵。因此需要设计高效的压缩编码方法来存储大量稀疏矩阵数据。
另外由于模型剪枝带来的稀疏性,数据矩阵具有非常不规则稀疏化分布特点,这点对于计算设备中的数据访问和大规模并行计算非常不友好。目前用于神经网络加速的FPGA硬件加速平台,大部分采用脉动阵列多个PE阵列作为计算处理结构。脉动阵列行固定数据流结构、TPU结构这些硬件结构,对于密集型深度神经网络具有很好的表现,但对于稀疏型的网络却不理想,造成大量的硬件资源以及能耗的浪费。并且行固定数据流结构和TPU结构在面对处理稀疏矩阵时候,由于数据传递的关系,导致无法做到数据有效调度,目前主要操作是跳零操作,导致时钟周期的浪费和资源空闲等待,从而造成大量的硬件资源以及能耗的浪费。例如90%稀疏性甚至更高的矩阵的运算时间和一个完全稠密的矩阵运算时间相仿,这意味着即使知道平台绝大部分的计算处于无效浪费,但不得不承受由于不规则稀疏化分布导致的计算平台空转和消耗。同时处理数据90%稀疏性意味着计算平台的性能提升的上限空间是10倍。
发明内容
为了解决卷积神经网络运算中大量稀疏矩阵数据导致的压缩存储问题、时钟资源和计算资源的浪费,以及数据访存搬运能耗开销大的技术问题,本发明提出一种适用于稀疏神经网络计算阵列的数据处理方法和加速器。
本发明通过以下技术方案实现:
适用于稀疏神经网络计算阵列的数据处理方法,包括:
将特征图数据进行编码存储:使用values数组存储特征图数据有效数据行中非零的有效元素数据,对于1列或多列连续的全零行则存储0值作为连续全零行标记;使用column_indices数组存储values数组中每个有效元素数据在有效数据行中的列索引和0值对应的连续全零行数量;使用column_num数组存储每个有效数据行的有效元素数据个数;
读取编码存储的特征图数据并进行解码,得到解码后的特征图数据;
将解码后的特征图数据中多行行向量整合为连续列向量,得到整合后的特征图数据;
对整合后的特征图数据进行编码传输,编码传输时对连续列向量中的连续全零列向量进行游程编码,得到待计算的特征图数据;
调度待计算的特征图数据中除连续全零列向量外的连续列向量和卷积核,并进行卷积计算。
优选的,读取编码存储的特征图数据并进行解码具体是:
读取编码存储的特征图数据,解码的当前行在编码前特征图数据的行索引记为row_index,同时对values、column_indices和column_num三个数组中的数据进行遍历,遍历values数组中的数据x,如果数据x不为0,则表示解码的当前行为有效数据行,数据x是当前行的第一个有效元素数据,column_indices数组对应取出的是数据x在当前行的列索引,column_num数组对应的是当前行的有效元素数据个数n;根据n值遍历values数组取出后续与数据x处于同一行的有效元素数据,直到当前行的有效元素数据全部取出,解码得到当前行,然后行索引更新为row_index=row_index+1,继续进行遍历;如果数据x为0,则表示解码的当前行为连续全零行,对应column_indices数组取出的是连续全零行的列数;遍历完得到解码后的特征图数据。
优选的,对整合后的特征图数据进行编码传输得到待计算的特征图数据具体是:对连续列向量中的连续全零列向量,使用游程编码标记连续数量,并且使用1位标记位,标记位为0时,向量位数值为全零列向量连续数量;标记位为1时,向量位为连续列向量中的有效向量数值;
调度连续列向量时,跳过标记位为0的连续全零列向量。
优选的,所述卷积核是通过提取卷积核权重有效向量得到。
进一步的,调度卷积核过程中对卷积核进行预排序处理:
(1)每个卷积核通道标记有效向量个数(标记:0、1、2、3),根据卷积核多通道的总有效向量个数进行排序;
(2)按序选取一组多个卷积核,组内对每个卷积核的稀疏分布类型进行标记排序;
(3)优先调度总有效向量个数相同且最大的一组卷积核;
(4)重复操作(2)、(3),空缺时补充总有效向量个数次大的卷积核,直至处理完毕。
优选的,待计算的特征图数据采用两组缓冲模块存储,当第一组缓存模块填充完毕后,对第二组缓存模块开始进行填充数据,同时调度第一组缓存模块的数据进行卷积计算,卷积计算后调度第二组缓存模块的数据进行卷积计算,重新对第一缓存模块进行填充,依次类推,两组缓存模块交替进行填充和调度。
适用于稀疏神经网络计算阵列的加速器,包括CSR改进型编码模块、解码模块、缓存模块和列向量整合输出模块、有效数据调度控制器;
CSR改进型编码模块用于将特征图数据进行编码存储:使用values数组存储特征图数据有效数据行中非零的有效元素数据,对于1列或多列连续的全零行则存储0值作为连续全零行标记;使用column_indices数组存储values数组中每个有效元素数据在有效数据行中的列索引和0值对应的连续全零行数量;使用column_num数组存储每个有效数据行的有效元素数据个数;
解码模块用于读取编码存储的特征图数据并进行解码,得到解码后的特征图数据;
列向量整合输出模块用于将解码后的特征图数据中多行行向量整合为连续列向量,得到整合后的特征图数据;对整合后的特征图数据进行编码传输给缓存模块;
有效数据调度控制器用于调度缓存模块中待计算的特征图数据至卷积模块;
卷积模块用于将待计算的特征图数据中的连续列向量和卷积核进行卷积计算。
优选的,缓存模块设置两组。
优选的,列向量整合输出模块对整合后的特征图数据进行编码传输:对连续列向量中的连续全零列向量,使用游程编码标记连续数量,并且使用1位标记位,标记位为0时,向量位数值为全零列向量连续数量;标记位为1时,向量位为对连续列向量中的有效向量数值;
有效数据调度控制器调度连续列向量时,跳过标记位为0的连续全零列向量。
与现有技术相比,本发明具有如下的有益效果:
本发明将特征图数据进行编码存储,采用的编码方法是将数据以行向量为单位进行存储,相比以列向量为单位存储,以行向量为单位进行编码存储和解码输出,有利于大型矩阵的分块操作。对于矩阵分块拆分操作,使用多行行向量拆分比使用多列列向量拆分更方便实现。与原CSR编码方式相比,解决了稀疏矩阵中连续全零行的存储问题,使用values数组标记0和column_indices数组标记连续全零行的个数,存储开销比较小。采用本发明所述的存储有效数据行的有效元素数据个数相比记录存储在values数组中的偏移量带来的存储效率的收益将是非常显著的。本发明编码传输方式,保留传输必要有效的列向量数据,对于无效计算的零向量使用游程编码,可快速跳过大量无效零向量,直接选择有效向量计算,加快计算速度减少执行周期,提高资源计算单元利用率,减少相关时序资源和计算资源的空载。
进一步的,在解码时,相比原CSR解码方式,本发明改进后的解码方式可以随时确定所解码的数据在原矩阵的行索引,行索引计算简单。本发明改进后的解码方式,相比CSR解码方式,解码步骤和计算更加简单,相应的解码速度也会更快。更快的解码速度对于提升硬件加速平台的阵列计算效率具有一定意义。
进一步的,在传输过程中,保留传输必要有效的列向量数据,同时对于无效计算的零向量使用游程编码;向量传输只增加1位宽的有效向量标记位,节约片上有限存储空间,没有额外的存储开销;通过使用1位标记位和游程编码invalid_num数值实现传输过程中只进行有效数据范围内的计算,由于有效向量、无效向量的间隔分布,可快速跳过大量无效零向量,直接选择有效向量计算,通过invalid_num数值计算结果数据的矩阵坐标位置,实现阵列的连续有效计算,没有空载等待。
进一步的,通过提取卷积核权重有效向量为卷积窗口,对计算速度和计算单元利用率进一步提高。
进一步的,通过对不同稀疏分布类型的卷积核权重预排序处理,多个PE阵列优先分配稀疏分布类型相同的卷积核数据,以达到近似相同的计算处理速度,以改善分配不同稀疏分布类型卷积核的PE计算阵列之间的计算速度不一致而相互等待的问题。
进一步的,对PE阵列使用传输向量双缓冲设计,两个缓存的乒乓操作,实现了PE阵列处理的连续计算,避免了读取传输数据时PE阵列的空闲等待时间。
附图说明
图1为CSR改进型编码示意图。
图2为CSR改进型编码与CSR编码对比数据图。
图3为行固定数据流结构。
图4为特征图数据列向量编码传输示意图。
图5为特征图数据列向量编码示意图。
图6为列向量整合传输模块示意图。
图7为基于移位寄存器的链式结构示意图。
图8为卷积计算有效数据调度控制器示意图。
图9为卷积计算数据调度状态机示意图。
图10为{x,0,y}提取有效向量卷积核{x,y}计算示意图。
图11为特征图有效数据调度对比示意图。
图12为卷积核权重和特征图数据有效调度对比示意图。
图13为计算阵列有效调度双缓冲设计示意图。
图14为VGG16卷积层网络有效数据调度测试示意图。
图15为本发明数据处理流程示意图。
图16为本发明加速器整体结构示意图。
具体实施方式
为了进一步理解本发明,下面结合实施例对本发明进行描述,这些描述只是进一步解释本发明的特征和优点,并非用于限制本发明的权利要求。
对于用于稀疏图像处理(例如雷达回波外推)、自然语言文本处理等方面的神经网络模型(例如RNN、LSTM、CNN、ConvLSTM等模型),首先采用剪枝量化的方式对深度学习神经网络模型进行压缩,并且对权重进行重训练微调使模型可以保持相同的准确率。深度学习神经网络模型剪枝后的权重数据是稀疏数据,并且特征图的数据也是稀疏数据,对特征图和权重的稀疏数据使用CSR改进型编码进行存储。
目前硬件加速器架构设计的主流方向是脉动阵列结构设计,脉动阵列是一种由数据流关系制约的紧密耦合的PE组成的网络,其网络内部的PE单元进行数据传递,计算结果或将存储在PE内部,或将传递给下游单元,以提高存储器的数据带宽和提高数据复用。下面以进行卷积操作的脉动阵列行固定数据流结构为例进一步阐释,本发明提出的结构设计方法不限于此类结构,适用于脉动阵列多PE密集型计算结构。
如图1所示,所提出的一种稀疏数据编解码方法,在CSR编码基础上进行改进,同样使用三个数组:values、column_indices、column_num进行存储信息。编码时,对原矩阵进行行有优先的逐行遍历,values数组存储有效数据行的非零元素数据(即有效元素数据),如果遇到1列或多列连续的全零行则存储0值作为连续全零行标记;column_indices数组存储values数组中每个有效元素数据在原矩阵有效数据行中的列索引和0值对应的连续全零行数量;column_num数组存储每个有效数据行的有效元素数据个数。解码时,同时对三个数组逐个遍历,首先每个有效数据行在原矩阵的行索引记为row_index(初始值记为0),遍历values数组,如果x不为0,则表示解码有效数据行,x是该有效数据行的第一个非零元素数值,column_indices数组对应取出的是x在该有效数据行的列索引,column_num数组对应的是该有效数据行的有效元素数据个数(n)。根据n值遍历values数组取出后续与x处于同一有效数据行的有效元素数据,直到该有效数据行的有效元素数据全部取出,并且下一行的行索引为row_index+1。如果x为0,则表示解码遇到了连续全零行,对应column_indices数组取出的是连续全零行的列数(记为row_num,如果为1,则是1列全零行),则下一个有效数据行的行索引为row_index+row_num。即对于连续全零行,只有values数组和column_indices数组进行标记存储,column_num数组不存储其信息。当需要多通道传输数据时,可以先对row_offsets数据解码得到每个有效数据行在values数组中的起始地址信息。当读取传输指定有效数据行的数据时,根据对应有效数据行在values数组的起始地址信息,解码得到对应的数据。
CSR改进型编码是将数据以行向量为单位进行存储,相比以列向量为单位存储,以行向量为单位进行编码存储和解码输出,有利于大型矩阵的分块操作。对于矩阵分块拆分操作,使用多行行向量拆分比使用多列列向量拆分更方便实现。
如图2所示,CSR改进型编码在保持与原CSR编码相同的压缩比情况下,相对使用更少的位宽,减少存储空间。与原CSR编码方式相比,首先是解决了稀疏矩阵中连续全零行的存储问题,使用values数组标记0和column_indices数组标记连续全零行的个数,存储开销比较小。其次,对于有效数据行在原矩阵的行索引信息,原CSR编码使用row_offsets数组存储每个有效数据行的第一个非零元素数据在values数组中的下标索引,这种存储记录方式存在两个问题:1、当遇到大规模的稀疏矩阵,有效元素数据个数具有一定规模数量时,记录在values数组中的索引下标即偏移数值,会比记录每个有效数据行的有效元素数据个数需要更多的地址空间,相应会耗费更多的存储空间。事实上神经网络算法具有数据规模大的特点,采用本发明所述的存储有效数据行的有效元素数据个数相比记录存储在values数组中的偏移量带来的存储效率的收益将是非常显著的;2、在解码时,相比原CSR解码方式,本发明改进后的解码方式可以随时确定所解码的数据在原矩阵的行索引,行索引计算简单。本发明改进后的解码方式,相比CSR解码方式,解码步骤和计算更加简单,相应的解码速度也会更快。更快的解码速度对于提升硬件加速平台的阵列计算效率具有一定意义。
脉动阵列行固定数据流结构,主要进行卷积操作,支持纵横传输、斜向传输和单点广播。PE单元之间,卷积核权重数据横向传递在PE阵列中按行水平移动传输,特征图数据对角线传递,中间结果数据纵向传递,每一列垂直累积所有PE单元的部分和并缓存,实现特征图数据、卷积核数据和中间结果数据的复用。如图3所示,行固定数据流结构需要多输入通道提供输入向量。连续输入向量数据之间存在部分数据复用,可使用多行移位寄存器链结构实现。
神经网络PE阵列一般是需要多通道输入,本质上是对PE阵列进行输入列向量,因此设计列向量整合模块和传输向量编码方法。列向量整合模块根据PE阵列大小将解码后的多行行向量数据整合输出连续多个列向量,以满足PE阵列的列向量输入要求,同时对连续的列向量进行零向量游程编码设置。
如图4所示,在传输过程中,保留传输必要有效的列向量数据,同时对于无效计算的零向量使用游程编码;向量传输只增加1位宽的有效向量标记位,节约片上有限存储空间,没有额外的存储开销;当传输列向量的行地址改变时,传输其对应的行地址。如图5所示。向量数值位,根据阵列通道数和数据位宽设置向量传输位宽;向量有效标记位,位宽为1,用来标记向量是否有效。当全零向量时标记位为0,向量数值位使用一个通道位宽表示该段零向量游程编码的连续数值;当有效向量时标记位为1,向量数值位为阵列有效计算的有效向量。
通过使用1位标记位和游程编码invalid_num数值实现传输过程中只进行有效数据范围内的计算,由于有效向量、无效向量的间隔分布,可快速跳过大量无效零向量,直接选择有效向量计算,通过invalid_num数值计算结果数据的矩阵坐标位置,实现阵列的连续有效计算,没有空载等待。另外在传输,当传输的列向量的行地址发生改变时,传输其行地址数值,否则无需传输。传输列向量的行地址用于后续阵列计算结果数据的坐标地址等信息。
对于有效数据范围内的计算,对于卷积,根据卷积计算滑动窗口理论,由于数据传输的逐行遍历特性,滑动窗口只能在矩阵内依次滑动,对于稀疏性极大的稀疏矩阵,有效向量分布稀疏,大量零值行向量分布,滑动窗口大部分为空白滑动无效计算等待周期;本发明使用列向量配合游程编码特性,可有效确定卷积滑动窗口有效计算起始终止位置,避免空白滑动,提高计算性能。同理适用于矩阵乘法操作。在传输过程中,对连续输入列向量使用全零向量游程编码,即可确定矩阵内部有效计算范围,可使得当顺位输入向量为零向量时,可直接选择处理后一位向量数据且必为有效计算,从而实现连续有效计算。
列向量整合模块的设计满足PE阵列设计的多通道输入输出整合要求,避免由于多通道导致的多块片外存储需求。相比原始数据全部解码存储在片上系统存储空间有限的片上SRAM中,使用零向量游程编码方式标记存储,可有效减少存储空间;并且由于解码快速方便,通过使用解码模块和FIFO,根据PE向量计算需求,只解码存储部分所需数据向量,从而减少存储空间。其解码模块与数据计算单元之间采用流水线结构,实现了访存、解码与计算的并行执行。FIFO列向量整合模块(如图6所示)使用移位寄存器和菊花链形式(如图7所示),复用部分存储数据,满足卷积操作数据向量要求。
根据卷积滑动窗口计算过程,设计特征图有效向量调度方法。具体实施为,加速器中高端数据调度控制器(如图8所示)内部的卷积计算Conv_state状态机根据特征图数据向量的valid状态码和卷积计算状态控制调度特征图的有效向量。
状态机状态设置根据卷积核大小确定,以3×3卷积核设计卷积窗口计算进程状态机,根据3×3卷积核的卷积窗口,卷积计算进程分为3个卷积核列向量依次与特征图数据列向量相乘后结果累加的计算过程。以卷积核3个列向量相乘计算划分状态,对于3×3卷积核,卷积滑动窗口的特征图数据矩阵{a0 a1 a2},状态机设置4个状态conv_state,如图9所示:
3′b000:卷积计算开始状态,调度有效向量;
3′b100:该时钟周期有效向量a0计算,调度下一周期有效向量;
3′b010:a0零向量,该时钟周期有效向量a1向量计算,调度下一周期有效向量;
3′b110:a0有效向量计算已完成,该时钟周期a1有效向量完成计算,调度下一周期有效向量。
状态机传输列向量的向量标记位valid判断是否为有效向量,若为零向量,向量位channel_data0为连续零向量个数invalid_num;根据conv_state和invalid_num,状态机进行状态转换,并根据卷积计算进程调度特征图有效向量和对应的卷积核列向量以供PE阵列进行有效计算,并判断特征图和卷积核数据寄存器数组reg_array是否更新以供后续调度输出。其中特征图数据列向量寄存器数组reg_array使用移动寄存器实现,当需要更新数据时内部向量移位完成更新。
计算阵列通过状态编码conv_state进行中间数据的累加计算并判断卷积窗口计算是否完成;计算阵列对于卷积计算结果数据的地址计算,使用特征图数据列向量的row_addr和零向量游程invalid_num,计算卷积结果有效向量的行地址row_addr和列地址col_addr,从而不影响卷积结果数据的地址顺序;对于特征图数据列向量和卷积核数据列向量,通过设置寄存器数组reg_array,计算阵列根据状态机的调度地址index_fmap和index_kernel选取计算数据,实现对特征图数据向量的跳零操作和调度匹配对应的卷积核向量操作。
其中由于传输向量有效向量和连续零向量间隔分布特点,每个调度周期只需要对待输入位宽为1的向量标记位进行检测,并根据conv_state和invalid_num可以直接确定调度数据的地址index_fmap,标记检测只需一次并且调度地址计算相对简单,所需的额外开销相对较少。
由于卷积窗口滑动的计算过程和稀疏特征图有效向量和零向量间隔分布的特点,通过寄存器数组reg_array提供有效向量调度实现了卷积窗口滑动计算过程中的数据复用。同时PE阵列内部计算单元不需要专门存储特征图数据和卷积核数据,每个周期计算所需的数据均由前一列计算单元或外部输入提供,同样也提高了数据复用程度。
针对具有稀疏分布的卷积核权重矩阵的数据调度分配设计如下的阵列处理机制。相对于{x,y,z}和{x,0,0}、{0,x,0}、{0,0,x}类型分布,{0,x,y}、{x,0,y}、{x,y,0}类型的有效权值向量分布由于有效向量和零向量间隔分布的有效向量数据调度更为困难。考虑到PE阵列的卷积核切换以尽量减少所需的硬件操作开销,因此设计不同稀疏分布的卷积核权重通用的有效向量调度方法。对于{0,x,y}、{x,0,y}、{x,y,0}类型的卷积核,全部提取为{x,y}的卷积核有效权值向量矩阵,即使用{x,y}的卷积窗口进行滑动计算,转换使得可在特征图向量矩阵上连续滑动计算。如图10,以{x,0,y}为例说明。
卷积滑动窗口{x,0,y}对应计算产生的数据为dn,x权值向量对应的结果数据an,y权值向量对应的结果数据bn,dn=an+bn。当使用{x,y}进行滑动时依次计算产生结果数据an、bn-1。阵列内部结果数据整合模块依次接收处理an、bn-1生成对应的结果数据dn。由于{x,y}权值矩阵内部全部都为有效向量,可使用特征图向量标记位和全零向量游程编码传输特性,当传输向量标记为连续全零向量,根据游程编码数目调度选择后续顺位的有效向量并调度对应的权值向量,从而保证了PE阵列进行有效向量计算。
该方法同理使用于{0,x,y}、{x,y,0},只需在结果数据整合模块对结果数据的列地址进行修正。而{x,0,0}、{0,x,0}、{0,0,x}只需使用单个向量依次连续遍历计算即可,且可使用有效向量和连续零向量间隔分布传输特性。
使用sparse_kernel标记卷积核权重稀疏分布类型,PE阵列根据sparse_kernel设置计算类型以适合卷积核权重稀疏类型的计算。此外,特征图有效向量调度状态机conv_state也根据sparse_kernel设置对应的状态转换和数据调度处理。提取执行计算的卷积核为{x,y}时,卷积窗口计算进程只在3′b000和3′b100两个状态之间转换,对应的数据调度处理也相应简单;提取执行计算的卷积核为{x}时,卷积窗口计算进程只有在3′b000的状态,对应的数据调度处理也更加简单。
通过提取卷积核权重有效向量为卷积窗口,实现了不同列向量稀疏分布的卷积核权重类型同样适用于特征图有效数据调度机制设计,理论上实现了基于特征图稀疏性利用的基础上对卷积核权重稀疏性的利用,对PE阵列的计算速度和计算单元利用率进一步提高。
由于卷积核不同稀疏分布类型的PE阵列之间彼此计算速度不同,传输处理同一特征图数据时,存在由于处理速度不一致而相互等待的问题。为此,基于相同数量向量分布的卷积核处理速度相同,对卷积核预排序处理:
1.对该特征图的所有卷积核进行排序:每个卷积核通道标记其有效向量个数(标记:0、1、2、3),根据卷积核多通道的总向量个数进行排序;
2.按序选取一组多个卷积核,组内对每个卷积核向量稀疏分布类型进行标记排序;
3.优先处理总向量个数相同且较大的一组卷积核;
4.重复操作2、3,空缺时补充总向量个数相对较小的卷积核,直至处理完毕。
通过对不同稀疏分布类型的卷积核权重预排序处理,多个PE阵列优先分配稀疏分布类型相同的卷积核数据,以达到近似相同的计算处理速度,以改善分配不同稀疏分布类型卷积核的PE计算阵列之间的计算速度不一致而相互等待的问题。
本发明数据处理的流程图如图15所示,加速器结构如图16。
分别以不同尺寸的稀疏度71.3%的特征图数据进行实验(卷积核数据稠密度100%),检测所需周期数和PE计算单元利用率进行分析。如图11所示,由图分析可得,使用特征图有效数据调度优化后,计算阵列的卷积计算速度和PE计算单元利用率得到明显提高,并且特征图稀疏度越大,特征图尺寸越大,加速比和计算单元利用率越大。因此,基于特征图稀疏性利用的特征图有效向量调度优化可以明显提高PE计算阵列处理稀疏数据的计算速度和计算单元利用率。
使用稀疏度71.3%的特征图数据和一组稀疏度为58.8%的卷积核权重数据进行实验分析,图12为结实验结果。在基于特征图稀疏性的有效数据调度优化基础上,使用卷积核稀疏性利用优化对计算阵列的计算速度有一定提升,对PE计算单元利用率上有明显提升效果。
如图13所示,对PE阵列使用传输向量双缓冲设计,对编码连续输入列向量使用两组输入向量缓存模块0、1,当一组缓存模块0填充完毕后,对另一组缓存模块1开始进行填充数据,同时PE阵列读取处理缓存模块0的输入向量数据,处理完毕后读取处理另一组缓存模块1的输入向量数据;解码模块重新对缓存模块1进行输入向量数据填充;两个缓存的乒乓操作,从而实现了PE阵列处理的连续计算,避免了读取传输数据时PE阵列的空闲等待时间。
使用512×512×3的特征图在卷积神经网络模型VGG16上进行测试,结果如图14所示,由图分析可得,基于数据传输编码的特征图有效数据调度方法、卷积核和特征图有效数据调度方法,都比未使用优化方法提高了计算速度,减少了执行周期。
综上所述,本发明提出的一种适用于稀疏神经网络计算阵列数据处理方法,针对于稀疏度较大的输入处理数据和稀疏权重的稀疏神经网络卷积层运算处理,可有效提高计算阵列运算平台的运算效率和性能,加快计算速度减少执行周期,提高资源计算单元利用率,减少相关时序资源和计算资源的空载。
Claims (9)
1.适用于稀疏神经网络计算阵列的数据处理方法,其特征在于,包括:
将特征图数据进行编码存储:使用values数组存储特征图数据有效数据行中非零的有效元素数据,对于1列或多列连续的全零行则存储0值作为连续全零行标记;使用column_indices数组存储values数组中每个有效元素数据在有效数据行中的列索引和0值对应的连续全零行数量;使用column_num数组存储每个有效数据行的有效元素数据个数;
读取编码存储的特征图数据并进行解码,得到解码后的特征图数据;
将解码后的特征图数据中多行行向量整合为连续列向量,得到整合后的特征图数据;
对整合后的特征图数据进行编码传输,编码传输时对连续列向量中的连续全零列向量进行游程编码,得到待计算的特征图数据;
调度待计算的特征图数据中除连续全零列向量外的连续列向量和卷积核,并进行卷积计算。
2.根据权利要求1所述的适用于稀疏神经网络计算阵列的数据处理方法,其特征在于,读取编码存储的特征图数据并进行解码具体是:
读取编码存储的特征图数据,解码的当前行在编码前特征图数据的行索引记为row_index,同时对values、column_indices和column_num三个数组中的数据进行遍历,遍历values数组中的数据x,如果数据x不为0,则表示解码的当前行为有效数据行,数据x是当前行的第一个有效元素数据,column_indices数组对应取出的是数据x在当前行的列索引,column_num数组对应的是当前行的有效元素数据个数n;根据n值遍历values数组取出后续与数据x处于同一行的有效元素数据,直到当前行的有效元素数据全部取出,解码得到当前行,然后行索引更新为row_index=row_index+1,继续进行遍历;如果数据x为0,则表示解码的当前行为连续全零行,对应column_indices数组取出的是连续全零行的列数;遍历完得到解码后的特征图数据。
3.根据权利要求1所述的适用于稀疏神经网络计算阵列的数据处理方法,其特征在于,对整合后的特征图数据进行编码传输具体是:对连续列向量中的连续全零列向量,使用游程编码标记连续数量,并且使用1位标记位,标记位为0时,向量位数值为全零列向量连续数量;标记位为1时,向量位为连续列向量中的有效向量数值;
调度连续列向量时,跳过标记位为0的连续全零列向量。
4.根据权利要求1所述的适用于稀疏神经网络计算阵列的数据处理方法,其特征在于,所述卷积核是通过提取卷积核权重有效向量得到。
5.根据权利要求4所述的适用于稀疏神经网络计算阵列的数据处理方法,其特征在于,调度卷积核过程中对卷积核进行预排序处理:
(1)每个卷积核通道标记有效向量个数,根据卷积核多通道的总有效向量个数进行排序;
(2)按序选取一组多个卷积核,组内对每个卷积核的稀疏分布类型进行标记排序;
(3)优先调度总有效向量个数相同且最大的一组卷积核;
(4)重复操作(2)、(3),空缺时补充总有效向量个数次大的卷积核,直至处理完毕。
6.根据权利要求1所述的适用于稀疏神经网络计算阵列的数据处理方法,其特征在于,待计算的特征图数据采用两组缓冲模块存储,当第一组缓存模块填充完毕后,对第二组缓存模块开始进行填充数据,同时调度第一组缓存模块的数据进行卷积计算,卷积计算后调度第二组缓存模块的数据进行卷积计算,重新对第一缓存模块进行填充,依次类推,两组缓存模块交替进行填充和调度。
7.适用于稀疏神经网络计算阵列的加速器,其特征在于,包括CSR改进型编码模块、解码模块、缓存模块和列向量整合输出模块、有效数据调度控制器;
CSR改进型编码模块用于将特征图数据进行编码存储:使用values数组存储特征图数据有效数据行中非零的有效元素数据,对于1列或多列连续的全零行则存储0值作为连续全零行标记;使用column_indices数组存储values数组中每个有效元素数据在有效数据行中的列索引和0值对应的连续全零行数量;使用column_num数组存储每个有效数据行的有效元素数据个数;
解码模块用于读取编码存储的特征图数据并进行解码,得到解码后的特征图数据;
列向量整合输出模块用于将解码后的特征图数据中多行行向量整合为连续列向量,得到整合后的特征图数据;对整合后的特征图数据进行编码传输给缓存模块;
有效数据调度控制器用于调度缓存模块中待计算的特征图数据至卷积模块;
卷积模块用于将待计算的特征图数据中的连续列向量和卷积核进行卷积计算。
8.根据权利要求7所述的适用于稀疏神经网络计算阵列的加速器,其特征在于,缓存模块设置两组。
9.根据权利要求7所述的适用于稀疏神经网络计算阵列的加速器,其特征在于,列向量整合输出模块对整合后的特征图数据进行编码传输:对连续列向量中的连续全零列向量,使用游程编码标记连续数量,并且使用1位标记位,标记位为0时,向量位数值为全零列向量连续数量;标记位为1时,向量位为对连续列向量中的有效向量数值;
有效数据调度控制器调度连续列向量时,跳过标记位为0的连续全零列向量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210462549.7A CN114970810A (zh) | 2022-04-28 | 2022-04-28 | 适用于稀疏神经网络计算阵列的数据处理方法和加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210462549.7A CN114970810A (zh) | 2022-04-28 | 2022-04-28 | 适用于稀疏神经网络计算阵列的数据处理方法和加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114970810A true CN114970810A (zh) | 2022-08-30 |
Family
ID=82980010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210462549.7A Pending CN114970810A (zh) | 2022-04-28 | 2022-04-28 | 适用于稀疏神经网络计算阵列的数据处理方法和加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114970810A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115309349A (zh) * | 2022-10-12 | 2022-11-08 | 深圳鲲云信息科技有限公司 | 深度学习的稀疏数据存储方法、计算机设备和存储介质 |
-
2022
- 2022-04-28 CN CN202210462549.7A patent/CN114970810A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115309349A (zh) * | 2022-10-12 | 2022-11-08 | 深圳鲲云信息科技有限公司 | 深度学习的稀疏数据存储方法、计算机设备和存储介质 |
CN115309349B (zh) * | 2022-10-12 | 2023-01-20 | 深圳鲲云信息科技有限公司 | 深度学习的稀疏数据存储方法、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN107704916A (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
US20180174036A1 (en) | Hardware Accelerator for Compressed LSTM | |
CN108171317A (zh) | 一种基于soc的数据复用卷积神经网络加速器 | |
US10984313B2 (en) | Multiply-accumulate calculation method and circuit suitable for neural network | |
CN107239823A (zh) | 一种用于实现稀疏神经网络的装置和方法 | |
CN110516801A (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器架构 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
CN101686388A (zh) | 视频流编码装置及其方法 | |
CN112329910B (zh) | 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法 | |
CN108665063A (zh) | 用于bnn硬件加速器的双向并行处理卷积加速系统 | |
CN113222101A (zh) | 深度学习处理装置、方法、设备和存储介质 | |
CN110851779B (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN111368988B (zh) | 一种利用稀疏性的深度学习训练硬件加速器 | |
CN114970810A (zh) | 适用于稀疏神经网络计算阵列的数据处理方法和加速器 | |
CN113762493A (zh) | 神经网络模型的压缩方法、装置、加速单元和计算系统 | |
CN101848311B (zh) | 基于Avalon总线JPEG2000的EBCOT编码器 | |
CN114491402A (zh) | 一种稀疏矩阵向量乘访存优化的计算方法 | |
CN113361695A (zh) | 卷积神经网络加速器 | |
CN111723924A (zh) | 一种基于通道共享的深度神经网络加速器 | |
CN113762480B (zh) | 一种基于一维卷积神经网络的时间序列处理加速器 | |
CN109711542B (zh) | 一种支持动态精度的dnn加速器及其实现方法 | |
CN113313252B (zh) | 一种基于脉动阵列的深度可分离卷积实现方法 | |
CN101488225A (zh) | 一种位平面编码器的vlsi系统架构 | |
CN116842304A (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 |