阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地

阿里雲大資料AI技術發表於2022-04-27

作者:臨在、岑鳴、熊兮


一 導讀

隨著BERT、Megatron、GPT-3等預訓練模型在NLP領域取得矚目的成果,越來越多團隊投身到超大規模訓練中,這使得訓練模型的規模從億級別發展到了千億甚至萬億的規模。然而,這類超大規模的模型運用於實際場景中仍然有一些挑戰。首先,模型引數量過大使得訓練和推理速度過慢且部署成本極高;其次在很多實際場景中資料量不足的問題仍然制約著大模型在小樣本場景中的應用,提高預訓練模型在小樣本場景的泛化性依然存在挑戰。為了應對以上問題,PAI團隊推出了EasyNLP中文NLP演算法框架,助力大模型快速且高效的落地。

 

EasyNLP 背後的技術框架如何設計?未來有哪些規劃?今天一起來深入瞭解。

 

二 EasyNLP簡介

EasyNLP是PAI演算法團隊基於PyTorch開發的易用且豐富的中文NLP演算法框架, 支援常用的中文預訓練模型和大模型落地技術,並且提供了從訓練到部署的一站式NLP開發體驗。EasyNLP提供了簡潔的介面供使用者開發NLP模型,包括NLP應用AppZoo和預訓練ModelZoo,同時提供技術幫助使用者高效的落地超大預訓練模型到業務。除此之外EasyNLP框架藉助PAI團隊在通訊最佳化、資源排程方面的深厚積累,可以為使用者提供大規模、魯棒的訓練能力,同時可以無縫對接PAI系列產品,例如PAI-DLC、PAI-DSW、PAI-Designer和PAI-EAS,給使用者帶來高效的從訓練到落地的完整體驗。

 

EasyNLP已經在阿里巴巴內部支援10多個BU的業務,同時 在阿里雲上提供了NLP解決方案和ModelHub模型幫助使用者解決業務問題,也提供使用者自定義模型服務方便使用者打造自研模型。在經過內部業務打磨之後,我們將EasyNLP推向開源社群,希望能夠服務更多的NLP演算法開發者和研究者,也希望和社群一起推動NLP技術特別是中文NLP的快速發展和業務落地。

 

開源專案地址:

阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地

EasyNLP主要特性如下:

  • 易用且相容開源:EasyNLP支援常用的中文NLP資料和模型,方便使用者評測中文NLP技術。除了提供易用簡潔的PAI命令形式對前沿NLP演算法進行呼叫以外,EasyNLP還抽象了一定的自定義模組如AppZoo和ModelZoo,降低NLP應用的門檻,同時ModelZoo裡面常見的預訓練模型和PAI自研的模型,包括知識預訓練模型等。EasyNLP可以無縫接入huggingface/ transformers的模型,也相容EasyTransfer模型,並且可以藉助框架自帶的分散式訓練框架(基於Torch-Accelerator)提升訓練效率。

  • 大模型小樣本落地技術:EasyNLP框架整合了多種經典的小樣本學習演算法,例如PET、P-Tuning等,實現基於大模型的小樣本資料調優,從而解決大模型與小訓練集不相匹配的問題。此外,PAI團隊結合經典小樣本學習演算法和對比學習的思路,提出了一種不增添任何新的引數與任何人工設定模版與標籤詞的方案Contrastive Prompt Tuning,在FewCLUE小樣本學習榜單取得第一名,相比Finetune有超過10%的提升。

  • 大模型知識蒸餾技術:鑑於大模型引數大難以落地的問題,EasyNLP提供知識蒸餾功能幫助蒸餾大模型從而得到高效的小模型來滿足線上部署服務的需求。同時EasyNLP提供MetaKD演算法,支援元知識蒸餾,提升學生模型的效果,在很多領域上甚至可以跟教師模型的效果持平。同時,EasyNLP支援資料增強,透過預訓練模型來增強目標領域的資料,可以有效的提升知識蒸餾的效果。

三 EasyNLP框架特點

整體架構

阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地

如圖所示,EasyNLP架構主要有如下幾個核心模組:

  • 基礎模組:提供了預訓練模型庫ModelZoo,支援常用的中文預訓練模型,包括BERT,MacBERT,WOBERT等;也提供常用的NN模組,方便使用者自定義模型;

  • 應用層:AppZoo支援常見的NLP應用比方說文字分類,文字匹配等;EasyNLP支援預訓練模型落地工具,包括小樣本學習和知識蒸餾,助力大模型快速落地,這裡也整合了多個PAI團隊自研的演算法;

  • NLP應用和解決方案:提 供了多個NLP解決方案和ModelHub模型幫助使用者解決業務問題;

  • 工具層:可以支援本地拉起服務,也可以在阿里雲產品上部署和呼叫,比方說PAI-DLC、PAI-DSW、PAI-Designer和PAI-EAS,給使用者帶來高效的從訓練到落地的完整體驗。

大模型知識蒸餾技術

隨著BERT等預訓練語言模型在各項任務上都取得SOTA效果,大規模預訓練模型已經成為 NLP學習管道中的重要組成部分,但是這類模型的引數量太大,而且訓練和推理速度慢,嚴重影響到了需要較高QPS的線上場景,部署成本非常高。EasyNLP框架整合了經典的資料增強和知識蒸餾演算法,使得訓練出的小模型在相應任務行為上能夠逼近大模型的效果。

 

由於現有大部分的知識蒸餾工作都聚焦在同領域模型的蒸餾,而忽略了跨領域模型對目標蒸餾任務效果的提升。PAI團隊進一步提出了元知識蒸餾演算法MetaKD(Meta Knowledge Distillation),將跨領域的可遷移知識學出,在蒸餾階段額外對可遷移的知識進行蒸餾。MetaKD演算法使得學習到的學生模型在相應的領域的效果顯著提升,逼近教師模型的效果。這一演算法的核心框架圖如下所示:

阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地

其中,MetaKD演算法包括兩個階段。第一個階段為元教師模型學習(Meta-teacher Learning)階段,演算法從多個領域的訓練資料協同學習元教師模型,它對每個領域的樣本都計算其典型得分(Prototype Score),使更具有跨領域典型性的樣本在學習階段有更大的權重。第二個階段為元蒸餾(Meta-distillation)階段,將元教師模型選擇性地蒸餾到特定領域的學習任務上。由於元教師模型可能無法做到在所有領域上都有精確的預測效果,我們額外引入了領域專業性權重(Domain-expertise Weight),使元教師模型只將置信度最高的知識遷移到學生模型,避免學生模型對元教師模型的過擬合。


下圖展示了MetaKD演算法在MNLI的5個領域資料集的跨任務蒸餾效果。由結果可見,MetaKD蒸餾出的BERT-Small模型的和原始BERT模型相比,在保持模型精度值平均只下降1.5%的前提下引數減少了87%,大大減少了部署的壓力。

 

阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地

目前,MetaKD演算法也已經整合到EasyNLP框架中開源。

知識蒸餾實踐詳見:

大模型小樣本學習技術

預訓練語言模型規模的擴大,使得這一類模型在自然語言理解等相關任務效果不斷提升。然而,這些模型的引數空間比較大,如果在下游任務上直接對這些模型進行微調,為了達到較好的模型泛化性,需要較多的訓練資料。在實際業務場景中,特別是垂直領域、特定行業中,訓練樣本數量不足的問題廣泛存在,極大地影響這些模型在下游任務的準確度。為了解決這一問題,EasyNLP框架整合了多種經典的小樣本學習演算法,例如PET、P-Tuning等,實現基於預訓練語言模型的小樣本資料調優,從而解決大模型與小訓練集不相匹配的問題。

 

此外,PAI團隊結合經典小樣本學習演算法和對比學習的思路,提出了一種不增添任何新的引數與任何人工設定模版與標籤詞的方案Contrastive Prompt Tuning (CP-Tuning)。這一演算法的核心框架圖如下所示:


阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地


如上圖,CP-Tuning演算法放棄了經典演算法中以“[MASK]”字元對應預訓練模型MLM Head的預測輸出作為分類依據,而是參考對比學習的思路,將句子透過預訓練模型後,以“[MASK]”字元透過預訓練模型後的連續化表徵作為features。在小樣本任務的訓練階段,訓練目標為最小化同類樣本features的組內距離,最大化非同類樣本的組間距離。在上圖中,[OMSK]即為我們所用於分類的“[MASK]”字元,其最佳化的features表示為[EMB]。因此,CP-Tuning演算法不需要定義分類的標籤詞。在輸入側,除了輸入文字和[OMSK],我們還加入了模版的字元[PRO]。與經典演算法不同,由於CP-Tuning不需要學習模版和標籤詞之間的對應,我們直接將[PRO]初始化為任務無關的模版,例如“it is”。在模型訓練過程中,[PRO]的表示可以在反向傳播過程中自動更新。除此之外,CP-Tuning還引入了輸入文字的Mask,表示為[TMSK],用於同時最佳化輔助的MLM任務,提升模型在小樣本學習場景下的泛化性。CP-Tuning演算法的損失函式由兩部分組成:

阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地


如上所示,兩個部分分別為Pair-wise Cost-sensitive Contrastive Loss(PCCL)和輔助的MLM損失。我們在多個GLUE小樣本資料集上進行了驗證,其中訓練集中每個類別限制只有16個標註樣本。從下述結果可以看出,CP-Tuning的精確度超越了經典的小樣本學習演算法,也比標準Fine-tuning演算法的精確度高10%以上。

 

阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地


目前,除了我們自研的CP-Tuning演算法之外,EasyNLP框架中整合了多種經典小樣本學習演算法例如PET、P-tuning等。

小樣本學習實踐詳見:

大模型落地實踐

下面我們給出一個示例,將一個大的預訓練模型(hfl/macbert-large-zh)在小樣本場景上落地,並且蒸餾到僅有1/100引數的小模型上。如下圖所示,一個大模型(3億引數)在一個小樣本場景上原始的Accuracy為83.8%,透過小樣本學習可以提升7%,達到90.6%。同時,如果用一個小模型(3百萬引數)跑這個場景的話,效果僅有54.4%,可以把效果提升到71%(提升約17%),inference的時間相比大模型提升了10倍,模型引數僅為原來的1/100。


阿里雲機器學習PAI開源中文NLP演算法框架EasyNLP,助力NLP大模型落地

程式碼詳見:

應用案例

EasyNLP支撐了阿里巴巴集團內10個BU20多個業務,同時過PAI的產品例如PAI-DLC、PAI-DSW、PAI Designer和PAI-EAS,給集團使用者帶來高效的從訓練到落地的完整體驗,同時也支援了 雲上客戶自定定製化模型和解決業務問題的需求。針對公有云使用者,對於入門級使用者PAI-Designer元件來透過簡單調參就可以完成NLP模型訓練,對於高階開發者,可以使用AppZoo訓練NLP模型,或者使用預置的預訓練模型ModelZoo進行finetune,對於資深開發者,提供豐富的API介面,支援使用者使用框架進行定製化演算法開發,可以使用我們自帶的Trainer來提升訓練效率,也可以自定義新的Trainer。

下面列舉幾個典型的案例:

  • PAI團隊和 合作共建落地超大預訓練模型(百億引數),推出自研小樣本學習演算法CP-Tuning和模型稀疏化演算法CAP。其中,這一自研CP-Tuning演算法與AliceMind平臺整合, 實現了超大預訓練模型的小樣本學習,在在小樣本場景下,比標準Fine-tune精準度提升10%以上;

  • PAI團隊和達摩院合作在FewCLUE小樣本學習榜單上獲得冠軍,甚至一個小樣本學習任務上的精準度超過了人類。同時,阿里巴巴某BU使用ToB客戶服務場景下的業務資料在EasyNLP框架下進行小樣本學習演算法學習,在業務資料上相比Baseline,提升實體識別的準確度2%以上,提升屬性識別的準確度5%以上;

  • 針對公有云客戶對文字分類功能的小模型、高QPS需求,基於EasyNLP框架的知識蒸餾功能,採用某預訓練模型作為教師模型(引數量3億)、PAI-BERT中文小預訓練模型作為學生模型(引數量4百萬),蒸餾得到這一小模型上線,引數量約為原有模型的百分之一,精度損失在10%以內;基於此,我們整合了知識蒸餾功能,助力大模型在實際業務場景下落地;

  • 在風控場景,我們收集了約一億的中文預訓練資料,基於EasyNLP預訓練了一個PAI-BERT中文模型,在風控資料上取得了非常不錯的效果,提升了10%以上的準確率和召回率;基於此,我們在公有云上也推出了 文字風控解決方案,在多個客戶場景裡落地並取得不錯的效果;

  • 隨著UGC等使用者生成內容不斷湧現,對從文字提取標籤用於細粒度分析的需求不斷湧現;採用基於EasyNLP預訓練中文模型,在新聞資料的超過300個類別的文字標籤預測準確率超過80%;基於此,我們整合了文字標籤預測,關鍵詞抽取,和實體詞提取等功能,在公有云上推出了 通用文字打標解決方案,並且在多個典型客戶場景裡成功落地,服務於智慧推薦等應用場景。

RoadMap

  • 基於EasyNLP的中文CLUE/FewCLUE等的Benchmark

  • 知識預訓練技術: 釋出一系列知識預訓練模型,致力於提升預訓練模型的常識性和知識性

  • 中文預訓練模型:釋出針對中文的SO他的預訓練模型,降低中文預訓練技術門檻

  • 多模態預訓練:釋出針對中文的多模態預訓練模型

  • 中文資料的收集和API介面:收集常用的中文資料,提供預處理和訓練介面

  • 垂直場景的SOTA中文模型整合:針對垂直業務場景,整合效果最好的中文模型

  • 釋出解決方案和PAI元件

 

參考文獻


[1]
[2]
[3]
[4]
[5]達摩院NLP團隊:
[6]文字風控解決方案:https://help.aliyun.com/document_detail/311210.html
[7]通用文字打標解決方案:https://help.aliyun.com/document_detail/403700.html
開源專案地址:
釘釘答疑交流群:33712734
想了解更多AI開源專案,請點選:



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004426/viewspace-2888907/,如需轉載,請註明出處,否則將追究法律責任。

相關文章