1. 程式人生 > 其它 >阿里雲力奪FewCLUE榜首!知識融入預訓練+小樣本學習的實戰解析

阿里雲力奪FewCLUE榜首!知識融入預訓練+小樣本學習的實戰解析

簡介:7月8日,中文語言理解權威評測基準CLUE公開了中文小樣本學習評測榜單最新結果,阿里雲端計算平臺PAI團隊攜手達摩院智慧對話與服務技術團隊,在大模型和無引數限制模型雙賽道總成績第一名,決賽答辯總成績第一名。

作者 | 同潤、歸雨、熊兮
來源 | 阿里技術公眾號

一 概述

7月8日,中文語言理解權威評測基準CLUE公開了中文小樣本學習評測榜單最新結果,阿里雲端計算平臺PAI團隊攜手達摩院智慧對話與服務技術團隊,在大模型和無引數限制模型雙賽道總成績第一名,決賽答辯總成績第一名。

中文語言理解權威評測基準CLUE自成立以來發布了多項NLP評測基準,包括分類榜單,閱讀理解榜單和自然語言推斷榜單等,在學術界、工業界產生了深遠影響。其中,FewCLUE是CLUE最新推出的一項中文小樣本學習評測基準,用來評估機器學習模型是否能夠通過極少樣本的學習來掌握特定的自然語言處理任務。基於這項評估,科研人員可以更精準的衡量機器學習訓練出來的模型的泛化性和準確率。比如智慧客服場景中的使用者意圖識別,僅需人工標註幾十條樣本,就能讓意圖識別的準確率達到90%。

眾所周知,大規模預訓練模型雖然在各大任務裡面取得非常大的效果,但是在特定的任務上,還是需要許多標註資料。由於收集和標註模型需要的訓練的資料收整合本昂貴,所以需要攻關小樣本學習技術,使用遠小於經典深度學習演算法需要的資料量,接近甚至超越經典深度學習演算法的精度。此次,阿里雲PAI團隊攜手達摩院提出了一套大模型+小樣本的聯合方案,在大規模通用預訓練基礎之上,結合了基於知識的預訓練和Fuzzy-PET少樣本學習,一舉取得了優異的成績。甚至在一個小樣本學習任務上的精準度超過了人類。

二 賽題分析 & 建模思路

比賽資料集總體特點如下:

  • 小樣本:訓練集和檢驗集均為每個類別16shot,考驗演算法在小樣本情境下的魯棒性
  • 泛化性:任務特徵差異明顯,需要模型有較好的泛化能力
  • 無標籤資料:多數任務提供了數量可觀的無標籤資料,可以嘗試continued pretrain和self-training

基於對賽題的解讀,我們設計了三段式的建模方法:

  • 通用領域資料的從頭預訓練:藉助PAI-Rapidformer提供的各種加速策略以及預訓練套件,我們從頭預訓練了3億量級和15億量級的中文預訓練模型,預訓練過程採用融入知識的預訓練演算法(詳見3.2)。
  • 多工的繼續預訓練:目的是進一步強化雙句匹配任務(OCNLI, BUSTM, CSL)的Performance。我們將分類任務轉化為文字蘊含任務,使用文字蘊含資料進行Continued Pretrain。例如 [CLS]I like the movie[SEP]This indicates positive user sentiment[EOS]
  • 針對每個任務進行小樣本演算法微調:選擇PET(Pattern-Exploiting Training)作為下游微調的核心方法, 開發Fuzzy-PET演算法,減少了PET演算法標籤詞人工選擇帶來的波動,並且在任務上帶來效果提升。同時使用了self-training 的半監督方法,在下游微調階段利用上半監督學習(詳見3.3)

三 核心技術

1. PyTorch大模型訓練加速

自從2020年推出PAI-EasyTransfer面向NLP和遷移學習的框架之後,PAI團隊開發了PyTorch版本的EasyTransfer,命名為EasyTexMiner。比賽所用的模型,是通過EasyTexMiner的高效能分散式預訓練完成的。EasyTexMiner的分散式訓練有機整合了微軟的DeepSpeed和英偉達的Megatron優點,整體框圖如下:

EasyTexMiner的分散式訓練融合了以下核心的技術:

1)啟用檢查點(Activation Checkpoint)

在神經網路中間設定若干個檢查點(checkpoint),檢查點以外的中間結果全部捨棄,反向傳播求導數的時間,需要某個中間結果就從最近的檢查點開始計算,這樣既節省了視訊記憶體,又避免了從頭計算的繁瑣過程。

2)梯度累積 (Gradient Accumulation)

以batch_size=16為例,可以每次算16個樣本的平均梯度,然後快取累加起來,算夠了4次之後,然後把總梯度除以4,然後才執行引數更新,這個效果等價於batch_size=64。這是一種有效的增加Batch Size的方法。通過該策略可以將每個step的batch size擴充到很大,結合LAMB優化器會提升收斂速度。

3)混合精度訓練(Mixed Precision Training)

採用混合精度訓練的好處主要有以下兩點:

  • 減少視訊記憶體佔用,由於FP16的記憶體佔用只有FP32的一半,自然地就可以幫助訓練過程節省一半的視訊記憶體空間。
  • 加快訓練和推斷的計算,FP16除了能節約記憶體,還能同時節省模型的訓練時間。具體原理如下圖所示,核心是在反向傳播引數更新的時候需要維護一個FP32的備份來避免舍入誤差,另外會通過Loss Scaling來緩解溢位錯誤。

4)即時編譯JIT

當PyTorch在執行一系列element-wise的Tensor操作時,底層Kernel的實現需要反覆地讀寫訪存,但是隻執行少量的計算,其中大部分時間開銷並不在計算上,而在訪存讀寫上。比如,實現一個帶有N個元素的Tensor的乘/加法Kernel,需要N次加計算,2N次讀和N次寫訪存操作。我們稱計算少, 訪存次數多的Kernel為訪存Bound。為了避免這種反覆的讀寫,以及降低Kernel Launch的開銷,可以採用Kernel Fusion。訪存Bound的Kernel Fusion的核心原理是通過訪存的區域性性原理,將多個element-wise的Kernel自動合併成一個Kernel,避免中間結果寫到記憶體上,來提高訪存的利用率;同時由於多個Kernel合併成一個Kernel,Kernel launch開銷也減少到了1次。

5)3D並行

3D並行策略指的是:資料並行,模型並行,流水並行三種策略的混合運用,以達到快速訓練百億/千億量級模型的目的。該項技術最早由DeepSpeed團隊研發,可以加速大模型的訓練。

6)CPU Offload

反向傳播不在GPU上計算,而是在CPU上算,其中用到的中間變數全部儲存在記憶體中,這樣可以節省下GPU的視訊記憶體佔用,用時間換空間,以便能放到更大尺寸的模型。

7)Zero視訊記憶體優化器

ZeRO(The Zero Redundancy Optimizer)是一種用於大規模分散式深度學習的新型記憶體優化技術。ZeRO具有三個主要的優化階段:

  • 優化器狀態分割槽(Pos) :減少了4倍的記憶體,通訊容量與資料並行性相同;
  • 增加梯度分割槽(Pos+g) :8x記憶體減少,通訊容量與資料並行性相同;
  • 增加引數分割槽(Pos+g+p) :記憶體減少與資料並行度和複雜度成線性關係。

吞吐效能評測
本次釋出使用了最新的阿里雲EFLOPS AI集群系統,使用NVIDIA A100 GPU和 100Gbps Mellanonx CX6-DX網絡卡,結合全系統拓撲感知的高效能分散式通訊庫ACCL 和 EFLOPS叢集多軌網路能力,實現無擁塞通訊,大幅加速了模型的訓練速度。如下圖所示:

可擴充套件性評測
我們採用比BertLarge更大一點的單卡放不下的模型來做模型並行下的可擴充套件性評測。具體配置是 num-layers=24,hidden-size=2048,num-attention-heads=32,該模型的引數總量大約是1.2B。我們分別在8/16/32/64卡上進行來吞吐評測,從下圖的指標來看,隨著卡數的增加,吞吐幾乎是近線性的提升。

2. 融入知識的預訓練演算法KGBERT

在通用預訓練模型基礎之上,我們考慮融入知識的預訓練來提升預訓練模型的效果。
資料和知識:通過與達摩院NLP資料團隊合作,獲取了大規模、高質量且具備多樣性的資料與知識。

  • 大規模:5億中文圖譜知識,通過遠監督獲取2億 Sentence-SPO Pair;
  • 高質量:針對原始語料龐雜,存在大量冗餘、噪聲的問題,通過DSGAN知識降噪演算法,精選上億高質量Sentence-SPO,用於模型訓練;
  • 多樣性:FewCLUE資料集除了通用領域,還包含電商、旅遊、教育、金融等垂直行業,而這部分資料和知識比較稀缺,為此我們構建了一套高效的知識生產系統,能夠對各類垂直行業的文件、網頁進行自動三元組抽取,從而極大的提升了知識的豐富度。

模型和預訓練任務

為了高效的利用知識,我們基於“Sentence-正向SPO-負向SPO”對齊語料,設計了多粒度語義理解預訓練任務:

  • Mention Detection:增強模型對核心實體Mention的理解;
  • Sentence-SPO joint Mask:將大規模文字資料及其對應的SPO知識同時輸入到預訓練模型中進行預聯合訓練,促進結構化知識和無結構文字之間的資訊共享,提升模型語義理解能力;
  • SPO Margin Magnify:設計對比學習的預訓練任務,拉開Sentence相關SPO與無關SPO語義間隔,使其具備更強的語義區分能力。

技術創新:知識篩選與融入機制

1)動機

NLP任務中,常見的做法是根據當前輸入的自然語言進行建模,但是這樣通常用到的資訊只有當前字面區域性資訊。這和人類在理解語言的時候具有明顯差別,人類會用到我們之前學習到的知識輔助理解。人類會利用這些外部知識來加強自己的理解,如果沒有額外的知識,比如接觸到我們一個不熟悉的領域,我們也很難完全理解語義。而目前NLP常見做法只利用了輸入資訊,沒用利用外部知識,理解層次偏低。

現實中知識是龐大且繁雜的,需要針對性的取樣知識,減少引入無關的知識,最大化知識的收益。

2)方法

設計一種新穎的Gated機制,先對句子進行編碼,再通過GCN聚合出子圖資訊,通過門控機制,控制資訊的流入;在預訓練階段,通過設計最大化知識增益目標函式,讓模型更好的學習到有價值的資訊。

3)結果

基於Gated機制的知識篩入,能夠有效捕捉到高增益的三元組進行融入,在政務、金融屬性識別任務上準確率有2%的提升。這樣的知識篩選機制在學術公開資料集驗證有效,並取得SOTA的效果,相關工作已發表在SIGIR2021。

3. 小樣本學習演算法

在融入知識的預訓練語言模型基礎上,計算平臺PAI和達摩院團隊聯合推出了自研的多工小樣本學習演算法Fuzzy-PET。由於FewClue榜單具有一系列不同類別的任務,如果在針對特定任務進行小樣本微調之前,模型能學習到跨任務的可遷移的知識,模型在針對特定任務進行小樣本微調過程中會獲得更好的初始引數設定。基於計算平臺PAI團隊在Meta-Learning相關演算法的積累基礎上,我們在融入知識的預訓練語言模型的繼續預訓練階段,引入了多個FewClue任務的無標註資料進行學習,在學習過程中,模型自動從這些任務相關的資料中學習到這些任務的背景知識,從而更有利於特定任務的小樣本學習。Meta-Learning的相關演算法已經發表在EMNLP2020和ACL2021上。。

在特定小樣本任務學習階段,我們對Pattern-Exploiting Training(PET)演算法進行了改進,引入了Fuzzy Verbalizer Mapping機制。舉例來說,在經典的PET演算法中,對於FewClue的任務OCNLI,我們設計瞭如下模板:“其實我覺得你不懂球啊”和“你不懂籃球。”的關係是MASK。

對於輸出的Masked Language Token(即Verbalizer),如果預測結果為“相關”,我們將其對映為類別標籤“entailment”;如果預測結果為“無關”,我們將其對映為類別標籤“neural”; 如果預測結果為“相反”,我們將其對映為類別標籤“contradiction”。利用Verbalizer到類別標籤人工對映,PET實現了對文字分類任務的建模。在Fuzzy Verbalizer Mapping機制中,我們假設多個Verbalizer可能對某一個類別標籤有對映關係,從而進一步提升模型在小樣本學習過程中的泛化性。參考先前的例子,我們設計三組標籤詞:相關,無關,相反/蘊含,中性,矛盾/包含,中立,反向。訓練時每一條樣本使用多組標籤詞輸入,在推理時每個類別計算所有候選詞的預測概率並相加,最終選擇總概率最高的類別。如上述例子,若預測“相關”,“蘊含”, “包含”的概率和大於預測“無關”,“中性”,“中立”或預測“相反”,“矛盾”,“反向”的概率,則預測結果為“entailment”。

這一機制在FewClue的多個任務中對預測精度提升有正面作用,並且一定程度上減輕人工選擇不同標籤詞產生的波動。此外,我們也考慮在小樣本學習階段引入無標註的資料進行Self-training,即依靠現有模型對無標註資料進行打標,實現模型的迭代優化。

四 業務&產品

值得一提的是,基於機器學習平臺PAI平臺,這項技術已在實際業務場景落地且有很好的表現。這些技術增強了達摩院雲小蜜KBQA能力,使其具備快速冷啟動、精準問答的能力,並在政務、金融、通用線多個業務場景落地。在實際專案中,在少樣本情形下(20條),可以做到快速冷啟動,從而實現精準問答。同時,這些技術有望給阿里雲上的機器學習演算法賦予小樣本學習的能力,通過很少的資料標註,就可以大大提升下游任務的效果。這意味著阿里雲模型已具備低成本快速落地的實施能力,能高效且敏捷的賦能企業的業務。

基於PAI,阿里雲希望構建大規模AI端到端的能力,從底層晶片到分散式系統,再到上層演算法和資料的規模化,打造AI工程化集團作戰的能力,服務於各行各業。目前,PAI平臺支援千億特徵、萬億樣本規模加速訓練,內建200+成熟演算法、以及影象視覺、音視訊、文字等AI領域高質量深度學習預訓練模型50餘個,全面提升企業AI工程效率。在平臺能力基礎上,PAI平臺還提供了成熟的行業解決方案,成為眾多企業的優選服務,已經在智慧推薦、使用者增長、端側超分、自動駕駛等眾多場景成熟商用。

原文連結
本文為阿里雲原創內容,未經允許不得轉載。