掌桥专利:专业的专利平台
掌桥专利
首页

模型剪枝方法、装置、设备、存储介质及程序产品

文献发布时间:2024-01-17 01:19:37


模型剪枝方法、装置、设备、存储介质及程序产品

技术领域

本申请属于计算机技术领域,具体涉及一种模型剪枝方法、装置、设备、存储介质及程序产品。

背景技术

随着深度学习技术的不断发展,相关模型的计算结果越来越精确,但同时,模型的规模也在不断增大,占用内存越来越多,且运行延迟和计算复杂度也在不断增大,使得运算速度有所下降。因此,降低模型的规模以及计算成本成为很多大规模模型的一个必要需求。

模型剪枝(Model Pruning)技术能够有效减小模型规模,节省模型占用内存,使得模型运算速度更快。通过剪枝可以去除大规模模型中的冗余操作和连接,以及将对模型表现影响较小的权重归零,从而对大规模模型进行压缩。但是,目前的剪枝方法通常依赖于固定的策略或预定义的方法,对不同的模型可能会采用相同的剪枝策略,容易将待剪枝模型中重要的操作或连接剪掉,导致计算精度的下降。

发明内容

本申请提出一种模型剪枝方法、装置、设备、存储介质及程序产品,能够降低模型的成本,同时保持较高的模型精度。

本申请第一方面实施例提出了一种模型剪枝方法,包括:

为待剪枝模型的各处理层分别构建早退分支,处理层对应的早退分支用作所述处理层计算的数据提前退出所述待剪枝模型的通道;

将预设数据集输入构建早退分支的待剪枝模型,得到模型输出结果;

根据所述模型输出结果,分别确定各所述处理层的重要性参数值,处理层对应的重要性参数值用于表征所述处理层在待剪枝模型的数据处理过程中参与计算的参与度;

基于各所述处理层的重要性参数值和所述待剪枝模型对应的目标剪枝比例,分别对各所述处理层进行剪枝。

在本申请一些实施例中,所述为待剪枝模型的各处理层分别构建早退分支,包括:

分别确定所述待剪枝模型中各处理层的早退条件,处理层对应的早退条件用于确定所述处理层的计算结果提前退出所述待剪枝模型所需满足的条件;

为各所述处理层的各处理通道分别构建早退分支,并为各所述早退分支配置对应的早退条件。

在本申请一些实施例中,所述为待剪枝模型的各处理层分别构建早退分支之后,还包括:

获取目标使用场景对应的目标数据集;

采用所述目标数据集,对构建早退分支的待剪枝模型进行微调训练。

在本申请一些实施例中,所述根据所述模型输出结果,分别确定各所述处理层的重要性参数值,包括:

根据所述模型输出结果,分别确定各所述处理层的使用率,处理层的使用率用于表征在所述待剪枝模型的数据计算过程中处理层参与计算的概率;

对各所述处理层的使用率进行归一化处理,得到各所述处理层的重要性参数值。

在本申请一些实施例中,所述模型输出结果包括最终输出结果及至少一个早退分支的输出结果;所述根据所述模型输出结果,分别确定各所述处理层的使用率,包括:

分别确定参与计算所述最终输出结果的处理层,以及确定参与计算所述早退分支的输出结果的处理层;

统计所述待剪枝模型中各处理层参与输出结果计算的目标次数,以及所述模型输出结果的总输出次数;

基于各所述处理层对应的目标次数与所述总次数,分别计算所述各所述处理层的使用率。

在本申请一些实施例中,所述基于各所述处理层的重要性参数值和所述待剪枝模型对应的目标剪枝比例,分别对各所述处理层进行剪枝,包括:

根据所述待剪枝模型的总参数量和对应的目标剪枝比例,确定所述待剪枝模型的总剪枝量;

根据所述待剪枝模型的总剪枝量和各所述处理层的重要性参数值,确定各所述处理层对应的剪枝任务量;

根据各所述处理层对应的剪枝任务量,分别对各所述处理层进行剪枝。

在本申请一些实施例中,所述根据所述待剪枝模型的总剪枝量和各所述处理层的重要性参数值,确定各所述处理层对应的剪枝任务量,包括:

根据各所述处理层的重要性参数值确定各处理层对应的剪枝系数,所述剪枝系数表示进行剪枝时,各处理层需要剪去的参数量占总剪枝量的比例系数;

根据所述待剪枝模型的总剪枝量和各所述处理层对应的剪枝系数,确定各处理层对应的剪枝任务量。

在本申请一些实施例中,所述分别对各所述处理层进行剪枝之后,还包括:

获取目标使用场景对应的目标数据集;

采用所述目标数据集,对剪枝后的所述待剪枝模型进行微调训练。

本申请第二方面实施例提出了一种模型剪枝装置,包括:

分支构建模块,用于为待剪枝模型的各处理层分别构建早退分支,处理层对应的早退分支用作所述处理层计算的数据提前退出所述待剪枝模型的通道;

结果获取模块,用于将预设数据集输入构建早退分支的所述待剪枝模型,得到模型输出结果;

重要性确定模块,用于根据所述模型输出结果,分别确定各所述处理层的重要性参数值,处理层对应的重要性参数值用于表征所述处理层在待剪枝模型的数据处理过程中参与计算的参与度;

模型剪枝模块,用于基于各所述处理层的重要性参数值和所述待剪枝模型对应的目标剪枝比例,分别对各所述处理层进行剪枝。

本申请第三方面的实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现上述第一方面所述的方法。

本申请第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现上述第一方面所述的方法。

本申请第五方面的实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行以实现第一方面所述的方法。

本申请实施例中提供的技术方案,至少具有如下技术效果或优点:

在本申请实施例中,该模型剪枝方法先为待剪枝模型的各处理层分别构建早退分支,再基于模型早退技术确定待剪枝模型各处理层的重要性参数值,然后基于各处理层的重要性参数值和待剪枝模型对应的目标剪枝比例,分别对待剪枝模型各处理层进行剪枝。如此,基于模型早退技术可以准确判断待剪枝模型各处理层的重要性,并得出各处理层的重要性参数值,然后在对模型进行剪枝时,可基于各处理层的重要性进行剪枝,以对不太重要的处理层减去更多的权重或者冗余的连接和操作,对比较重要的处理层减去较少的权重或者冗余的连接和操作,对于重要性更高的处理层也可以不进行剪枝,从而可以根据待剪枝模型个处理层的重要性,对待剪枝模型进行自适应地剪枝,有效降低模型成本的同时,还能保持模型较高的精度。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变的明显,或通过本申请的实践了解到。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。

在附图中:

图1示出了结构化剪枝和非结构化剪枝的对比示意图;

图2示出了现有技术中应用的模型剪枝原理示意图;

图3示出了本申请一实施例所提供的模型剪枝方法的流程示意图;

图4示出了本申请实施例中构建早退分支的待剪枝模型示意图;

图5示出了本申请实施例中在步骤S3的具体流程示意图;

图6示出了本申请实施例中在步骤S31的具体流程示意图;

图7示出了本申请实施例中应用的模型剪枝原理示意图;

图8示出了本申请实施例中在步骤S4的具体流程示意图;

图9示出了本申请一实施例所提供的一种模型剪枝装置的架构示意图;

图10示出了本申请一实施例所提供的一种电子设备的结构示意图;

图11示出了本申请一实施例所提供的一种存储介质的示意图。

具体实施方式

下面将参照附图更详细地描述本申请的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。

剪枝(pruning)是一种模型优化技术,可以消除大规模模型中的冗余操作和连接,以及将对模型表现影响较小的权重归零,从而得到更小的模型,并且剪枝后的模型精度非常接近未剪枝的大型模型的精度。按照剪枝粒度的不同,模型剪枝可以分为结构化剪枝和非结构化剪枝。如图1所示,结构化的剪枝可理解为过滤器级别的剪枝,主要去除的是多余的通道,成组的卷积核,以及整个网络层;非结构化的剪枝则包括了对单一的权重、权重向量(行/列)和单一的卷积核的剪枝。相关技术中,在进行剪枝时,通常如图2所示,在每一层都进行相同的剪枝策略,例如但不限于减去相同的权重或者连接。但是,如此剪枝容易将待剪枝模型中重要的操作或连接剪掉,导致计算精度的下降。

基于此,本申请的发明人提出了一种模型剪枝方法,该方法基于模型早退技术确定待剪枝模型各处理层的重要性参数值,然后基于各处理层的重要性参数值和待剪枝模型对应的目标剪枝比例,分别对待剪枝模型各处理层进行剪枝。如此,基于模型早退技术可以准确判断待剪枝模型各处理层的重要性,然后在对模型进行剪枝时,可基于各处理层的重要性进行剪枝,以对不太重要的处理层减去更多的权重或者冗余的连接和操作,对比较重要的处理层减去较少的权重或者冗余的连接和操作,对于重要性更高的处理层也可以不进行剪枝,从而可以根据待剪枝模型个处理层的重要性,对待剪枝模型进行自适应地剪枝,有效降低模型成本的同时,还能保持模型较高的精度。

其中,早退技术是指,如果模型计算的中间值满足相应的早退条件,则模型处理过程可以在模型的中间中断,提前退出模型。本申请实施例中的早退条件用于确定处理层的计算结果(中间值)提前退出待剪枝模型所需满足的条件。早退条件例如,可以是计算结果的数值达到预设阈值,或者计算结果的损失值达到收敛要求等等,本实施例对早退条件的内容不做具体规定,只要能够确定处理层的计算结果是否能够提前退出待剪枝模型即可。

待剪枝模型可以为需要对模型进行剪枝的任意模型,例如可以但不限于大规模语言模型,如BERT(Bidirectional Encoder Representations from Transformer,基于转换网络的双向编码)模型,GPT(Generative Pre-training Transformer,通用预训练转换器)模型等。待剪枝模型的处理层可以是待剪枝模型的任意层结构,例如Transformer网络(转换网络)的各转换编码层或连接层等。处理层对应的早退分支用作处理层计算的数据提前退出待剪枝模型的通道。

可以理解的是,本实施例对待剪枝模型的具体类型不做具体限定,其可以神经网络模型,也可以是其它需要进行模型剪枝的模型,例如,决策树模型,可以通过剪枝技术减少决策树的深度和宽度来提高模型的泛化能力和效率。支持向量机(SVM)模型,可以通过剪枝技术减少支持向量和参数数量来简化模型,并提高训练和测试速度。贝叶斯模型,可以通过剪枝技术删除一些不必要的变量和参数来提高模型的效率和泛化能力。集成学习模型,可以通过剪枝技术可以通过删除一些弱分类器或决策树来优化模型。还有一些图像处理模型,如SIFT(尺度不变特征变换)模型和HOG(方向梯度直方图)模型等,也可以通过剪枝技术来优化模型。

该模型剪枝方法的执行主体可以是待剪枝模型所应用的计算机、服务器、服务器集群、云平台等,也可以是该些设备上的具体执行装置,具体可应用于并行计算架构,以降低模型尺寸,从而提高并行计算能力。

下面结合附图对本申请实施例提供的模型剪枝方法进行详细阐述。

请参见图3,为本申请实施例提供的模型剪枝方法的流程示意图,如图3所示,该模型剪枝方法可以包括以下步骤:

步骤S1,为待剪枝模型的各处理层分别构建早退分支。

本实施例中,待剪枝模型具体可以为预训练好的模型,即在执行该剪枝方法之前,可以先对基础模型进行预训练,得到能够应用于具体场景的大型模型,即待剪枝模型。以大规模语言模型为例,自然语言处理(NLP)的目的是,使计算机具备人类的听、说、读、写、译、问、答、搜索、摘要、对话和聊天等能力,并可利用知识和常识进行推理和决策,并支持客服、诊断、法律、教学等场景,预训练的目的是使自然语言处理由原来的手工调参的阶段,进入到可以大规模、可复制的大工业施展的阶段。本实施例具体可基于初始化大规模语言模型(如,BERT模型,GPT模型),在开源的大规模语言样本(可理解为训练数据集)上完成预训练任务。然后为预训练好的待剪枝模型,构建各处理层对应的早退分支,便可以通过早退技术确定待剪枝模型各处理层的重要性。

在一些实施例中,步骤S1可以包括以下处理:分别确定待剪枝模型中各处理层的早退条件;为各处理层的各处理通道分别构建早退分支,并为各早退分支配置对应的早退条件。其中,处理层对应的早退条件用于确定处理层的计算结果提前退出待剪枝模型所需满足的条件。

如图4所示,为一种待剪枝模型的层结构示意图,其中,小方块301表示数据块,穿过各处理层302将一列数据块相连的直线303可理解为抽象的数据通道,在构建早退分支时,可以对应处理层的各处理通道分别构建早退分支304,各早退分支可以均和图4中所示的退出层305连接。具体地,可以设置,只要同一处理层302的一个早退分支304对应的计算结果能够满足早退条件,则可判定该处理层302的计算结果可以提前退出待剪枝模型。也可以设置,同一处理层的所以早退分支对应的计算结果均满足早退条件,才可判定该处理层的计算结果可以提前退出待剪枝模型,本实施例对此不做具体限定。

在另一些实施例中,为待剪枝模型的各处理层分别构建早退分支之后,还可以包括以下处理:获取目标使用场景对应的目标数据集;采用目标数据集,对构建早退分支的待剪枝模型进行微调训练。

其中,目标使用场景可以是待剪枝模型可以应用的任意场景,例如但不限于语言识别、文本预测、图像处理等。目标使用场景对应的目标数据集,可理解为目标使用场景中应用的数据,例如待识别的语言文字及其对应的机器语言,待预测的文本要求及对应的文本,待处理的图像及对应的处理结果等。

在实际应用中,构建早退分支之后,可以采用上述目标数据集对具有早退分支的待剪枝模型进行训练,使得构建的早退分支能够对目标使用场景下的数据进行准确地早退判断,以使得后续基于早退技术确定的各处理层的重要性参数值更加准确。

步骤S2,将预设数据集输入构建早退分支的待剪枝模型,得到模型输出结果。

其中,预设数据集可以但不限于上述的目标数据集,也可以是其他开源样本集,只要能够根据模型输出结果准确判断待剪枝模型各处理层的重要性即可。

可以理解的是,模型输出结果可以包括最终输出结果及至少一个早退分支的输出结果。最终输出结果可理解为,待剪枝模型的各处理层均参与计算的结果。

步骤S3,根据模型输出结果,分别确定各处理层的重要性参数值。

其中,处理层对应的重要性参数值用于表征处理层在待剪枝模型的数据处理过程中参与计算的参与度,也可以理解为处理层对输出结果准确性的影响程度。模型输出结果提前退出的越早,参与该模型输出结果计算的处理层越少,未参与计算的处理层的重要性参数值低于参与计算的处理层的重要性参数值。例如,可以将重要性参数值看做一个比例值,则对输出结果的准确性影响程度越高,处理层的重要性参数值越大。

可以理解的是,待剪枝模型中待剪枝的处理层可以包括待剪枝模型的所有处理层,也可以仅包括离数据输入层较远的处理层,例如,与输入层连接的第一处理层基本会参与所有模型输出结果的计算,所以对待剪枝模型进行剪枝时,可不对第一处理层进行剪枝。

在确定各处理层的重要性参数值时,将预设数据集输入构建早退分支的待剪枝模型之后,对应输入的预设数据集中的各组输入数据,可以分别得到一个模型输出结果。本实施例可基于预设数据集中的各组输入数据对应的输出结果,分别确定各处理层的重要性参数值。

具体地,如图5所示,步骤S3可以包括以下处理:步骤S31,根据模型输出结果,分别确定各处理层的使用率;步骤S32,对各处理层的使用率进行归一化处理,得到各处理层的重要性参数值。

其中,处理层的使用率用于表征在待剪枝模型的数据计算过程中处理层参与计算的概率,可以理解为,应用早退技术,处理上述预设数据集或其他能够处理的数据集,得到对应的多个模型输出结果时,模型输出结果的计算过程使用到各处理层的概率,即处理层的使用率等于,多个模型输出结果中使用该处理层进行结果计算的次数与模型输出结果总数的比值。

本实施例基于各处理层的使用率,计算出的各处理层重要性参数值,可以准确反映出待剪枝模型各处理层的重要性,继而可以在剪枝时减去不重要的权重和结构,以提高剪枝后模型的精度。

进一步地,如图6所示,上述步骤S31可以包括以下处理:步骤S311,分别确定参与计算最终输出结果的处理层,以及确定参与计算早退分支的输出结果的处理层;步骤S312,统计待剪枝模型中各处理层参与输出结果计算的目标次数,以及模型输出结果的总输出次数;步骤S313,基于各处理层对应的目标次数与总次数,分别计算各处理层的使用率。

在本实施例中,通过早退技术确定待剪枝模型各处理层的使用率时,将预设数据集输入到构建早退分支的待剪枝模型,预设数据集包括多组输入数据,各组输入数据,从输入层输入,依次经过待剪枝模型的各处理层,然后从输出层输出,各组输入数据对应一个输出结果。所以,当预设数据集输入待剪枝模型之后,可以输出多个结果,而模型输出结果的总输出次数即是模型输出结果的个数,也是所有中间数据不进行提前退出的情况下,各处理层应该参与模型输出结果计算的次数,目标次数可理解为中间数据进行提前退出的情况下,各处理层实际参与模型输出结果计算的次数。如此,通过各处理层对应的目标次数与上述总次数,便可准确计算出在对预设数据集的数据处理过程中,各处理层的使用率。

具体地,可以将基于各处理层对应的目标次数与总次数的比值,分别确定为各处理层的使用率。另外,还可以多次输入预设数据集,各处理层的使用率进行多次计算,并将多次计算的平均值作为最终计算的使用率。

例如,待剪枝模型共有10个处理层,沿输入到输出的顺序分别为第一处理层,第二处理层,依次排序,输出层之前为第十处理层。将预设数据集输入构建早退分支的待剪枝模型,得到10000个模型输出结果,其中,第一处理层之后有50个早退的模型输出结果,第二处理层之后有100个早退的模型输出结果,第三处理层之后有300个早退的模型输出结果,第四处理层之后有600个早退的模型输出结果,第五处理层之后有950个早退的模型输出结果,第六处理层之后有1300个早退的模型输出结果,第七处理层之后有1800个早退的模型输出结果,第八处理层之后有2300个早退的模型输出结果,第九处理层之后有2550个早退的模型输出结果,剩余50个未早退的,经过第十处理层的最终输出结果。则第一处理层参与计算的目标次数为10000,第二处理层参与计算的目标次数为9950,第三处理层-第十处理层参与计算的目标次数分别为9850,9550,8950,8000,6700,4900,2600,50。

各处理层的使用率计算如下:

第一处理层的使用率S1=10000/10000=100%;

第二处理层的使用率S2=(10000-50)/10000=99.5%;

第三处理层的使用率S3=(10000-50-100)/10000=98.5%;

按照上述计算方法,第四处理层-第十处理层的使用率分别为95.5%,89.5%,80.0%,67.0%,49.0%,26.0%,0.5%。

在计算出上述使用率之后,可以通过归一化方法将各处理层的使用率转化为各处理层的重要性参数值,可以将各处理层的重要性参数值记为Mi,则Mi大于或等于0,且小于或等于1。具体可以设定使用率大于或等于第一阈值的处理层,对应的重要性参数值Mi=1,可以对该处理层不进行剪枝;设定使用率小于或等于第二阈值的处理层,对应的重要性参数值Mi=0,可以将该处理层整层剪去。对于使用率在第一阈值和第二阈值之间的处理层,可采用归一化公式Mi=(Si-Smin)/(Smax-Smin)进行具体计算。其中,Smin表示计算出的使用率中位于第一阈值和第二阈值之间的最小使用率,Smax表示计算出的使用率中位于第一阈值和第二阈值之间的最大使用率。且本实施例对上述第一阈值和第二阈值的取值不作具体限定,本领域技术人员可根据实际情况进行设定,例如,第一阈值可以大于或等于95%,第二阈值可以小于或等于1%。

需要说明的是,上述计算各处理层的使用率和重要性参数值的计算过程只是一种举例说明,实际应用中,各处理层的使用率可以是任意可能的情况,本实施例对此不做具体限定。

步骤S4,基于各处理层的重要性参数值和待剪枝模型对应的目标剪枝比例,分别对各处理层进行剪枝。

在实际应用中,当待剪枝模型的体积较大时,可以根据并行架构想要达到的处理速度和计算机设备的处理性能,设置相应的目标剪枝比例。目标剪枝比例可以理解为需要剪去的参数量与待剪枝模型总参数量的比值。在对待剪枝模型进行剪枝时,可以如图7所示,基于各处理层的重要性参数值和目标剪枝比例,对待剪枝模型的各处理层进行适应性剪枝,将重要性参数值较高的处理层剪去更少的参数量,将重要性参数值较低的处理层剪去更多的参数量,从而既能够有效减小待剪枝模型的体积,降低待剪枝模型的成本,还能够使剪枝后模型具有较高的精度。

可以理解的是,本实施例对目标剪枝比例的具体数值不做具体限定,例如可以为10%-20%。

在一些实施例中,如图8所示,步骤S4可以包括以下步骤:步骤S41,根据待剪枝模型的总参数量和对应的目标剪枝比例,确定待剪枝模型的总剪枝量;步骤S42,根据待剪枝模型的总剪枝量和各处理层的重要性参数值确定各处理层对应的剪枝任务量;步骤S43,根据各处理层对应的剪枝任务量,分别对各处理层进行剪枝。

其中,待剪枝模型的总参数量可理解为待剪枝模型各种参数的总数量,可记为Param_total,则待剪枝模型的总剪枝量=Param_total*目标剪枝比例。各处理层对应的剪枝任务量可理解为各处理层需要剪去的参数量,可记为Param_i。基于上述各处理层的使用率与重要性参数值的关系,可知,各处理层的剪枝任务量Param_i与其重要性参数值负相关。可以理解的是,本实施例对各处理层的剪枝任务量与其重要性参数值的具体关系不做具体限定,本领域技术人员可根据待剪枝模型的具体结构进行具体设定,只要两者成负相关,且能够实现待剪枝模型的剪枝即可。

本实施例在确定各处理层对应的重要性参数值之后,可以先基于待剪枝模型的总参数量和对应的目标剪枝比例,按照上述总剪枝量的计算公式,计算该待剪枝模型的总剪枝量。然后根据待剪枝模型的总剪枝量和各处理层的重要性参数值,按照上述剪枝任务量的计算公式,计算各处理层对应的剪枝任务量。之后可根据计算出的各处理层的剪枝任务量,分别对各处理层进行剪枝。

具体地,上述步骤S42可以包括以下处理:根据各处理层的重要性参数值确定各处理层对应的剪枝系数;根据待剪枝模型的总剪枝量和各处理层对应的剪枝系数,确定各处理层对应的剪枝任务量。

其中,处理层的剪枝系数可记为Qi,表示进行剪枝时各处理层需要剪去的参数量占总剪枝量的比例系数。则各处理层对应的剪枝任务量Param_i=总剪枝量*该处理层对应的剪枝系数Qi。例如,预设将待剪枝模型减去10%的参数量,即总剪枝量为总参数量的10%,则各处理层需要剪去的参数量分别为总剪枝量*Qi,则所有待剪枝的处理层的剪枝系数之和等于1,即待剪枝的各处理层的剪枝系数之和等于1,即Q1+Q2+……+Q10=1。根据上述使用率和重要性参数值的关系,可以得出M1-M10与S1-S10具有相同的分布情况,Q1-Q10与S1-S10具有相反的分布情况。具体可以根据待剪枝模型的特性,依照该分布相关性设定重要性参数值Mi与剪枝系数Qi的映射函数,然后再结合计算出的各处理层的使用率,便可得出各处理层的重要性参数值Mi,以及剪枝系数Qi。鉴于待剪枝模型各层的参数量有限,且为了尽量不影响模型剪枝后的精度,可以对各处理层的剪枝量进行控制,即剪枝系数Qi与总剪枝量的乘积具有上限值。需要说明的是,本实施例对重要性参数值Mi与剪枝系数Qi的映射函数不做具体限定,本领域技术人员可根据待剪枝模型的具体特性进行设置,例如Mi=1时,Qi可以等于0,Mi=0时,可以使Qi与总剪枝量的乘积等于上述上限值。当0

在计算出各处理层的剪枝任务量之后,还可以计算各处理层的剪枝比例,即处理层的剪枝任务量与该处理层总参数量的比值,则处理层的剪枝比例等于Param_total*目标剪枝比例*Qi/Param_i。

可以理解的是,确定Mi和Qi之后,计算各处理层对应的剪枝任务量时,各处理层对应的Mi和Qi也不是一成不变的,当实际进行剪枝时,若处理层对应的剪枝任务量大于该上限值,可进行适应性调整。即,当某处理层的剪枝系数Qi较大时,可能整层减去也达不到该处理层需要剪去的剪枝任务量,则可以适应性地,将该处理层未能够实现的剪枝任务量分摊到相邻的处理层。

在另一些实施例中,上述分别对各处理层进行剪枝之后,该模型剪枝方法还可以包括以下处理:获取目标使用场景对应的目标数据集;采用目标数据集,对剪枝后的待剪枝模型进行微调训练。这里的目标数据集可参照上述对目标数据集的介绍,在此不再赘述。

在实际应用中,对待剪枝模型进行剪枝之后,还可以应用目标数据集对剪枝后的模型进行训练,以对剪枝后模型的各项参数进行微调,提高剪枝后模型的精度。

在本申请另一实施例中,以大规模语言模型为例,基于早退机制的动态剪枝方法主要流程如下:

1)初始化大规模语言模型(如,BERT模型,GPT模型等),在开源的大规模语言样本上完成模型的预训练任务,得到收敛的待剪枝模型;

2)为待剪枝模型的各处理层分别构建早退分支,形成具有多分支的早退大模型框架,然后采用目标数据集对具有多分支的早退大模型框架进行模型的finetune(微调)。

3)通过早退机制,确定待剪枝模型各处理层对应的使用率,然后通过归一化方法将各处理层的使用率转化为重要性参数值Mi。

4)按照用户需求的目标剪枝比例(如10%,20%等),参照步骤3)中获得的重要性参数值进行剪枝任务分配,确定各处理层的剪枝任务量,即各处理层需要剪枝的参数量,则各处理层需要剪枝的参数量等于Param_total*剪枝比率*Qi。

5)然后根据各处理层的剪枝任务量,对待剪枝模型的各处理层进行剪枝。

6)应用上述的目标数据集,对剪枝后的模型进行微调训练,以提高剪枝后模型的精度,尽量使得剪枝后模型的表征能力不衰减。

本实施例提供的模型剪枝方法,先为待剪枝模型的各处理层分别构建早退分支,再基于模型早退技术确定待剪枝模型各处理层的重要性参数值,然后基于各处理层的重要性参数值和待剪枝模型对应的目标剪枝比例,分别对待剪枝模型各处理层进行剪枝。如此,基于模型早退技术可以准确判断待剪枝模型各处理层的重要性,并得出各处理层的重要性参数值,然后在对模型进行剪枝时,可基于各处理层的重要性进行剪枝,以对不太重要的处理层减去更多的权重或者冗余的连接和操作,对比较重要的处理层减去较少的权重或者冗余的连接和操作,对于重要性更高的处理层也可以不进行剪枝,从而可以根据待剪枝模型个处理层的重要性,对待剪枝模型进行自适应地剪枝,有效降低模型成本的同时,还能保持模型较高的精度。

本申请的一些实施例还提供了一种模型剪枝装置,该装置用于执行上述任一实施例提供的模型剪枝方法,图9示出了该模型剪枝装置的一种示意图,如图9所示,该模型剪枝装置包括:

分支构建模块,用于为待剪枝模型的各处理层分别构建早退分支,处理层对应的早退分支用作处理层计算的数据提前退出待剪枝模型的通道;

结果获取模块,用于将预设数据集输入构建早退分支后的待剪枝模型,得到模型输出结果;

重要性确定模块,用于根据模型输出结果,分别确定各处理层的重要性参数值,处理层对应的重要性参数值用于表征处理层在待剪枝模型的数据处理过程中参与计算的参与度;

模型剪枝模块,用于基于各处理层的重要性参数值和待剪枝模型对应的目标剪枝比例,分别对各处理层进行剪枝。

可以理解的是,本实施例提供的模型剪枝装置与本申请实施例提供的模型剪枝方法出于相同的发明构思,至少能够实现模型剪枝方法相同的有益效果,且模型剪枝方法实施例的各种实施方式,也同样适用于该模型剪枝装置的实施例,在此不再赘述。

需要说明的是,本申请所涉及的数据(包括但不限于用于模型训练的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。

本申请实施方式还提供一种电子设备,以执行上述模型剪枝方法。请参考图10,其示出了本申请的一些实施方式所提供的一种电子设备的示意图。如图10所示,电子设备4包括:处理器400,存储器401,总线402和通信接口403,所述处理器400、通信接口403和存储器401通过总线402连接;所述存储器401中存储有可在所述处理器400上运行的计算机程序,所述处理器400运行所述计算机程序时执行本申请前述任一实施方式所提供的模型剪枝方法。

其中,存储器401可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口403(可以是有线或者无线)实现该装置网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。

总线402可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器401用于存储程序,所述处理器400在接收到执行指令后,执行所述程序,前述本申请实施例任一实施方式揭示的所述模型剪枝方法可以应用于处理器400中,或者由处理器400实现。

处理器400可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器400中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器400可以是通用处理器,包括处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器400读取存储器401中的信息,结合其硬件完成上述方法的步骤。

本申请实施例提供的电子设备与本申请实施例提供的模型剪枝方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。

本申请实施方式还提供一种与前述实施方式所提供的模型剪枝方法对应的计算机可读存储介质,请参考图11,其示出的计算机可读存储介质为光盘50,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的模型剪枝方法。

需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。

本申请实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行以实现权上述任一实施例所述的模型剪枝方法。

本申请的上述实施例提供的计算机可读存储介质、计算机程序产品均与本申请实施例提供的模型剪枝方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。

需要说明的是:

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下示意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 目标检测方法和装置、电子设备、存储介质、程序产品
  • 行人再识别方法和装置、电子设备、存储介质、程序产品
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 机器学习模型的剪枝方法、装置、设备、程序产品及介质
  • 神经网络剪枝方法、电子设备、存储介质及程序产品
技术分类

06120116129995