- 產品
- 產品解決方案
- 行業解決方案
- 案例
- 數據資產入表
- 賦能中心
- 伙伴
- 關于
時間:2022-06-30來源:幼兒園扛把子瀏覽數:466次
小布助手團隊會結合語音助手場景特點持續優化預訓練技術,包括利用檢索增強范式優化短文本表征、挖掘和利用反饋信息構建無監督預訓練任務、以及探索模型輕量化技術加速大模型的落地等。
導讀:大規模預訓練模型的出現,為自然語言處理任務帶來了新的求解范式,也顯著地提升了各類NLP任務的基準效果。自2020年,OPPO小布助手團隊開始對預訓練模型進行探索和落地應用,從“可大規模工業化”的角度出發,先后自研了一億、三億和十億參數量的預訓練模型OBERT。
近期,OPPO小布助手團隊和機器學習部聯合完成了十億參數模型“OBERT”的預訓練,該模型通過5種mask機制從TB級語料中學習語言知識,在業務上取得了4%以上的提升;在行業對比評測中,OBERT躍居中文語言理解測評基準CLUE1.1總榜第五名、大規模知識圖譜問答KgCLUE1.0排行榜第一名,在十億級模型上進入第一梯隊,多項子任務得分與排前3名的百億參數模型效果非常接近,而參數量僅為后者的十分之一,更有利于大規模工業化應用。

圖1 CLUE1.1總榜,共9個子任務

圖2 KgCLUE1.0,知識圖譜問答榜
01背景
隨著NLP領域預訓練技術的快速發展,“預訓練+微調”逐漸成為解決意圖識別等問題的新范式,經過小布助手團隊前期的探索和嘗試,在百科技能分類、閑聊語義匹配、閱讀理解答案抽取、FAQ精排等場景已經上線了自研一億級模型并取得了顯著的收益,并仍有提升的空間,驗證了進一步自研十億級模型并推廣落地的必要性。小布助手場景涉及意圖理解、多輪聊天、文本匹配等NLP任務,結合工作[6,14]的經驗,小布助手團隊預訓練到業務落地會按圖3所示的方式進行,包括Pretraining、Futher-Pretraing、Fine-tuning&Deployment等階段。主要有四個特點:① 表征解耦,統一表征器適配不同下游任務,可以同時滿足下游理解類任務和多輪聊天生成任務,更好地滿足小布助手豐富的應用場景;
② 檢索增強,檢索對象包括知識圖譜,以及目標任務相關的通用文本片段等;
③ 多階段,從數據、任務的維度逐步適應目標場景進行訓練,平衡自監督訓練和下游效果,定向獲取目標場景相關的無監督、弱監督語料數據,進行進一步預訓練調優;
④ 模型量級以一億、三億、十億級為主,更友好地支持大規模應用落地。
圖3 預訓練模型開發&應用方案
02?OBERT預訓練模型
1. 預訓練語料從開源工作[1]實驗結果來看,語料的數量和內容多樣性越大,下游任務效果會進一步提升。基于此,小布助手團隊收集并清洗出1.6TB語料,內容包含百科、社區問答、新聞等。預處理過程如圖4所示。

圖4 大規模語料預處理流程
2. 預訓練任務得益于數據獲取的低成本性和語言模型強大的遷移能力,目前NLP預訓練主流的任務還是基于分布式假設的語言模型,在單向生成式語言模型(LM),前綴-單向生成式語言模型(Prefix-LM)和雙向掩碼語言模型(MLM)的選擇上,受工作[2,3]的啟發,選擇了MLM作為預訓練任務,因為其在下游自然語言理解類(NLU)任務上有更好的效果。

與使用的上下文
Context/w?來自同一段落,目標如式(1)。
P?(w?|?Context/w?)?(1)
② 考慮外部知識增強的表征學習,與REALM[4]、內存增強[5]、ERNIE3.0[6]的做法類似,期望通過檢索與輸入相關的自然文本/知識圖譜三元組,作為輸入的擴展信息,以更好地學習文本表征。對于目前知識增強的預訓練范式,主要差異點在知識庫k
的設置,以及知識檢索方式。在OBERT的知識掩碼策略中,設置了百科詞條(含摘要、關鍵詞等字段)作為知識庫,相當于知識圖譜中的(Entity,Description,Content)三元組信息,實體鏈接作為知識檢索方式,具體地,給定初始文本,將文本中的實體鏈接到百度百科等知識庫,并將其摘要文本作為上下文的補充,更充分地學習文本表征,目標如式(2)。P?(w?|?Context/w?, kw?) (2)小布助手團隊首先在一億級模型上驗證了上述mask策略的有效性,其Zero-shot效果顯著優于開源base級模型,下游應用時也取得了收益,隨后將其應用到十億級模型訓練中。

圖6 ZeroCLUE榜單
3. 預訓練策略主要采用了課程學習,由易到難地提升訓練難度,從而提高訓練穩定性[7]。一方面,seqence length從64逐漸增大到512,batch size從64增加到5120;另一方面,訓練初期mask策略以字詞粒度為主(masked span長度小,學習難度低),逐漸增大到短語、短句粒度。
4. 訓練加速為了加速OBERT模型的預訓練,在分布式訓練框架上面臨兩項挑戰:顯存挑戰:大模型訓練需要存儲模型參數、梯度、優化器狀態等參數,同時有訓練過程產生的中間結果Activation等開銷,十/百億規模參數規模下遠超常規GPU顯存(V100-32GB);計算效率挑戰:隨著訓練節點規模的增加,如何結合節點/網絡拓撲結構和模型混合并行方式,更大程度發揮出節點的算力,保持訓練吞吐量的線性/超線性拓展。面對上述挑戰,基于開源AI訓練框架,OPPO StarFire機器學習平臺團隊研發并應用了以下方案:① 混合并行:數據并行 + 模型并行 + Zero Redundancy Optimizer (ZeRO)[8];② 基于節點拓撲感知通信優化;③ 梯度累積。通過以上優化方法,相比基線訓練方案取得29%+的訓練吞吐量提升,可以更快速地進行OBERT模型的訓練迭代,同時也使得百億甚至更大規模參數模型的預訓練變得可行與高效。
03微調策略
1. CLUE
1.1任務小布助手團隊圍繞預訓練模型開發了微調框架,包含了FGM[9]、PGD[10]、R-Drop[11]、Noise-tune[12]、Multi-Sample Dropout[13]等提升微調魯棒性的方式,也包含為下游主任務增加詞法輔助任務的配置,使用該框架,只需修改配置文件即可在文本分類、相似度、提槽等不同下游任務中使用上述優化方式,快速拿到不同優化方式的結果。
2. KgCLUE1.0任務小布助手團隊復用語音助手的知識問答方案,應用到KgCLUE的知識圖譜問答評測任務上;在方案上,基于具有外部知識增強的OBERT大模型,融合ner+similar的pipeline方法和基于生成的方案,取得了第一名的成績。更加難能可貴的是,小布助手僅僅使用單模型而未使用集成就達到了上述成績。
04落地方案
在預訓練落地實踐上,小布助手使用多個NLU(如知識問答NLU、系統設置NLU、閑聊NLU)來解決各種領域的問答任務,多個NLU都需要單獨使用預訓練做下游任務的微調,會帶來巨大的GPU計算壓力。為了解決上述問題,小布助手提出統一表征方案,如下圖7。該方案包括下述三個步驟:① 預訓練② 多任務微調:實踐發現,為了降低全局的計算量,可以固定BERT模型的topM層transformer,只針對任務微調后N層,效果僅比全微調的最優解相差1%以內③ 多任務合并:推理時,在調用NLU前,先進行一次骨干網絡的推理后,由各個NLU使用對應的骨干網絡層作為下游任務的輸入,再進行單任務的推理。在小布助手的實踐落地表明,當下游NLU為10、下游任務平均微調層數N=3時,統一表征方案下的全局計算量約為全微調方案的27%。

圖7 統一表征方案
05未來方向
小布助手團隊會結合語音助手場景特點持續優化預訓練技術,包括利用檢索增強范式優化短文本表征、挖掘和利用反饋信息構建無監督預訓練任務、以及探索模型輕量化技術加速大模型的落地等。