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 支持常用的中文 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 框架特點
1 整體架構
如圖所示,EasyNLP 架構主要有如下幾個核心模塊:
-
基礎模塊:提供了預訓練模型庫 ModelZoo,支持常用的中文預訓練模型,包括 BERT,MacBERT,WOBERT 等;也提供常用的 NN 模塊,方便用戶自定義模型;
-
應用層:AppZoo 支持常見的 NLP 應用比方說文本分類,文本匹配等;EasyNLP 支持預訓練模型落地工具,包括小樣本學習和知識蒸餾,助力大模型快速落地,這裏也集成了多個 PAI 團隊自研的算法;
-
NLP 應用和解決方案:提供了多個 NLP 解決方案和 ModelHub 模型幫助用戶解決業務問題;
-
工具層:可以支持本地拉起服務,也可以在阿里雲產品上部署和調用,比方說 PAI-DLC、PAI-DSW、PAI-Designer 和 PAI-EAS,給用戶帶來高效的從訓練到落地的完整體驗。
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。
代碼詳見 [4]。
四 應用案例
EasyNLP 支撐了阿里巴巴集團內 10 個 BU20 多個業務,同時過 PAI 的產品例如 PAI-DLC、PAI-DSW、PAI Designer 和 PAI-EAS,給集團用戶帶來高效的從訓練到落地的完整體驗,同時也支持了雲上客戶自定定製化模型和解決業務問題的需求。針對公有云用戶,對於入門級用戶 PAI-Designer 組件來通過簡單調參就可以完成 NLP 模型訓練,對於高級開發者,可以使用 AppZoo 訓練 NLP 模型,或者使用預置的預訓練模型 ModelZoo 進行 finetune,對於資深開發者,提供豐富的 API 接口,支持用戶使用框架進行定製化算法開發,可以使用我們自帶的 Trainer 來提升訓練效率,也可以自定義新的 Trainer。
下面列舉幾個典型的案例:
-
PAI 團隊和達摩院 NLP 團隊 [5] 合作共建落地超大預訓練模型(百億參數),推出自研小樣本學習算法 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% 以上的準確率和召回率;基於此,我們在公有云上也推出了文本風控解決方案 [6],在多個客戶場景裏落地並取得不錯的效果;
-
隨着 UGC 等用戶生成內容不斷湧現,對從文本提取標籤用於細粒度分析的需求不斷湧現;採用基於 EasyNLP 預訓練中文模型,在新聞數據的超過 300 個類別的文本標籤預測準確率超過 80%;基於此,我們集成了文本標籤預測,關鍵詞抽取,和實體詞提取等功能,在公有云上推出了通用文本打標解決方案 [7],並且在多個典型客戶場景裏成功落地,服務於智能推薦等應用場景。
五 RoadMap
-
基於 EasyNLP 的中文 CLUE/FewCLUE 等的 Benchmark
-
知識預訓練技術: 發佈一系列知識預訓練模型,致力於提升預訓練模型的常識性和知識性
-
中文預訓練模型:發佈針對中文的 SOTA 的預訓練模型,降低中文預訓練技術門檻
-
多模態預訓練:發佈針對中文的多模態預訓練模型
-
中文數據的收集和 API 接口:收集常用的中文數據,提供預處理和訓練接口
-
垂直場景的 SOTA 中文模型整合:針對垂直業務場景,整合效果最好的中文模型
-
發佈解決方案和 PAI 組件
項目開源地址:https://github.com/alibaba/EasyNLP
參考文獻
-
[AAAI 22] DKPLM: Decomposable Knowledge-enhanced Pre-trained Language Model for Natural Language Understanding. https://arxiv.org/abs/2112.01047
-
[ACL 2021] Meta-KD: A Meta Knowledge Distillation Framework for Language Model Compression across Domains. https://arxiv.org/abs/2012.01266
-
[arXiv] Making Pre-trained Language Models End-to-end Few-shot Learners with Contrastive Prompt Tuning:https://arxiv.org/pdf/2204.00166
-
[AAAI 22] From Dense to Sparse: Contrastive Pruning for Better Pre-trained Language Model Compression. https://arxiv.org/abs/2112.07198
-
[EMNLP 2021] TransPrompt: Towards an Automatic Transferable Prompting Framework for Few-shot Text Classification. https://aclanthology.org/2021.emnlp-main.221/
-
[CIKM 2021]. EasyTransfer -- A Simple and Scalable Deep Transfer Learning Platform for NLP Applications. https://github.com/alibaba/EasyTransfer
[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