CN112580796A - 用于神经网络的剪枝方法、装置以及系统 - Google Patents
用于神经网络的剪枝方法、装置以及系统 Download PDFInfo
- Publication number
- CN112580796A CN112580796A CN202010082987.1A CN202010082987A CN112580796A CN 112580796 A CN112580796 A CN 112580796A CN 202010082987 A CN202010082987 A CN 202010082987A CN 112580796 A CN112580796 A CN 112580796A
- Authority
- CN
- China
- Prior art keywords
- weight
- neural network
- pruning
- weight matrix
- network layer
- 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/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)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本申请提供了一种用于神经网络的剪枝方法、装置以及系统,可以优化剪枝的效率。该方法包括:获取第一神经网络层的第一权值矩阵,第一权值矩阵包括多个权值;将第一权值矩阵划分为多个权值块;对多个权值块中的每个权值块进行剪枝操作,以获得多个剪枝后的权值块,其中,剪枝操作包括对每个权值块执行下述至少一种剪枝操作:行剪枝操作和列剪枝操作;将多个剪枝后的权值块中的权值写入用于执行第一神经网络层计算的计算节点中。
Description
技术领域
本申请涉及神经网络领域,尤其涉及用于神经网络的剪枝算法、装置以及系统。
背景技术
神经网络广泛应用于图像分类、目标检测、语义分割、语音识别等领域。由于主流神经网络的权值尺寸和计算量很大,因此在使用计算节点进行神经网络计算时会消耗大量的硬件资源。而神经网络剪枝是减小模型尺寸的一种有效的方法。神经网络剪枝是指利用神经网络的冗余性,删除神经网络中的冗余元素,同时维持神经网络精度不会下降的技术。研究表明,神经网络的权值中包括很多的冗余元素,在训练过程中,这些冗余元素可以通过稀疏算法进行查找和修剪(即设置为0),而神经网络精度不会有实质的下降。现有的剪枝方法包括结构性剪枝和非结构剪枝等方式。但这些剪枝方式以权值矩阵为整体考量进行剪枝,剪枝粒度较大,存在剪枝效率低的问题。
发明内容
本申请提供一种用于神经网络的剪枝方法、装置和系统,可以优化剪枝的效率。
第一方面,提供了一种用于神经网络的剪枝方法,包括:获取第一神经网络层的第一权值矩阵,所述第一权值矩阵包括多个权值;将所述第一权值矩阵划分为多个权值块;对所述多个权值块中的每个权值块进行剪枝操作,以获得多个剪枝后的权值块,其中,所述剪枝操作包括对每个权值块执行下述至少一种剪枝操作:行剪枝操作和列剪枝操作;将所述多个剪枝后的权值块中的权值写入用于执行所述第一神经网络层计算的计算节点中
在本申请实施例中,可以将第一权值矩阵划分为多个权值块,并在每个权值块内部执行行剪枝和/或列剪枝。该方案可以实现对神经网络中的权值矩阵的细粒度剪枝,能够优化剪枝的效率。
结合第一方面,在第一方面的一种可能的实现方式中,所述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相对应,其中,每个计算阵列上包括多个计算单元;所述将所述多个剪枝后的权值块中的权值写入用于执行所述第一神经网络层计算的计算节点中,包括:将所述多个剪枝后的权值块中的权值写入所述多个计算阵列中。
可选地,上述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相对应,包括:所述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相同。
在本申请实施例中,可以将第一权值矩阵划分为多个权值块,多个权值块的数量与用于执行神经网络计算的计算节点所包含的计算阵列的数量相对应,每个权值块内部使用结构化剪枝。该方案可以实现对神经网络中的权值矩阵的细粒度剪枝,并且基于执行神经网络的计算阵列对权值矩阵进行剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
结合第一方面,在第一方面的一种可能的实现方式中,所述多个计算阵列中的每个计算阵列包括m行×n列个计算单元,每个计算单元用于部署一个权值,所述多个剪枝后的权值块的尺寸小于或等于m行×n列,m,n为大于等于2的整数。
在本申请实施例中,在对划分的多个权值块剪枝后得到的权值块的尺寸小于或等于计算单元的尺寸,从而提高对计算阵列中的计算单元的利用率。
结合第一方面,在第一方面的一种可能的实现方式中,所述方法还包括:获取第一比值,所述第一比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的比值;获取第二比值,所述第二比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的列数和行数之间的比值;所述将所述第一权值矩阵划分为多个权值块,包括:在所述第一比值小于第一阈值的情况下,且所述第二比值小于第二阈值的情况下,将所述第一权值矩阵划分为所述多个权值块。
在本申请实施例中,可以根据第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的关系,确定将第一权值矩阵划分为多个权值块,从而可以利用第一权值矩阵以及执行神经网络计算的计算阵列之间的对应关系,即第一权值矩阵与执行神经网络计算的硬件之间的对应关系,确定将第一权值矩阵划分为与计算阵列对应的多个权值块,并进行剪枝操作,从而实现对神经网络中的权值矩阵的细粒度剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
结合第一方面,在第一方面的一种可能的实现方式中,还包括:获取第二神经网络层的第二权值矩阵;获取第三比值,所述第三比值为将所述第二权值矩阵映射至执行所述第二神经网络层计算的计算阵列时所占用的计算阵列的行数和列数之间的比值;在所述第三比值大于第三阈值的情况下,对所述第二权值矩阵执行以所述计算阵列中的每行计算单元数量为单位的行剪枝操作。
在本申请实施例中,可以根据第二权值矩阵映射至执行第二神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的关系,确定对所述第二权值矩阵执行以计算阵列中的每行计算单元数量为单位的行剪枝操作。从而可以利用第二权值矩阵以及执行神经网络计算的计算阵列之间的对应关系,即第二权值矩阵与执行神经网络计算的硬件之间的对应关系,确定对第二权值矩阵执行细粒度的行剪枝操作。从而实现对神经网络中的权值矩阵的细粒度剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
结合第一方面,在第一方面的一种可能的实现方式中,还包括:获取第三神经网络层的第三权值矩阵;获取第四比值,所述第四比值为将所述第三权值矩阵映射至执行所述第三神经网络层计算的计算阵列时所占用的计算阵列的列数和行数之间的比值;在所述第四比值大于第四阈值的情况下,对所述第三权值矩阵执行以所述计算阵列中的每列计算单元数量为单位的列剪枝操作。
在本申请实施例中,可以根据第三权值矩阵映射至执行第三神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的关系,确定对所述第三权值矩阵执行以计算阵列中的每列计算单元数量为单位的列剪枝操作。从而可以利用第三权值矩阵以及执行神经网络计算的计算阵列之间的对应关系,即第三权值矩阵与执行神经网络计算的硬件之间的对应关系,确定对第三权值矩阵执行细粒度的列剪枝操作。从而实现对神经网络中的权值矩阵的细粒度剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
结合第一方面,在第一方面的一种可能的实现方式中,还包括:获取所述第一神经网络层的第一初始权值矩阵;对所述第一初始权值矩阵执行结构化剪枝操作,以得到第一剪枝权值矩阵;根据在所述结构化剪枝操作过程中被删除的所述第一神经网络层的相邻神经网络层的初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,以得到所述第一权值矩阵。
在本申请实施例中,在对神经网络中的权值矩阵进行结构化剪枝之后,可以利用神经网络前后层间输入输出对应关系,进一步压缩神经网络,从而优化剪枝的效率。
结合第一方面,在第一方面的一种可能的实现方式中,所述根据在所述结构化剪枝操作过程中被删除的所述第一神经网络层的相邻神经网络层的初始权值矩阵中权值,删除所述第一剪枝权值矩阵中的相应权值,包括以下至少一项:根据在所述结构化剪枝操作过程中被删除的第四神经网络层的第四初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第一神经网络层的输入数据包括所述第四神经网络层的输出数据;根据在所述结构化剪枝操作过程中被删除的第五神经网络层的第五初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第五神经网络层的输入数据包括所述第一神经网络层的输出数据。
结合第一方面,在第一方面的一种可能的实现方式中,所述根据在所述结构化剪枝操作过程中被删除的第四神经网络层的第四初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,包括:在执行结构化剪枝操作中删除所述第四初始权值矩阵中的第p列权值的情况下,删除所述第一剪枝权值矩阵中第q行权值,其中,所述第q行权值对应的所述第一神经网络层的输入数据包括所述第p列权值对应的所述第四神经网络的输出数据,p和q均大于等于1。
结合第一方面,在第一方面的一种可能的实现方式中,所述根据在所述结构化剪枝操作过程中被删除的第五神经网络层的第五初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,包括:在执行结构化剪枝操作中删除所述第五初始权值矩阵中的第i行权值的情况下,删除所述第一初始权值矩阵中的第j列权值,其中,所述第i行权值对应的所述第五神经网络层的输入数据包括所述第j列权值对应的所述第一神经网络层的输出数据,i和j均大于等于1。
第二方面,提供了一种用于执行神经网络的剪枝方法的装置,包括:获取模块,用于获取第一神经网络层的第一权值矩阵,所述第一权值矩阵包括多个权值;划分模块,用于将所述第一权值矩阵划分为多个权值块;剪枝模块,用于对所述多个权值块中的每个权值块进行剪枝操作,以获得多个剪枝后的权值块,其中,所述剪枝操作包括对每个权值块执行下述至少一种剪枝操作:行剪枝操作和列剪枝操作;输出模块,用于将所述多个剪枝后的权值块中的权值写入用于执行所述第一神经网络层计算的计算节点中
在本申请实施例中,可以将第一权值矩阵划分为多个权值块,并在每个权值块内部执行行剪枝和/或列剪枝。该方案可以实现对神经网络中的权值矩阵的细粒度剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
结合第二方面,在第二方面的一种可能的实现方式中,所述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相对应,其中,每个计算阵列上包括多个计算单元;所述输出模块具体用于将所述多个剪枝后的权值块中的权值写入所述多个计算阵列中。
结合第二方面,在第二方面的一种可能的实现方式中,所述多个计算阵列中的每个计算阵列包括m行×n列个计算单元,每个计算单元用于部署一个权值,所述多个剪枝后的权值块的尺寸小于或等于m行×n列,m,n为大于等于2的整数。
结合第二方面,在第二方面的一种可能的实现方式中,所述剪枝模块还用于:获取第一比值,所述第一比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的比值;获取第二比值,所述第二比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的列数和行数之间的比值;所述剪枝模块具体用于在所述第一比值小于第一阈值的情况下,且所述第二比值小于第二阈值的情况下,将所述第一权值矩阵划分为所述多个权值块。
结合第二方面,在第二方面的一种可能的实现方式中,所述剪枝模块还用于:获取第二神经网络层的第二权值矩阵;获取第三比值,所述第三比值为将所述第二权值矩阵映射至执行所述第二神经网络层计算的计算阵列时所占用的计算阵列的行数和列数之间的比值;在所述第三比值大于第三阈值的情况下,对所述第二权值矩阵执行以所述计算阵列中的每行计算单元数量为单位的行剪枝操作。
结合第二方面,在第二方面的一种可能的实现方式中,所述剪枝模块还用于:获取第三神经网络层的第三权值矩阵;获取第四比值,所述第四比值为将所述第三权值矩阵映射至执行所述第三神经网络层计算的计算阵列时所占用的计算阵列的列数和行数之间的比值;在所述第四比值大于第四阈值的情况下,对所述第三权值矩阵执行以所述计算阵列中的每列计算单元数量为单位的列剪枝操作。
结合第二方面,在第二方面的一种可能的实现方式中,所述获取模块还用于:获取所述第一神经网络层的第一初始权值矩阵;对所述第一初始权值矩阵执行结构化剪枝操作,以得到第一剪枝权值矩阵;根据在所述结构化剪枝操作过程中被删除的所述第一神经网络层的相邻神经网络层的初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,以得到所述第一权值矩阵。
结合第二方面,在第二方面的一种可能的实现方式中,所述获取模块具体用于执行以下至少一项:根据在所述结构化剪枝操作过程中被删除的第四神经网络层的第四初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第一神经网络层的输入数据包括所述第四神经网络层的输出数据;根据在所述结构化剪枝操作过程中被删除的第五神经网络层的第五初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第五神经网络层的输入数据包括所述第一神经网络层的输出数据。
结合第二方面,在第二方面的一种可能的实现方式中,所述获取模块具体用于:在执行结构化剪枝操作中删除所述第四初始权值矩阵中的第p列权值的情况下,删除所述第一剪枝权值矩阵中第q行权值,其中,所述第q行权值对应的所述第一神经网络层的输入数据包括所述第p列权值对应的所述第四神经网络的输出数据,p和q均大于等于1。
结合第二方面,在第二方面的一种可能的实现方式中,所述获取模块具体用于:在执行结构化剪枝操作中删除所述第五初始权值矩阵中的第i行权值的情况下,删除所述第一初始权值矩阵中的第j列权值,其中,所述第i行权值对应的所述第五神经网络层的输入数据包括所述第j列权值对应的所述第一神经网络层的输出数据,i和j均大于等于1。
第三方面,提供了一种芯片,所述芯片上设置有如第二方面或第二方面中任一种可能的实现方式中所述的装置。
第四方面,提供了一种神经网络系统,所述计算机系统包括存储器以及与所述存储器连接的处理器,所述存储器用于存储计算机指令,所述处理器用于运行所述计算机指令以执行上述第一方面或第一方面任一种可能的实现方式的方法。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码包括用于执行第一方面或第一方面任一种可能的实现方式的方法的指令。
附图说明
图1为本申请一实施例的一种神经网络系统100的结构示意图。
图2为本申请一实施例的一种神经网络芯片中的计算节点的结构示意图。
图3是本申请一实施例的神经网络系统中的神经网络层的示意图。
图4是本申请一实施例的基于crossbar架构的神经网络芯片的架构示意图。
图5是本申请一实施例的crossbar架构的神经网络芯片执行卷积计算的过程示意图。
图6是本申请一实施例的权值矩阵映射至计算阵列的示意图。
图7是本申请一实施例的基于crossbar的神经网络芯片的架构示意图。
图8是本申请一实施例的权值矩阵的在剪枝前后映射至crossbar的示意图。
图9是本申请一实施例的用于神经网络的剪枝方法的示意性流程图。
图10是本申请一实施例的对权值矩阵执行不考虑硬件架构的结构化剪枝的示意图。
图11是本申请一实施例的结构化剪枝之后执行后处理的示意图。
图12是本申请一实施例的权值矩阵映射至计算阵列的架构示意图。
图13是本申请一实施例的执行神经网络剪枝的过程示意图。
图14是本申请一实施例的基于计算阵列粒度的行剪枝操作的示意图。
图15是本申请一实施例的基于计算阵列粒度的列剪枝操作的示意图。
图16是本申请一实施例的块剪枝操作的示意图。
图17是本申请一实施例的用于执行神经网络的剪枝方法的装置的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为了便于理解,下文中首先介绍本申请实施例中涉及的若干术语和概念。
人工神经网络(artificial neural network,ANN):简称为神经网络(neuralnetwork,NN)或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutional neural network,CNN)、深度神经网络(deep neural network,DNN)、多层感知器(multilayer perceptron,MLP)等神经网络。
神经网络剪枝:利用神经网络的冗余性,删除神经网络中的冗余元素,同时维持神经网络精度不会下降的技术。
不规则剪枝:删除神经网络中任何的冗余元素,由于这些冗余元素出现的位置随机,剪枝得到的是一个具有随机稀疏性的剪枝方案。
结构化剪枝:删除神经网络权值矩阵中冗余的行或列,结构化剪枝前后的权值矩阵均为矩形。
神经网络加速器:可利用神经网络计算中的并行性加速神经网络计算的处理器。
交叉阵列(crossbar):一种神经网络加速器中常见的组成单元,通常为由乘法器构成的规则阵列,该阵列内的同一列上的乘法器的计算结果可以累加。作为示例,crossbar可包括阻变式随机访问存储器交叉阵列(resistive random-access memory crossbar,ReRAM crossbar)。
交叉阵列行(crossbar row):将权值矩阵映射到crossbar后,一行交叉阵列单元(crossbar cell)所存储的权值。
交叉阵列列(crossbar row:将权值矩阵映射到crossbar后,一列crossbar cell中所存储的权值。
图1为本申请一实施例的一种神经网络系统100的结构示意图。如图1所示,神经网络系统100可以包括主机105以及神经网络电路110。所述主机105也可以称为神经网络系统的处理装置,所述神经网络电路也可以称为神经网络系统中的计算装置。神经网络电路110通过主机接口与主机105连接。主机接口可以包括标准的主机接口以及网络接口(networkinterface)。例如,主机接口可以包括快捷外设互联标准(peripheral componentinterconnect express,PCIE)接口。如图1所示,神经网络电路110可以通过PCIE总线106与主机105连接。因此,数据可以通过PCIE总线106输入至神经网络电路110中,并通过PCIE总线106接收神经网络电路110处理完成后的数据。并且,主机105也可以通过主机接口监测神经网络电路110的工作状态。
主机105可以包括处理器1052以及内存1054。需要说明的是,除了图1所示的器件外,主机105还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
处理器(processor)1052是主机105的运算核心和控制核心(control unit)。处理器1052中可以包括多个处理器核(core)。处理器1052可以是一块超大规模的集成电路。在处理器1052中安装有操作系统和其他软件程序,从而处理器1052能够实现对内存1054、缓存、磁盘及外设设备(如图1中的神经网络电路110)的访问。可以理解的是,在本申请实施例中,处理器1052中的Core例如可以是中央处理器(central processing unit,CPU),还可以是其他特定集成电路(application specific integrated circuit,ASIC)。
内存1054是主机105的主存。内存1054通过双倍速率(double data rate,DDR)总线和处理器1052相连。内存1054通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高处理器1052的访问速度,内存1054需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(dynamicrandom access memory,DRAM)作为内存1054。处理器1052能够通过内存控制器(图1中未示出)高速访问内存1054,对内存1054中的任意一个存储单元进行读操作和写操作。
神经网络电路110是由多个神经网络芯片(chip)组成的芯片阵列。例如,如图1所示,神经网络电路110包括多个进行数据处理的神经网络芯片(chip)115和多个路由器122。为了描述方便,本申请实施例将申请中的神经网络芯片115简称为芯片115。所述多个芯片115通过路由器122相互连接。例如,一个芯片115可以与一个或多个路由器122连接。多个路由器122可以组成一种或多种网络拓扑。芯片115之间可以通过所述多种网络拓扑进行数据传输。可以理解的是,图1所示的神经网络电路也可以称为神经网络加速器,神经网络加速器用于利用神经网络层中卷积层和全连接层计算时的并行性来加速网络的推理过程。
图2为本申请一实施例的一种神经网络芯片中的计算节点的结构示意图。如图2所示,芯片115中包括多个路由器(router)122,每个路由器可以连接一个瓦片(tile)125。实际应用中,一个路由器122还可以连接多个tile 125。其中,tile中可包括基于crossbar架构的芯片。关于tile具体结构可以参见下文中的图4或图7中的相关描述。
另一方面,本领域技术人员可以知道,神经网络系统可以包括多个神经网络层。在本申请实施例中,神经网络层为逻辑的层概念,一个神经网络层是指要执行一次神经网络操作。每一层神经网络计算均是由计算节点来实现。神经网络层可以包括卷积层、池化层等。如图3所示,神经网络系统中可以包括n个神经网络层(又可以被称为n层神经网络),其中,n为大于或等于2的整数。图3示出了神经网络系统中的部分神经网络层,如图3所示,神经网络系统可以包括第一层302、第二层304、第三层306、第四层308、第五层310至第n层312。其中,第一层302可以执行卷积操作,第二层304可以是对第一层302的输出数据执行池化操作,第三层306可以是对第二层304的输出数据执行卷积操作,第四层308可以对第三层306的输出结果执行卷积操作,第五层310可以对第二层304的输出数据以及第四层308的输出数据执行求和操作等等。可以理解的是,图3只是对神经网络系统中的神经网络层的一个简单示例和说明,并不对每一层神经网络的具体操作进行限制,例如,第四层308也可以是池化运算,第五层310也可以是做卷积操作或池化操作等其他的神经网络操作。
在神经网络系统中,当神经网络中的第i层计算完成后,会将第i层的计算结果暂存在预设的缓存中,在执行第i+1层的计算时,计算单元需要重新从预设的缓存中加载第i层的计算结果和第i+1层的权重进行计算。其中,第i层为神经网络系统中的任意一层。其中,i为大于或等于1的整数。实际应用中,若神经网络系统的计算节点中采用ReRAMcrossbar的结构,由于ReRAM具有存算一体的优势,权重可以在计算之前配置到ReRAM cell上,在此不做限定。
图4中示出了图2中的一个tile中的内部结构。如图4所示,该架构中的每个tile包括多个互相连接的核(core)。每个core内部包括一个crossbar以及外围电路。上述外围电路例如可以包括但不限于以下至少一项:移位相加(shift and add circuit,S&A)电路、采样保持(sample and hold,S&H)电路、输入寄存器(input register,IR)、输出寄存器(output register,OR)、模数转换器(analog to digital converter,ADC)、数模转换器(digital to analog converter,DAC)、控制电路、输入数据地址(address,ADDR)的控制电路(或者说,地址控制器)等。执行神经网络计算时,多个crossbar中的每个单元(cell)都可以同时完成一次乘法运算,而同一列cell的乘法结果可以很容易地累加起来,因此这种crossbar架构可以用于加速神经网络的推理。
图5是本申请一实施例的crossbar架构的神经网络芯片执行卷积计算的过程示意图。其中,权值矩阵可以表示为四维的形式,而四维的权值矩阵可以进行二维展开,以得到二维的权值矩阵。四维的权值矩阵的四个维度可以分别表示为滤波器(filter)、通道(channel)、宽(width)以及高(height)。四维权值矩阵中的一个filter可对应二维权值矩阵中的一列权值,二维权值矩阵中的一行权值对应四维权值矩阵中的所有filter中的同一个位置。四维权值矩阵中的一个channel可以对应于二维权值矩阵中的一个或多个连续的行。
如图5所示,在权值矩阵进行二维展开之前,假设卷积层包括4个2×2的滤波器(filter),在对权值矩阵进行二维展开之后,可以得到一个4×4的权值矩阵,其中,权值矩阵中的每一列表示一个filter。另外,假设计算节点包括4个2×4的crossbar,crossbar中的每个cell表示2比特(bits)。权值矩阵中的权值均可以用4bits表示。每一个权值采用两个cell来存储,属于同一个filter的权值根据对应关系存储在不同的crossbar中的相同列上。从而crossbar中的cell可以同时进行乘法运算,并且将同一列上的计算结果进行累加。
由于神经网络中的权值数量非常多,计算时会占用大量的计算资源,例如crossbar资源。另外,神经网络中的权值映射到计算节点中的计算阵列中时可能会出现不对齐的情况。例如,图6是本申请一实施例的权值矩阵映射至计算阵列的示意图。如图6所示,用于进行神经网络计算的计算节点中包括多个计算阵列,每个计算阵列包括多个计算单元,一个或多个计算单元可用于存储一个权值。作为示例,图6中的每个小方格表示一个计算单元,由8×8的小方格组成的每个矩形表示一个计算阵列。黑色部分表示该计算单元存储有权值,白色部分表示该计算单元空闲。例如,一个计算阵列可以表示一个crossbar。一个小方格表示crossbar中的一个计算单元。其中,一个计算单元用于部署一个权值。一个计算单元可以包括一个或多个crossbar cell。如图5所示,若一个crossbar cell用于存储一个2bits的权值,两个crossbar cell可用于存储一个4bits的权值,则一个计算单元包括两个crossbar cell。在图6中,计算节点中的最右边和最下边的计算阵列中存在很多空闲计算单元,导致计算阵列的利用率较低。换句话说,在经过剪枝之后,神经网络中的权值映射到计算节点中的计算阵列时可能会出现不对齐的情况,计算阵列中存在部分空闲的计算单元,从而导致计算阵列的利用率较低,降低了剪枝效率。
为了改善上述问题,本申请实施例提供了一种用于神经网络剪枝的方案。该方案提供了一种基于块的剪枝方案,可以将原始的权值矩阵划分为多个权值块,多个权值块的数量与用于执行神经网络计算的计算节点所包含的计算阵列的数量相对应,每个块内部使用结构化剪枝。该方案可以实现对神经网络中的权值矩阵的细粒度剪枝,并且基于执行神经网络的计算阵列对权值矩阵进行剪枝,从而提高了计算阵列的利用率,优化剪枝的效率。
图7是本申请一实施例的基于crossbar的神经网络芯片的架构示意图。作为示例,图7中示出了图2中的一个tile的内部结构。如图7所示,与图4相比,图7中的神经网络芯片在每个core内部额外增加了两个模块交叉阵列行稀疏性表(crossbar row sparsitytable,XRST)模块和交叉阵列列稀疏性表(crossbar column sparsity table,XCST)模块。由于本申请实施例中的剪枝方案对于每个crossbar而言均可能产生行方向和列方向上的稀疏性。为了能够支持稀疏性。系统中额外设计了XRST和XCST。在一次计算中,地址控制器首先生成不考虑任何稀疏性的连续地址。根据行稀疏性,XRST会根据行稀疏性删除一些不参与实际计算的输入地址。然后系统基于该过滤后的稀疏地址将输入数据从缓冲器(buffer)中加载到输入寄存器(input register)中。在crossbar中的计算完成后,系统根据XCST,通过在相应的位置插入0,将每个crossbar的输出恢复到其原始的不考虑剪枝时的真实位置,并将输出数据送入到输出寄存器(output register)中。例如,如果crossbar内部某一行被删除,则其对应的输入无需读入芯片,可以使用XRST模块跳过这部分输入。而如果crossbar内部某一列被删除,则为了使同一filter在不同crossbar上的部分和可以正确累加,可以使用XCST恢复每个输出的真实索引(index)。
可选地,在硬件实现方面,XCST包括多个可写入1或0的单元,其长度等于原始的未剪枝的权值矩阵的列数,0和1分别用于表示对应列权值被删除或保留。在执行神经网络计算时,硬件可根据XCST在core的原始输出中的对应位置插入0,以复原各个输出的真实位置。
可选地,在硬件实现方面,XRST包括多个可写入0或1的单元,其长度等于原始的未剪枝的权值矩阵的行数,0和1分别表示对应权值被删除或保留。在计算阵列读取输入时,如对应单元赋值为0,则无需读取输入,故而可以删除对应地址,最终得到一个稀疏地址,然后根据该稀疏地址从片上读取数据。
在本申请实施例中,在硬件上额外设计了两个模块XRST和XCST,以分别用于支持计算阵列内部的行稀疏性和列稀疏性。由于行稀疏性的存在,原本输入中的部分元素需要被跳过,系统中XRST则记录了计算阵列内部的行稀疏性,指导系统跳过指定的输入。由于列稀疏性的存在,计算阵列的输出中各个元素的位置不是每个其真实的位置,故而系统利用XCST同在在计算阵列输出中插0来恢复各个输出到其在原始权值矩阵中的真实位置。通过在硬件架构中涉及XRST模块和XCST模块,可以减少不必要的数据搬运,降低功耗。
在权值矩阵映射的过程中,神经网络权值会部署在crossbar中的计算单元中。图8是本申请一实施例的权值矩阵的在剪枝前后映射至crossbar的示意图。图8中的(a)示出了将原始的权值矩阵映射到crossbar上的示意图。其中,一个8×8的较大矩形表示一个crossbar,一个小方格表示用于放置一个权值的计算单元。黑色表示该计算单元被占用,白色表示该计算单元空闲。未剪枝前,原始的权值矩阵占用了全部16个crossbar,且第四行和第四列均有部分计算单元空闲。通过神经网络剪枝,可以删除多余的权值,从而减少crossbar的占用。图8中的(b)示出了剪枝后的权值矩阵映射到crossbar的示意图。可见剪枝后的权值矩阵只占用4个crossbar,大大减少了crossbar的数量,并且每个corssbar中的计算单元均被占用,crossbar的利用率较高。
图9是本申请一实施例的用于神经网络的剪枝方法500的示意性流程图。该方法500可以由神经网络系统中的处理装置执行,该处理装置例如可以包括图1中的主机105。方法500包括以下步骤。
S501、获取第一神经网络层的第一权值矩阵,所述第一权值矩阵包括多个权值。
其中,如图3中的描述可知,神经网络可包括多个神经网络层,所述第一神经网络层可以为所述多个神经网络层中的任一网络层。其中,每一个神经网络层的输出可以为下一个神经网络层的输入。
S502、将所述第一权值矩阵划分为多个权值块。
可选地,所述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相对应,其中,每个计算阵列上包括多个计算单元。其中,上述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相对应,包括:所述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相同。
其中,上述多个权值块与多个计算阵列的数量相同,即上述多个权值块是根据执行神经网络计算的硬件结构而划分的。作为示例,所述计算节点可以为crossbar阵列,每个计算阵列为一个crossbar。每个计算单元可以为crossbar中用于部署一个权值的单元。
需要说明的是,本申请实施例对将第一权值矩阵划分为多个权值块的具体方式不作限定。可以将第一权值矩阵均匀地划分为多个权值块,也可以将第一权值矩阵非均匀地划分为多个权值块,只要多个权值块的数量与多个计算阵列的数量相同。例如,假设第一权值矩阵为一个6×6的矩阵,并假设使用4个计算阵列执行第一神经网络层计算,则可以将6×6的矩阵均匀划分为4个3×3的权值块。又例如,假设第一权值矩阵为6×7的矩阵,则可以将矩阵划分为2个3×3的权值块,以及两个3×4的权值块。
S503、对所述多个权值块中的每个权值块进行剪枝操作,以获得多个剪枝后的权值块,其中,所述剪枝操作包括对每个权值块执行下述至少一种剪枝操作:行剪枝操作和列剪枝操作。
作为示例,所述多个计算阵列中的每个计算阵列包括m行×n列个计算单元,每个计算单元用于部署一个权值,所述多个剪枝后的权值块的尺寸小于或等于m行×n列,m,n为大于等于2的整数。其中,为了提高对计算阵列中的计算单元的利用率,可以使得剪枝后的权值块的尺寸等于m行×n列。
可选地,在剪枝过程中,可以基于权值块中的每行或每列计算重要性度量因子,并根据重要性度量因子确定是否删除权值块中对应的行或列。例如,可以删除重要性度量因子的赋值较低的行或列。所述重要性度量因子可以包括但不限于以下参数:L1范数、L2范数、熵、与权值对应的输出的均值、与权值对应的输出的方差、或者与权值对应的输出的零所占百分比(average percent of zeros,APOZ)。
其中,在本申请实施例中,可以将上述对权值矩阵划分权值块之后,对每个权值块进行行剪枝操作和/或列剪枝操作的方法称为块剪枝操作。下文中将结合附图,继续介绍块剪枝操作的内容。
S504、将所述多个剪枝后的权值块中的权值写入用于执行所述第一神经网络层计算的计算节点中。
可选地,所述将所述多个剪枝后的权值块中的权值写入用于执行所述第一神经网络层计算的计算节点中,包括:将所述多个剪枝后的权值块中的权值分别写入执行所述第一神经网络层计算的计算节点中所包含的所述多个计算阵列的计算单元中。
在完成剪枝操作之后,可以将剩余的权值聚合,并将得到权值部署到所述多个计算阵列中的计算单元中,以便于计算节点执行相应的神经网络计算。
在本申请实施例中,可以将第一权值矩阵划分为多个权值块,并在每个权值块内部执行行剪枝和/或列剪枝。该方案可以实现对神经网络中的权值矩阵的细粒度剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
进一步地,在本申请实施例中,可以将第一权值矩阵划分为多个权值块,多个权值块的数量与用于执行神经网络计算的计算节点所包含的计算阵列的数量相对应,每个权值块内部使用行剪枝和/或列剪枝。该方案可以实现对神经网络中的权值矩阵的细粒度剪枝,并且基于执行神经网络的计算阵列对权值矩阵进行剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
可选地,S501中的第一神经网络层可以是经过结构化剪枝后的神经网络层。其中,该结构化剪枝是指不考虑硬件架构的结构化剪枝。在一些示例中,方法500还包括:获取所述第一神经网络层的第一初始权值矩阵;对所述第一初始权值矩阵执行结构化剪枝操作,以得到第一剪枝权值矩阵。可选地,在神经网络包括多个神经网络层的情况下,可以对多个神经网络层的初始权值矩阵执行结构化剪枝,以得到剪枝权值矩阵。并利用结构化剪枝的结果,以及神经网络层之间的输入输出关系,继续简化每个神经网络层中的剪枝权值矩阵,以得到S501中的权值矩阵。
例如,图10是本申请一实施例的对权值矩阵执行不考虑硬件架构的结构化剪枝的示意图。图10中的(a)至(c)示出了四维权值矩阵的剪枝示意图。图10中的(d)和(e)示出了二维权值矩阵的剪枝示意图。具体地,(a)表示了沿filter维度的稀疏性剪枝示意图。(b)表示了沿channel维度的稀疏性剪枝示意图。(c)表示了沿形状(shape)维度的稀疏性剪枝示意图。其中,shape表示四维权值矩阵中的宽(width)维度和高(height)维度。(d)表示了沿行维度的稀疏性剪枝示意图。(e)表示了沿列维度的稀疏性剪枝示意图。
如图10所示,四维的权值矩阵可以通过二维展开转换为二维的权值矩阵。其中,四维权值矩阵中的一个filter可对应二维权值矩阵中的一列权值,即删除二维矩阵中的一列权值即删除了四维权值矩阵的一个filter。二维权值矩阵中的一行权值对应四维权值矩阵中的所有filter中的同一个位置。四维权值矩阵中的一个channel可以对应于二维权值矩阵中的一个或多个连续的行。
剪枝算法可以为二维权值矩阵中的每一行或每一列计算一个重要性度量因子,并删除重要性度量因子比较低的行或者列。上述重要性度量因子包括但不限于:L1范数、L2范数、熵、与权值对应的输出数据的均值、与权值对应的输出数据的方差、以及与权值对应的输出数据的零所占百分比(average percent of zeros,APOZ)等。
可选地,在对第一初始权值矩阵进行结构化剪枝之后,进一步地,还可以根据与第一神经网络层相邻的神经网络层的权值矩阵的结构化剪枝的结果,继续简化第一剪枝权值矩阵,以得到第一权值矩阵。在本申请实施例中,可以将上述简化过程称为结构化剪枝后处理,或者简称为后处理。在一些示例中,后处理过程包括:根据在所述结构化剪枝操作过程中被删除的所述第一神经网络层的相邻神经网络层的初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,以得到所述第一权值矩阵。
在后处理过程中,假设第一神经网络层的上一层为第四神经网络层,则第四神经网络层的输出数据为第一神经网络层的输入数据,若第四神经网络层中的若干权值被删除,第四神经网络层的相应的输出数据为0,因此可以删除第一神经网络层中对应的权值。类似地,假设第一神经网络层的下一层为第五神经网络层,则第一神经网络层的输出数据为第五神经网络的输出数据。假设第五神经网络层中的若干权值被删除,则第五神经网络层中的相应输出数据为0,因此可以删除第一神经网络层中对应的权值。
在一些示例中,所述根据在所述结构化剪枝操作过程中被删除的所述第一神经网络层的相邻神经网络层的初始权值矩阵中权值,删除所述第一剪枝权值矩阵中的相应权值,包括以下至少一项:根据在所述结构化剪枝操作过程中被删除的第四神经网络层的第四初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第一神经网络层的输入数据包括所述第四神经网络层的输出数据;根据在所述结构化剪枝操作过程中被删除的第五神经网络层的第五初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第五神经网络层的输入数据包括所述第一神经网络层的输出数据。
作为示例,所述根据在所述结构化剪枝操作过程中被删除的第四神经网络层的第四初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,包括:在执行结构化剪枝操作中删除所述第四初始权值矩阵中的第p列权值的情况下,删除所述第一剪枝权值矩阵中第q行权值,其中,所述第q行权值对应的所述第一神经网络层的输入数据包括所述第p列权值对应的所述第四神经网络的输出数据,p和q均大于等于1。
作为示例,所述根据在所述结构化剪枝操作过程中被删除的第五神经网络层的第五初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,包括:在执行结构化剪枝操作中删除所述第五初始权值矩阵中的第i行权值的情况下,删除所述第一初始权值矩阵中的第j列权值,其中,所述第i行权值对应的所述第五神经网络层的输入数据包括所述第j列权值对应的所述第一神经网络层的输出数据,i和j均大于等于1。
图11是本申请一实施例的结构化剪枝之后执行后处理的示意图。如图11所示,经过结构化剪枝,原始的权值矩阵中的若干filter或者channel被删除。其中,一个filter对应二维的权值矩阵中的一列权值。一个channel对应于二维的权值矩阵中的一个或多个连续列。如图11所示,第i个神经网络层中的第2个filter被删除,则第i层的输出的第2个channel的值即为0,而第i个神经网络层的输出也即第i+1个神经网络层的输入,即第i+1个神经网络层中的第2个channel的输入为0。即使第i+1个神经网络层中的第2个channel的权值的重要性度量因子较高,然而其对应的输入数据为0,该channel的计算结果为0,因此可以删除第i个神经网络层中的第2个channel的权值。
类似地,继续参见图11,第i+1个神经网络层中的第n个channel被删除,即相当于第n个channel中的权值均为0,无论该channel对应的输入为多少,其计算结果均为0。而该channel的输入即为第i个神经网络层中的第n个filter所产生的输出,因为该channel上的计算结果与输入无关,即对应的filter的输出对计算结果无影响,因此可以删除第i个神经网络层中的第n个filter。第n个filter中包括第i个神经网络层中的一列或多列权值。
图12是本申请一实施例的权值矩阵映射至计算阵列的架构示意图。如图12所示,权值矩阵映射至计算阵列时可包括图12中的(a)至(c)所示的三种情况。如图12中的(a)所示,在第一种情况下,权值矩阵的宽度与计算阵列的宽度为一个数量级,而权值矩阵的高度远大于计算阵列的高度。例如,假设权值矩阵的大小为4608×10,计算阵列的大小为128×16,此时即会出现图12中的(a)中的情况。在这种情况下,神经网络进行列方向上的剪枝对于减少计算阵列中的计算单元的数量已没有必要,因此可以选择对权值矩阵提供基于计算阵列粒度的行剪枝操作。上述基于计算阵列粒度的行剪枝操作可以指以计算阵列中的每行计算单元数量为单位的行剪枝操作。例如,若计算阵列的大小为128×16,则可以执行以16为单位的行剪枝操作。应理解,由于权值矩阵的大小为4608×10,行剪枝操作中的每行权值只有10个。因此,基于计算阵列粒度的行剪枝操作可以理解为剪枝粒度小于或等于计算阵列粒度。
还需要说明的是,若第二权值矩阵的行数远大于相应的计算阵列中的计算单元的行数,而第二权值矩阵的列数虽然大于相应的计算阵列中的计算单元的列数,但是两个列数的数量级相当,也可以对权值矩阵采用行剪枝操作。例如,假设权值矩阵的大小为4608×30,计算阵列的大小为128×16,则也可以采用行剪枝操作。其中,下文中将结合图14继续描述基于计算阵列粒度进行行剪枝操作的方案。
其中,可以采取多种方式确定对权值矩阵的采用的剪枝方案。在一个示例中,方法500还包括:获取第二神经网络层的第二权值矩阵;获取第三比值,所述第三比值为将所述第二权值矩阵映射至执行所述第二神经网络层计算的计算阵列时所占用的计算阵列的行数和列数之间的比值;在所述第三比值大于第三阈值的情况下,对所述第二权值矩阵执行以计算阵列中的每行计算单元数量为单位的行剪枝操作。
例如,在图12的(a)中权值矩阵映射至计算阵列时,占用了4×1个计算阵列。第三比值为4/1=4。假设第三阈值为3,则应该选择行剪枝操作。
应理解,第三阈值的具体取值可根据实践确定,本申请实施例对此不作限定。
在本申请实施例中,可以根据第二权值矩阵映射至执行第二神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的关系,确定对所述第二权值矩阵执行以所述计算阵列中的每行计算单元数量为单位的行剪枝操作。从而可以利用第二权值矩阵以及执行神经网络计算的计算阵列之间的对应关系,即第二权值矩阵与执行神经网络计算的硬件之间的对应关系,确定对第二权值矩阵执行细粒度的行剪枝操作。从而实现对神经网络中的权值矩阵的细粒度剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
在一些示例中,也可以根据所述第二权值矩阵的行数(或列数)与执行所述第二神经网络层的计算阵列中的计算单元的行数(或列数)的差值,确定是选择行剪枝操作或其它类型的剪枝操作。或者,也可以根据所述第二权值矩阵的行数(或列数)与执行所述第二神经网络层的计算阵列中的计算单元的行数(或列数)的比值,确定是选择行剪枝操作或其它类型的剪枝操作。或者,也可以根据所述第二权值矩阵的行数(或列数)与执行所述第二神经网络层的计算阵列中的计算单元的行数(或列数)的数量级,确定是选择行剪枝操作或其它类型的剪枝操作。或者,也可以采用其它方式判断权值矩阵的大小与计算阵列的大小关系,并确定选择的剪枝操作的方式。
如图12中的(b)所示,在第二种情况下,权值矩阵的高度和计算阵列的高度为一个数量级,而权值矩阵的宽度远大于一个计算阵列的宽度。例如,假设权值矩阵的大小为128×256,而计算阵列的大小为128×16。要想减少用于执行神经网络计算的计算阵列的数量,则应该选择对权值矩阵提供基于计算阵列粒度的列剪枝操作类型。上述基于计算阵列粒度的列剪枝操作可以指以计算阵列中的每列计算单元数量为单位的列剪枝操作。例如,若计算阵列的大小为128×16,则可以执行以128为单位的列剪枝操作。应理解,若权值矩阵中的每列权值的数量小于128,则列剪枝操作中的每列权值数量小于计算阵列中的每列计算单元的数量。因此,基于计算阵列粒度的列剪枝操作可以理解为剪枝粒度小于或等于计算阵列粒度。
还需要说明的是,若第三权值矩阵的列数远大于相应的计算阵列中的计算单元的列数,而第三权值矩阵的行数虽然大于相应的计算阵列中的计算单元的行数,但是两个行数的数量级相当,也可以对权值矩阵采用行剪枝操作。例如,假设权值矩阵的大小为230×256,计算阵列的大小为128×16,则也可以采用列剪枝操作。其中,下文中将结合图15继续描述基于计算阵列粒度进行列剪枝操作的方案。
其中,可以采取多种方式确定对权值矩阵的采用的剪枝方案。在一些示例中,方法500还包括:获取第三神经网络层的第三权值矩阵;获取第四比值,所述第四比值为将所述第三权值矩阵映射至执行所述第三神经网络层计算的计算阵列时所占用的计算阵列的列数和行数之间的比值;在所述第四比值大于第四阈值的情况下,对所述第三权值矩阵执行以所述计算阵列中的每列计算单元数量为单位的列剪枝操作。
例如,在图12的(b)中权值矩阵映射至计算阵列时,占用了1×4个计算阵列。第四比值为4/1=4。假设第四阈值为3,则应该选择列剪枝操作。
应理解,第四阈值的具体取值可根据实践确定,本申请实施例对此不作限定。
在一些示例中,还可以根据所述第三权值矩阵的列数(或行数)与执行所述第三神经网络层的计算阵列中的计算单元的列数(或行数)的差值,确定是选择列剪枝操作或其它类型的剪枝操作。或者,也可以根据所述第三权值矩阵的列数(或行数)与执行所述第三神经网络层的计算阵列中的计算单元的列数(或行数)的比值,确定是选择列剪枝操作或其它类型的剪枝操作。或者,也可以根据所述第三权值矩阵的列数(或行数)与执行所述第三神经网络层的计算阵列中的计算单元的列数(或行数)的数量级,确定是选择行剪枝操作或其它类型的剪枝操作。或者,也可以采用其它方式判断权值矩阵的大小与计算阵列的大小关系,并确定选择的剪枝操作的方式。
如图12中的(c)所示,在第三种情况下,权值矩阵在行和列两个维度的大小都远大于计算阵列。例如,假设权值矩阵的大小为4608×512,而计算阵列的大小为128×16。此时,在行和列两个维度进行剪枝对减少计算单元数量均有意义。因此可以对权值矩阵划分多个权值块,并针对每个权值块采用块剪枝操作。其中块剪枝操作包括对权值块进行行剪枝操作和/或列剪枝操作。其中,下文中将结合图16继续描述基于计算阵列粒度进行块剪枝操作的方案。
在一些示例中,S502部分中将所述第一权值矩阵划分为多个权值块包括:获取第一比值,所述第一比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的比值;获取第二比值,所述第二比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的列数和行数之间的比值;在第一比值小于第一阈值的情况下,且所述第二比值小于第二阈值的情况下,将所述第一权值矩阵划分为所述多个权值块。例如,在图12的(b)中权值矩阵映射至计算阵列时,占用了4×4个计算阵列。第一比值为4/4=1,第二比值为4/4=1。假设第一阈值为2,第二阈值为3,第一比值小于第一阈值,第二比值小于第二阈值。因此可以采用对权值矩阵划分权值块并执行块剪枝操作。
应理解,第一阈值和第二阈值的具体取值可根据实践确定,本申请实施例对此不作限定。
在本申请实施例中,可以根据第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的关系,确定将第一权值矩阵划分为多个权值块,从而可以利用第一权值矩阵以及执行神经网络计算的计算阵列之间的对应关系,即第一权值矩阵与执行神经网络计算的硬件之间的对应关系,确定将第一权值矩阵划分为与计算阵列对应的多个权值块,并进行剪枝操作,从而实现对神经网络中的权值矩阵的细粒度剪枝,能够提高计算阵列的利用率,优化剪枝的效率。
其中,可以采取多种方式确定对权值矩阵的采用的剪枝方案。例如,可以根据所述第一权值矩阵的列数(或行数)与执行所述第一神经网络层的计算阵列中的计算单元的列数(或行数)的差值,确定是选择块剪枝操作或其它类型的剪枝操作。或者,也可以根据所述第一权值矩阵的列数(或行数)与执行所述第一神经网络层的计算阵列中的计算单元的列数(或行数)的比值,确定是选择块剪枝操作或其它类型的剪枝操作。或者,也可以根据所述第一权值矩阵的列数(或行数)与执行所述第一神经网络层的计算阵列中的计算单元的列数(或行数)的数量级,确定是选择块剪枝操作或其它类型的剪枝操作。或者,也可以采用其它方式判断权值矩阵的大小与计算阵列的大小关系,并确定选择的剪枝操作的方式。
其中,行剪枝操作可以以计算阵列中的一行上的权值作为剪枝单位,会在行方向上产生一个非常小的剪枝粒度,而放弃对列方向上的细粒度的稀疏性的利用。列剪枝操作以计算阵列中的一列上的权值作为剪枝单位,会在列方向上产生一个非常小的剪枝粒度,而放弃了对行方向上的细粒度的稀疏性的利用。而块剪枝操作将权值矩阵划分为多个权值块,在每个权值块内部进行结构化剪枝,故而在行方向和列方向上会同时产生小于传统结构化剪枝的剪枝粒度。由于剪枝之前的每个权值块的尺寸是大于一个计算阵列的,所以块剪枝操作在行方向和列方向上的剪枝粒度大于行剪枝操作和列剪枝操作。
越小的剪枝粒度意味着越好的剪枝灵活度和越大的剪枝粒度。行剪枝操作可以尽可能的利用神经网络行方向上的稀疏性,而列方向上采用原始的结构化剪枝。而列剪枝操作则尽可能的利用列方向上的稀疏性,在行方向上采用原始的结构化剪枝。块剪枝操作在行、列方向上同时产生了小于结构化剪枝但大于计算阵列上剪枝的剪枝粒度。
图13是本申请一实施例的执行神经网络剪枝的过程示意图。图13中包括了对初始神经网络的权值矩阵执行不考虑硬件架构的结构化剪枝以及执行后处理的过程。如图13所示,图13的方法包括:
S701、获取原始的神经网络模型。
即获取神经网络的原始的权值矩阵。该权值矩阵可以是四维的权值矩阵。
S702、对原始的神经网络中的权值矩阵执行不考虑硬件架构的结构化剪枝。
其中,对于不考虑硬件架构的结构化剪枝的内容可参见图9以及图10中的相关描述,为了简洁,此处不再赘述。
S703、利用神经网络层之间的输入与输出关系,对神经网络进行后处理。
其中,上述后处理包括利用神经网络层之间的filter和channel关系,对结构化剪枝后的神经网络继续进行简化处理。
S704、根据权值矩阵的尺寸和计算阵列的尺寸,确定对权值矩阵执行的剪枝操作的类型。
上述剪枝操作的类型可包括基于计算阵列粒度的行剪枝操作、基于计算阵列粒度的列剪枝操作或者将权值矩阵划分权值块并执行块剪枝操作。其中,块剪枝操作包括对每个权值块执行行剪枝操作和/或列剪枝操作。
其中,上述确定剪枝操作的类型的具体方式,可参见图12中的相关描述,此处不再赘述。
S705、根据S704中选择的剪枝类型,对后处理之后的权值矩阵执行块剪枝操作、基于计算阵列粒度的行剪枝操作或列剪枝操作。
其中,关于上述块剪枝操作、基于计算阵列粒度的行剪枝操作或列剪枝操作的具体内容,可以参见图9-图12或者下文中图14-图16中的相关描述,为了简洁,此处不再赘述。
在本申请实施例中,为了能够充分利用神经网络稀疏性,尽可能的压缩神经网络,减少需要的计算阵列的数量,本申请提出了一种考虑计算阵列的硬件架构的剪枝方案。该方案中首先提出了一种结构化剪枝后处理的方案,其可以利用神经网络前后层间输入输出对应关系,进一步压缩神经网络,删除一些常规基于重要性度量因子剪枝算法不能删除的权值。
此外,本申请中在考虑硬件架构的情形下,设计了三种细粒度的剪枝方案,这种细粒度给剪枝提供了额外的灵活性,从而在维持相同精度下提高了压缩比。在具体选择哪种细粒度剪枝方案时,本申请使用的剪枝算法会协同考虑软硬件因素,通过分析权值矩阵尺寸以及计算阵列的尺寸来分析各维度剪枝对于减少计算阵列数量的贡献,从而选择一种最合适的方法。故而本申请实施例可以大幅度的压缩神经网络,并基于计算阵列硬件架构对神经网络进行剪枝,提高了对计算阵列硬件架构的利用率。
图14是本申请一实施例的基于计算阵列粒度的行剪枝操作的示意图。如图14所示,假设剪枝前的权值矩阵包括4个2×2的filter,其可以被映射在4个2×2的计算阵列上。上述4个计算阵列分别表示为XB1、XB2、XB3和XB4。如图14左侧所示,每个filter对应权值矩阵中的一列权值。此时以计算阵列内部一行上的权值(例如,crossbar中的一行)数量作为基本剪枝粒度进行剪枝。例如,可以将权值矩阵划分为至少一个权值组,每个权值组的宽度小于或等于一个计算阵列的宽度,每个权值组的高度与权值矩阵的高度相同。可以对每个权值组执行行剪枝。权值组中的每行权值的数量小于或等于一个计算阵列中的每行的计算单元的数量。如图14所示,权值矩阵可划分为两个权值组。第一个权值组中的权值包括filter 1和filter 2中的权值,即权值矩阵中的第一列和第二列权值。在未剪枝前,其可映射至XB1和XB3。第二个权值组中的权值包括filter 3和filter 4中的权值,即权值矩阵中的第三列和第四列权值。在未剪枝前,其映射至XB2和XB4。
剪枝算法可以以计算阵列的行为单位计算重要性度量因子,例如L1范数。然后根据剪枝率确定一个剪枝阈值,将重要性度量因子低于剪枝阈值的行删除。可选地,考虑到对齐因素,剪枝算法可以适当保留或删除权值组中的一些行,以使得最终的剪枝结果映射到计算阵列之后,计算阵列中的计算单元中不存在空闲单元。
例如,如图14所示,若删除每个计算阵列中所有L1范数小于等于3的行,则XB1中的第一行、XB2和XB3中的第二行均被删除。对应行向上移,则发现XB2和XB4中总共只删除了一行,上移后XB4的一行计算单元被占用,一行计算单元被释放,导致部分计算单元空闲。因此可以调整剪枝阈值为4,将XB4中的第一行删除。最终将剪枝完成后的权值矩阵映射到计算阵列时可以发现,剩余的权值只需占用XB1和XB2,而XB3和XB4可以完全释放。
另外,由于计算阵列中的一行对应着同一个输入,剪枝后一些行被删除,则对应的输入无需读入。例如,图14中的XB1中的第一行和XB3中的第二行被删除,则在执行神经网络计算时,输入数据中的第一个元素2和第四个元素5无需读入。又例如,XB2中的第二行和XB4中的第一行被删除,则在执行神经网络计算时,输入数据中的第二个数据1和第三个数据3无需读入。
图15是本申请一实施例的基于计算阵列粒度的列剪枝操作的示意图。如图15所示,假设剪枝前的权值矩阵包括4个2×2的filter,其可以被映射在4个2×2的计算阵列上。上述4个计算阵列分别表示为XB1、XB2、XB3和XB4。如图15上部分所示,每个filter对应权值矩阵中的一列权值。此时以计算阵列内部一列上的权值(例如,crossbar中的一列)数量作为基本剪枝粒度进行剪枝。例如,可以将权值矩阵划分为至少一个权值组,每个权值组的高度小于或等于一个计算阵列的高度,每个权值组的宽度与权值矩阵的宽度相同。可以对每个权值组执行列剪枝。权值组中的每列权值的数量小于或等于一个计算阵列中的每列的计算单元的数量。如图15所示,权值矩阵可划分为两个权值组。第一个权值组中的权值包括映射至XB1和XB 2中的权值,即权值矩阵中的第一行和第二行权值。第二个权值组中的权值包括映射至XB 3和XB 4中的权值,即权值矩阵中的第三行和第四行权值。
剪枝算法可以以计算阵列的列为单位计算重要性度量因子,例如L1范数。然后根据剪枝率确定一个剪枝阈值,将重要性度量因子低于剪枝阈值的列删除。可选地,考虑到对齐因素,剪枝算法可以适当保留或删除权值组中的一些列,以使得最终的剪枝结果映射到计算阵列之后,计算阵列中的计算单元中不存在空闲。
例如,如图15所示,若删除每个计算阵列中所有L1范数小于等于3的列,则XB1中的第二列和XB3中的第一列均被删除。对应列向左移,此时将出现不对齐的情况。XB2和XB4中出现部分空闲的计算单元。因此可以调整剪枝阈值为4,将XB2中的第一列和XB4中的第二列删除。最终将剪枝完成后的权值矩阵映射到计算阵列时可以发现,剩余的权值只需占用XB1和XB3,而XB2和XB4可以完全释放。
另外,由于进行基于计算阵列粒度的列剪枝之后,计算阵列中列的位置并非该列权值在权值矩阵中的位置,例如,XB1中第二列权值是剪枝前的权值矩阵中的第四列的位置。因此需要在输出电路中将计算阵列的输出还原到其真实的位置。
图16是本申请一实施例的块剪枝操作的示意图。如图16所示,假设剪枝前的权值矩阵为一个6×6的矩阵,执行该权值矩阵对应的神经网络计算的计算节点包括4个2×2的计算阵列。可以首先将权值矩阵均匀地划分为4个权值块。上述4个权值块可分别表示为B1、B2、B3和B4。每个权值块为一个3×3的矩阵。为了将每个权值块映射到一个计算阵列中,可以根据剪枝算法在每个权值块内部进行结构化剪枝。删除权值块内部冗余的一行和一列。例如,在图16中,算法删除了B1中的一行和第三行,使得B1中剩余的权重大小为2×2。每个剪枝后的权值块可以正好映射到一个计算阵列上。
由于块剪枝操作会在权值块内部同时产生行方向和列方向上的稀疏性。考虑到行稀疏性,由于计算阵列中的一行对应着同一个输入,剪枝后一些行被删除,则对应的输入无需读入。例如,图16中的B1中的第三行和B3中的第二行被删除,则在执行神经网络计算时,输入数据中的第3个元素6和第五个元素5无需读入。又例如,B2中的第二行和B4中的第三行被删除,则在执行神经网络计算时,输入数据中的第2个数据1和第6个数据1无需读入。
考虑到列稀疏性,由于进行基于计算阵列粒度的列剪枝之后,计算阵列中列的位置并非该列权值在权值矩阵中的位置,因此需要在输出电路中将计算阵列的输出还原到其真实的位置。
在本申请实施例中,在基于计算阵列粒度进行剪枝时还考虑了对齐因素。对于块剪枝操作来说,每个权值块进行剪枝后可以正好占满一个计算阵列。因此,在剪枝时可以动态的调整剪枝阈值,使剪枝完成的权值映射到计算阵列时使每个计算阵列被尽可能的占满,从而改善了权值矩阵与计算阵列之间的对齐问题。
图17是本申请实施例的用于执行神经网络的剪枝方法的装置1800的结构示意图。该装置1800能够执行上述由神经网络系统中的处理装置,例如图1中的主机105,执行的方法和步骤。如图17所示,该装置1800包括:
获取模块1810,用于获取第一神经网络层的第一权值矩阵,所述第一权值矩阵包括多个权值;
划分模块1820,用于将所述第一权值矩阵划分为多个权值块;
剪枝模块1830,用于对所述多个权值块中的每个权值块进行剪枝操作,以获得多个剪枝后的权值块,其中,所述剪枝操作包括对每个权值块执行下述至少一种剪枝操作:行剪枝操作和列剪枝操作;
输出模块1840,用于将所述多个剪枝后的权值块中的权值分别写入执行所述第一神经网络层计算的计算节点中。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种用于神经网络的剪枝方法,其特征在于,包括:
获取第一神经网络层的第一权值矩阵,所述第一权值矩阵包括多个权值;
将所述第一权值矩阵划分为多个权值块;
对所述多个权值块中的每个权值块进行剪枝操作,以获得多个剪枝后的权值块,其中,所述剪枝操作包括对每个权值块执行下述至少一种剪枝操作:行剪枝操作和列剪枝操作;
将所述多个剪枝后的权值块中的权值写入用于执行所述第一神经网络层计算的计算节点中。
2.如权利要求1所述的方法,其特征在于,所述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相对应,其中,每个计算阵列上包括多个计算单元;
所述将所述多个剪枝后的权值块中的权值写入用于执行所述第一神经网络层计算的计算节点中,包括:将所述多个剪枝后的权值块中的权值写入所述多个计算阵列中。
3.如权利要求1或2所述的方法,其特征在于,所述多个计算阵列中的每个计算阵列包括m行×n列个计算单元,每个计算单元用于部署一个权值,所述多个剪枝后的权值块的尺寸小于或等于m行×n列,m,n为大于等于2的整数。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
获取第一比值,所述第一比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的比值;
获取第二比值,所述第二比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的列数和行数之间的比值;
所述将所述第一权值矩阵划分为多个权值块,包括:在所述第一比值小于第一阈值的情况下,且所述第二比值小于第二阈值的情况下,将所述第一权值矩阵划分为所述多个权值块。
5.根据权利要求1-4任意一项所述的方法,其特征在于,还包括:
获取第二神经网络层的第二权值矩阵;
获取第三比值,所述第三比值为将所述第二权值矩阵映射至执行所述第二神经网络层计算的计算阵列时所占用的计算阵列的行数和列数之间的比值;
在所述第三比值大于第三阈值的情况下,对所述第二权值矩阵执行以所述计算阵列中的每行计算单元数量为单位的行剪枝操作。
6.根据权利要求1-5任意一项所述的方法,其特征在于,还包括:
获取第三神经网络层的第三权值矩阵;
获取第四比值,所述第四比值为将所述第三权值矩阵映射至执行所述第三神经网络层计算的计算阵列时所占用的计算阵列的列数和行数之间的比值;
在所述第四比值大于第四阈值的情况下,对所述第三权值矩阵执行以所述计算阵列中的每列计算单元数量为单位的列剪枝操作。
7.如权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
获取所述第一神经网络层的第一初始权值矩阵;
对所述第一初始权值矩阵执行结构化剪枝操作,以得到第一剪枝权值矩阵;
根据在所述结构化剪枝操作过程中被删除的所述第一神经网络层的相邻神经网络层的初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,以得到所述第一权值矩阵。
8.如权利要求7所述的方法,其特征在于,所述根据在所述结构化剪枝操作过程中被删除的所述第一神经网络层的相邻神经网络层的初始权值矩阵中权值,删除所述第一剪枝权值矩阵中的相应权值,包括以下至少一项:
根据在所述结构化剪枝操作过程中被删除的第四神经网络层的第四初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第一神经网络层的输入数据包括所述第四神经网络层的输出数据;
根据在所述结构化剪枝操作过程中被删除的第五神经网络层的第五初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第五神经网络层的输入数据包括所述第一神经网络层的输出数据。
9.根据权利要求8所述的方法,其特征在于,所述根据在所述结构化剪枝操作过程中被删除的第四神经网络层的第四初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,包括:
在执行结构化剪枝操作中删除所述第四初始权值矩阵中的第p列权值的情况下,删除所述第一剪枝权值矩阵中第q行权值,其中,所述第q行权值对应的所述第一神经网络层的输入数据包括所述第p列权值对应的所述第四神经网络的输出数据,p和q均大于等于1。
10.根据权利要求8或9所述的方法,其特征在于,所述根据在所述结构化剪枝操作过程中被删除的第五神经网络层的第五初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,包括:
在执行结构化剪枝操作中删除所述第五初始权值矩阵中的第i行权值的情况下,删除所述第一初始权值矩阵中的第j列权值,其中,所述第i行权值对应的所述第五神经网络层的输入数据包括所述第j列权值对应的所述第一神经网络层的输出数据,i和j均大于等于1。
11.一种用于执行神经网络的剪枝方法的装置,其特征在于,所述装置包括:
获取模块,用于获取第一神经网络层的第一权值矩阵,所述第一权值矩阵包括多个权值;
划分模块,用于将所述第一权值矩阵划分为多个权值块;
剪枝模块,用于对所述多个权值块中的每个权值块进行剪枝操作,以获得多个剪枝后的权值块,其中,所述剪枝操作包括对每个权值块执行下述至少一种剪枝操作:行剪枝操作和列剪枝操作;
输出模块,用于将所述多个剪枝后的权值块中的权值分别写入所述多个计算阵列的计算单元中。
12.如权利要求11所述的装置,其特征在于,所述多个权值块的数量与用于执行所述第一神经网络层计算的计算节点所包含的多个计算阵列的数量相对应,其中,每个计算阵列上包括多个计算单元;
所述输出模块具体用于将所述多个剪枝后的权值块中的权值写入所述多个计算阵列中。
13.如权利要求11或12所述的装置,其特征在于,所述多个计算阵列中的每个计算阵列包括m行×n列个计算单元,每个计算单元用于部署一个权值,所述多个剪枝后的权值块的尺寸小于或等于m行×n列,m,n为大于等于2的整数。
14.如权利要求11-13中任一项所述的装置,其特征在于,所述剪枝模块还用于:
获取第一比值,所述第一比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的行数和列数之间的比值;
获取第二比值,所述第二比值为将所述第一权值矩阵映射至执行所述第一神经网络层计算的计算节点时所占用的计算阵列的列数和行数之间的比值;
所述剪枝模块具体用于在所述第一比值小于第一阈值的情况下,且所述第二比值小于第二阈值的情况下,将所述第一权值矩阵划分为所述多个权值块。
15.根据权利要求11-14任意一项所述的装置,其特征在于,所述剪枝模块还用于:
获取第二神经网络层的第二权值矩阵;
获取第三比值,所述第三比值为将所述第二权值矩阵映射至执行所述第二神经网络层计算的计算阵列时所占用的计算阵列的行数和列数之间的比值;
在所述第三比值大于第三阈值的情况下,对所述第二权值矩阵执行以所述计算阵列中的每行计算单元数量为单位的行剪枝操作。
16.根据权利要求11-15任意一项所述的装置,其特征在于,所述剪枝模块还用于:
获取第三神经网络层的第三权值矩阵;
获取第四比值,所述第四比值为将所述第三权值矩阵映射至执行所述第三神经网络层计算的计算阵列时所占用的计算阵列的列数和行数之间的比值;
在所述第四比值大于第四阈值的情况下,对所述第三权值矩阵执行以所述计算阵列中的每列计算单元数量为单位的列剪枝操作。
17.如权利要求11-16中任一项所述的装置,其特征在于,所述获取模块还用于:
获取所述第一神经网络层的第一初始权值矩阵;
对所述第一初始权值矩阵执行结构化剪枝操作,以得到第一剪枝权值矩阵;
根据在所述结构化剪枝操作过程中被删除的所述第一神经网络层的相邻神经网络层的初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,以得到所述第一权值矩阵。
18.如权利要求17所述的装置,其特征在于,所述获取模块具体用于执行以下至少一项:
根据在所述结构化剪枝操作过程中被删除的第四神经网络层的第四初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第一神经网络层的输入数据包括所述第四神经网络层的输出数据;
根据在所述结构化剪枝操作过程中被删除的第五神经网络层的第五初始权值矩阵中的权值,删除所述第一剪枝权值矩阵中的相应权值,其中,所述第五神经网络层的输入数据包括所述第一神经网络层的输出数据。
19.根据权利要求18所述的装置,其特征在于,所述获取模块具体用于:
在执行结构化剪枝操作中删除所述第四初始权值矩阵中的第p列权值的情况下,删除所述第一剪枝权值矩阵中第q行权值,其中,所述第q行权值对应的所述第一神经网络层的输入数据包括所述第p列权值对应的所述第四神经网络的输出数据,p和q均大于等于1。
20.根据权利要求18或19所述的装置,其特征在于,所述获取模块具体用于:
在执行结构化剪枝操作中删除所述第五初始权值矩阵中的第i行权值的情况下,删除所述第一初始权值矩阵中的第j列权值,其中,所述第i行权值对应的所述第五神经网络层的输入数据包括所述第j列权值对应的所述第一神经网络层的输出数据,i和j均大于等于1。
21.一种神经网络系统,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,和所述存储器相连,用于运行所述计算机指令,以执行权利要求1至10中任意一项所述的方法。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码包括用于执行如权利要求1至10中任一项所述的方法的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910943503 | 2019-09-30 | ||
CN2019109435035 | 2019-09-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112580796A true CN112580796A (zh) | 2021-03-30 |
Family
ID=75119361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010082987.1A Pending CN112580796A (zh) | 2019-09-30 | 2020-02-07 | 用于神经网络的剪枝方法、装置以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112580796A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023238340A1 (ja) * | 2022-06-09 | 2023-12-14 | 日本電信電話株式会社 | 音声波形生成方法、音声波形生成装置及びプログラム |
-
2020
- 2020-02-07 CN CN202010082987.1A patent/CN112580796A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023238340A1 (ja) * | 2022-06-09 | 2023-12-14 | 日本電信電話株式会社 | 音声波形生成方法、音声波形生成装置及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sun et al. | Fully parallel RRAM synaptic array for implementing binary neural network with (+ 1,− 1) weights and (+ 1, 0) neurons | |
CN108108811B (zh) | 神经网络中的卷积计算方法和电子设备 | |
Chu et al. | PIM-prune: Fine-grain DCNN pruning for crossbar-based process-in-memory architecture | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
US11847569B2 (en) | Training and application method of a multi-layer neural network model, apparatus and storage medium | |
CN109791628B (zh) | 神经网络模型分块压缩方法、训练方法、计算装置及系统 | |
CN106570559A (zh) | 一种基于神经网络的数据处理方法和装置 | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN112215331A (zh) | 对神经网络系统中的数据处理方法和神经网络系统 | |
CN114158284A (zh) | 用于使用存储器内处理进行矩阵乘法的装置和方法 | |
CN113344179A (zh) | 基于fpga的二值化卷积神经网络算法的ip核 | |
CN115186802A (zh) | 基于卷积神经网络的块稀疏方法、装置及处理单元 | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
CN113283587A (zh) | 一种Winograd卷积运算加速方法及加速模块 | |
CN109902821B (zh) | 一种数据处理方法、装置及相关组件 | |
CN112580796A (zh) | 用于神经网络的剪枝方法、装置以及系统 | |
CN109598335B (zh) | 一种二维卷积脉动阵列结构及实现方法 | |
CN112561049B (zh) | 一种基于忆阻器的dnn加速器的资源分配方法及装置 | |
US20230032432A1 (en) | Pruning method based on crossbar architecture and system thereof | |
CN116842304A (zh) | 一种不规则稀疏矩阵的计算方法及系统 | |
Fong et al. | A cost-effective CNN accelerator design with configurable PU on FPGA | |
CN113312285B (zh) | 一种卷积神经网络加速器及其工作方法 | |
KR102315617B1 (ko) | 그래픽 처리 장치의 구조를 고려한 신경망 프루닝 장치 및 방법 | |
CN114692854A (zh) | 用于生成人工神经网络模型的内核的npu及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210330 |
|
WD01 | Invention patent application deemed withdrawn after publication |