CN114492753A - 一种应用于片上训练的稀疏加速器 - Google Patents
一种应用于片上训练的稀疏加速器 Download PDFInfo
- Publication number
- CN114492753A CN114492753A CN202210094538.8A CN202210094538A CN114492753A CN 114492753 A CN114492753 A CN 114492753A CN 202210094538 A CN202210094538 A CN 202210094538A CN 114492753 A CN114492753 A CN 114492753A
- Authority
- CN
- China
- Prior art keywords
- mask
- target
- input
- value
- index
- 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
- 238000012549 training Methods 0.000 title claims abstract description 54
- 238000012545 processing Methods 0.000 claims abstract description 58
- 239000000872 buffer Substances 0.000 claims abstract description 54
- 230000001133 acceleration Effects 0.000 claims abstract description 32
- 238000009825 accumulation Methods 0.000 claims description 21
- 238000000034 method Methods 0.000 claims description 11
- 230000003139 buffering effect Effects 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 3
- 238000012216 screening Methods 0.000 abstract description 5
- 230000004913 activation Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 17
- 238000013527 convolutional neural network Methods 0.000 description 10
- 238000013138 pruning Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003012 network analysis Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 241000219357 Cactaceae Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003786 synthesis reaction 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/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
-
- 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/084—Backpropagation, e.g. using gradient descent
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)
- Complex Calculations (AREA)
Abstract
本申请实施例提供的一种应用于片上训练的稀疏加速器,通过在不同的加速阶段动态调整输入数值缓冲模块中的多个输入数值、参考数值缓冲模块中的多个参考数值以及掩码缓冲模块中的掩码,以及使粗粒度单元以粗粒度对无效运算进行初步筛选,以及使处理模块中每个处理单元包括的细粒度单元以细粒度对无效运算进行进一步筛选,从而剔除片上训练三个训练阶段中全部的无效运算,此外,多个计算核可以进行并行加速处理,多个计算核中处理模块包括的多个处理单元也可以进行并行加速处理,进一步提高了稀疏加速器的硬件利用率。如此,本申请的一种应用于片上训练的稀疏加速器可以高效、准确地剔除片上训练三个阶段的所有无效运算。
Description
技术领域
本申请涉及计算机及电子信息技术领域,特别涉及一种应用于片上训练的稀疏加速器。
背景技术
近些年来,卷积神经网络(ConvolutionalNeuralNetworks,CNN)在计算机视觉、语音识别和自然语言处理等领域表现出色,为了提高识别准确度,需要对CNN模型进行片上训练,片上训练指的是利用终端设备上的用户数据对CNN模型进行微调,进而提高CNN模型使用时的准确性的训练。
片上训练的过程包括三个阶段,分别是前向传播(forwardpropagation,FP)阶段、反向传播(backwardpropagation,BP)阶段和权重梯度计算(weight gradient,WG)阶段,在FP阶段,将前一层的激活值作为当前层的输入激活值,结合当前层对应的卷积核权重经过卷积运算,然后通过激活函数获取当前层的输出激活值,如此,从前往后逐层得到CNN模型中每一层的激活值,最终通过损失函数计算标签的预测值和真实值之间的偏差,并得到损失;在BP阶段,利用FP阶段得到的损失,将后一层的误差值作为当前层的输入误差值,结合当前层的卷积核权重进行卷积运算,得到当前层的误差值,如此,从后往前逐层得到CNN模型中每一层的误差值;在WG阶段,按照链式法则的要求,将前一层的输出激活值和当前层的误差值进行卷积运算,获得当前层的权重梯度,如此从前往后逐层得到CNN模型中每一层的权重。经过多次迭代优化,当模型收敛之后完成整个CNN模型的片上训练。
可以看出,片上训练每一个阶段的训练过程,都是输入数据和参考数据进行卷积得到输出数据,从而完成训练。卷积的过程包括获得多个输入值和多个参考值的乘积,再将乘积相加,得到输出数据中的多个输出值。然而,CNN模型的计算量大,但是终端设备资源和存储量有限,难以支持在终端设备上进行完整的片上训练。通过将用户数据传到云端服务器的方式,虽然可以在云端服务器和终端设备上进行完整的片上训练,但是传输用户数据的过程可能泄露用户隐私。因此,需要对片上训练进行加速,从而保证只在终端设备上高效的实施片上训练。
现有的加速器是通过剔除输入值为零或者参考值为零导致的无效运算来进行加速,然而,无效运算还包括输入值和参考值同时为负值时导致输出值为零的情况,因此,现有的加速器加速后,由于无法剔除片上训练中所有的无效运算,不能保证在终端设备上最高效的实施片上训练。
发明内容
本申请提供了一种应用于片上训练的稀疏加速器,用于解决现有的加速器加速后,由于无法剔除片上训练中所有的无效运算,不能保证在终端设备上最高效的实施片上训练的技术问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种应用于片上训练的稀疏加速器,所述稀疏加速器包括多个计算核,所述计算核每次用于加速一个卷积运算过程,所述计算核包括输入数值缓冲模块、参考数值缓冲模块、掩码缓冲模块、粗粒度匹配模块、处理模块和累加模块,其中:
所述粗粒度匹配模块包括多个粗粒度匹配单元,所述处理模块包括阵列设置的多个处理单元,每行处理单元共享一个粗粒度匹配单元;其中:
所述输入数值缓冲模块,用于向每行处理单元分配当前加速阶段中的输入数值,所述当前加速阶段为前向传播阶段、反向传播阶段或者权重梯度计算阶段;
所述参考数值缓冲模块,用于向每个处理单元分配所述当前加速阶段中的参考数值;
所述掩码缓冲模块,用于存储所述当前加速阶段中对应的掩码,所述掩码的类别为输入掩码、参考掩码或者输出掩码;
所述粗粒度匹配单元,用于从所述掩码缓冲模块中获取多个有效掩码组,以及,根据对应行的任一目标处理单元发送的分配请求,将多个有效掩码组中任一目标有效掩码组分配至所述目标处理单元,所述有效掩码组为可以进行非零卷积运算的掩码组,所述掩码组包括所述输入掩码、所述参考掩码和所述输出掩码;
所述目标处理单元,用于根据所述目标有效掩码组从所述输入数值缓冲模块中获取目标输入数值,以及从所述参考数值缓冲模块中获取目标参考数值,并根据所述目标输入数值和所述目标参考数值获得目标输出数值;
所述累加模块,用于将所有处理单元输出的目标输出数值的和确定为累加输出值。
在一种可实现方式中,所述输入数值缓冲模块包括多个输入行缓冲,每个输入行缓冲对应一行所述处理单元,用于存储所述当前加速阶段中分配至对应行处理单元的输入数值。
在一种可实现方式中,所述粗粒度匹配单元包括:
仲裁器,用于接收对应行的任一目标处理单元发送的所述分配请求,并将所述分配请求转换为分配信息,所述分配信息包括分配地址和分配数据;
掩码匹配检测器,用于将所述掩码缓冲模块中的所述掩码进行预分组,获得多个掩码组,并对多个掩码组进行检测,进行所述预分组时,多个输入掩码和多个参考掩码共享一个输出掩码;
匹配信息寄存器堆,用于根据多个掩码组的检测结果,将多个掩码组中可以进行非零卷积运算的掩码组确定为有效掩码组,每个有效掩码组对应一个地址信息和一个数据信息,并根据所述分配信息将多个有效掩码组中的任意一个目标有效掩码组的目标数据信息分配至所述处理单元;
地址存储模块,用于存储多个有效掩码组的多个地址信息,并根据所述分配地址从多个地址信息中匹配目标地址信息;
数据存储模块,用于存储多个有效掩码组的多个数据信息,并根据所述目标地址信息选择所述目标数据信息;
掩码匹配更新器,用于更新所述匹配信息寄存器堆中每次分配后的剩余有效掩码组的分配信息。
在一种可实现方式中,所述处理单元包括:
细粒度掩码匹配单元,用于根据目标有效掩码组获取输入索引和参考索引,所述输入索引用于从对应的输入行缓冲中确定目标输入数值,所述参考索引用于从所述参考数值缓冲模块中确定目标参考数值;
参考数值寄存器堆,用于存储所述参考数值;
乘累加单元,用于将目标参考数值和目标输入数值的乘积确定为目标输出数值;
部分和寄存器堆,用于存储目标输出数值,并将目标输出数值输出至所述累加模块。
在一种可实现方式中,所述细粒度掩码匹配单元包括:
参考掩码寄存器堆,用于存储多个参考掩码;
第一优先编码器,用于从目标输出掩码中确定输出掩码索引,所述输出掩码索引用于从参考掩码寄存器堆中确定目标参考掩码,所述目标输出掩码为所述目标有效掩码组中的输出掩码;
相与运算器,用于将所述目标参考掩码和目标输入掩码进行相与运算,获得与运算结果,所述目标输入掩码为所述目标有效掩码组中的输入掩码;
第二优先编码器,用于根据所述与运算结果输出与运算结果索引;
前缀和运算器,用于根据所述与运算结果索引和所述目标参考掩码获取目标参考前缀和,并将所述目标参考前缀和确定为所述参考索引,以及根据所述与运算结果索引和所述目标输入掩码获取目标输入前缀和,并将所述目标输入前缀和确定为所述输入索引。
在一种可实现方式中,所述与运算结果索引为所述与运算结果中,除首位外第一个为一的值的位数,首位从第零位起算。
在一种可实现方式中,所述根据所述与运算结果索引和所述目标参考掩码获取目标参考前缀和,并将所述目标参考前缀和确定为所述参考索引,包括:
根据所述与运算结果索引确定所述目标参考掩码中的对应目标参考掩码位数;
将所述目标参考掩码位数之前所有为一值的和确定为所述目标参考前缀和;
将所述目标参考前缀和确定为所述参考索引。
在一种可实现方式中,所述根据所述与运算结果索引和所述目标输入掩码获取目标输入前缀和,并将所述目标输入前缀和确定为所述输入索引,包括:
根据所述与运算结果索引确定所述目标输入掩码中的对应目标输入掩码位数;
将所述目标输入掩码位数之前所有为一值的和确定为所述目标输入前缀和;
将所述目标输入前缀和确定为所述参考索引。
在一种可实现方式中,所述累加模块包括累加器和累加值缓冲,其中:
所述累加器用于将所有处理单元输出的目标输出数值的和确定为累加输出值;
所述累加值缓冲用于存储所述累加输出值。
本申请实施例提供的一种应用于片上训练的稀疏加速器,通过在不同的加速阶段动态调整输入数值缓冲模块中的多个输入数值、参考数值缓冲模块中的多个参考数值以及掩码缓冲模块中的掩码,以使粗粒度单元以粗粒度对无效运算进行初步筛选,以及使处理模块中每个处理单元包括的细粒度单元以细粒度对无效运算进行进一步筛选,从而剔除片上训练三个训练阶段中全部的无效运算,此外,多个计算核可以进行并行加速处理,多个计算核中处理模块包括的多个处理单元也可以进行并行加速处理,进一步提高了稀疏加速器的硬件利用率。如此,本申请的一种应用于片上训练的稀疏加速器可以高效、准确地剔除片上训练三个阶段的所有无效运算。
附图说明
图1为片上训练不同阶段的稀疏特征示意图;
图2为本申请实施例中稀疏加速器使用的稀疏存储格式示意图;
图3为本申请实施例中稀疏加速器对三类稀疏的利用机制示意图;
图4为本申请实施例提供的计算核的结构示意图;
图5为本申请实施例提供的粗粒度匹配单元结构示意图;
图6为本申请实施例提供的处理单元结构示意图;
图7为本申请实施例提供的细粒度掩码匹配单元结构示意图;
图8为本申请实施例提供的实验综合结果以及与其他工作的比较示意图;
图9为本申请实施例提供的实际网络分析结果示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个、两个或两个以上,“多个”是指两个或者两个以上。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
下面首先结合附图对片上训练三个阶段中无效运算的产生进行介绍。
片上训练三个阶段中的无效运算产生自片上训练的三类稀疏,所述三类稀疏分别是输入激活层(InputActivation,IA)中的稀疏、权重(Weight,WE)中的稀疏以及输出激活层(Output Activation,OA)中的稀疏。
图1示例性地示出了片上训练不同阶段的稀疏特征示意图,如图1所示:
在FP阶段中,训练特征图逐层通过整个网络,根据网络层的类型,通过相应的运算依次计算每一层的激活值。在这个过程中,通常使用权重剪枝的方法去除数值低于预设阈值的权重,从而在减轻模型过拟合的同时保运算的准确度,在这一过程中会产生权重中的稀疏。此外,在FP阶段还会使用ReLU函数将激活层中为负数的值都转变成0,从而在传递给下一层神经网络运算的时候给输入激活层带来了稀疏。
在BP阶段中,从FP阶段计算得到的损失开始,逐层计算激活值的梯度,即误差值。误差值从网络末端通过每一层网络进行反向传播,当反向传播经过ReLU层的时候,梯度值也会被重置为0,产生权重的稀疏;BP阶段中输出激活层中的稀疏特性根据FP阶段的计算获得;采用批归一化层(Batch Normalization,BN)对数据进行拉伸和移位,改变输入激活层的数据分布;进一步在BN存在的情况下,引入随机剪枝(stochastic pruning),与前向的权重剪枝类似,随机剪枝针对反向传播后的梯度进行随机剪枝,使得较小的梯度也将通过随机剪枝的方式被置为0,这样即使有BN的存在也能够引入含零值,从而产生BP阶段中梯度的稀疏。
在WG阶段中,根据链式法则,通过使用FP阶段中产生的激活值(al)和误差值(el)来计算权重的梯度,权重的梯度为误差值。因此当权重被剪枝而具有稀疏性之后,权重的梯度也是稀疏的。
下面结合附图对本申请实施例中稀疏加速器使用的稀疏存储格式进行介绍。
图2示例性示出了本申请实施例中稀疏加速器使用的稀疏存储格式示意图,如图2所示,这样的存储格式包括:掩码数列(MaskArray):由块的坐标索引,存储了一个固定长度的掩码阵列,块中的非零值对应掩码中相应位置上的1,块中的零值对应掩码中相应位置上的0;指针数列,也是由块的坐标来索引,指针指向相应的值数组的起点;数值数列,依次包含了块中所有的非零数据,同时,可以根据稀疏度的不同而改变长度。如此,以块的粒度来存储数据,同时指针数列是跟是跟数值数列解耦(decoupled)的,所以在取数据时,计算180度旋转的卷积核和矩阵的转置时更加有效。因此,所述稀疏存储格式适合于片上训练的三个阶段。
下面结合附图对本申请实施例中稀疏加速器对三类稀疏的利用机制进行介绍。
图3示例性示出了本申请实施例中稀疏加速器对三类稀疏的利用机制示意图,如图3所示,对于OA中0的位置,相应的IA和WE的内积都将跳过,对于OA中的1的位置,相应的只有IA和WE中同时为1的位置需要进行乘累加运算,因此只有图3中虚线框中的1需要进行乘累加运算。
为了对片上训练进行加速,剔除片上训练中所有的无效运算,本申请实施例提供了一种应用于片上训练的稀疏加速器,所述稀疏加速器包括多个计算核,所述计算核每次用于加速一个卷积运算过程。
图4示例性示出了本申请实施例提供的计算核的结构示意图,如图4所示,所述计算核包括输入数值缓冲模块100、参考数值缓冲模块200、掩码缓冲模块300、粗粒度匹配模块400、处理模块500和累加模块600,所述粗粒度匹配模块400包括多个粗粒度匹配单元410,所述处理模块500包括阵列设置的多个处理单元510,每行处理单元510共享一个粗粒度匹配单元410;其中:
所述输入数值缓冲模块100,用于向每行处理单元510分配当前加速阶段中的输入数值,所述当前加速阶段为前向传播阶段、反向传播阶段或者权重梯度计算阶段。
具体地,所述输入数值缓冲模块100包括多个输入行缓冲110,每个输入行缓冲110对应一行所述处理单元,用于存储所述当前加速阶段中分配至对应行处理单元的输入数值。
具体地,当所述当前加速阶段为所述前向传播阶段时,所述输入数值为输入激活层数值;当所述当前加速阶段为所述反向传播阶段时,所述输入数值为后一层的误差数值;当所述当前加速阶段为所述权重梯度计算阶段时,所述输入数值为前一层的输出激活层数值。
所述参考数值缓冲模块200,用于向每个处理单元分配所述当前加速阶段中的参考数值。
具体地,当所述当前加速阶段为所述前向传播阶段时,所述参考数值为当前层的权重数值;当所述当前加速阶段为所述反向传播阶段时,所述参考数值为当前层的权重数值;当所述当前加速阶段为所述权重梯度计算阶段时,所述参考数值为当前层的误差数值。
所述掩码缓冲模块300,用于存储所述当前加速阶段中对应的掩码,所述掩码的类别为输入掩码、参考掩码或者输出掩码。
具体地,当所述当前加速阶段为所述前向传播阶段时,所述掩码包括输入激活层掩码、权重掩码和预设输出激活层掩码,此时所述预设输出激活层掩码中的值均为1,在所述前向传播阶段结束后,根据实际计算所得的输出激活层数据获得实际的输出激活层掩码,并将实际的输出激活层掩码存储至所述掩码缓冲模块300;当所述当前加速阶段为所述反向传播阶段时,所述掩码包括后一层的误差值掩码、权重掩码和当前层误差值掩码;当所述当前加速阶段为所述权重梯度计算阶段时,所述掩码包括所述前向传播阶段获得的输出激活层掩码、当前层误差值掩码和当前层权重掩码。
所述粗粒度匹配单元410,用于从所述掩码缓冲模块300中获取多个有效掩码组,以及,根据对应行的任一目标处理单元510发送的分配请求,将多个有效掩码组中任一目标有效掩码组分配至所述目标处理单元,所述有效掩码组为可以进行非零卷积运算的掩码组,所述掩码组包括所述输入掩码、所述参考掩码和所述输出掩码;。
所述目标处理单元510,用于根据所述目标有效掩码组从所述输入数值缓冲模块100中获取目标输入数值,以及从所述参考数值缓冲模块200中获取目标参考数值,并根据所述目标输入数值和所述目标参考数值获得目标输出数值。
所述累加模块600,用于将所有处理单元510输出的目标输出数值的和确定为累加输出值。
具体地,所述累加模块600包括累加器610和累加值缓冲620,其中:
所述累加器610用于将所有处理单元输出的目标输出数值的和确定为累加输出值;
所述累加值缓冲620用于存储所述累加输出值。
具体地,当所述当前加速阶段为所述前向传播阶段时,所述输出数值为当前层的输出激活层数值;当所述当前加速阶段为所述反向传播阶段时,所述输出数值为当前层的误差数值;当所述当前加速阶段为所述权重梯度计算阶段时,所述输出数值为当前层的权重数值。
图5示例性示出了本申请实施例提供的粗粒度匹配单元结构示意图,如图5所示,所述粗粒度匹配单元410包括:
仲裁器411,用于接收对应行的任一目标处理单元510发送的所述所述分配请求,并将所述分配请求转换为分配信息,所述分配信息包括分配地址和分配数据;
掩码匹配检测器412,用于将所述掩码缓冲模块中的所述掩码进行预分组,获得多个掩码组,并对多个掩码组进行检测,进行所述预分组时,多个输入掩码和多个参考掩码共享一个输出掩码;
匹配信息寄存器堆413,用于根据多个掩码组的检测结果,将多个掩码组中可以进行非零卷积运算的掩码组确定为有效掩码组,每个有效掩码组对应一个地址信息和一个数据信息,并根据所述分配信息将多个有效掩码组中的任意一个目标有效掩码组的目标数据信息分配至所述处理单元;
地址存储模块414,用于存储多个有效掩码组的多个地址信息,并根据所述分配地址从多个地址信息中匹配目标地址信息;
数据存储模块415,用于存储多个有效掩码组的多个数据信息,并根据所述目标地址信息选择所述目标数据信息;
掩码匹配更新器416,用于更新所述匹配信息寄存器堆中每次分配后的剩余有效掩码组的分配信息。
图6示例性示出了本申请实施例提供的处理单元结构示意图,如图6所示,所述处理单元510包括:
细粒度掩码匹配单元511,用于根据目标有效掩码组获取输入索引和参考索引,所述输入索引用于从对应的输入行缓冲中确定目标输入数值,所述目标输入行缓冲为当前处理单元对应的输入行缓冲,所述参考索引用于从所述参考数值缓冲模块中确定目标参考数值;
参考数值寄存器堆512,用于存储多个参考数值;
乘累加单元513,用于将目标参考数值和目标输入数值的乘积确定为目标输出数值;
部分和寄存器堆514,用于存储目标输出数值,并将目标输出数值输出至所述累加模块。
图7示例性示出了本申请实施例提供的细粒度掩码匹配单元结构示意图,如图7所示,所述细粒度掩码匹配单元511包括:
参考掩码寄存器堆5111,用于存储所述参考掩码;
第一优先编码器5112,用于从目标输出掩码中确定输出掩码索引,所述输出掩码索引用于从参考掩码寄存器堆中确定目标参考掩码,所述目标输出掩码为所述目标有效掩码组中的输出掩码;
相与运算器5113,用于将所述目标参考掩码和目标输入掩码进行相与运算,获得与运算结果,所述目标输入掩码为所述目标有效掩码组中的输入掩码;
具体地,所述与运算结果索引为所述与运算结果中,除首位外第一个为一的值的位数,首位从第零位起算。
第二优先编码器5114,用于根据所述与运算结果输出与运算结果索引;
前缀和运算器5115,用于根据所述与运算结果索引和所述目标参考掩码获取目标参考前缀和,并将所述目标参考前缀和确定为所述参考索引,
具体地,所述根据所述与运算结果索引和所述目标参考掩码获取目标参考前缀和,并将所述目标参考前缀和确定为所述参考索引,包括:
根据所述与运算结果索引确定所述目标参考掩码中的对应目标参考掩码位数;
将所述目标参考掩码位数之前所有为一值的和确定为所述目标参考前缀和;
将所述目标参考前缀和确定为所述参考索引。
所述前缀和运算器5115还用于根据所述与运算结果索引和所述目标输入掩码获取目标输入前缀和,并将所述目标输入前缀和确定为所述输入索引。
具体地,所述根据所述与运算结果索引和所述目标输入掩码获取目标输入前缀和,并将所述目标输入前缀和确定为所述输入索引,包括:
根据所述与运算结果索引确定所述目标输入掩码中的对应目标输入掩码位数;
将所述目标输入掩码位数之前所有为一值的和确定为所述目标输入前缀和;
将所述目标输入前缀和确定为所述参考索引。
下面对本申请实施例提供的稀疏加速器在进行加速时,具体的工作流程进行具体说明。
在片上训练之前,对于每一个当前层,按照所述稀疏存储格式,将输入激活层数据存储为输入激活层数值和输入激活层掩码,将权重数据存储为权重数值和权重掩码,同时预设输出激活层掩码全为1,将上述数据从外部DRAM(Dynamic RandomAccess Memory,动态随机存取存储器)中传输至对应的缓冲区域。
在前向传播阶段中,根据所述输入激活层数值、输入激活层掩码、权重数值、权重掩码和预设输出激活层掩码,获取输出激活层数据和误差数据,并按照所述稀疏存储格式,将所述输出激活层数据存储为输出激活层数值和输出激活层掩码,将所述误差数据存储为误差数值和误差掩码;
在反向传播阶段中,根据后一层的所述误差数值、后一层的所述误差掩码、当前层的权重数值、当前层的权重掩码以及当前层的误差掩码,确定当前层的误差数值;
在权重梯度更新计算阶段中,根据前一层的输出激活层数值、前一层的输出激活层掩码、当前层的误差数值、当前层的误差掩码以及当前层的权重掩码,确定当前层的权重数值。
为了评估本申请实施例提供的稀疏加速器的可行性和性能,首先使用SystemVerilog实现硬件设计,然后利用Design Compiler进行综合,选择台积电TSMC28nm的工艺库,工作频率为200MHz,功耗由PT-PX在平均模式下进行的评估,缓冲(SRAM)的面积和功耗由CACTI工具来进行评估。
图8示例性示出了本申请实施例提供的实验综合结果以及与其他工作的比较示意图,如图8所示,当输入激活层,权重和输出激活层的稀疏度都为90%的时候,本申请实施例提供的稀疏加速器在吞吐率和能效上分别能够达到42.1TOPS和174.0TOPS/W。这两个性能都超过了先前的工作。这是由于本申请实施例提供的稀疏加速器充分利用了三类稀疏,剔除片上训练三个阶段的所有无效运算。同时,两级掩码匹配的设计进一步复用了硬件单元,减少了面积以及能耗,而同时能够让处理单元独立工作,进而保持高的利用率。
图9示例性示出了本申请实施例提供的实际网络分析结果示意图,如图9所示,在实际网络的分析中,本申请实施例设计了一个时钟周期准确的模拟器,用于评估本申请实施例提供的稀疏加速器在ResNet-50网络中,对于CIFAR10数据集的加速效果。可以看出,由于在BP阶段和WG阶段中,本申请实施例提供的稀疏加速器利用到了三类稀疏,因此在BP阶段和WG阶段中的吞吐率与FP阶段相比都得到了很大的提升。
如此,本申请实施例提供的一种应用于片上训练的稀疏加速器,通过在不同的加速阶段动态调整输入数值缓冲模块中的多个输入数值、参考数值缓冲模块中的多个参考数值以及掩码缓冲模块中的掩码,以使粗粒度单元以粗粒度对无效运算进行初步筛选,以及使处理模块中每个处理单元包括的细粒度单元以细粒度对无效运算进行进一步筛选,从而剔除片上训练三个训练阶段中全部的无效运算,此外,多个计算核可以进行并行加速处理,多个计算核中处理模块包括的多个处理单元也可以进行并行加速处理,进一步提高了稀疏加速器的硬件利用率。如此,本申请的一种应用于片上训练的稀疏加速器可以高效、准确地剔除片上训练三个阶段的所有无效运算。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段;说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变;本发明的范围仅由所附的权利要求来限制。
Claims (9)
1.一种应用于片上训练的稀疏加速器,其特征在于,所述稀疏加速器包括多个计算核,所述计算核每次用于加速一个卷积运算过程,所述计算核包括输入数值缓冲模块、参考数值缓冲模块、掩码缓冲模块、粗粒度匹配模块、处理模块和累加模块;
所述粗粒度匹配模块包括多个粗粒度匹配单元,所述处理模块包括阵列设置的多个处理单元,每行处理单元共享一个粗粒度匹配单元;其中:
所述输入数值缓冲模块,用于向每行处理单元分配当前加速阶段中的输入数值,所述当前加速阶段为前向传播阶段、反向传播阶段或者权重梯度计算阶段;
所述参考数值缓冲模块,用于向每个处理单元分配所述当前加速阶段中的参考数值;
所述掩码缓冲模块,用于存储所述当前加速阶段中对应的掩码,所述掩码的类别为输入掩码、参考掩码或者输出掩码;
所述粗粒度匹配单元,用于从所述掩码缓冲模块中获取多个有效掩码组,以及,根据对应行的任一目标处理单元发送的分配请求,将多个有效掩码组中任一目标有效掩码组分配至所述目标处理单元,所述有效掩码组为可以进行非零卷积运算的掩码组,所述掩码组包括所述输入掩码、所述参考掩码和所述输出掩码;
所述目标处理单元,用于根据所述目标有效掩码组从所述输入数值缓冲模块中获取目标输入数值,以及从所述参考数值缓冲模块中获取目标参考数值,并根据所述目标输入数值和所述目标参考数值获得目标输出数值;
所述累加模块,用于将所有处理单元输出的目标输出数值的和确定为累加输出值。
2.根据权利要求1所述的一种应用于片上训练的稀疏加速器,其特征在于,所述输入数值缓冲模块包括多个输入行缓冲,每个输入行缓冲对应一行所述处理单元,用于存储所述当前加速阶段中分配至对应行处理单元的输入数值。
3.根据权利要求1所述的一种应用于片上训练的稀疏加速器,其特征在于,所述粗粒度匹配单元包括:
仲裁器,用于接收对应行的任一目标处理单元发送的所述分配请求,并将所述分配请求转换为分配信息,所述分配信息包括分配地址和分配数据;
掩码匹配检测器,用于将所述掩码缓冲模块中的所述掩码进行预分组,获得多个掩码组,并对多个掩码组进行检测,进行所述预分组时,多个输入掩码和多个参考掩码共享一个输出掩码;
匹配信息寄存器堆,用于根据多个掩码组的检测结果,将多个掩码组中可以进行非零卷积运算的掩码组确定为有效掩码组,每个有效掩码组对应一个地址信息和一个数据信息,并根据所述分配信息将多个有效掩码组中的任意一个目标有效掩码组的目标数据信息分配至所述处理单元;
地址存储模块,用于存储多个有效掩码组的多个地址信息,并根据所述分配地址从多个地址信息中匹配目标地址信息;
数据存储模块,用于存储多个有效掩码组的多个数据信息,并根据所述目标地址信息选择所述目标数据信息;
掩码匹配更新器,用于更新所述匹配信息寄存器堆中每次分配后的剩余有效掩码组的分配信息。
4.根据权利要求2所述的一种应用于片上训练的稀疏加速器,其特征在于,所述处理单元包括:
细粒度掩码匹配单元,用于根据目标有效掩码组获取输入索引和参考索引,所述输入索引用于从对应的输入行缓冲中确定目标输入数值,所述参考索引用于从所述参考数值缓冲模块中确定目标参考数值;
参考数值寄存器堆,用于存储多个参考数值;
乘累加单元,用于将目标参考数值和目标输入数值的乘积确定为目标输出数值;
部分和寄存器堆,用于存储目标输出数值,并将目标输出数值输出至所述累加模块。
5.根据权利要求4所述的一种应用于片上训练的稀疏加速器,其特征在于,所述细粒度掩码匹配单元包括:
参考掩码寄存器堆,用于存储所述参考掩码;
第一优先编码器,用于从目标输出掩码中确定输出掩码索引,所述输出掩码索引用于从参考掩码寄存器堆中确定目标参考掩码,所述目标输出掩码为所述目标有效掩码组中的输出掩码;
相与运算器,用于将所述目标参考掩码和目标输入掩码进行相与运算,获得与运算结果,所述目标输入掩码为所述目标有效掩码组中的输入掩码;
第二优先编码器,用于根据所述与运算结果输出与运算结果索引;
前缀和运算器,用于根据所述与运算结果索引和所述目标参考掩码获取目标参考前缀和,并将所述目标参考前缀和确定为所述参考索引,以及根据所述与运算结果索引和所述目标输入掩码获取目标输入前缀和,并将所述目标输入前缀和确定为所述输入索引。
6.根据权利要求5所述的一种应用于片上训练的稀疏加速器,其特征在于,所述与运算结果索引为所述与运算结果中,除首位外第一个为一的值的位数,首位从第零位起算。
7.根据权利要求5所述的一种应用于片上训练的稀疏加速器,其特征在于,所述根据所述与运算结果索引和所述目标参考掩码获取目标参考前缀和,并将所述目标参考前缀和确定为所述参考索引,包括:
根据所述与运算结果索引确定所述目标参考掩码中的对应目标参考掩码位数;
将所述目标参考掩码位数之前所有为一值的和确定为所述目标参考前缀和;
将所述目标参考前缀和确定为所述参考索引。
8.根据权利要求5所述的一种应用于片上训练的稀疏加速器,其特征在于,所述根据所述与运算结果索引和所述目标输入掩码获取目标输入前缀和,并将所述目标输入前缀和确定为所述输入索引,包括:
根据所述与运算结果索引确定所述目标输入掩码中的对应目标输入掩码位数;
将所述目标输入掩码位数之前所有为一值的和确定为所述目标输入前缀和;
将所述目标输入前缀和确定为所述参考索引。
9.根据权利要求1所述的一种应用于片上训练的稀疏加速器,其特征在于,所述累加模块包括累加器和累加值缓冲,其中:
所述累加器用于将所有处理单元输出的目标输出数值的和确定为累加输出值;
所述累加值缓冲用于存储所述累加输出值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210094538.8A CN114492753A (zh) | 2022-01-26 | 2022-01-26 | 一种应用于片上训练的稀疏加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210094538.8A CN114492753A (zh) | 2022-01-26 | 2022-01-26 | 一种应用于片上训练的稀疏加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114492753A true CN114492753A (zh) | 2022-05-13 |
Family
ID=81476455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210094538.8A Pending CN114492753A (zh) | 2022-01-26 | 2022-01-26 | 一种应用于片上训练的稀疏加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114492753A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115170917A (zh) * | 2022-06-20 | 2022-10-11 | 美的集团(上海)有限公司 | 图像处理方法、电子设备及存储介质 |
CN115796239A (zh) * | 2022-12-14 | 2023-03-14 | 北京登临科技有限公司 | Ai算法架构的实现装置、卷积计算单元及相关方法与设备 |
-
2022
- 2022-01-26 CN CN202210094538.8A patent/CN114492753A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115170917A (zh) * | 2022-06-20 | 2022-10-11 | 美的集团(上海)有限公司 | 图像处理方法、电子设备及存储介质 |
CN115170917B (zh) * | 2022-06-20 | 2023-11-07 | 美的集团(上海)有限公司 | 图像处理方法、电子设备及存储介质 |
CN115796239A (zh) * | 2022-12-14 | 2023-03-14 | 北京登临科技有限公司 | Ai算法架构的实现装置、卷积计算单元及相关方法与设备 |
CN115796239B (zh) * | 2022-12-14 | 2023-10-31 | 北京登临科技有限公司 | Ai算法架构的实现装置、卷积计算装置及相关方法与设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220012593A1 (en) | Neural network accelerator and neural network acceleration method based on structured pruning and low-bit quantization | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
US9529590B2 (en) | Processor for large graph algorithm computations and matrix operations | |
CN107340993B (zh) | 运算装置和方法 | |
CN114492753A (zh) | 一种应用于片上训练的稀疏加速器 | |
CN112200300B (zh) | 卷积神经网络运算方法及装置 | |
Catalyiirek | Umpa: A multi-objective multi-level partitioner for communication minimization umit v. catalyiirek mehmet deveci kamer kaya and bora ucar | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
US11915118B2 (en) | Method and apparatus for processing computation of zero value in processing of layers in neural network | |
Alawad et al. | Stochastic-based deep convolutional networks with reconfigurable logic fabric | |
US11948086B2 (en) | Accelerated embedding layer computations | |
Bottleson et al. | clcaffe: Opencl accelerated caffe for convolutional neural networks | |
CN103177414A (zh) | 一种基于结构的图节点相似度并行计算方法 | |
US20190378001A1 (en) | Neural network hardware acceleration with stochastic adaptive resource allocation | |
CN113569511A (zh) | 一种量子电路的模拟方法及装置 | |
CN115186802A (zh) | 基于卷积神经网络的块稀疏方法、装置及处理单元 | |
CN114138231B (zh) | 执行矩阵乘法运算的方法、电路及soc | |
Zhao et al. | Lns-madam: Low-precision training in logarithmic number system using multiplicative weight update | |
CN109446478A (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
Bisson et al. | A cuda implementation of the pagerank pipeline benchmark | |
CN110009091B (zh) | 学习网络在等价类空间中的优化 | |
CN110852418A (zh) | 神经网络模型的数据处理方法及装置、存储介质、终端 | |
CN113570053A (zh) | 一种神经网络模型的训练方法、装置以及计算设备 | |
Guo et al. | Sparse Matrix Selection for CSR-Based SpMV Using Deep Learning | |
CN111507178B (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 |