EasyNLP is a Comprehensive and Easy-to-use NLP Toolkit

EasyNLP主要特性如下:

三 EasyNLP框架特點(diǎn)

整體架構(gòu)

如圖所示,EasyNLP架構(gòu)主要有如下幾個(gè)核心模塊:

大模型知識(shí)蒸餾技術(shù)

隨著B(niǎo)ERT等預(yù)訓(xùn)練語(yǔ)言模型在各項(xiàng)任務(wù)上都取得SOTA效果,大規(guī)模預(yù)訓(xùn)練模型已經(jīng)成為 NLP學(xué)習(xí)管道中的重要組成部分,但是這類模型的參數(shù)量太大,而且訓(xùn)練和推理速度慢,嚴(yán)重影響到了需要較高QPS的線上場(chǎng)景,部署成本非常高。EasyNLP框架集成了經(jīng)典的數(shù)據(jù)增強(qiáng)和知識(shí)蒸餾算法,使得訓(xùn)練出的小模型在相應(yīng)任務(wù)行為上能夠逼近大模型的效果。

由于現(xiàn)有大部分的知識(shí)蒸餾工作都聚焦在同領(lǐng)域模型的蒸餾,而忽略了跨領(lǐng)域模型對(duì)目標(biāo)蒸餾任務(wù)效果的提升。PAI團(tuán)隊(duì)進(jìn)一步提出了元知識(shí)蒸餾算法MetaKD(Meta Knowledge Distillation),將跨領(lǐng)域的可遷移知識(shí)學(xué)出,在蒸餾階段額外對(duì)可遷移的知識(shí)進(jìn)行蒸餾。MetaKD算法使得學(xué)習(xí)到的學(xué)生模型在相應(yīng)的領(lǐng)域的效果顯著提升,逼近教師模型的效果。這一算法的核心框架圖如下所示:

其中,MetaKD算法包括兩個(gè)階段。第一個(gè)階段為元教師模型學(xué)習(xí)(Meta-teacher Learning)階段,算法從多個(gè)領(lǐng)域的訓(xùn)練數(shù)據(jù)協(xié)同學(xué)習(xí)元教師模型,它對(duì)每個(gè)領(lǐng)域的樣本都計(jì)算其典型得分(Prototype Score),使更具有跨領(lǐng)域典型性的樣本在學(xué)習(xí)階段有更大的權(quán)重。第二個(gè)階段為元蒸餾(Meta-distillation)階段,將元教師模型選擇性地蒸餾到特定領(lǐng)域的學(xué)習(xí)任務(wù)上。由于元教師模型可能無(wú)法做到在所有領(lǐng)域上都有精確的預(yù)測(cè)效果,我們額外引入了領(lǐng)域?qū)I(yè)性權(quán)重(Domain-expertise Weight),使元教師模型只將置信度最高的知識(shí)遷移到學(xué)生模型,避免學(xué)生模型對(duì)元教師模型的過(guò)擬合。

下圖展示了MetaKD算法在MNLI的5個(gè)領(lǐng)域數(shù)據(jù)集的跨任務(wù)蒸餾效果。由結(jié)果可見(jiàn),MetaKD蒸餾出的BERT-Small模型的和原始BERT模型相比,在保持模型精度值平均只下降1.5%的前提下參數(shù)減少了87%,大大減少了部署的壓力。

目前,MetaKD算法也已經(jīng)集成到EasyNLP框架中開(kāi)源。

知識(shí)蒸餾實(shí)踐詳見(jiàn):https://github.com/alibaba/EasyNLP/tree/master/examples/knowledge_distillation

大模型小樣本學(xué)習(xí)技術(shù)

預(yù)訓(xùn)練語(yǔ)言模型規(guī)模的擴(kuò)大,使得這一類模型在自然語(yǔ)言理解等相關(guān)任務(wù)效果不斷提升。然而,這些模型的參數(shù)空間比較大,如果在下游任務(wù)上直接對(duì)這些模型進(jìn)行微調(diào),為了達(dá)到較好的模型泛化性,需要較多的訓(xùn)練數(shù)據(jù)。在實(shí)際業(yè)務(wù)場(chǎng)景中,特別是垂直領(lǐng)域、特定行業(yè)中,訓(xùn)練樣本數(shù)量不足的問(wèn)題廣泛存在,極大地影響這些模型在下游任務(wù)的準(zhǔn)確度。為了解決這一問(wèn)題,EasyNLP框架集成了多種經(jīng)典的小樣本學(xué)習(xí)算法,例如PET、P-Tuning等,實(shí)現(xiàn)基于預(yù)訓(xùn)練語(yǔ)言模型的小樣本數(shù)據(jù)調(diào)優(yōu),從而解決大模型與小訓(xùn)練集不相匹配的問(wèn)題。

此外,PAI團(tuán)隊(duì)結(jié)合經(jīng)典小樣本學(xué)習(xí)算法和對(duì)比學(xué)習(xí)的思路,提出了一種不增添任何新的參數(shù)與任何人工設(shè)置模版與標(biāo)簽詞的方案Contrastive Prompt Tuning (CP-Tuning)。這一算法的核心框架圖如下所示:

如上圖,CP-Tuning算法放棄了經(jīng)典算法中以“[MASK]”字符對(duì)應(yīng)預(yù)訓(xùn)練模型MLM Head的預(yù)測(cè)輸出作為分類依據(jù),而是參考對(duì)比學(xué)習(xí)的思路,將句子通過(guò)預(yù)訓(xùn)練模型后,以“[MASK]”字符通過(guò)預(yù)訓(xùn)練模型后的連續(xù)化表征作為features。在小樣本任務(wù)的訓(xùn)練階段,訓(xùn)練目標(biāo)為最小化同類樣本features的組內(nèi)距離,最大化非同類樣本的組間距離。在上圖中,[OMSK]即為我們所用于分類的“[MASK]”字符,其優(yōu)化的features表示為[EMB]。因此,CP-Tuning算法不需要定義分類的標(biāo)簽詞。在輸入側(cè),除了輸入文本和[OMSK],我們還加入了模版的字符[PRO]。與經(jīng)典算法不同,由于CP-Tuning不需要學(xué)習(xí)模版和標(biāo)簽詞之間的對(duì)應(yīng),我們直接將[PRO]初始化為任務(wù)無(wú)關(guān)的模版,例如“it is”。在模型訓(xùn)練過(guò)程中,[PRO]的表示可以在反向傳播過(guò)程中自動(dòng)更新。除此之外,CP-Tuning還引入了輸入文本的Mask,表示為[TMSK],用于同時(shí)優(yōu)化輔助的MLM任務(wù),提升模型在小樣本學(xué)習(xí)場(chǎng)景下的泛化性。CP-Tuning算法的損失函數(shù)由兩部分組成:

如上所示,兩個(gè)部分分別為Pair-wise Cost-sensitive Contrastive Loss(PCCL)和輔助的MLM損失。我們?cè)诙鄠€(gè)GLUE小樣本數(shù)據(jù)集上進(jìn)行了驗(yàn)證,其中訓(xùn)練集中每個(gè)類別限制只有16個(gè)標(biāo)注樣本。從下述結(jié)果可以看出,CP-Tuning的精確度超越了經(jīng)典的小樣本學(xué)習(xí)算法,也比標(biāo)準(zhǔn)Fine-tuning算法的精確度高10%以上。

目前,除了我們自研的CP-Tuning算法之外,EasyNLP框架中集成了多種經(jīng)典小樣本學(xué)習(xí)算法例如PET、P-tuning等。

小樣本學(xué)習(xí)實(shí)踐詳見(jiàn):https://github.com/alibaba/EasyNLP/tree/master/examples/fewshot_learning

大模型落地實(shí)踐

下面我們給出一個(gè)示例,將一個(gè)大的預(yù)訓(xùn)練模型(hfl/macbert-large-zh)在小樣本場(chǎng)景上落地,并且蒸餾到僅有1/100參數(shù)的小模型上。如下圖所示,一個(gè)大模型(3億參數(shù))在一個(gè)小樣本場(chǎng)景上原始的Accuracy為83.8%,通過(guò)小樣本學(xué)習(xí)可以提升7%,達(dá)到90.6%。同時(shí),如果用一個(gè)小模型(3百萬(wàn)參數(shù))跑這個(gè)場(chǎng)景的話,效果僅有54.4%,可以把效果提升到71%(提升約17%),inference的時(shí)間相比大模型提升了10倍,模型參數(shù)僅為原來(lái)的1/100。

  模型 參數(shù)量 Dev Set指標(biāo)(Accuracy) Batch Inference時(shí)間
標(biāo)準(zhǔn)Finetune hfl/macbert-large-zh 325 Million 0.8375 0.54s
標(biāo)準(zhǔn)Finetune alibaba-pai/pai-bert-tiny-zh 3 Million 0.54375 0.06s
知識(shí)蒸餾Finetune alibaba-pai/pai-bert-tiny-zh 3 Million 0.7125 0.06s
小樣本Finetune hfl/macbert-large-zh 325 Million 0.90625 0.53s

代碼詳見(jiàn):https://github.com/alibaba/EasyNLP/tree/master/examples/landing_large_ptms

應(yīng)用案例

EasyNLP支撐了阿里巴巴集團(tuán)內(nèi)10個(gè)BU20多個(gè)業(yè)務(wù),同時(shí)過(guò)PAI的產(chǎn)品例如PAI-DLC、PAI-DSW、PAI Designer和PAI-EAS,給集團(tuán)用戶帶來(lái)高效的從訓(xùn)練到落地的完整體驗(yàn),同時(shí)也支持了云上客戶自定定制化模型和解決業(yè)務(wù)問(wèn)題的需求。針對(duì)公有云用戶,對(duì)于入門級(jí)用戶PAI-Designer組件來(lái)通過(guò)簡(jiǎn)單調(diào)參就可以完成NLP模型訓(xùn)練,對(duì)于高級(jí)開(kāi)發(fā)者,可以使用AppZoo訓(xùn)練NLP模型,或者使用預(yù)置的預(yù)訓(xùn)練模型ModelZoo進(jìn)行finetune,對(duì)于資深開(kāi)發(fā)者,提供豐富的API接口,支持用戶使用框架進(jìn)行定制化算法開(kāi)發(fā),可以使用我們自帶的Trainer來(lái)提升訓(xùn)練效率,也可以自定義新的Trainer。

下面列舉幾個(gè)典型的案例:

RoadMap

參考文獻(xiàn)

[1] [AAAI 22] DKPLM: Decomposable Knowledge-enhanced Pre-trained Language Model for Natural Language Understanding. https://arxiv.org/abs/2112.01047

[2] [ACL 2021] Meta-KD: A Meta Knowledge Distillation Framework for Language Model Compression across Domains. https://arxiv.org/abs/2012.01266

[3] [arXiv] Making Pre-trained Language Models End-to-end Few-shot Learners with Contrastive Prompt Tuning: https://arxiv.org/pdf/2204.00166

[4] [AAAI 22] From Dense to Sparse: Contrastive Pruning for Better Pre-trained Language Model Compression. https://arxiv.org/abs/2112.07198

[5] [EMNLP 2021] TransPrompt: Towards an Automatic Transferable Prompting Framework for Few-shot Text Classification. https://aclanthology.org/2021.emnlp-main.221/

[6] [CIKM 2021]. EasyTransfer — A Simple and Scalable Deep Transfer Learning Platform for NLP Applications. https://github.com/alibaba/EasyTransfer

開(kāi)源項(xiàng)目地址:https://github.com/alibaba/EasyNLP

釘釘答疑交流群:33712734

想了解更多AI開(kāi)源項(xiàng)目,請(qǐng)點(diǎn)擊:

https://www.aliyun.com/activity/bigdata/opensource_bigdata__ai

分享到

songjy

相關(guān)推薦