CN116822593A - 一种基于硬件感知的大规模预训练语言模型压缩方法 - Google Patents
一种基于硬件感知的大规模预训练语言模型压缩方法 Download PDFInfo
- Publication number
- CN116822593A CN116822593A CN202310642738.7A CN202310642738A CN116822593A CN 116822593 A CN116822593 A CN 116822593A CN 202310642738 A CN202310642738 A CN 202310642738A CN 116822593 A CN116822593 A CN 116822593A
- Authority
- CN
- China
- Prior art keywords
- model
- clipping
- mask
- layer
- delay
- 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 59
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000006835 compression Effects 0.000 title claims abstract description 28
- 238000007906 compression Methods 0.000 title claims abstract description 28
- 230000008447 perception Effects 0.000 title claims abstract description 10
- 238000005520 cutting process Methods 0.000 claims abstract description 60
- 235000019580 granularity Nutrition 0.000 claims abstract description 37
- 238000013507 mapping Methods 0.000 claims abstract description 16
- 238000013140 knowledge distillation Methods 0.000 claims abstract description 14
- 230000007246 mechanism Effects 0.000 claims abstract description 10
- 238000004821 distillation Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 15
- 238000000605 extraction Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 12
- 239000011159 matrix material Substances 0.000 claims description 12
- 210000002569 neuron Anatomy 0.000 claims description 11
- 230000000694 effects Effects 0.000 claims description 10
- 238000013508 migration Methods 0.000 claims description 10
- 230000005012 migration Effects 0.000 claims description 10
- 238000013138 pruning Methods 0.000 claims description 10
- 238000009826 distribution Methods 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 5
- 238000005070 sampling Methods 0.000 claims description 5
- 230000004913 activation Effects 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims description 3
- 230000003044 adaptive effect Effects 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 claims description 2
- 239000012633 leachable Substances 0.000 claims description 2
- 239000000203 mixture Substances 0.000 claims description 2
- 239000002245 particle Substances 0.000 claims description 2
- 238000011084 recovery Methods 0.000 abstract description 8
- 239000010410 layer Substances 0.000 description 99
- 230000001133 acceleration Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000005259 measurement Methods 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
- 230000035755 proliferation Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Classifications
-
- 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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于硬件感知的大规模预训练语言模型压缩方法,针对现有技术中模型压缩方法存在不足的问题。该发明含有以下步骤:加载训练完成的预训练语言模型并在下游任务上进行微调;选择裁剪粒度;根据所选的裁剪粒度构建代理数据集;设计延时预测网络,并使用代理数据集训练延时预测网络;设置期望延时,并将延时预测网络嵌入多混合粒度的裁剪框架中进行裁剪,裁剪的同时采用动态映射的知识蒸馏方法将教师模型的知识迁移到变化的裁剪模型中;使用裁剪得到的最佳裁剪掩码进行模型裁剪,并进行微调实现精度恢复,得到压缩模型。本发明解决了大量的多头注意力机制类架构网络模型高效简单的部署问题,具有良好的应用前景。
Description
技术领域
本发明涉及深度学习技术领域,特别是涉及一种基于硬件感知的大规模预训练语言模型压缩方法。
背景技术
近年来,深度学习在多个领域中取得了的成就,包括目标检测,超分辨率图像生成,自然语言处理等多个领域。然后各个网络模型性能不断提高的同时也伴随着模型参数量的爆发式增长,例如最近OpenAI公布的GPT4模型,其参数量高达175亿,是其上一代GPT3模型的十倍大小。模型大小的激增使得将其部署到算力,内存有限的设备成为一大挑战。因此,如何有效的进行模型压缩,并尽可能的保持其性能以及成为学术界以及工业界研究的热点问题。
目前阶段常见的模型压缩方法包括有:剪枝,知识蒸馏,量化,网络结构搜索等。剪枝通过选定网络中各个子模块的重要性,然后根据重要性排序并将重要性较低的子模块进行裁剪,直到模型参数量符合预设的裁剪率,以达到降低参数量和加快推理速度的目的。知识蒸馏的主要思想是通过参数量较多的教师模型将知识传递给参数量较小的学生模型,最终达到学生模型与教师模型性能接近,但推理速度大幅提升的目的。模型量化是通过预设的映射规则将模型中浮点数类型的参数量转化为不同位长的整形,同时不会造成较大的精度损失。网络结构搜索是从网络设计出发,在定义的一个网络结构空间中进行自动的搜索,找到最佳的实现性能与参数量权衡的子网络,从而实现设计轻量化网络的目的。
模型剪枝由于可以根据裁剪率,灵活的裁剪出不同尺度的子网络的优点,受到了广泛的关注。然而,现有的模型剪枝方法是以参数量为约束的,即裁剪出预定参数量的模型。然后模型参数量和推理速度并非是严格的线性关系,这就导致了想要裁剪出特定推理延时的模型可能需要根据专家经验对裁剪率进行反复的调整。此外,由于不同硬件架构的不同,在某一硬件上精心微调的满足延时要求的裁剪率可能无法迁移到另一硬件上,这进一步的提高了模型压缩的成本,降低了自动化程度。同时,由于裁剪过程中模型中间层的结构在动态变化,这使得难以使用针对模型中间层的知识蒸馏方法在裁剪过程中对模型进行精度恢复。
发明内容
本发明针对现有技术中模型压缩方法存在的不足,提供一种通用性较好,灵活性以及有效性较高的基于硬件感知的大规模预训练语言模型压缩方法。
本发明的技术解决方案是,提供一种具有以下步骤的基于硬件感知的大规模预训练语言模型压缩方法:含有以下步骤,
步骤1、加载训练完成后的预训练语言模型并在下游任务上进行微调;步骤2、选择裁剪粒度;步骤3、根据所选的裁剪粒度构建代理数据集;步骤4、设计延时预测网络,使用代理数据集训练延时预测网络;步骤5、设置期望延时,将延时预测网络嵌入多混合粒度的剪枝框架中裁剪,采用动态映射的知识蒸馏方法将教师模型的知识迁移到变化的裁剪模型中;步骤6、使用裁剪得到的最佳裁剪掩码进行模型裁剪,微调后恢复精度,得到压缩模型。
优选地,所述步骤1中加载的预训练模型为BERT模型,并在SST-2数据集上进行微调,微调轮数为4轮,学习率为3e-5。
优选地,所述步骤2中的裁剪粒度包括:网络中间层,前馈层,注意力层,注意力头,隐藏层维度和中间层维度,以掩码的形式来充当参数裁剪的效果,其中所涉及到裁剪粒对应的裁剪掩码为:
前馈层:对应的裁剪掩码用ZFLL表示,掩码维度为12,ZFLL(i)表示第i个网络中间层的裁剪与否;
注意力层:对应的裁剪掩码用ZMHA表示,掩码维度为12,ZMHA(i)表示第i个网络中间层的裁剪与否;
注意力头:对应的裁剪掩码用ZHEAD表示,掩码维度为12x12,ZHEAD(i,j)表示第i个注意力层中第j个注意力头的与否;
隐藏特征维度:对应的裁剪掩码用ZHID表示,掩码维度为768,ZHID(i)表示第i个隐藏层维度的与否;
中间特征维度:对应的裁剪掩码用ZINT表示,掩码维度为3072,ZINT(i)表示第i个中间层维度的与否;
具体公式如下:
FFN(X)=zFFN·gelu(XWU)·diag(zint)·WD
其中,MHA(X)为多头注意力层的输出,Nh为该层的多头数,为构建多头注意力层注意力机制必要的query,key,value,output矩阵,FFL(X)为前馈层输出,WU为前馈层中中间隐藏层的权重矩阵,WD为前馈层中输出层的权重矩阵。
优选地,所述步骤3包含以下分步骤:
步骤3.1、为所选的裁剪粒度确定相应的裁剪掩码,通过多组裁剪掩码的组合确定一个裁剪模型,裁剪掩码由0和1构成,其中0表示裁剪该组参数,而1表示保留该组参数,其中涉及到裁剪粒度及对应的裁剪掩码为:
前馈层:对应的裁剪掩码用ZFLL表示,掩码维度为12,ZFLL(i)表示第i个网络中间层的裁剪与否;
注意力层:对应的裁剪掩码用ZMHA表示,掩码维度为12,ZMHA(i)表示第i个网络中间层的裁剪与否;
注意力头:对应的裁剪掩码用ZHEAD表示,掩码维度为12x12,ZHEAD(i,j)表示第i个注意力层中第j个注意力头的裁剪与否;
隐藏特征维度:对应的裁剪掩码用ZHID表示,掩码维度为768,ZHID(i)表示第i个隐藏层维度的与否;
中间特征维度:对应的裁剪掩码用ZINT表示,掩码维度为3072,ZINT(i)表示第i个中间层维度的与否;
步骤3.2、随机采样裁剪掩码,根据采用的裁剪掩码对模型进行裁剪,测试其推理延时,构建代理数据集,随机采样的裁剪掩码作为代理数据集的特征,实测的推理延时作为标签。
优选地,所述步骤4中首先通过各个不同的分支提取模型中不同模块的延时特征,汇总分支负责接收其他分支输出的延时特征,并对接收的延时特征做进一步的线性变化后输出推理延时,延时预测网络为多分支树形结构网络,该网络的输入的特征为:输入长25的一维二进制向量,其各个维度的具体含义为:1-12位表示BERT中12个注意力层中注意力头的保留比例,13-24位表示BERT中12个前馈层中中间特征维度的保留比例,25位表示BERT中隐藏特征维度的保留比例;该网络包括以下分支:
(1)注意力层延时特征提取分支:输入为总输入的第1-12位,并依次通过12,24,12,1个神经元的全连接层,最终输出汇总分支,并且不同层之间使用了leakRelu激活函数,使得负值的信息不会全部丢失;
(2)前馈层延时特征提取分支:输入为总输入的第13-24位,其结构与注意力层延时特征提取分支一致,最终输出到汇总分支;
(3)隐藏维度延时特征提取分支:输入为总输入的第25位,并连接一个神经元的全连接层,最终输出到汇总分支;
(4)汇总分支:输入为长为3的一维向量,对上述三个分支的值做连接操作形成长为3的一维向量,并将其输入到一个全连接网络中,最终该网络输出特定硬件上的延时信息,该全连接网络由两个线性层组成,第一层包含3个神经元,第二层包含1个神经元。
优选地,所述步骤5中多混合粒度的剪枝框架包括:l0正则化模块,模型组件库以及裁剪训练模块;各个模块的组成以及功能包括:
正则化模块:该模块对裁剪掩码对应的可学习结构参数进行统一的控制,并利用可导的l0范数形式来建模裁剪掩码,在裁剪训练过程中,正则化模块用于计算基于l0系数的稀疏损失;
模型组件库:该组件库中包含了微调过的组成BERT模型的各个子模块,子模块在不改变原有功能的情况下增加了受控机制,受控机制是指该模块的表征能力受到传入的裁剪掩码的约束;
动态映射的知识蒸馏模块:根据教师模型的输出以及学生模型的输出,采用动态映射计算对应的预测层蒸馏损失以及中间层蒸馏损失,其中预测层蒸馏损失是根据学生模型以及教师模型的预测概率计算得到,中间层蒸馏损失是根据学生模型与教师模型输出的特征分布之间的相似度计算得到,教师模型与学生模型不同层之间相似度越高,则教师模型的知识迁移成本越低,相应的传递更多的知识给该层,即在蒸馏损失中的占比更多;
裁剪训练模块:该模块通过整合了步骤5.1中描述的l0正则化模块,步骤5.2中描述的模型组件库和步骤4中描述的延时预测网络,提供一条完备的裁剪管道,具体步骤包括:
5.1、初始化基线模型,即BERT模型,在下游任务的数据集上进行微调,将微调后的模型作为裁剪过程中的教师模型;
5.2、使用模型组件库中模块替换BERT中的原有模块,作为初始化的初始化裁剪模型;
5.3、初始化l0正则化模块,包括目标稀疏度以及目标延时的初始化,裁剪粒度的初始化,延时预测网络的嵌入和结构参数的初始化;
5.4、对下游任务数据进行预处理;
5.5、使用l0正则化模块根据结构参数输出一次训练模式下的裁剪软掩码,并作为一个批次训练中输入数据的一部分;
5.6、将一个批次的数据输入教师模型,同时将同一批次的数据加入掩码参数后输入裁剪模型,完成一次前向传播;
5.7、根据5.6中教师模型的输出以及裁剪模型的输出计算蒸馏损失,根据l0正则化模块则计算稀疏损失,两项损失之和为总损失;
5.8、采用带权重衰减的自适应矩估计优化器对模型参数及结构参数进行更新;
5.9、重复步骤5.6—5.8直到预设的迭代数;
5.10、将收敛的结构参数输入l0正则化模块得到推理模型下的二进制裁剪掩码,通过此掩码对模型进行裁剪,输入裁剪后的小模型。
与现有技术相比,本发明基于硬件感知的大规模预训练语言模型压缩方法具有以下优点:
一、压缩性能更好:由于本发明采用了混合粒度的裁剪方法,细粒度的裁剪单元提供了裁剪的准确性,粗粒度的裁剪单元提供了更多的加速效果,使得裁剪兼具了裁剪准确性与加速实用性。同时,本发明引入了针对结构变化网络的动态知识蒸馏映射策略,将教师模型的知识更好的迁移了被裁剪的学生模型,最大程度了实现了精度的恢复,因而实现了更好的压缩性能。
二、具有硬件感知性:本发明中设计了一种具有良好硬件泛化性的延时预测网络,通过在目标设备采样少量数据对其进行训练即可准确的预测延时,将其嵌入到裁剪框架中,容易裁剪出在目标设备上具有特定推理速度的子模型,从而到达感知特定硬件上最佳延时友好型子模型的目的。
三、通用性强:本发明的模型压缩方法适用范围不局限于BERT模型,可以通过端到端的方式对任何具有多头注意力层以及前馈层的网络进行压缩,并且仅需做少量的代码改动,具备很好的自动化压缩的优点。
四、本发明基于硬件感知的预训练语言模型压缩,设计了一个具有硬件泛化性的,从大模型中提取的小模型,并最大程度的保留原有大模型性能的压缩方法,很好的解决了现有的大量的多头注意力机制类架构网络模型部署问题。具体地,通过多混合粒度的裁剪方法来兼具裁剪的精确性与推理加速的实用性。另外,本发明设计了具有硬件感知性的延时预测网络,只需在目标硬件上采集少量数据进行训练,即可以准确的预测裁剪网络的在该硬件上的延时,之后通过嵌入裁剪框架便可避免为实现特定推理加速效果反复微调裁剪率的时间,即可感知针对目标设备的延时信息,搜索到最佳的硬件友好型小模型。此外,通过在裁剪过程中使用动态映射的知识蒸馏策略,实现了教师模型对学生模型合理的知识迁移,实现了裁剪过程的精度恢复。最终将大模型裁剪为能在指定硬件上具有指定推理速度的便于部署的高性能小模型。
附图说明
图1是本发明的实现流程示意图;
图2是本发明中混合粒度裁剪的实现示意图;
图3是本发明中延时网络嵌入裁剪训练的示意图;
图4是本发明中用于精度恢复的知识蒸馏示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
下面结合附图和具体实施方式对本发明基于硬件感知的大规模预训练语言模型压缩方法作进一步说明:如图(1)所示,本实施例中对当前主流的BERT(BIdirectionalEncoder Representations from Transformers)预训练模型进行压缩,提高硬件上的推理速度以及减低模型参数量,以便于在端测的部署。特此说明:本发明主要针对的是编码器单元进行压缩;本发明将BERT在特定下游任务上微调后的模型称为教师模型,同时也是作为压缩性能对比的基线模型。裁剪模型也即学生模型初始化为为微调的原始BERT模型,通过在学生模型在下游任务训练过程中输入裁剪掩码以模拟限制模型体积的效果,同时使用了延时损失使得学生模型最终收敛到符合给定延时附近,同时针对裁剪过程中的性能损失问题,本发明使用了动态映射的知识蒸馏策略来帮助教师模型更好的将知识迁移给动态变化的学生模型。
如图1所示,本发明的压缩方法可以分为六个步骤:
步骤一:加载训练完成的预训练语言模型并在下游任务上进行微调。在本实施例中,加载的预训练模型为BERT模型,并在SST-2数据集(一个针对电影评论的情感分类的二分类数据集),上进行微调,微调代数(epoch)为4轮,学习率为3e-5。此步骤的目的是将微调后的BERT模型充当裁剪训练过程中教师模型,帮助裁剪模型的精度恢复。
步骤二:选择裁剪粒度。如图2所示,本发明中可使用多种裁剪粒度对模型进行裁剪,包括有:网络中间层(Transformer Block);前馈层(Feed-forward Layer);注意力层(Attention Layer);注意力头(Attention Head);隐藏层维度(hidden dimension);中间层维度(intermediate dimension)。具体而言,粗粒度的裁剪单元能带来更高的加速效果,但劣势难以实现精确的裁剪,从而造成性能的下降,例如图2中层级别的裁剪。细粒度的裁剪能够实现对冗余参数的精确裁剪,但带来的加速效果不够明显,例如图中中间层维度参数的裁剪。在本例中,采用了上述所有粒度,既保证了裁剪的精确性,同时保证了加速的实用性。进一步地,本发明以掩码的形式来充当参数裁剪的效果,其中所涉及到裁剪粒对应的裁剪掩码为:
前馈层(Feed-forward Layer):对应的裁剪掩码用ZFLL表示,掩码维度为(12),ZFLL(i)表示第i个网络中间层的裁剪与否;
注意力层(Attention Layer):对应的裁剪掩码用ZMHA表示,掩码维度为(12),ZMHA(i)表示第i个网络中间层的裁剪与否;
注意力头(Attention Head):对应的裁剪掩码用ZHEAD表示,掩码维度为(12,12),ZHEAD(i,j)表示第i个注意力层中第j个注意力头(Attention Head)的与否;
隐藏特征维度(hidden dimension):对应的裁剪掩码用ZHID表示,掩码维度为(768),ZHID(i)表示第i个隐藏层维度的与否;
中间特征维度(intermediate dimension):对应的裁剪掩码用ZINT表示,掩码维度为(3072),ZINT(i)表示第i个中间层维度的与否;
具体公式如下:
FFN(X)ZFFN·gelu(XWU)·diag(zint)·WD
其中,MHA(X)为多头注意力层的输出,Nh为该层的多头数,为构建多头注意力层注意力机制必要的query,key,value,output矩阵。FFN(X)为前馈层输出,WU为前馈层中中间隐藏层的权重矩阵,WD为前馈层中输出层的权重矩阵。
步骤三:根据所选的裁剪粒度构建(裁剪掩码-延时)代理数据集。随机采样裁剪掩码,并根据采用的裁剪掩码对模型进行裁剪,并在指定硬件上测试其推理延时,形成以一组(裁剪掩码-推理延时)数据对。重复多次上述操作,构建代理数据集,其中裁剪掩码为特征,推理延时作为标签。在本例中,本发明在Ubuntu 20.04.2,Pytorch 1.10.0,memory 64G,Intel Core i9-10900KF CPU,Nvidia RTX 3090 GPU的环境下采用了2000组数据作为延时预测网络的训练数据。
步骤四:设计延时预测网络,并使用代理数据集训练延时预测网络。由于不同模型的不同模块对延时的贡献不一致,因此本发明设计了一种多分支树形结构网络,首先通过各个不同的分支提取模型不同模块的延时特征,最终进行汇总推理输出。具体地,该网络模型的设计为:输入为长25的一维二进制向量,此向量的各个维度的具体含义为:1-12位表示BERT中12个注意力层中注意力头的保留比例,13-24位表示BERT中12个前馈层中中间特征维度的保留比例,25位表示BERT中隐藏特征维度的保留比例。该网络结构包括以下分支:
注意力层延时特征提取分支:输入为总输入的第1-12位,并依次通过12,24,12,1个神经元的全连接层,最终输出汇总分支。并且不同层之间使用了leakRelu激活函数,使得负值的信息不会全部丢失。
前馈层延时特征提取分支:输入为总输入的第13-24位,其结构与注意力层延时特征提取分支一致,最终输出到汇总分支。
隐藏维度延时特征提取分支:输入为总输入的第25位,并连接一个神经元的全连接层,最终输出到汇总分支。
汇总分支:输入为长为3的一维向量,对上述1,2,3三个分支的值做连接操作形成长为3的一维向量,并依次通过3,1个神经元的全连接层,最终输入特定硬件上的延时信息。
本实例中,训练批次大小为2,训练轮数为300轮,选用的优化器为随机梯度下降优化器(SGD优化器),学习率为1e-4。本发明将80%的数据作为训练集,20%的数据作为测试集,最终实验结果该延时预测网络的与真实值的误差仅有5%,足已作为可靠的延时信息提供组件。
步骤五:设置期望延时,本例中的目标延时设置为完整模型的延时的10%。并将延时预测网络嵌入多混合粒度的剪枝框架中进行裁剪,嵌入过程见图3所示。此外,裁剪的同时采用动态映射的知识蒸馏方法将教师模型的知识迁移到变化的裁剪模型中,见图4所示。具有地,多混合粒度的剪枝框架包括10正则化模块,模型组件库,以及裁剪训练模块。其中,I0正则化模块作为每次前向推理的模型结构的提供组件,以及稀疏损失的提供组件被在裁剪训练模块中使用;模型组件库中包括了对原有模型,即BERT的改进版本,改进包括将掩码作为一个输入项进行传入,以控制各个模块的结构;裁剪训练模块通过整合以上两个模块,在下游任务的微调阶段进行训练,最终输出最佳的符合预设约束的小模型。进一步地,各个模块的功能以及对应功能的实现步骤如下:
(一)10正则化模块:该模块对裁剪掩码对应的可学习结构参数(score)进行统一的控制,并基于10范数的可导形式对裁剪掩码进行建模,由此在裁剪训练过程中计算基于10系数的稀疏损失。此处使用hard concrete distribution作为可导的10范数,具体公式如下:
u~U(0,1)
s=Sigmoid((log u-log(1-u)+logα)/β)
U(0,1)在区间[0,1]内服从整体分布,l<0以及r>0,本例中l=-0.01,r=1.1。将Sigmoid函数的输出拉伸到(l,r)这个范围内,β为控制平滑程度的超参数,即温度参数,本例中设置为0.66。logα是可学习结构参数,即上述提到的score。通过更新结构参数来控制掩码,并在正向传递中从中对掩码进行采样,也即采样本次前向推理的模型结构,以进行裁剪训练。z表示采样得到的结构参数,即步骤二中提到的z。进一步地,在计算稀疏损失时,将s大于0的概率乘以对应裁剪粒度的参数量得到惩罚项,即当前可学习参数采样下得到的模型的参数量期望。将此期望与目标参数量的均方误差作为关于参数量的稀疏损失,同时各个粒度对应的s参数大于0的期望之和表示了该粒度的保留比例,可以根据此保留比例得到对应的用于输入延时预测网络的结构硬掩码,以得到对应的延时损失。即,最终的稀疏损失=延时损失+参数量稀疏损失。
该模型具体包括的功能如下包括有:
(1)实现裁剪掩码对应的可学习结构参数(score)的初始化,重置。
(2)实现目标稀疏度以及目标延时的初始化以及对应的预热过程,预热过程将目标稀疏度以及目标延时从0渐进式提高到预设值,保障了裁剪过程的稳定性。
(3)计算了模型掩码的稀疏损失,包括参数量损失以及延时损失。其中使用了hardconcrete distribution对裁剪掩码进行建模,从而可以在训练过程中使用可微分的10正则项作为一项优化目标,同时由于不同的学习率以及裁剪粒度会可能会导致裁剪训练收敛到大小截然不同的模型,因此本发明增加了拉格朗日项来保证稀疏损失的收敛性。具有公式如下:
其中为更加结构参数z得到的稀疏度,t为目标稀疏度。
(4)实现了结构参数到裁剪掩码的映射规则,也即该模块中的前向传播方法,具体为:训练过程中将可学习参数映射为软掩码,保证优化过程中参数的可微分性;推理测试过程中将可学习参数映射为二进制硬掩码,以便测试裁剪模型的性能。
(5)实现了结构参数到该部分步骤(4)中描述的延时预测网络输入的对齐,从而保证延时预测网络能耦合到10模块中,为10模块提供预测推理延时并作为延时损失的功能。
(二)模型组件库:
该模块对BERT中原有个各个网络模块的进行了微调,将裁剪掩码作为控制模型结构的一个额外输入传入网络中,这种非侵入的模型结构控制方式实现了原有网络参数与结构参数(score)的解耦,使得裁剪框架更具备通用性,任何基于多头注意力机制结构的网络只需做少量修改便可接入该裁剪框架。具体实现中争对输入的步骤二中描述的6种裁剪掩码进行了微调,具体实现为:对裁剪粒度所控制的网络参数对应列的输出乘以裁剪掩码,例如某一掩码参数x控制了某一线性层的权重矩阵中第y行的重要性,则对经过该线性层后的输出的第y维乘以x,因为输出的第y维乘以x可以等价为权重矩阵的第y行乘以x,即该线性层的第y列这一组参数受到了掩码参数x的控制,其余裁剪掩码控制网络参数的实现方式与之类似。由此通过输入裁剪掩码参数的方式实现了网络结构的控制。
(三)动态映射的知识蒸馏模块
如图4所示,该模块根据教师模型的输出以及学生模型的输出,采用动态映射的方式计算了对应的预测层蒸馏损失以及中间层蒸馏损失。具体步骤为:
(1)根据学生模型以及教师模型的预测概率对数预测层蒸馏损失,即如下公式
其中zT和zS分别表示教师模型和学生模型的预测概率对数,t表示可设置的蒸馏温度。
(2)使用The Earth Mover’s Distance,一种用于计算两个分布之间距离的度量方式,来衡量学生模型与教师模型不同层之间的相似度,也即知识迁移成本。教师与学生模型不同层之间相似度越高知识迁移成本越低。具体而言,相似度包括注意图(attentionmap)的相似度以及特征图(featuremap)的相似度。具体地,学生教师之间特征图的The Earth Mover’s Distance由如下公式定义:
其中HT,HS表示教师模型与学生模型隐藏层特征图矩阵,表示映射流,即教师模型第i层的知识分配到学生模型第j层的百分比,/>表示教师模型第j层到学生模型第j层的相似度,也即知识迁移代价。/>和/>表示教师模型与学生模型不同层的知识权重系数,初始化时为1/N(N为模型层数),该权重表征了教师的模型第i层的具有的关于特征图的知识占整个模型的百分比,以及学生模型j层的能够接收知识的占整个模型的百分比。此外,学生教师之间的注意力图的The Earth Mover’s Distance与上述定义相似,将特征图(feature map)替换为注意力图即可。
(3)根据每次计算该部分步骤2中的The Earth Mover’s Distance后对根据单位知识迁移代价更新教师模型层知识权重,即并且将学习到新权重用于下一个批次训练的约束项。具体地,单位知识迁移代价定义如下:
其中分别表示教师模型第i层的单位知识迁移代价。进一步,根据所得到的单位知识迁移代价,更新教师模型层知识权重,具体更新公式如下:
(四)裁剪训练模块:
该模块通过整合了步骤五中描述的10正则化模块以及模型组件库,步骤四中描述的延时预测网络,提供了一条完备的裁剪管道,具体步骤包括:
(1)初始化base模型,即BERT模型。并在下游任务的数据集上进行微调,将微调后的模型作为裁剪过程中的教师模型。
(2)使用模型组件库中模块替换BERT中的原有模块,作为初始化的初始化裁剪模型。
(3)初始化10正则化模块,包括目标稀疏度以及目标延时的初始化,裁剪粒度的初始化,延时预测网络的嵌入,结构参数的初始化。将可学习结构参数初始化为全保留状态,保证了模型从完整作为初始结构后进行稳定的裁剪到理想的最佳结构。裁剪类型在本例中设置为包括所有的裁剪类型。延时稀疏设置为完整模型延时的10%,参数量稀疏度为完整模型的5%。hardconcrete distribution中的温度参数设置为0.66。
(4)对下游任务数据进行预处理。具体地,使用分词器(tokenizer)将句子分成一个个小的词块(token),生成一个词表,并通过模型学习到更好的表示。
(5)使用10正则化模块根据结构参数输出一次训练模式下的裁剪软掩码,并作为一个训练批次中输入的一部分。
(6)将一个批次的数据输入教师模型,同时将同一批次(batch)的数据加入掩码参数后输入裁剪模型,完成一次前向传播。本例中,批次大小设置为32。
(7)根据(6)中教师模型的输出以及裁剪模型的输出计算蒸馏损失,10正则化模块则计算稀疏损失,两项损失之则为总损失。也即裁剪训练的目标为:寻找一个最佳的网络子结构使其稀疏度和延时达到预设值的同时,最大化模型性能。
(8)采用AdamW优化器对模型参数以及结构参数进行更新。本例子中模型参数的学习率为3e-5,可学习参数的学习率为0.01。
(9)重复该部分步骤(5)—(8)直到预设的轮数。本例中设置为20。
(10)l0正则化模块输出推理模型下的二进制裁剪掩码,对模型进行裁剪,输入裁剪后的小模型。
步骤六:使用步骤五裁剪得到的最佳裁剪掩码进行模型裁剪,并进行微调实现精度恢复,得到压缩模型;具体地,该精度恢复作用于高稀疏度的裁剪效果明显,其中对于小数据集例如RTE(The Recognizing Textual Entailment datasets,识别文本蕴含数据集),MRPC(The MicrosoftResearch Paraphrase Corpus,微软研究院释义语料库)等的性能恢复效果又高于大数据集例如MNLI(The Multi-Genre Natural Language InferenceCorpus,多类型自然语言推理数据库),QQP((The Quora Question Pairs,Quora问题对数集)等。
下面结合在sst数据集(文本分类任务)上的实验做进一步的参数设置的详细说明以及实验结果。本发明的硬件平台为:Ubuntu 20.04.2,Pytorch 1.10.0,memory 64G,Intel Core i9-10900KF CPU,Nvidia RTX 3090 GPU,软件平台为:Linux16.04操作系统、Python3.6,Pytorch0.4.0。
表1实施案例实验参数
参数名称 | 值 |
数据集 | Sst2 |
裁剪粒度 | FLL,MHA,HEAD,HID,INT |
结构参数score学习率 | 0.01 |
模型参数学习率 | 3e-5 |
Epoch | 20 |
Batchsize | 32 |
目标参数量稀疏度 | 95% |
目标技术比 | 10 |
表2 BERT原始模型与裁剪模型的性能对比
文本分类任务(sst2) | 原始模型(BERT) | 裁剪模型 | 对比 |
模型大小 | 85M | 3.92M | 压缩95.4% |
精度 | 0.92 | 0.89 | 下降3% |
速度(推理次数/每秒) | 972 | 9932 | 速度提升10.2倍 |
通过上述实验结果表明该方面能很好的将大模型裁剪到预设值体积下,并且保持良好的性能,在本例中将BERT参数量压缩为原模型的5%左右,速度提升10倍,其仅有3%的精度下降,能够很好的保证大模型在资源受限条件下的部署工作。
Claims (6)
1.一种基于硬件感知的大规模预训练语言模型压缩方法,其特征在于:含有以下步骤,
步骤1、加载训练完成后的预训练语言模型并在下游任务上进行微调;
步骤2、选择裁剪粒度;
步骤3、根据所选的裁剪粒度构建代理数据集;
步骤4、设计延时预测网络,使用代理数据集训练延时预测网络;
步骤5、设置期望延时,将延时预测网络嵌入多混合粒度的剪枝框架中裁剪,采用动态映射的知识蒸馏方法将教师模型的知识迁移到变化的裁剪模型中;
步骤6、使用裁剪得到的最佳裁剪掩码进行模型裁剪,微调后恢复精度,得到压缩模型。
2.根据权利要求1所述的基于硬件感知的大规模预训练语言模型压缩方法,其特征在于:所述步骤1中加载的预训练模型为BERT模型,并在SST-2数据集上进行微调,微调轮数为4轮,学习率为3e-5。
3.根据权利要求1所述的基于硬件感知的大规模预训练语言模型压缩方法,其特征在于:所述步骤2中的裁剪粒度包括:网络中间层,前馈层,注意力层,注意力头,隐藏层维度和中间层维度,以掩码的形式来充当参数裁剪的效果,其中所涉及到裁剪粒对应的裁剪掩码为:
前馈层:对应的裁剪掩码用ZFLL表示,掩码维度为12,ZFLL(i)表示第i个网络中间层的裁剪与否;
注意力层:对应的裁剪掩码用ZMHA表示,掩码维度为12,ZMHA(i)表示第i个网络中间层的裁剪与否;
注意力头:对应的裁剪掩码用ZHEAD表示,掩码维度为12x12,ZHEAD(i,j)表示第i个注意力层中第j个注意力头的与否;
隐藏特征维度:对应的裁剪掩码用ZHID表示,掩码维度为768,ZHID(i)表示第i个隐藏层维度的与否;
中间特征维度:对应的裁剪掩码用ZINT表示,掩码维度为3072,ZINT(i)表示第i个中间层维度的与否;
具体公式如下:
FFN(X)=zFFN·gelu(XWU)·diag(zint)·WD
其中,MHA(X)为多头注意力层的输出,Nh为该层的多头数,为构建多头注意力层注意力机制必要的query,key,value,output矩阵,FFL(X)为前馈层输出,WU为前馈层中中间隐藏层的权重矩阵,WD为前馈层中输出层的权重矩阵。
4.根据权利要求1所述的基于硬件感知的大规模预训练语言模型压缩方法,其特征在于:所述步骤3包含以下分步骤:
步骤3.1、为所选的裁剪粒度确定相应的裁剪掩码,通过多组裁剪掩码的组合确定一个裁剪模型,裁剪掩码由0和1构成,其中0表示裁剪该组参数,而1表示保留该组参数,其中涉及到裁剪粒度及对应的裁剪掩码为:
前馈层:对应的裁剪掩码用ZFLL表示,掩码维度为12,ZFLL(i)表示第i个网络中间层的裁剪与否;
注意力层:对应的裁剪掩码用ZMHA表示,掩码维度为12,ZMHA(i)表示第i个网络中间层的裁剪与否;
注意力头:对应的裁剪掩码用ZHEAD表示,掩码维度为12x12,ZHEAD(i,j)表示第i个注意力层中第j个注意力头的裁剪与否;
隐藏特征维度:对应的裁剪掩码用ZHID表示,掩码维度为768,ZHID(i)表示第i个隐藏层维度的与否;
中间特征维度:对应的裁剪掩码用ZINT表示,掩码维度为3072,ZINT(i)表示第i个中间层维度的与否;
步骤3.2、随机采样裁剪掩码,根据采用的裁剪掩码对模型进行裁剪,测试其推理延时,构建代理数据集,随机采样的裁剪掩码作为代理数据集的特征,实测的推理延时作为标签。
5.根据权利要求1所述的基于硬件感知的大规模预训练语言模型压缩方法,其特征在于:所述步骤4中首先通过各个不同的分支提取模型中不同模块的延时特征,汇总分支负责接收其他分支输出的延时特征,并对接收的延时特征做进一步的线性变化后输出推理延时,延时预测网络为多分支树形结构网络,该网络的输入的特征为:输入长25的一维二进制向量,其各个维度的具体含义为:1-12位表示BERT中12个注意力层中注意力头的保留比例,13-24位表示BERT中12个前馈层中中间特征维度的保留比例,25位表示BERT中隐藏特征维度的保留比例;该网络包括以下分支:
(1)注意力层延时特征提取分支:输入为总输入的第1-12位,并依次通过12,24,12,1个神经元的全连接层,最终输出汇总分支,并且不同层之间使用了leakRelu激活函数,使得负值的信息不会全部丢失;
(2)前馈层延时特征提取分支:输入为总输入的第13-24位,其结构与注意力层延时特征提取分支一致,最终输出到汇总分支;
(3)隐藏维度延时特征提取分支:输入为总输入的第25位,并连接一个神经元的全连接层,最终输出到汇总分支;
(4)汇总分支:输入为长为3的一维向量,对上述三个分支的值做连接操作形成长为3的一维向量,并将其输入到一个全连接网络中,最终该网络输出特定硬件上的延时信息,该全连接网络由两个线性层组成,第一层包含3个神经元,第二层包含1个神经元。
6.根据权利要求1所述的基于硬件感知的大规模预训练语言模型压缩方法,其特征在于:所述步骤5中多混合粒度的剪枝框架包括:l0正则化模块,模型组件库以及裁剪训练模块;各个模块的组成以及功能包括:
正则化模块:该模块对裁剪掩码对应的可学习结构参数进行统一的控制,并利用可导的l0范数形式来建模裁剪掩码,在裁剪训练过程中,正则化模块用于计算基于l0系数的稀疏损失;
模型组件库:该组件库中包含了微调过的组成BERT模型的各个子模块,子模块在不改变原有功能的情况下增加了受控机制,受控机制是指该模块的表征能力受到传入的裁剪掩码的约束;
动态映射的知识蒸馏模块:根据教师模型的输出以及学生模型的输出,采用动态映射计算对应的预测层蒸馏损失以及中间层蒸馏损失,其中预测层蒸馏损失是根据学生模型以及教师模型的预测概率计算得到,中间层蒸馏损失是根据学生模型与教师模型输出的特征分布之间的相似度计算得到,教师模型与学生模型不同层之间相似度越高,则教师模型的知识迁移成本越低,相应的传递更多的知识给该层,即在蒸馏损失中的占比更多;
裁剪训练模块:该模块通过整合了步骤5.1中描述的l0正则化模块,步骤5.2中描述的模型组件库和步骤4中描述的延时预测网络,提供一条完备的裁剪管道,具体步骤包括:
5.1、初始化基线模型,即BERT模型,在下游任务的数据集上进行微调,将微调后的模型作为裁剪过程中的教师模型;
5.2、使用模型组件库中模块替换BERT中的原有模块,作为初始化的初始化裁剪模型;
5.3、初始化l0正则化模块,包括目标稀疏度以及目标延时的初始化,裁剪粒度的初始化,延时预测网络的嵌入和结构参数的初始化;
5.4、对下游任务数据进行预处理;
5.5、使用l0正则化模块根据结构参数输出一次训练模式下的裁剪软掩码,并作为一个批次训练中输入数据的一部分;
5.6、将一个批次的数据输入教师模型,同时将同一批次的数据加入掩码参数后输入裁剪模型,完成一次前向传播;
5.7、根据5.6中教师模型的输出以及裁剪模型的输出计算蒸馏损失,根据l0正则化模块则计算稀疏损失,两项损失之和为总损失;
5.8、采用带权重衰减的自适应矩估计优化器对模型参数及结构参数进行更新;
5.9、重复步骤5.6—5.8直到预设的迭代数;
5.10、将收敛的结构参数输入l0正则化模块得到推理模型下的二进制裁剪掩码,通过此掩码对模型进行裁剪,输入裁剪后的小模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310642738.7A CN116822593A (zh) | 2023-06-01 | 2023-06-01 | 一种基于硬件感知的大规模预训练语言模型压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310642738.7A CN116822593A (zh) | 2023-06-01 | 2023-06-01 | 一种基于硬件感知的大规模预训练语言模型压缩方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116822593A true CN116822593A (zh) | 2023-09-29 |
Family
ID=88142119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310642738.7A Pending CN116822593A (zh) | 2023-06-01 | 2023-06-01 | 一种基于硬件感知的大规模预训练语言模型压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116822593A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668563A (zh) * | 2024-01-31 | 2024-03-08 | 苏州元脑智能科技有限公司 | 文本识别方法、装置、电子设备及可读存储介质 |
-
2023
- 2023-06-01 CN CN202310642738.7A patent/CN116822593A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668563A (zh) * | 2024-01-31 | 2024-03-08 | 苏州元脑智能科技有限公司 | 文本识别方法、装置、电子设备及可读存储介质 |
CN117668563B (zh) * | 2024-01-31 | 2024-04-30 | 苏州元脑智能科技有限公司 | 文本识别方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7041281B2 (ja) | ディープニューラルネットワークモデルに基づくアドレス情報特徴抽出方法 | |
WO2022141754A1 (zh) | 一种卷积神经网络通用压缩架构的自动剪枝方法及平台 | |
CN109635947B (zh) | 基于答案采样的机器阅读理解模型训练方法及装置 | |
EP3756141A1 (en) | Dialogue state tracking using a global-local encoder | |
WO2022126797A1 (zh) | 基于多层级知识蒸馏预训练语言模型自动压缩方法及平台 | |
CN112487805B (zh) | 一种基于元学习框架的小样本Web服务分类方法 | |
CN113128355A (zh) | 一种基于通道剪枝的无人机图像实时目标检测方法 | |
US11501171B2 (en) | Method and platform for pre-trained language model automatic compression based on multilevel knowledge distillation | |
CN108427665A (zh) | 一种基于lstm型rnn模型的文本自动生成方法 | |
CN109977199A (zh) | 一种基于注意力池化机制的阅读理解方法 | |
CN109685211B (zh) | 基于联合损失函数的机器阅读理解模型训练方法及装置 | |
CN111723914A (zh) | 一种基于卷积核预测的神经网络架构搜索方法 | |
CN116822593A (zh) | 一种基于硬件感知的大规模预训练语言模型压缩方法 | |
CN112232087A (zh) | 一种基于Transformer的多粒度注意力模型的特定方面情感分析方法 | |
CN110796233A (zh) | 基于迁移学习的深度残差卷积神经网络的自适应压缩方法 | |
CN112766603A (zh) | 一种交通流量预测方法、系统、计算机设备及存储介质 | |
CN114758180B (zh) | 一种基于知识蒸馏的轻量化花卉识别方法 | |
CN113505225A (zh) | 一种基于多层注意力机制的小样本医疗关系分类方法 | |
Zhao et al. | Synchronously improving multi-user English translation ability by using AI | |
CN113157919A (zh) | 语句文本方面级情感分类方法及系统 | |
CN110858480A (zh) | 一种基于n元文法神经网络语言模型的语音识别方法 | |
CN115687609A (zh) | 一种基于Prompt多模板融合的零样本关系抽取方法 | |
CN112651499A (zh) | 一种基于蚁群优化算法和层间信息的结构化模型剪枝方法 | |
CN116681154A (zh) | 一种基于emd-ao-delm的光伏功率计算方法 | |
CN115796029A (zh) | 基于显式及隐式特征解耦的nl2sql方法 |
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 |