EasyNLP 開源|中文 NLP - 大模型落地,EasyNLP is all you nee

一  導讀

隨着 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 的快速發展和業務落地。

EasyNLP is a Comprehensive and Easy-to-use NLP Toolkit[1]

EasyNLP 主要特性如下:

三  EasyNLP 框架特點

1  整體架構

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

2  大模型知識蒸餾技術

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

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

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

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

目前,MetaKD 算法也已經集成到 EasyNLP 框架中開源。

知識蒸餾實踐詳見 [2]。

3  大模型小樣本學習技術

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

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

如上圖,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 算法的損失函數由兩部分組成:

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

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

小樣本學習實踐詳見 [3]。

4  大模型落地實踐

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

rsqBIG

代碼詳見 [4]。

四  應用案例

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

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

五  RoadMap

項目開源地址:https://github.com/alibaba/EasyNLP

參考文獻

[1]https://github.com/alibaba/EasyNLP

[2]https://github.com/alibaba/EasyNLP/tree/master/examples/knowledge_distillation

[3]https://github.com/alibaba/EasyNLP/tree/master/examples/fewshot_learning

[4]https://github.com/alibaba/EasyNLP/tree/master/examples/landing_large_ptms

[5] 達摩院 NLP 團隊:https://github.com/alibaba/AliceMind

[6] 文本風控解決方案:https://help.aliyun.com/document_detail/311210.html

[7] 通用文本打標解決方案:https://help.aliyun.com/document_detail/403700.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/0-imkjSNsomhZ2P5I2fJPg