CN115222042A - 一种结构化剪枝的方法以及系统 - Google Patents
一种结构化剪枝的方法以及系统 Download PDFInfo
- Publication number
- CN115222042A CN115222042A CN202210805865.XA CN202210805865A CN115222042A CN 115222042 A CN115222042 A CN 115222042A CN 202210805865 A CN202210805865 A CN 202210805865A CN 115222042 A CN115222042 A CN 115222042A
- Authority
- CN
- China
- Prior art keywords
- pruned
- layer
- pruning
- deep neural
- neural network
- 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
-
- 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)
- 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
本发明提供了一种结构化剪枝的方法和系统,该方法包括:S1、将深度神经网络中指定的网络层设置为待剪枝层,得到待处理深度神经网络;S2、利用图像数据集多次训练待处理深度神经网络并在训练过程进行多次预剪枝处理,每次预剪枝处理包括:根据所有待剪枝层在图像数据集上的重要性将重要性排序靠后的且被预剪枝后能够满足每次预剪枝的剪枝量的多个待剪枝层设为被预剪枝,重要性基于待剪枝层的权重参数、梯度以及激活频次确定;S3、当预剪枝处理的次数达到预定的预剪枝次数时,利用图像数据集对预剪枝后的待处理深度神经网络进行微调,并且将与被预剪枝的待剪枝层对应的网络层进行剪枝处理;本发明在压缩模型的同时可更好地保障模型的精度。
Description
技术领域
本发明涉及神经网络技术领域,具体来说涉及神经网络模型的压缩技术领域,更具体地说,涉及一种结构化剪枝的方法以及系统。
背景技术
随着人工智能的不断发展,人工神经网络(简称神经网络)的应用范围也在不断地扩展。神经网络可以应用于移动设备,以对图像、文字、音频等进行处理并执行相应的预测任务。在图像识别领域(例如:图像分类、目标检测和目标跟踪),利用深度神经网络(一些文献也称深度学习模型)可以达到较高的准确率,但是,由于深度神经网络中各种网络层(一些文献也称处理层,是指卷积层、全连接层等完整的层结构)的数量非常多(比如十万甚至百万个),其对移动设备的计算能力和存储空间具有较高的要求。而目前移动设备的计算能力和存储空间与台式计算机、服务器相比往往有很大差距,在资源有限的情况下,直接应用深度学习模型存在巨大障碍,导致深度神经网络难以直接部署到移动设备。所以,需要对深度神经网络进行剪枝,通过剪枝来减少模型的冗余连接和参数,以压缩深度神经网络的大小,加快模型推理速度。
剪枝的方式通常分为结构化剪枝和非结构化剪枝,其中:
结构化剪枝是以网络层为基本单位进行剪枝的方法;一个网络层被剪枝,那么其前一个特征图(Feature Map,通常也称特征或者特征向量)和下一个特征图都会发生相应的变化,但是模型的结构却没有被破坏,仍然能够通过GPU或其他硬件来加速,因此这类方法被称之为结构化剪枝。
而非结构化剪枝则包括对单一的权重参数和/或单一卷积核的剪枝。由于剪枝后的模型通常很稀疏,并且破坏了原有模型的结构,所以这类方法被称为非结构化剪枝。非结构化剪枝虽然能极大降低模型的参数量和理论计算量,但是现有硬件架构的计算方式无法对其进行加速,所以在实际运行速度上得不到提升,需要设计特定的硬件才可能加速,剪枝后移植到移动设备较为困难。
现有技术中,大多是在训练过程中对批归一化层(Batch normalization,BN)的缩放参数(scaling factor)添加L1范数进行正则稀疏化,根据稀疏化后的BN缩放参数的大小来衡量每一个通道的重要性,再手动选择一个阈值将BN缩放参数小于阈值的通道进行裁剪来达到减小模型体积的目的,最后再对压缩后的模型进行微调以恢复裁剪损失的精度。然而这种压缩方法比较繁琐,该流程需要对模型进行稀疏正则训练,并且需要手动选择阈值来决定裁剪较小模值网络层,然而手动选择阈值难以决定剪枝比例,并且阈值的手动选择可能会误删除一些重要的网络层。为此,也出现了一些根据网络层中权重参数的大小对网络层进行自动剪枝的技术方案,但这些技术方案所参考的指标过于片面,没有考虑到训练时数据集的样本输入模型后对各个网络层输出的影响,误删除一些重要的网络层的概率仍然较高。因此,需要对现有技术进行改进。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种结构化剪枝的方法以及系统。
本发明的目的是通过以下技术方案实现的:
根据本发明的第一方面,提供一种结构化剪枝的方法,用于对深度神经网络做剪枝处理,所述深度神经网络包括多个网络层,所述方法包括:S1、将深度神经网络中指定的网络层设置为待剪枝层,每个待剪枝层对应于一个网络层,得到待处理深度神经网络;S2、利用图像数据集多次训练待处理深度神经网络并在训练过程进行多次预剪枝处理,其中,每次预剪枝处理包括:确定所有待剪枝层在图像数据集上的重要性,将重要性排序靠后的且被预剪枝后能够满足每次预剪枝的剪枝量的多个待剪枝层设为被预剪枝,并且被预剪枝的待剪枝层的输出所含元素在后续训练中均被设为0,其中,所述每个待剪枝层在图像数据集上的重要性基于待剪枝层的权重参数、梯度以及激活频次按照预定计算规则进行确定,所述激活频次是训练时待剪枝层的输出大小超过预定的激活阈值的次数;S3、当预剪枝处理的次数达到预定的预剪枝次数时,利用图像数据集对预剪枝后的待处理深度神经网络进行微调,并且将与被预剪枝的待剪枝层对应的网络层进行剪枝处理,得到压缩后的深度神经网络。
在本发明的一些实施例中,每个待剪枝层在图像数据集上的重要性按照以下计算规则确定:根据待剪枝层对应的网络层最新的权重参数和梯度,确定显著度指标;对待剪枝层的显著度指标和激活频次求加权和,得到该待剪枝层在图像数据集上的重要性。
在本发明的一些实施例中,所述激活频次按照以下方式确定:确定图像数据集中每个样本输入待处理深度神经网络时各待剪枝层的输出对应的输出大小;将最新完成的预设次数的训练中待剪枝层的输出大小超过预定的激活阈值的次数作为激活频次;其中,所述输出大小是对输出中所含元素的平方和开根号得到,所述激活阈值是最新完成的预设次数的训练中所有输出大小的平均值。
在本发明的一些实施例中,所述显著度指标按照以下方式确定:将待剪枝层对应的网络层中最新的权重参数和梯度中的每个对应元素相乘后求和,得到该待剪枝层的显著度指标。
在本发明的一些实施例中,按照以下方式实现被预剪枝的待剪枝层的输出所含元素在后续训练中均被设为0:为每个待剪枝层分别设置一个掩码,待剪枝层的输出是其对应网络层的输出中各元素与其掩码的逐元素乘积,其中,掩码指示待剪枝层是否被预剪枝,掩码为0表示被预剪枝,掩码为1表示未被预剪枝,所有掩码初始设为1。
在本发明的一些实施例中,步骤S3包括:利用图像数据集对最后一次预剪枝处理后的深度神经网络进行多次微调;将与被预剪枝的待剪枝层对应的网络层从深度神经网络中移除,得到压缩后的深度神经网络。
根据本发明的第二方面,提供一种结构化剪枝系统,包括:模型建模接口,用于加载深度神经网络以及接收用户指示将深度神经网络中相应网络层设定为待剪枝层,得到待处理深度神经网络;剪枝模块,用于执行第一方面所述的结构化剪枝的方法,得到压缩后的深度神经网络。
根据本发明的第三方面,一种部署深度神经网络的方法,包括:获取压缩后的深度神经网络,所述压缩后的深度神经网络利用第一方面所述的方法或者第二方面所述的系统得到;将所述压缩后的深度神经网络部署在移动设备上,用于执行相应的预测任务。
根据本发明的第四方面,一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行所述可执行指令以实现第一方面或者第三方面所述方法的步骤。
与现有技术相比,本发明的优点在于:
本发明基于待剪枝层的权重参数、梯度以及激活频次来确定待剪枝层的重要性,其中,激活频次是训练时待剪枝层的输出大小超过预定的激活阈值的次数;一方面,可以通过重要性排序来自动选择需要预剪枝的网络层,另一方面,可以通过考虑训练时图像数据集的样本输入模型后对各个待剪枝层输出的影响来更准确地评价待剪枝层在数据集上的重要性,降低误删除一些重要的待剪枝层的概率;以在实现压缩模型大小的同时,更好地保障模型的精度。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明实施例的结构化剪枝的方法的流程示意图;
图2为视觉变换器模型的编码模块的模块示意图;
图3为根据本发明实施例对视觉变换器模型的编码模块进行剪枝后根据掩码补零的原理示意图;
图4为VGG-16模型的结构示意图;
图5为根据本发明实施例对VGG-16模型进行结构化剪枝得到的压缩后的VGG-16模型的结构示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如在背景技术部分提到的,现有技术根据网络层中权重参数的大小来自动删除网络层,但这些技术方案所参考的指标过于片面,没有考虑到训练时数据集的样本输入模型后对各个网络层输出的影响,误删除一些重要的网络层的概率仍然较高。因此,本申请基于待剪枝层的权重参数、梯度以及激活频次来确定待剪枝层的重要性,其中,激活频次是训练时待剪枝层的输出大小超过预定的激活阈值的次数;一方面,可以通过重要性排序来自动选择需要预剪枝的网络层,另一方面,可以通过考虑训练时图像数据集的样本输入模型后对各个待剪枝层输出的影响来更准确地评价待剪枝层在数据集上的重要性,降低误删除一些重要的待剪枝层的概率;以在实现压缩模型大小的同时,更好地保障模型的精度。
根据本发明的一个实施例,提供一种结构化剪枝的方法,用于对深度神经网络做剪枝处理,所述深度神经网络包括多个网络层,所述方法包括:步骤S1、S2、S3。为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。
步骤S1:获取包括多个网络层的深度神经网络,其中设定多个待剪枝层,每个待剪枝层包含一个网络层。
根据本发明的一个实施例,接收用户指示将深度神经网络中相应网络层设定为待剪枝层,所述待剪枝层设有掩码,待剪枝层的输出是其所含网络层的输出与掩码的乘积,掩码通过0或1指示待剪枝层是否被预剪枝,其中,0表示被预剪枝,1表示未被预剪枝,所有掩码初始设为1。深度神经网络可以现有的或者未来出现的各种深度神经网络(一些文献也称深度学习模型或者深度神经网络模型,本文后续一些地方用“模型”来简称),比如,现有的变换器(Vision Transformer、Swin Transformer等)、VGG模型(如VGG-16模型),本发明对此不作任何限制。深度神经网络所含的网络层是卷积层、注意力机制层、全连接层和感知机层或者其组合。用户可以指定剪枝处理所涉及的网络层;应当理解,基于深度神经网络实际所含的网络层的类型、不同用户的经验或者剪枝的不同需求,用户可以自定义剪枝处理所涉及的网络层,即:用户将指定的多个网络层设为待剪枝层;比如,将至少一部分卷积层和至少一部分全连接网络层设定为待剪枝层。
步骤S2:利用图像数据集多次训练待处理深度神经网络并在训练过程进行多次预剪枝处理,其中,每次预剪枝处理包括:确定所有待剪枝层在图像数据集上的重要性,将重要性排序靠后的且被预剪枝后能够满足每次预剪枝的剪枝量的多个待剪枝层设为被预剪枝,并且被预剪枝的待剪枝层的输出所含元素在后续训练中均被设为0,其中,所述每个待剪枝层在图像数据集上的重要性基于待剪枝层的权重参数、梯度以及激活频次按照预定计算规则进行确定,所述激活频次是训练时待剪枝层的输出大小超过预定的激活阈值的次数。
根据本发明的一个实施例,步骤S2包括每利用图像数据集训练待处理深度神经网络达到预设次数后针对当前未被预剪枝的待剪枝层进行一次预剪枝处理,所述预剪枝处理包括:S21、根据待剪枝层对应的网络层最新的权重参数和梯度,确定显著度指标;S22、对待剪枝层的显著度指标和激活频次求加权和,得到该待剪枝层在图像数据集上的重要性;S23、将在图像数据集上重要性排序靠后的且被预剪枝后能够满足每次预剪枝的剪枝量的多个待剪枝层设为被预剪枝,被预剪枝的待剪枝层的输出中所含元素均被设为0,其中,每次预剪枝的剪枝量根据预定的总剪枝量除以预剪枝次数得到。应当理解,步骤S23是将在图像数据集上重要性靠后的且被预剪枝后能够满足每次预剪枝的剪枝量的原为未被预剪枝的多个待剪枝层设为被预剪枝。应当理解,重要性排序靠后是指重要程度靠后;可以根据重要性的数值大小确定重要性排序。
为了避免多次剪枝过程中需要不断地改变和组织模型的结构,本发明通过掩码来实现预剪枝,将需要预剪枝的待剪枝层的输出设为0,根据本发明的一个实施例,待剪枝层的输出是其所含网络层的输出与所设的掩码的乘积。该乘积是逐元素乘法得到,即所含网络层的输出中的每个元素与掩码相乘得到。由此,如果待剪枝层的掩码是0,则待剪枝层的输出中的每个元素都是0,该待剪枝层处于被预剪枝的状态;而如果待剪枝层的掩码是1,则待剪枝层的输出等于其所含网络层的输出,该待剪枝层处于未被预剪枝的状态。该实施例的技术方案至少能够实现以下有益技术效果:本发明通过设置掩码的方式,可以避免多次剪枝过程中需要不断地改变和组织模型的结构,降低对模型剪枝的操作难度,提高剪枝的效率。
对于待剪枝层的输出,根据本发明的一个实施例,待剪枝层的输出的计算方式如下:
Ym=m·W·X
其中,m表示掩码,W表示待剪枝层对于的处理层的权重参数,X表示待剪枝层对于的处理层的输入,·为逐元素相乘计算,W·X表示剪枝层对应的处理层的输出。
对于显著度指标,可以采用多种计算方式中的任意一种来确定,根据本发明的一个实施例,显著度指标按照以下方式确定:将待剪枝层对应的网络层中最新的权重参数和梯度中的每个对应元素相乘后求和,得到该待剪枝层的显著度指标。又例如,如果想降低乘积直接求和时,负值与正值相加抵消的影响,根据本发明的一个实施例,显著度指标按照以下方式确定:求待剪枝层对应的网络层中最新的权重参数和梯度中的每个对应元素相乘后的绝对值,并对每个绝对值求和,得到该待剪枝层的显著度指标。再例如,根据本发明的一个实施例,显著度指标按照以下方式确定:求待剪枝层对应的网络层中最新的权重参数的元素的平方与梯度中的每个对应元素的平方相乘后求和,得到该待剪枝层的显著度指标。另外,也可以将最新的权重参数和梯度转换为矩阵,利用矩阵乘法来计算显著度指标;例如,根据本发明的一个实施例,显著度指标按照以下方式确定:将该待剪枝层对应的网络层最新的梯度中的元素转换为行向量并将最新的权重参数转换为列向量,将行向量乘以列向量,得到该待剪枝层的显著度指标。应当理解,网络层对应的最新的梯度是最近一次更新权重参数所采用的梯度,最新的权重参数是网络层当前的权重参数,也即最近一次更新后得到的权重参数。该实施例的技术方案至少能够实现以下有益技术效果:本发明的显著度指标能表示待剪枝层对模型输出分布的影响度,从而能够依据显著度指标更好地对待处理深度神经网络进行剪枝。
为了便于理解本发明的显著度指标能表示待剪枝层对模型输出分布的影响度,申请人在此给出对显著度指标的推导过程。如果忽略计算难度,显著度指标计算为:S[W|p(y|x)]=H[W|p(y|x)]-H[w|p(y|x)],其中,S为待剪枝层W的显著度指标,p(y|x)为模型输出的类概率密度分布,x为输入样本,y为样本真值,H[W|p(y|x)]为待剪枝层W的信息熵,H[w|p(y|x)]为去掉待剪枝层W时剩下网络结构的信息熵。激活频次计算:F[W]=∑xδ(A(x|W)>T),x为输入样本,A(x|W)为待剪枝层W对输入样本x的输出大小(或者称激活值),T为设定好的阈值,δ为0-1二元函数,>为条件判断,若真则为1,否则为0。为了更高效的剪枝,需要对显著度指标的计算方式进行推导改进,其中,推导过程如下,对于完美训练的深度神经网络(准确率100%),公式S[W|p(y|x)]=H[W|p(y|x)]-H[w|p(y|x)]中的第一项H[W|p(y|x)]是0。然而,通常情况下,深度神经网络的准确率很难达到100%。因此,H[W|p(y|x)]不能被省略的。此外,通过公式S[W|p(y|x)]=H[W|p(y|x)]-H[w|p(y|x)]逐个测试遍历所有待剪枝层中代价非常大,特别是对于极深的卷积神经网络。为此提出的基于泰勒展开近似算法来获得显著度指标。通过泰勒多项式,令w=0处,对H[W|p(y|x)]作泰勒展开,得到:
其中,表示待剪枝层对应的网络层最新的梯度,w待剪枝层对应的网络层中最新的权重参数,∑表示待剪枝层对应的网络层中最新的权重参数和梯度中的每个对应元素相乘后求和。梯度和权重参数通常都是多个元素,并且一一对应(梯度的一个元素控制权重参数中的一个元素的更新),因此,两者的元素可以对应相乘后求和。由此,待剪枝层的显著度指标可以衡量待剪枝层对模型输出类概率密度分布的重要程度,以剪枝卷积核为例,若输入一个样本x,判定待剪枝层的删除对模型输出p(y|x)的影响,若一个卷积核的显著度指标高,则该卷积核对模型的输出判别性高;若显著度指标低,则该卷积核对模型的输出判别性低甚至无判别能力,因此这个卷积核为冗余的,可从模型中安全地删除。
对于激活频次,可以采用多种计算方式中的任意一种来确定,根据本发明的一个实施例,激活频次按照以下方式确定:确定图像数据集中每个样本输入待处理深度神经网络时各待剪枝层的输出对应的输出大小;将最新完成的预设次数的训练中待剪枝层的输出大小超过预定的激活阈值的次数作为激活频次;其中,所述输出大小是对输出中所含元素的平方和开根号得到,所述激活阈值是最新完成的预设次数的训练中所有输出大小的平均值。或者,将输出大小改为:输出大小是输出中所含元素的平方和。又或者,将激活阈值改为:激活阈值是最新完成的预设次数的训练中所有输出大小的中位数、第一四分位数或者第三四分位数等。具体的实施方式可以由实施者根据需要确定,本发明对此不作任何限定。例如,激活频次计算为:F[W]=∑xδ(A(x|W)>T),其中,x为输入样本,A(x|W)为待剪枝层W对输入样本x的输出大小,T为设定好的激活阈值,δ为0-1二元函数,>为条件判断,若真则为1,否则为0。根据上述式子可看出,当某个待剪枝层若提取特征的能力较弱时,其输出大小会非常小,给定一个激活阈值T,若小于这个激活阈值,视为这个待剪枝层的提取特征能力很弱,因此可以删除;相反,若大于这个激活阈值,视为这个待剪枝层的提取特征能力很强,因此可以保留。为了避免剪枝过程手动选择,激活阈值为设定的一个值,其可通过分析所有待剪枝层的平均特征值来确定,比如:设为最新完成的预设次数的训练中所有输出大小的平均值。0-1二元函数δ(x)为:
综上,通过在数据集上对所有待剪枝层用以上方法累计激活频次,可以得到每个待剪枝层在该图像数据集上的抽取特征能力,以此参与评判待剪枝层的重要性。
根据本发明的一个实施例,待剪枝层在图像数据集上重要性I=αS[W|p(y|x)]+βF[W],其中,α表示显著度指标的加权系数,β表示激活频次的加权系数。α和β为两个可调节的加权系数,从式子可看出,待剪枝层在图像数据集上重要性为显著度指标和激活频次加权而来,共同决定待剪枝层的剪枝或者保留。对于不同的图像数据集,α和β的设置可有所差别,α和β的大小可由实施者根据经验或者现场调试的结果确定,本发明对此不做任何限制。
对于图像数据集,可以采用现有的图像数据集,预测的任务可以是图像分类、目标检测、跟踪与识别等;比如Imagenet数据集、Cifar-10数据集等,具体的图像数据集可根据实施者需要设定,本发明对此不作任何限制。
对于训练过程采用的损失函数,可以采用现有的损失函数(比如,交叉熵损失函数等)或者实施者根据需要制定的损失函数,本发明对此不作任何限制。例如,对于分类任务来说,主要是用交叉熵作为损失函数: 其中(xi,yi)为样本,p(xi)为模型经Softmax处理的输出,xi为第i个输入样本,yi为第i个输入样本对应的真值(标签),N表示更新权重参数的样本的总数量。
总剪枝量可以设定为剪枝率(也可以剪枝的层数),即被预剪枝的待剪枝层的数量比上指定的所有待剪枝层的数量,例如,总剪枝量为:其中n为待处理的深度神经网络中被预剪枝的待剪枝层的数量,N待处理的深度神经网络中所有待剪枝层的数量。实际动态迭代剪枝过程中,每次只需预剪枝一定比例的待剪枝层,例如动态迭代次数为M次,则每次迭代的剪枝率(对应每次预剪枝的剪枝量)为Ri为第i次迭代的实际剪枝率。根据本发明的一个示例,假设用户设定的预设次数为5次,预设次数中的次数是指完整利用图像数据集对待处理深度神经网络进行训练的次数(Epoch),总剪枝量为20%,预剪枝次数为4;则每训练5个Epoch后,将重要性排序靠后的5%的网络层进行预剪枝;重复4次后,一共预剪枝20%。
步骤S3:当预剪枝处理的次数达到预定的预剪枝次数时,利用图像数据集对预剪枝后的深度神经网络进行微调,并且将与被预剪枝的待剪枝层对应的网络层进行剪枝处理,得到压缩后的深度神经网络。
根据本发明的一个实施例,步骤S3包括:S31、利用图像数据集对最后一次预剪枝处理后的深度神经网络进行多次微调;S32、将与被预剪枝的待剪枝层对应的网络层从深度神经网络中移除,得到压缩后的深度神经网络。
一些深度神经网络中可能含有残差连接(Residual connection),若将残差连接所涉及的网络层移除若干个,则会导致所要相叠加的两部分数据的维度不一致(网络层被移除若干个的一部分数据的维度变小,另一部分不变),因此,为消除影响,根据本发明的一个实施例,若被移除的网络层对残差连接相关的数据维度有影响,则在移除网络层时添加补零单元,所述补零单元用于在压缩后的深度神经网络中根据掩码对残差连接对应的数据进行补零以消除被移除的网络层对残差连接相关的数据维度的影响。
根据本发明的一个示例,在压缩过程中,会将掩码为1的待剪枝层对应的处理层及其参数保留,而掩码为0的待剪枝层对应的处理层会被删除;其实际的操作方式为根据掩码来做模型结构的权重参数变量(例如pytorch中的nn.Parameter)进行的替换。由于残差连接需要张量维度一致,若被移除的网络层对残差连接相关的数据维度有影响,则在移除的网络层对应的输出处通过补零单元用0补充,因此在残差计算过程中不会导致维度错误或者维度偏差等问题。
为了便于理解,申请人下面给出在两个现有的深度神经网络上根据本发明的技术方案进行结构化剪枝的示例。
示例1:基于重要性(显著度指标和激活频次)对视觉变换器模型的结构化剪枝
本示例使用基于显著度指标的深度学习模型的结构化剪枝方案对视觉变换器模型的剪枝。整个过程如下:首先,构造模型的模型结构,初始化权重并设置总剪枝量假设预剪枝处理M次,则每次预剪枝的剪枝量设定总训练次数为KM次,预定次数为K次,则每用图像数据集训练模型K次后进行一次预剪枝处理。其中,遍历图像数据集(应当理解,设定为训练时所采用的样本集合,即训练集)中的样本,计算每个待剪枝层对应的显著度指标值,以及每个剪枝样本的激活频次,以得到每个待剪枝层的重要性,并在待剪枝层中选择重要性靠后的比例或者数量为Ri的掩码为1的待剪枝层设为被预剪枝(掩码由1修改为0)。之后,在K个Epoch中,通过随机梯度下降再次训练这个模型,在此期间的继续计算被剪枝网络在图像数据集上的重要性。重复训练、预剪枝过程,直到达到预定的总剪枝量。
一般情况下,训练后微调的次数(Epoch)可以设置比较大,当模型预剪枝完后可以有足够大次数对剪枝后的模型进行微调,以恢复精度的损失。例如,首先构造视觉变换器模型(Vision Transformer,后面简称ViT模型)结构。参照图2所示,ViT模型包括多个编码模块(Block),编码模块由多头注意力机制、单层全连接、二层感知机(MLP)和残差连接依次堆叠构成。假设将ViT模型中的多头注意力机制、线性全连接层、二层感知机的第一层(MLP_FC1)以及二层感知机的第二层(MLP_FC2)所对应的每个网络层设为待剪枝层,为之添加掩码,通过设定显著度指标和激活频次以判断每个待剪枝层的重要性。在模型训练过程中,模型中的所有待剪枝层的显著度指标会随着模型的训练而更新,激活频次也会更新,每次预剪枝利用最新的显著度指标和激活频次来计算重要性。对待剪枝层重要性进行降序排序(重要性由高到低),得到所有的待剪枝层的单元重要性排序结果,找出重要性排序靠后的每次预剪枝的剪枝量(如5%)对应的待剪枝层。由此,根据设定的剪枝量和待剪枝层,可对ViT模型的进行模型训练、预剪枝和压缩的处理。
以上过程在动态迭代剪枝的操作流程中进行执行,其中,训练模型,达到预设次数后,每次对一定量或比例的待剪枝层进行预剪枝处理;然后再训练模型,再达到预设次数后进行下一次预剪枝处理,多次重复该过程直至完成最后一次预剪枝处理。
由于剪枝会改变残差输出的维度,因此直接作残差相加会导致计算错误,因此,需要设定补零单元,根据掩码来补零被剪枝掉的部分网络层的输出,保证残差相加的对齐。残差对齐方式参照图3所示,假设视觉变换器的编码模块的输入是384维的,在剪枝后,假设剪枝后的全连接层的输出维度变为112维,则需要根据掩码补零,以输出384维的数据,和跳转连接的384维的数据进行残差连接相加,输出384维的数据,以避免残差相加处维度不一致的问题。
训练的环境或者超参数等可以根据实施者需要设定,示意性的,ViT模型的剪枝是在8张Nvidia RTX 3090显卡上构建模型训练,训练时,图像的输入尺寸为224x224,每张显卡设定批大小(Batch Size)为8,为了增强数据的多样性和模型的泛化能力,还可采用亮度随机变化、对比度随机变化、随机翻转、中心随机裁切等现有的数据增强方式对图像数据集中的样本进行丰富。优化器使用AdamW优化器,动量系数设为0.9,权重衰减(Weight Decay)设为0.0005,初始学习率设为0.0005,按照学习率余弦退火的策略(Cosine)进行退火,训练的总次数设定为100个(每25次训练进行一次预剪枝处理),剪枝率可以设置为0到1之间(比如,每次剪枝率为5%)。
示例2:基于重要性对卷积网络模型的结构化剪枝
本示例使用对卷积网络模型的剪枝。首先构造卷积网络模型结构,以VGG-16模型为例。VGG-16模型的基础单元是3乘3卷积层,批归一化层(BN)、激活层ReLU和池化层(pooling)依次堆叠而成,总体结构图参照图4。
本示例对机器学习库Pytorch中原生的torch.nn类的模型结构进行修改,例如nn.Conv2d、nn.Linear等模型结构,并提供一些支持结构化剪枝的接口(支持件),因此在VGG-16建模时,直接以接口形式调用这些支持件,即可在模型训练时对其进行剪枝压缩。例如VGG-16的nn.Conv2d为二维卷积层,将其替换成带掩码的卷积层(MaskedConv),其为支持预剪枝与掩码操作的卷积层,如显著度指标的计算、激活频次计算、重要性计算以及排序等。
训练的环境或者超参数等可以根据实施者需要设定,示意性的,训练剪枝环境在Linux服务器上进行,显卡为4张NVIDIA GeForce RTX2080Ti。总的训练次数设置为60,学习率初始化为0.01,然后每20个epoch学习率除以5。数据批量大小为128。动量系数设置为0.9,权重衰减设置为0.0005。
示意性的,VGG-16的原始结构如图4所示,由多个卷积模块(每个卷积模块里有一个或者多个卷积层,卷积层是最小的剪枝单位)、多个池化层以及多个全连接层堆叠构成,Conv1-5表示的是5个卷积模块的编号,符号“-”之后的数字表示卷积模块中的卷积层的序号,比如,Conv1-1表示卷积模块1中的卷积层1,其余类似,此处不作赘述。假设通过本发明的方法,确定卷积层Conv5-1以及卷积层Conv5-2是需要被剪枝的,则最终得到的压缩后的模型如图5所示。
根据本发明的一个实施例,提供一种结构化剪枝系统,包括:模型建模接口,用于加载深度神经网络以及接收用户指示将深度神经网络中相应网络层设定为待剪枝层,得到待处理深度神经网络;剪枝模块,用于执行前述结构化剪枝的方法,得到压缩后的深度神经网络。根据本发明的一个实施例,所述待剪枝层设有掩码,待剪枝层的输出设定为其所含网络层的输出与掩码的乘积,其中,掩码指示待剪枝层是否被预剪枝,掩码为0表示被预剪枝,掩码为1表示未被预剪枝,所有掩码初始设为1。模型建模接口中可以预设对多种常用深度神经网络的识别组件,以识别深度神经网络中所含的网络层的类型并按接收用户指示为指定的网络层添加掩码。例如:模型建模接口可提供替换相应网络层(例如基础卷积层和基础线性全连接层)的功能支持,支持底层前馈计算的掩码算子计算和掩码获取;在模型建模阶段可调用此接口完成待处理深度神经网络的建模(支持剪枝版本的模型建模);并且支持显著度指标计算和激活频次的接口。剪枝模块用于提供模型训练功能,根据设定的剪枝目标(例如总剪枝量)进行结构化剪枝(含训练、重要度计算、预剪枝、微调以及压缩的处理)。该实施例的技术方案至少能够实现以下有益技术效果:本发明的模型建模接口可以加载深度神经网络并按用户指示自定义设置待剪枝层,从而实现调用接口进行工具化,为压缩通用的深度神经网络降低成本并提升效率。
根据本发明的一个实施例,一种部署深度神经网络的方法,包括:获取压缩后的深度神经网络,所述压缩后的深度神经网络利用前述实施例所述的结构化剪枝的方法或者结构化剪枝系统得到;将所述压缩后的深度神经网络部署在移动设备上,用于执行相应的预测任务。该实施例的技术方案至少能够实现以下有益技术效果:通过本发明的技术方案压缩后的深度神经网络能够更好保持模型精度,且大大降低参数量和计算量,显著提升推理性能效率。
根据本发明的一个实施例,一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行所述可执行指令以实现结构化剪枝的方法或者部署深度神经网络的方法所述方法的步骤。
综上所述,本发明提供了结构化剪枝方法和系统,解决了视觉变换器、卷积神经网络等通用深度学习模型的参数冗余导致对移动设备的算力、内存、存储等资源要求高以及运行速度慢,同时以往模型剪枝方法对模型精度损失大、剪枝过程需要大量调参的问题,相较于现有的模型压缩方法,本发明具有模型精度恢复快、更好地保障模型的精度等优势。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种结构化剪枝的方法,用于对深度神经网络做剪枝处理,所述深度神经网络包括多个网络层,其特征在于,所述方法包括:
S1、将深度神经网络中指定的网络层设置为待剪枝层,每个待剪枝层对应于一个网络层,得到待处理深度神经网络;
S2、利用图像数据集多次训练待处理深度神经网络并在训练过程进行多次预剪枝处理,其中,每次预剪枝处理包括:
确定所有待剪枝层在图像数据集上的重要性,将重要性排序靠后的且被预剪枝后能够满足每次预剪枝的剪枝量的多个待剪枝层设为被预剪枝,并且被预剪枝的待剪枝层的输出所含元素在后续训练中均被设为0,其中,所述每个待剪枝层在图像数据集上的重要性基于待剪枝层的权重参数、梯度以及激活频次按照预定计算规则进行确定,所述激活频次是训练时待剪枝层的输出大小超过预定的激活阈值的次数;
S3、当预剪枝处理的次数达到预定的预剪枝次数时,利用图像数据集对预剪枝后的待处理深度神经网络进行微调,并且将与被预剪枝的待剪枝层对应的网络层进行剪枝处理,得到压缩后的深度神经网络。
2.根据权利要求1所述的方法,其特征在于,所述每个待剪枝层在图像数据集上的重要性按照以下计算规则确定:
根据待剪枝层对应的网络层最新的权重参数和梯度,确定显著度指标;
对待剪枝层的显著度指标和激活频次求加权和,得到该待剪枝层在图像数据集上的重要性。
3.根据权利要求2所述的方法,其特征在于,所述激活频次按照以下方式确定:
确定图像数据集中每个样本输入待处理深度神经网络时各待剪枝层的输出对应的输出大小;
将最新完成的预设次数的训练中待剪枝层的输出大小超过预定的激活阈值的次数作为激活频次;
其中,所述输出大小是对输出中所含元素的平方和开根号得到,所述激活阈值是最新完成的预设次数的训练中所有输出大小的平均值。
4.根据权利要求2所述的方法,其特征在于,所述显著度指标按照以下方式确定:
将待剪枝层对应的网络层中最新的权重参数和梯度中的每个对应元素相乘后求和,得到该待剪枝层的显著度指标。
5.根据权利要求1-4任一项所述的方法,其特征在于,按照以下方式实现被预剪枝的待剪枝层的输出所含元素在后续训练中均被设为0:
为每个待剪枝层分别设置一个掩码,待剪枝层的输出是其对应网络层的输出中各元素与其掩码的逐元素乘积,
其中,掩码指示待剪枝层是否被预剪枝,掩码为0表示被预剪枝,掩码为1表示未被预剪枝,所有掩码初始设为1。
6.根据权利要求1-4任一项所述的方法,其特征在于,步骤S3包括:
利用图像数据集对最后一次预剪枝处理后的深度神经网络进行多次微调;
将与被预剪枝的待剪枝层对应的网络层从深度神经网络中移除,得到压缩后的深度神经网络。
7.一种结构化剪枝系统,其特征在于,包括:
模型建模接口,用于加载深度神经网络以及接收用户指示将深度神经网络中相应网络层设定为待剪枝层,得到待处理深度神经网络;
剪枝模块,用于执行如权利要求1-6所述的结构化剪枝的方法,得到压缩后的深度神经网络。
8.一种部署深度神经网络的方法,其特征在于,包括:
获取压缩后的深度神经网络,所述压缩后的深度神经网络利用权利要求1-6任一项所述的方法或者权利要求7所述的系统得到;
将所述压缩后的深度神经网络部署在移动设备上,用于执行相应的预测任务。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序可被处理器执行以实现权利要求1至6或者8中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;以及
存储器,其中存储器用于存储可执行指令;
所述一个或多个处理器被配置为经由执行所述可执行指令以实现权利要求1至6或者8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210805865.XA CN115222042A (zh) | 2022-07-08 | 2022-07-08 | 一种结构化剪枝的方法以及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210805865.XA CN115222042A (zh) | 2022-07-08 | 2022-07-08 | 一种结构化剪枝的方法以及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115222042A true CN115222042A (zh) | 2022-10-21 |
Family
ID=83610103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210805865.XA Pending CN115222042A (zh) | 2022-07-08 | 2022-07-08 | 一种结构化剪枝的方法以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115222042A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116992943A (zh) * | 2023-09-27 | 2023-11-03 | 浪潮(北京)电子信息产业有限公司 | 深度神经网络模型的链路剪枝方法、装置、设备和介质 |
CN117058525A (zh) * | 2023-10-08 | 2023-11-14 | 之江实验室 | 一种模型的训练方法、装置、存储介质及电子设备 |
-
2022
- 2022-07-08 CN CN202210805865.XA patent/CN115222042A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116992943A (zh) * | 2023-09-27 | 2023-11-03 | 浪潮(北京)电子信息产业有限公司 | 深度神经网络模型的链路剪枝方法、装置、设备和介质 |
CN116992943B (zh) * | 2023-09-27 | 2024-02-09 | 浪潮(北京)电子信息产业有限公司 | 深度神经网络模型的链路剪枝方法、装置、设备和介质 |
CN117058525A (zh) * | 2023-10-08 | 2023-11-14 | 之江实验室 | 一种模型的训练方法、装置、存储介质及电子设备 |
CN117058525B (zh) * | 2023-10-08 | 2024-02-06 | 之江实验室 | 一种模型的训练方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115222042A (zh) | 一种结构化剪枝的方法以及系统 | |
CN109002889B (zh) | 自适应迭代式卷积神经网络模型压缩方法 | |
CN112257794B (zh) | 一种基于yolo的轻量级的目标检测方法 | |
CN112396179A (zh) | 一种基于通道梯度剪枝的柔性深度学习网络模型压缩方法 | |
CN111507521B (zh) | 台区电力负荷预测方法及预测装置 | |
US11645495B2 (en) | Edge calculation-oriented reparametric neural network architecture search method | |
CN114037844A (zh) | 基于滤波器特征图的全局秩感知神经网络模型压缩方法 | |
CN111488986A (zh) | 一种模型压缩方法、图像处理方法以及装置 | |
CN111723915B (zh) | 一种基于深度卷积神经网络的目标检测方法 | |
CN109086866A (zh) | 一种适用于嵌入式设备的部分二值卷积方法 | |
CN112906889A (zh) | 一种用于压缩深度神经网络模型的方法和系统 | |
Kalachev et al. | Multi-tensor contraction for XEB verification of quantum circuits | |
CN116188878A (zh) | 基于神经网络结构微调的图像分类方法、装置和存储介质 | |
CN115936100A (zh) | 用于模式识别基于压缩激励注意力的神经网络剪枝方法 | |
CN108475346B (zh) | 神经随机访问机器 | |
Xu et al. | Efficient structured pruning based on deep feature stabilization | |
CN114444668A (zh) | 网络量化方法及系统及装置及介质及图像处理方法 | |
US20210271932A1 (en) | Method, device, and program product for determining model compression rate | |
KR20210111677A (ko) | 뉴럴 네트워크의 클리핑 방법, 뉴럴 네트워크의 컨벌루션 계산 방법 및 그 방법을 수행하기 위한 전자 장치 | |
CN111582442A (zh) | 一种基于优化深度神经网络模型的图像识别方法 | |
CN112418388A (zh) | 一种实现深度卷积神经网络处理的方法及装置 | |
CN115239967A (zh) | 一种基于Trans-CSN生成对抗网络的图像生成方法及装置 | |
CN113361707A (zh) | 一种模型压缩方法、系统及计算机可读介质 | |
CN114492797A (zh) | 模型剪枝方法、装置、设备和存储介质 | |
Geerhart III et al. | Efficient normalization techniques to optimize AI models for deployment in tactical edge |
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 |