没有合适的资源?快使用搜索试试~ 我知道了~
TextPruner:预训练语言模型压缩工具包
http://textpruner.hfl-rc.comarXiv:2203.15996v1 [cs.CL] 30 Mar 2022+v:mala2277获取更多论文0TextPruner:预训练语言模型的模型修剪工具包0杨子清†,崔一鸣‡†,陈志刚†0†认知智能国家重点实验室,科大讯飞研究院,中国‡社会计算与信息检索研究中心(SCIR),哈尔滨工业大学,哈尔滨,中国† {zqyang5,ymcui,zgchen}@iflytek.com ‡ ymcui@ir.hit.edu.cn0摘要0预训练语言模型在自然语言处理中得到了广泛应用,并成为许多NLP任务的基础,但对计算资源的需求限制了它们的应用。在本文中,我们介绍了TextPruner,一个针对预训练语言模型的开源模型修剪工具包,旨在实现快速和简便的模型压缩。TextPruner提供了结构化的后训练修剪方法,包括词汇修剪和Transformer修剪,并可应用于各种模型和任务。我们还提出了一种无监督修剪方法,可以在没有标记数据的情况下应用。我们在几个NLP任务上的实验证明了TextPruner在不重新训练模型的情况下减小模型大小的能力。101 引言0大型预训练语言模型(PLMs)(De-vlin等,2019年;Liu等,2019年)在各种NLP任务中取得了巨大成功。然而,在计算和内存资源有限的实际应用中,部署它们是困难的。减小预训练模型的大小并加速推理已成为一个关键问题。修剪是一种常用的模型压缩技术。它识别并删除网络中的冗余或不重要的神经元。从模型结构的角度来看,修剪方法可以分为非结构化修剪和结构化修剪。在非结构化修剪中,如果模型参数达到基于大小或重要性评分的某些标准,就会单独删除每个模型参数(Han等,2015年;Zhu和Gupta,2018年;Sanh等,2020年)。非结构化修剪导致稀疏矩阵,并允许01 源代码和文档可在以下网址获取:0显著的模型压缩,但推理速度很难在没有专门设备的情况下提高。而在结构化修剪中,从权重矩阵中删除参数的行或列(McCarley,2019年;Michel等,2019年;Voita等,2019年;Lagunas等,2021年;Hou等,2020年)。因此,生成的模型在常见的CPU和GPU设备上加速。修剪方法还可以分为无优化方法(Michel等,2019年)和涉及优化的方法(Frankle和Carbin,2019年;Lagunas等,2021年)。后者通常具有更高的性能,但前者运行更快,更方便使用。修剪PLMs引起了越来越多的关注。大部分工作都集中在减小Transformer大小,而忽略了词汇表(Abdaoui等,2020年)。修剪词汇表可以大大减小多语言PLMs的模型大小。在本文中,我们介绍了TextPruner,这是一个针对PLMs的模型修剪工具包。它结合了Transformer修剪和词汇修剪。TextPruner的目的是提供一个通用、快速和易于使用的模型压缩工具。我们希望它能够为具有少量模型训练经验的用户提供便利。因此,我们为其实现了结构化无优化修剪方法,以方便使用和快速计算。使用TextPruner修剪一个基准大小的模型只需要几分钟。TextPruner还可以作为一个有用的分析工具,用于检查模型中神经元的重要性。TextPruner具有以下亮点:•TextPruner被设计成易于使用。它提供了PythonAPI和命令行界面(CLI)。使用其中任何一个只需要几行简单的代码。此外,TextPruner是非侵入性的,并且与Transformers(Wolf等,2020年)兼容,这意味着用户不需要更改基于Transformers库构建的模型。brary.MHA(X) =Nh�iAttW Qi ,W Ki ,W Vi ,W Oi (X) (1)AttW Qi ,W Ki ,W Vi ,W Oi (X) =(2)GeLU(XW1 + b1)W2 + b2(3)IS(Θ) = Ex∼X�∂L(x)∂Θ Θ�(4)LKL(x) = KL(stopgrad(q(x))||p(x))(5)0•TextPruner适用于不同的模型和任务。它已经在文本分类、机器阅读理解(MRC)、命名实体识别(NER)等任务上进行了测试。TextPruner还被设计成可扩展到其他模型。0•TextPruner是灵活的。用户可以通过调整配置来控制剪枝过程和探索剪枝策略,以找到特定任务的最佳配置。02 剪枝方法论0我们简要回顾一下transformers中的多头注意力(MHA)和前馈网络(FFN)(Vaswani等,2017)。然后我们描述了如何根据重要性分数剪枝注意力头和FFN。02.1 MHA和FFN0假设transformer的输入为X ∈ R n × d0其中n是序列长度,d是隐藏大小。具有Nh个头的MHA层由W Q i,WK i,W V i,W O i∈R d h×d参数化0其中d h = d/N h是每个头的隐藏大小。Att W Qi,W K i,W V i,W Oi(X)是双线性自注意力0softmax(X(W Q i)�W 0d)X(W V i)�W O i0每个transformer包含一个完全连接的前馈网络(FFN),其在MHA之后。它由两个线性变换组成,中间有一个GeLU激活函数0FFN W 1,b 1,W 2,b 2(X)=0其中W 1∈R d×d ff,W 2∈R d ff×d,b 1∈R dff,b 2∈R d。dff是FFN的隐藏大小。添加操作沿着序列长度维度n进行广播。02.2 使用重要性分数进行剪枝0在固定隐藏大小的情况下,可以通过删除注意力头或删除FFN层中的中间神经元(减小dff,数学上等于从W 1中删除列和从W2中删除行)来减小transformer的大小。按照Michel等人(2019)的方法,我们根据其代理重要性分数对所有注意力头和FFN神经元进行排序,然后迭代地删除它们。常用的重要性分数是损失对神经元值的敏感性。我们将一组神经元或其输出表示为Θ。它的重要性分数通过以下方式计算0绝对值中的表达式是损失L在Θ =0附近的一阶泰勒近似。将Θ设为注意力头hi的输出,IS(Θ)给出了头i的重要性分数;将Θ设为W 1的第i列、W 2的第i行和b1的第i个元素,IS(Θ)给出了FFN层中第i个中间神经元的重要性分数。较低的重要性分数意味着损失对神经元的敏感性较低。因此,按照增加的分数顺序剪枝神经元。在实践中,我们使用开发集或训练集的子集来计算重要性分数。02.3 自监督剪枝0在方程(4)中,损失L通常是训练损失。但是,L还可以有其他选择。我们建议使用Kullback-Leibler散度来衡量模型输出的变化:0其中q(x)是原始模型预测分布,p(x)是待剪枝模型预测分布。stopgrad操作用于停止反向传播梯度。LKL的增加表示p(x)与原始预测q(x)之间的差异增加。因此,LKL的梯度反映了模型对神经元值的敏感性。评估LKL不需要标签信息。因此,剪枝过程可以以自监督的方式进行,其中未剪枝的模型提供软标签q(x)。我们将该方法称为自监督剪枝。TextPruner支持监督剪枝和自监督剪枝。0+v:mala2277获取更多论文+v:mala2277获取更多论文0图1:TextPruner中的三种修剪模式。0(其中 L是训练损失)和自监督修剪。我们将在实验中进行比较。03 TextPruner概述03.1 修剪模式0如图1所示,TextPruner有三种修剪模式。0词汇修剪预训练模型具有大量的词汇,但词汇表中的某些令牌在下游任务中很少出现。可以删除这些令牌以减小模型大小,并加快需要对整个词汇表进行概率预测的任务的训练速度。在此模式下,TextPruner读取和标记化输入语料库。TextPruner遍历词汇表,并检查词汇表中的令牌是否出现在文本文件中。如果没有出现,则将令牌从模型的嵌入矩阵和标记器的词汇表中删除。0Transformer修剪先前的研究(Michel等,2019;Voita等,2019)表明,在transformers中,并非所有的注意力头都同样重要,一些注意力头可以在不影响性能的情况下被修剪掉(Cui等,2022)。因此,识别并删除最不重要的注意力头可以减小模型大小,并对性能产生较小影响。在此模式下,TextPruner读取示例并计算注意力头和前馈网络神经元的重要性分数。首先删除得分最低的头部和神经元。重复此过程,直到模型被减小到目标大小。TextPruner还支持使用用户提供的掩码进行自定义修剪,而无需计算重要性分数。0管道修剪在此模式下,TextPruner自动执行Transformer修剪和词汇修剪,以完全减小模型大小。03.2 修剪器0修剪器是TextPruner的核心,它们执行实际的修剪过程。有三个修剪器类,分别对应三种前述的修剪模式:VocabularyPruner、TransformerPruner和PipelinePruner。一旦初始化修剪器,调用pruner.prune(...) 开始修剪。03.3 配置0以下配置对象设置了修剪策略和实验设置。0GeneralCon�g设置要使用的设备(CPU或CUDA)和模型保存的输出目录。0VocabularyPruningCon�g 设置了令牌修剪阈值min_count 和是否修剪LM头部prune_lm_head。如果令牌在语料库中出现次数少于min_count 次,则将其从词汇表中删除;如果prune_lm_head为真,则TextPruner还会修剪LM头部的线性变换。0TransformerPruningCon�gTransformer修剪参数包括但不限于:0• pruning_method 可以是 mask 或iterative。如果是iterative,则修剪器根据重要性分数修剪模型;如果是mask,则修剪器使用用户提供的掩码修剪模型。0• target_ffn_size表示每层的平均FFN隐藏大小 d ff。0• target_num_of_heads表示每层的平均注意力头数。0• n_iters是修剪迭代次数。例如,如果原始模型每层有N h 个头部,目标模型每层有 N ′ h个头部,修剪器将平均每层每次迭代修剪 ( N h − N ′ h ) / n_iters个头部。对FFN神经元也适用。0• 如果 ffn_even_masking为真,则所有的FFN层都被剪枝为相同的大小 dff;否则,FFN的大小从层到层不同,其平均大小为 d ff。0• 如果 head_even_masking为真,则所有的MHAs都被修剪为相同数量的头部;否则,注意力头的数量从层到层不同。textpruner-cli\--pruning_mode pipeline \--configurations vocab.json trm.json \--model_class BertForClassification \--tokenizer_class BertTokenizer \--model_path models/ \--vocabulary texts.txt \--dataloader_and_adaptor dataloader.py+v:mala2277获取更多论文0图2:TextPruner的工作流程。黄色块是所有修剪器的通用参数。绿色块应提供给TransformerPruner和PipelinePruner。蓝色块应提供给VocabularyPruner和PipelinePruner。0图3:用于Transformer修剪和词汇修剪的典型TextPruner工作流程。0•如果ffn_even_masking为false,则每层的FFN隐藏大小将限制为multiple_of的倍数。这使得模型结构对于在矩阵形状是特定大小的倍数时效率最高的设备更友好。0•如果use_logits为true,则启用自监督修剪。所有配置都可以手动在Python脚本中或从JSON文件中初始化(对于CLI,配置只能从JSON文件中初始化)。Python脚本中的配置示例如图3所示。03.4 其他实用工具0TextPruner包含诊断工具,如summary,用于检查和计数模型参数,以及inference_time,用于测量模型推理速度。读者可以参考存储库中的示例来了解它们的用法。0读者可以参考存储库中的示例来了解它们的用法。03.5 使用和工作流程0TextPruner提供PythonAPI和CLI。典型的工作流程如图2所示。在调用或初始化TextPruner之前,用户应准备好以下内容:01. 需要进行修剪的已训练模型。2.对于词汇修剪,需要提供定义新词汇的文本文件。03.对于Transformer修剪,需要提供定义数据加载器和适配器的Python04.对于流水线修剪,需要提供文本文件和Python脚本文件。0适配器是一个用户定义的函数,它以模型输出作为参数并返回损失或logits。它负责解释修剪器的模型输出。如果适配器为None,则修剪器将尝试从模型输出中推断出损失。0使用PythonAPI进行修剪,首先初始化配置和修剪器,然后调用pruner.prune并提供所需的参数,如图2所示。图3显示了一个示例。请注意,我们没有构建GeneralConfig和VocabularyPruningConfig。如果未指定配置,修剪器将使用默认配置,这简化了编码过程。0使用CLI进行修剪,首先创建配置JSON文件,然后运行textpruner-cli。流水线修剪示例:XLM-R2500021060 MB (100%)84.875.185.775.03072100%(1.00x)89%(1.08x)78%(1.19x)67%(1.30x)256094%(1.08x)83%(1.18x)72%(1.29x)61%(1.44x)204889%(1.17x)78%(1.28x)67%(1.43x)56%(1.63x)153683%(1.29x)72%(1.42x)61%(1.63x)50%(1.90x)0模型词汇大小 模型大小 开发集 (英文) 开发集 (中文) 测试集 (英文) 测试集 (中文)0+ 对英文进行词汇修剪 26653 406 MB ( 38 . 3% ) 84.6 - 85.9 - + 对中文进行词汇修剪 23553 397 MB ( 37 . 5% ) - 74.7 -74.5 + 对英文和中文进行词汇修剪 37503 438 MB ( 41 . 3% ) 84.8 74.3 85.8 74.50表1:使用修剪后的词汇的模型的准确率得分(×100%)在XNLI开发集和测试集上。0结构 12 10 8 60表2:相对于基础模型(12,3072),不同结构的Transformer大小(以百分比表示)和加速比(以括号表示)。03.6 计算成本0词汇修剪词汇修剪中的主要计算成本是分词。这个过程将花费几分钟到几十分钟,具体取决于语料库的大小。但是,如果提供了预分词的文本,则计算成本可以忽略不计。0变压器修剪变压器修剪中的主要计算成本是重要性分数的计算。它涉及数据集的前向和反向传播。这个成本与n_iters和数据集大小成正比。如第4.2节所示,在典型的分类任务中,一个包含几千个示例的数据集,并将n_iters设置为10左右,可以获得良好的性能。这个过程在现代GPU上通常需要几分钟(例如Nvidia V100)。03.7 可扩展性0TextPruner支持不同的预训练模型和分词器,通过模型结构定义和注册在MODEL_MAP字典中的分词器辅助函数。更新TextPruner以支持更多预训练模型很容易。用户只需编写一个模型结构定义并将其注册到MODEL_MAP中,以便修剪器可以识别新模型。04 实验0在本节中,我们进行了几个实验,展示了TextPruner在不同NLP任务上修剪不同预训练模型的能力。我们主要关注文本分类任务。附录中列出了使用不同预训练模型在MRC任务和NER任务上的结果。04.1 数据集和模型0我们使用跨语言自然语言推理(XNLI)语料库(Conneau等,2018)作为文本分类数据集,并基于XLM-RoBERTa(Conneau等,2020)构建分类模型。该模型是基于12个变压器层的base大小模型,FFN大小为3072,隐藏大小为768,每层有12个注意力头。由于XNLI是一个多语言数据集,我们在英语训练集上对XLM-R模型进行微调,并在英语和中文测试集上进行测试,以评估语言内和零-shot性能。04.2 文本分类结果0词汇修剪的影响由于XLM-R是一个多语言模型,我们对具有不同语言的XLM-R进行词汇修剪,如表1所示。我们在每种语言的训练集上对XLM-R进行修剪,即只保留出现在训练集中的标记。当分别在英语和中文训练集上修剪时,性能略有下降。在两个训练集上修剪后,模型大小仍然可以大幅减小约60%,同时保持良好的性能。词汇修剪是减小多语言预训练模型大小的有效方法,特别适用于针对特定语言定制多语言模型。0变压器修剪的效果为简单起见,我们使用(H,F)表示模型结构的符号,其中H是每层平均注意力头的数量,F是每层平均FFN隐藏大小。使用这个符号,原始(未修剪)模型为(12,3072)。在展示之前0+v:mala2277获取更多论文+v:mala2277获取更多论文0图4:具有不同结构的修剪模型在测试集上的性能。x轴表示平均注意力头的不同数量;y轴表示不同的平均FFN大小。左列:英语测试集上的准确率得分;右列:中文测试集上的准确率得分。第一行中的模型具有均匀的结构,而第二行中的模型则没有。UHF代表不均匀的注意力头和FFN神经元。0在特定任务上的结果,我们列出了不同目标结构相对于未修剪模型(12,3072)的变压器尺寸及其加速比的表2。我们在英语开发集上计算重要性分数。迭代次数n_iters设置为16。我们报告了五次运行的平均准确率。英语和中文测试集的性能如图7所示。每个热图的左上角表示原始模型的性能。右下角表示模型(6,1536),其中包含一半的注意力头和一半的FFN神经元。第一行热图中的模型具有均匀的结构:模型中的每个变压器具有相同数量的注意力头和相同的FFN大小,而底部热图中的模型的注意力头和FFN大小不均匀。我们使用缩写UHF(不均匀的注意力头和FFN神经元)来区分它们与均匀结构。我们看到,通过允许每个变压器具有不同的大小,修剪器有更多的自由选择要修剪的神经元,因此UHF模型的性能优于均匀模型。请注意,该模型在英语数据集上进行了微调。中文的性能是零-shot的。在英语开发集上修剪后,0图5:在不同迭代次数下英文测试集上的模型性能。0中文任务的性能下降不大于英文任务的性能下降。这意味着对于中文任务来说,重要的神经元仍然存在于剪枝模型中。在多语言模型中,处理语义理解的神经元不专门针对特定语言,而是提供跨语言的理解能力。图5展示了niters对性能的影响。我们检查了非UHF模型(6,1536)和UHF模型(6,1536)UHF。实线表示五次运行的平均性能。阴影区域表示标准差。在所有情况下,性能随着niters的增加而增长。只进行一次迭代的剪枝是一个糟糕的选择,会导致非常低的分数。我们建议将niters设置为至少8以获得足够好的性能。在图5中,我们还比较了有监督剪枝(其中L是与真实标签的交叉熵损失)和提出的自监督剪枝(其中L是KL散度公式(5))。尽管没有标签信息可用,自监督方法实现了可比甚至更高的结果。模型剪枝需要多少数据?为了回答这个问题,我们从英文开发集中随机抽取10%,20%,...,90%,100%的示例来计算重要性分数。我们检查了(6,1536)UHF模型。每个实验运行了五次。结果如下所示:Alexis Conneau, Ruty Rinott, Guillaume Lample, Ad-ina Williams, Samuel R. Bowman, Holger Schwenk,and Veselin Stoyanov. 2018. Xnli: Evaluating cross-lingual sentence representations. In Proceedings ofthe 2018 Conference on Empirical Methods in Natu-ral Language Processing. Association for Computa-tional Linguistics.+v:mala2277获取更多论文0图6:使用不同数量的示例计算重要性分数时测试集上的模型性能。左y轴:英语准确率。右y轴:中文准确率。0如图6所示。使用开发集的约70%的示例(约1.7K个示例),剪枝模型的性能几乎与使用完整开发集(2490个示例)剪枝的模型相当。05 结论和未来工作0本文介绍了TextPruner,一个用于预训练模型的模型剪枝工具包。它利用无需优化的剪枝方法,包括词汇剪枝和Transformer剪枝,来减小模型大小。它为用户提供了丰富的配置选项,供用户进行探索和实验。TextPruner适用于希望快速轻松地剪枝模型的用户,也可以用于通过剪枝分析预训练模型,就像我们在实验中所做的那样。对于未来的工作,我们将更新TextPruner以支持更多的预训练模型,例如生成模型T5(Raffel等,2020)。我们还计划将TextPruner与我们之前发布的知识蒸馏工具包TextBrewer(Yang等,2020)结合到一个框架中,以提供更有效的模型压缩方法和知识蒸馏和模型剪枝的统一接口。0致谢0本工作得到了中国国家重点研发计划的支持,项目编号为2018YFB1005100。0参考文献0Amine Abdaoui,Camille Pradel和GrégoireSigel。2020。只加载所需内容:更小的版本0多语言BERT .在《可持续自然语言处理研讨会论文集》中,第119-123页,线上。计算语言学协会。0Alexis Conneau,Kartikay Khandelwal,NamanGoyal,Vishrav Chaudhary,GuillaumeWenzek,Francisco Guzmán,EdouardGrave,Myle Ott,Luke Zettle- moyer和VeselinStoyanov。2020。规模化的无监督跨语言表示学习。在《计算语言学协会第58届年会论文集》中,第8440-8451页,线上。计算语言学协会。0Yiming Cui, Wei-Nan Zhang, Wanxiang Che, TingLiu, Zhigang Chen, and Shijin Wang. 2022.多语言多方面的机器阅读理解模型解释性分析。iScience,25(4)。0Jacob Devlin, Ming-Wei Chang, Kenton Lee, andKristina Toutanova. 2019.BERT:用于语言理解的深度双向Transformer的预训练。在2019年北美计算语言学协会会议论文集:人类语言技术,第1卷(长篇和短篇),页4171-4186,明尼阿波利斯,明尼苏达州。计算语言学协会。0Jonathan Frankle and Michael Carbin. 2019.莱特里彩票假设:寻找稀疏可训练的神经网络。在学习表示国际会议上。0Song Han, Jeff Pool, John Tran, and William J. Dally. 2015.学习权重和连接以实现高效的神经网络。CoRR,abs/1506.02626。0Lu Hou, Zhiqi Huang, Lifeng Shang, Xin Jiang, XiaoChen, and Qun Liu. 2020.Dynabert:具有自适应宽度和深度的动态BERT。在神经信息处理系统进展33:2020年神经信息处理系统年会,2020年12月6日至12日,虚拟举行。0François Lagunas, Ella Charlaix, Victor Sanh, andAlexander Rush. 2021.用于更快的Transformer的块修剪。在自然语言处理的2021年会议论文集中,页10619-10629,线上和多米尼加共和国蓬塔卡纳。计算语言学协会。Paul Michel, Omer Levy, and Graham Neubig. 2019.Thomas Wolf, Lysandre Debut, Victor Sanh, JulienChaumond, Clement Delangue, Anthony Moi, Pier-ric Cistac, Tim Rault, Rémi Louf, Morgan Funtow-icz, Joe Davison, Sam Shleifer, Patrick von Platen,+v:mala2277获取更多论文0Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du,Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis,Luke Zettlemoyer, and Veselin Stoyanov. 2019.Roberta:一种稳健优化的BERT预训练方法。0J. S. McCarley. 2019.剪枝基于BERT的问答模型。CoRR,abs/1910.06360。0十六个头真的比一个好吗?在神经信息处理系统进展32:2019年神经信息处理系统年会,2019年12月8日至14日,加拿大温哥华,页14014-14024。0Colin Raffel, Noam Shazeer, Adam Roberts,Katherine Lee, Sharan Narang, Michael Matena,Yanqi Zhou, Wei Li, and Peter J. Liu. 2020.探索统一的文本到文本转换器的迁移学习极限。机器学习研究杂志,21(140):1-67。0Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev,and Percy Liang. 2016.SQuAD:10万多个文本机器理解问题。在2016年经验方法在自然语言处理中的会议论文集中,页2383-2392,德克萨斯州奥斯汀。计算语言学协会。0Victor Sanh, Thomas Wolf, and Alexander M. Rush.2020.运动修剪:通过微调实现自适应稀疏性。在神经信息处理系统进展33:2020年神经信息处理系统年会,2020年12月6日至12日,虚拟举行。0Erik F. Tjong Kim Sang and Fien De Meulder. 2003.CoNLL-2003共享任务简介:独立于语言的命名实体识别。在第七届HLT-NAACL2003自然语言学习会议论文集中,页142-147。0Ashish Vaswani, Noam Shazeer, Niki Parmar, JakobUszkoreit, Llion Jones, Aidan N. Gomez, LukaszKaiser, and Illia Polosukhin. 2017.注意力就是你所需要的。在神经信息处理系统进展30:2017年神经信息处理系统年会,2017年12月4日至9日,美国加利福尼亚州长滩,页5998-6008。0Elena Voita, David Talbot, Fedor Moiseev, RicoSennrich, and Ivan Titov. 2019.分析多头自注意力:专门的头部承担重任,其余部分可以修剪。在计算语言学协会第57届年会论文集中,页5797-5808,意大利佛罗伦萨。计算语言学协会。0Clara Ma, Yacine Jernite, Julien Plu, Canwen Xu,Teven Le Scao, Sylvain Gugger, Mariama Drame,Quentin Lhoest, and Alexander M. Rush. 2020.Transformers:最先进的自然语言处理。在2020年经验方法在自然语言处理中的会议:系统演示中,第38-45页,在线。计算语言学协会。0Ziqing Yang, Yiming Cui, Zhipeng Chen, WanxiangChe, Ting Liu, Shijin Wang, and Guoping Hu. 2020.TextBrewer:一个用于自然语言处理的开源知识蒸馏工具包。在第58届年会的ACL:系统演示中,第9-16页。计算语言学协会。0Michael Zhu and Suyog Gupta. 2018. To prune, or notto prune:探索修剪模型压缩的效果。在第6届国际学习表示会议ICLR2018,温哥华,加拿大,2018年4月30日-5月3日,工作坊论文集。OpenReview.net。0A 数据集和模型0我们尝试使用不同的预训练模型来测试TextPruner修剪不同模型的能力。对于MRC任务,我们使用SQuAD(Rajpurkar等,2016年)数据集和RoBERTa(Liu等,2019年)模型;对于NER任务,我们使用CoNLL 2003(Tjong Kim Sang和DeMeulder,2003年)和BERT(Devlin等,2019年)模型。所有模型都是基准大小,即12个Transformer层,隐藏大小为768,FFN大小为3072,每层12个注意力头。0B Transformer在MRC上的修剪0我们在训练集的子集(5120个示例)上计算重要性分数。在SQuAD开发集上的F1分数列在表3中。(12 ,3072)是未修剪的模型。性能随n_iters增加而增长。迭代次数在SQuAD任务中对模型性能也起着重要作用。我们还看到仅使用一次迭代进行修剪是一个糟糕的选择,会导致低分数。将n_iters设置为至少8可以获得足够好的性能。0C Transformer在NER上的修剪0我们在CoNLL2003开发集上计算重要性分数。测试集上的F1分数列在表4中。我们还看到n_iters = 4和n_iters =8之间性能差距很大。(12, 3072)91.4(8, 2048)76.480.381.982.982.5(8, 2048)UHF87.586.487.688.388.4(6, 1536)12.842.649.551.556.5(6, 1536)UHF47.255.666.174.175.2(12, 3072)91.3(8, 2048)88.588.488.789.289.289.4(8, 2048)UHF81.890.090.690.790.890.8(6, 1536)33.656.262.480.583.484.1(6, 1536)UHF9.867.680.286.287.087.3+v:mala2277获取更多论文0模型 1 2 4 8 160表3:SQuAD上的F1分数。每个分数是在不同迭代次数下平均得到的。不同列代表不同迭代次数下的结果。我们在每行中加粗最佳F1。0模型 1 2 4 8 16 320表4:CoNLL2003上的F1分数。每个分数是在五次运行中平均得到的。0图7:不同结构的修剪模型在CoNLL2003测试集上的性能。每个分数是在五次运行中平均得到的。0不同结构的修剪模型的性能如图7所示。我们只考虑UHF情况,因为它可以实现最佳整体性能。迭代次数n_iters设置为16。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 京瓷TASKalfa系列维修手册:安全与操作指南
- 小波变换在视频压缩中的应用
- Microsoft OfficeXP详解:WordXP、ExcelXP和PowerPointXP
- 雀巢在线媒介投放策划:门户网站与广告效果分析
- 用友NC-V56供应链功能升级详解(84页)
- 计算机病毒与防御策略探索
- 企业网NAT技术实践:2022年部署互联网出口策略
- 软件测试面试必备:概念、原则与常见问题解析
- 2022年Windows IIS服务器内外网配置详解与Serv-U FTP服务器安装
- 中国联通:企业级ICT转型与创新实践
- C#图形图像编程深入解析:GDI+与多媒体应用
- Xilinx AXI Interconnect v2.1用户指南
- DIY编程电缆全攻略:接口类型与自制指南
- 电脑维护与硬盘数据恢复指南
- 计算机网络技术专业剖析:人才培养与改革
- 量化多因子指数增强策略:微观视角的实证分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功