0
作者 | 青暮
編輯 | 岑峰
如今,深度學習再次向人類表明:計算機不是單純地復刻人類的思維邏輯并加速的機器,它也可以產(chǎn)生新的思維方式。
如果說圖像識別、機器翻譯、語音生成等等應用都還是小試牛刀,其表現(xiàn)都還在人類預料之中,那么百億甚至千億參數(shù)規(guī)模的預訓練模型展現(xiàn)的多任務能力,便是人類不斷地體會驚訝的開始,也是接近理解自身的開始。
難以想象,當初僅僅作為NLP子領域之一的自監(jiān)督學習語言模型,卻在擴大了參數(shù)規(guī)模、采用了Transformer架構(gòu)之后,在2018年橫掃11項NLP任務,成為AI社區(qū)人盡皆知、3年時間引用量接近3萬的BERT。
自那以后,基于預訓練構(gòu)造大型語言模型便成為一種基本操作,這是大模型時代開始的標志。
到如今,作為AI的底座能力,大規(guī)模預訓練模型已成為全球AI領域的技術(shù)新高地。
12月8日,鵬城實驗室與百度聯(lián)合召開發(fā)布會,正式發(fā)布雙方共同研發(fā)的全球首個知識增強千億大模型——鵬城-百度·文心(模型版本號:ERNIE 3.0 Titan),該模型參數(shù)規(guī)模達到2600億,是目前全球最大中文單體模型,在60多項任務中取得最好效果。
同時,百度產(chǎn)業(yè)級知識增強大模型“文心”全景圖首次亮相。
中國工程院院士、鵬城實驗室主任高文,百度首席技術(shù)官王海峰聯(lián)合發(fā)布鵬城-百度·文心
目前,鵬城-百度·文心已在機器閱讀理解、文本分類、語義相似度計算等60多項任務中取得最好效果,并在30余項小樣本和零樣本任務上刷新基準。
在鵬城-百度·文心背后,得益于鵬城實驗室的算力系統(tǒng) “鵬城云腦Ⅱ”和百度自研的深度學習平臺“飛槳”強強聯(lián)手,解決了超大模型訓練的多個公認技術(shù)難題,使鵬城-百度·文心訓練速度大幅提升,模型效果更優(yōu)。
為解決大模型應用落地難題,百度團隊首創(chuàng)大模型在線蒸餾技術(shù),模型參數(shù)壓縮率可達99.98%。
鵬城-百度·文心是百度文心“知識增強大模型”系列中十分重要的基礎通用大模型。
為推動技術(shù)創(chuàng)新和落地應用,百度文心既包含基礎通用的大模型,也包含了面向重點領域和重點任務的大模型,還提供豐富的工具與平臺,支撐企業(yè)與開發(fā)者進行高效便捷的應用開發(fā)。
文心全景圖
此次發(fā)布的鵬城-百度·文心在ERNIE 3.0基礎上全新升級,后者此前曾在國際權(quán)威的復雜語言理解任務評測SuperGLUE上超越谷歌的T5、OpenAI的GPT-3等大模型,以超越人類水平0.8個百分點的成績登頂全球榜首。
百度是業(yè)界少有的專注攻關知識增強型預訓練大模型的企業(yè),有知識加持的文本數(shù)據(jù)自然讓模型更有內(nèi)涵。此次升級的意義,不僅僅是簡單地放大參數(shù)量,在這背后支撐的是堅如磐石的根基——也就是基礎設施能力:鵬城實驗室的E級超算,以及飛槳的超大模型訓練與推理框架。
大規(guī)模預訓練語言模型的基本訓練方法是自監(jiān)督學習,自監(jiān)督學習語言模型的一般過程,是基于前文或上下文,來預測被掩蓋的單詞或短語,通俗來說就是做填空題。
為什么這樣的學習范式有效?用反事實學習的原理簡單理解就是,只要多試試一個單詞出現(xiàn)與否對另一個單詞出現(xiàn)與否的影響,就可以總結(jié)出兩者的關聯(lián)程度。
如果是在涉及現(xiàn)實知識的句子中訓練,語言模型也可以學到這些知識。社區(qū)中也出現(xiàn)了從預訓練語言模型中提取和構(gòu)建知識圖譜的研究。但問題在于,從這些模型中提取出來的知識可靠度有限。
人們發(fā)現(xiàn),預訓練語言模型傾向于依賴表面信號或統(tǒng)計線索來挖掘知識,并且可以很輕易地被愚弄,比如“鳥可以__”和“鳥不可以__”,模型都會輸出“飛”。這些模型學習到的,似乎更多是語法規(guī)則,而不是現(xiàn)實知識,比如給定一組概念 {狗, 飛盤, 抓住, 扔},GPT2 會生成"狗將飛盤扔向足球運動員",T5 生成“狗抓住了飛盤,并扔向足球運動員”,這兩者都不符合人類的常識。
這就向我們提出了這些問題:我們需要讓大模型做這種事嗎?現(xiàn)實知識的學習需要依靠大模型以外的手段嗎?大模型學不到現(xiàn)實知識嗎?
百度的回答是:需要;不需要;可以。
引入現(xiàn)實知識,一個比較基本的方法是在模型本身引入歸納偏置,比如引入了空間平移對稱性歸納偏置的多層感知機,就是卷積神經(jīng)網(wǎng)絡。但這種操作過于基本,也就是在先驗地獲取現(xiàn)實知識的同時,會過早限制模型的通用性,同時在理論探索上也非常困難。
另一個比較直接的方法是,保留模型本身的通用性,在數(shù)據(jù)和任務上入手。我們之前提到,預訓練語言模型的一個缺點是,過分關注語法關聯(lián),因為語法關聯(lián)在句子中出現(xiàn)最多,而對現(xiàn)實知識關聯(lián)關注過少。
這其實也是因為,人類很少在日常交互中,強調(diào)和重復已知的知識,我們對于“鳥拍打著翅膀在天空飛翔”中隱藏的知識“鳥會飛翔是因為有翅膀”不會太在意,也不會刻意去表達,因為太過習以為常,這也就使得這些知識很少出現(xiàn)在模型接觸的數(shù)據(jù)中。歸根結(jié)底,人類和語言模型接觸的并不是相同的數(shù)據(jù)源。
這種區(qū)別,就好像一個英語母語者可以輕易理解別人說的英語,而剛學習英語的中文母語者就需要字典的支持,字典凝結(jié)了大量的人類知識。
那么,為了學習現(xiàn)實知識,大模型需要什么樣的“字典”?
當然是,知識圖譜。
更加關注現(xiàn)實
知識增強建模方法
正如上圖所示,對于“《夜鶯》是丹麥作家安徒生唯一的以中國為背景的童話故事?!边@句話,如果我們在輸入中加入“安徒生 作品 夜鶯”這樣的實體關系,就可以讓模型更多關注“作品”這樣的關系,而不局限于關注“是”、“唯一的”等等常見的關系類詞匯,從而對現(xiàn)實知識有更多的積累。
百度早就開始挖掘知識增強型預訓練模型的潛力,2019年3月,百度就已經(jīng)發(fā)布了第一代知識增強的預訓練模型 ERNIE1.0。到今年7月,百度還訓練出了百億參數(shù)規(guī)模的知識增強型預訓練模型——ERNIE 3.0。這是當時業(yè)界首次在百億級預訓練模型中引入大規(guī)模知識圖譜。
這種方法被稱為平行預訓練方法(Universal Knowledge-Text Prediction),也就是將大規(guī)模知識圖譜的實體關系與大規(guī)模文本數(shù)據(jù)同時輸入到預訓練模型中進行聯(lián)合掩碼訓練。
這種做法可以促進結(jié)構(gòu)化知識和無結(jié)構(gòu)文本之間的信息共享,從而大幅提升模型對于知識的記憶和推理能力。
ERNIE 3.0在中文和英文數(shù)據(jù)集上均表現(xiàn)優(yōu)越,其中在中文方面,ERNIE 3.0在54個數(shù)據(jù)集上均取得SOTA,同時零樣本能力表現(xiàn)優(yōu)越,另外在英文方面,ERNIE 3.0在國際權(quán)威的復雜語言理解任務評測SuperGLUE上超越谷歌的T5、OpenAI的GPT-3等大模型,以超越人類水平0.8個百分點的成績登頂全球榜首。
通過知識圖譜的加持,ERNIE 3.0已經(jīng)學富五車,但它的能力展現(xiàn)需要稍加克制,否則便顯得才華橫溢而又語無倫次。也就是說,ERNIE 3.0需要進行可控學習。
通過將模型預測出的文本屬性和原始文本進行拼接,構(gòu)造從指定屬性生成對應文本的預訓練數(shù)據(jù),模型通過對該數(shù)據(jù)的學習,實現(xiàn)不同類型的零樣本生成能力。用戶可以將指定的體裁、情感、長度、主題、關鍵詞等屬性自由組合,無需標注任何樣本,便可生成不同類型的文本。
另外,百度還提出了可信學習,讓ERNIE 3.0學習到的知識更加可靠。
具體來說,通過自監(jiān)督的對抗訓練,讓模型學習區(qū)分數(shù)據(jù)是真實的還是模型偽造的,使得模型對生成結(jié)果真實性具備判斷能力,從而讓模型可以從多個候選中選擇最可靠的生成結(jié)果。
高可信的可控生成預訓練
學成出師的ERNIE 3.0,變得更加強大,和龐大——2600億參數(shù)的鵬城-百度·文心。
架構(gòu)設計上,鵬城-百度·文心采用了雙層的語義表示,從而可以同時處理情感分析等語言理解任務,以及機器翻譯等語言生成任務。它還能做無標注數(shù)據(jù)的零樣本學習(Zero-shot Learning)和有標注數(shù)據(jù)的微調(diào)訓練(Fine-tuning)。
鵬城-百度·文心模型結(jié)構(gòu)圖
目前,鵬城-百度·文心已在機器閱讀理解、文本分類、語義相似度計算等60多項任務中取得最好結(jié)果。
在落地場景應用中,模型僅利用少量標注數(shù)據(jù)甚至無需標注數(shù)據(jù),就能解決新場景的任務已成為AI工業(yè)大生產(chǎn)的關鍵。鵬城-百度·文心在30余項小樣本和零樣本任務上均取得了最優(yōu)效果。
鵬城-百度·文心小樣本學習效果
鵬城-百度·文心零樣本學習效果
傳統(tǒng)的機器學習或深度學習依賴海量的數(shù)據(jù),樣本量過小容易過擬合,模型表達能力不足。但某些實際場景下樣本很難收集,小樣本學習致力于在數(shù)據(jù)資源比較稀少的情況下訓練出比較好的模型。
例如在醫(yī)學領域,部分罕見病例(或新型病例)的數(shù)據(jù)信息極少。可以利用小樣本學習能力的特點,針對性的解決這種病例。
從百億級到千億級的跨越,不是簡單的線性擴展過程。
正如摩爾定律在發(fā)展過程中,隨著器件尺寸越來越小,晶體管結(jié)構(gòu)設計變得越來越重要,人們不再簡單粗暴地考慮尺寸縮小問題,而是耗費很大的成本去探索晶體管的新型材料、器件結(jié)構(gòu)和工作原理,從而更好地控制其工作電流。
預訓練模型也是一樣。同時,不同于稀疏專家模型比如 Switch Transformer可以輕易地擴展到萬億參數(shù)規(guī)模,對于單體模型而言,擴展一個數(shù)量級也是非常困難的大工程。
一方面是并行策略。百億大模型的訓練一般用單臺V100就可以實現(xiàn),采用數(shù)據(jù)并行可以進一步加速。但是,千億大模型是無法用單機負載的,比如對于2600億參數(shù)的鵬城-百度·文心,一般至少需要32臺V100才能負載,而這需要分布式訓練的算法來合理編排部署訓練模型。
而且,還需要混合使用多種分布式的并行策略,比如層內(nèi)Tensor并行、層間流水線并行、數(shù)據(jù)并行、Shard數(shù)據(jù)并行、優(yōu)化器并行,同時疊加offload策略、重計算策略。這要求深度學習框架能夠支持這些策略的靈活配置,保證收斂性的同時,讓用戶方便地使用這些算法。Paddle之前也曾就此提出4D訓練的概念,也就是混合并行的四個常見維度——層內(nèi)、層間、數(shù)據(jù)、優(yōu)化器。
另外一方面是收斂算法。模型越大,訓練成本越高,進而對模型的收斂效率的要求越高。比如鵬城-百度·文心在訓練過程中,就需要通過學習率預熱策略、漸進式學習策略以及優(yōu)化的大批量(batch)優(yōu)化策略,來實現(xiàn)模型的高效收斂,進而保證最終訓練效果。
而且,長時間的大規(guī)模訓練對集群穩(wěn)定性和調(diào)度也是一個考驗。機器都是有出錯概率的,集群越大出錯的概率也就越大。而目前單體模型一般采用的高性能訓練模式中,只要單臺機器出錯就會影響整體過程,底層帶來的不穩(wěn)定性會對訓練的進度和運維帶來直接的影響。Paddle和集群調(diào)度結(jié)合可以在訓練過程中屏蔽掉出錯的機器,減少因而造成的重新調(diào)度的時間損耗。
總之,訓練一個千億的大模型是對框架、算法、集群調(diào)度的全流程的一個考驗。
深度學習本身是一個工程性質(zhì)很強的學科,而大模型訓練的第一步也正是:選擇正確的基礎設施。
因此,為了實現(xiàn)這次升級,百度在基礎設施上下了大功夫,而基礎設施的核心是算力以及訓練框架。
首先,在算力方面,鵬城-百度·文心模型基于百度百舸集群初始化,然后采用“鵬城云腦II”高性能集群訓練。
“鵬城云腦II”是由鵬城實驗室聯(lián)合國內(nèi)優(yōu)勢科研力量研發(fā)的我國首個國產(chǎn)自主E級AI算力平臺。在國際超算排行榜上,“鵬城云腦II”實力超群,曾兩奪IO 500總榜和10節(jié)點榜雙料冠軍,并在權(quán)威AI基準測試MLPerf和AIPerf也收獲頗豐,獲得多次榜單冠軍。
這些成績充分展現(xiàn)了“鵬城云腦II”優(yōu)越的智能計算性能和軟硬件系統(tǒng)協(xié)同水平,也為鵬城-百度·文心大模型強大技術(shù)能力奠定基礎。
其次,在訓練框架方面,鵬城-百度·文心面臨著適配性問題。
超大規(guī)模模型的訓練和推理給深度學習框架帶來很大考驗,需要利用大規(guī)模集群分布式計算才能在可接受時間內(nèi)完成訓練或推理的計算要求,同時面臨著模型參數(shù)量單機無法加載、多機通信負載重、并行效率低等難題。
早在今年四月,國產(chǎn)深度學習框架百度飛槳就發(fā)布了4D混合并行技術(shù),可支持千億參數(shù)規(guī)模語言模型的高效分布式訓練。但鵬城-百度·文心的訓練任務對深度學習框架帶來了全新的挑戰(zhàn)。
分布式訓練的基本步驟有四個:分配所需資源;對 NN 模型進行分區(qū);將每個分區(qū)分配給指定的設備;以特定順序獨立執(zhí)行任務并進行必要的通信;并監(jiān)控資源狀態(tài),調(diào)整訓練流程。
分布式訓練的基本步驟
不同模型通常需要適配不同的并行策略,這些策略受到以上四個步驟,也就是:資源分配、模型分區(qū)、任務放置和分布式執(zhí)行的影響。
但現(xiàn)有的框架通常因為專門性、啟發(fā)自受限的實踐、對并行性支持不足、與資源管理解耦等原因,導致無法實現(xiàn)端到端的分布式訓練,也就是無法在考慮以上所有步驟的情況下,進行全局優(yōu)化。
具體而言,一方面,鵬城-百度·文心的模型結(jié)構(gòu)設計引入諸多小形狀的張量計算,導致層間計算量差異較大,流水線負載不均衡;另一方面,“鵬城云腦II”的自有軟件棧需要深度學習框架高效深度適配,才能充分發(fā)揮其集群的領先算力優(yōu)勢。
針對以上挑戰(zhàn),并綜合考慮當前主流硬件、模型的特點與發(fā)展趨勢,飛槳設計并研發(fā)了具備更強擴展能力的端到端自適應大規(guī)模分布式訓練架構(gòu)。
在這項研究中,百度從系統(tǒng)的端到端角度來設計分布式框架,通過考慮上圖中分布式訓練的所有基本步驟來滿足上述通用自適應要求。
架構(gòu)圖概覽
首先,采用統(tǒng)一的分布式計算視圖和統(tǒng)一的異構(gòu)資源視圖來表示任意的并行性和資源配置。然后,基于這兩種統(tǒng)一表示,開發(fā)了全局成本模型和全局規(guī)劃器。
在全局成本模型的驅(qū)動下,可以利用全局規(guī)劃器來根據(jù)給定的神經(jīng)網(wǎng)絡模型和集群的配置自動選擇更好的并行策略,包括分區(qū)和放置決策。
許多研究表明,前向和后向計算的調(diào)度順序?qū)π阅芎蛢?nèi)存利用率都有比較大的影響。尤其是,對于分布式訓練來說,計算和通信盡可能地重疊以達到高水平的性能是極其重要的。
為此,團隊還優(yōu)化了分布式異步執(zhí)行器,它可以盡可能地自動重疊計算和通信,也就是盡可能減少同步化,并支持不同粒度和復雜的控制流。
最后,通過分布式訓練框架和平臺調(diào)度器之間更好的內(nèi)置交互,來實現(xiàn)容錯和彈性的分布式訓練,從而提高整體資源利用率。當硬件故障、有空閑資源或資源緊張時, 彈性資源管理模塊能感知硬件資源變化,如故障、擴容、縮容,來自動重新構(gòu)建資源視圖,并觸發(fā)飛槳框架的各個模塊來自動的做出反應,如模型切分、硬件映射、流水執(zhí)行,在不中斷訓練的情況下,彈性調(diào)度集群可用資源,來進一步提升訓練的性能。
飛槳超大模型訓練框架
論文鏈接:https://arxiv.org/abs/2112.02752
模塊化或者解耦通常是為了更好的靈活性,但該架構(gòu)的設計注意到了背后的基本原則:解耦只是一種實現(xiàn)相關模塊分離的機制,不應妨礙全局優(yōu)化。
總體而言,該架構(gòu)可以針對不同的模型和硬件,抽象成統(tǒng)一的分布式計算視圖和資源視圖,并通過硬件感知細粒度切分和映射功能,搜索出最優(yōu)的模型切分和硬件組合策略,將數(shù)據(jù)、模型參數(shù)、梯度、優(yōu)化器狀態(tài)按照最優(yōu)策略分配到不同的計算卡上,達到節(jié)省存儲、負載均衡、提升訓練性能的目的;同時當資源變化時,整個框架的各個模塊能自動的做出反應。
飛槳自適應大規(guī)模分布式訓練架構(gòu)使得鵬城-百度·文心的訓練性能較傳統(tǒng)分布式訓練方法提升了2.1倍,并行效率高達91.7%。此外,為進一步提高模型訓練的穩(wěn)定性,飛槳的容錯功能,可以在不中斷訓練的情況下自動替換故障機器,加強模型訓練的魯棒性。
在推理方面,飛槳基于分布式推理框架Paddle Serving,通過多機多卡的張量模型并行、流水線并行等一系列優(yōu)化技術(shù),獲得最佳配比和最優(yōu)吞吐。通過統(tǒng)一內(nèi)存尋址(Unified Memory)、算子融合、模型IO優(yōu)化、量化加速等方式,鵬城-百度·文心的推理速度得到進一步提升。
具備了內(nèi)涵和根基的鵬城-百度·文心,大步走向現(xiàn)實應用。但在邁出這一步之前,百度還多考慮了一步。
眾所周知,大模型訓練、推理所消耗的資源極其昂貴和密集。
此前,Paddle Serving已提供了超大模型的高速推理方案,但為了進一步打造大模型時代的綠色落地方案,降低大模型成本應用成本,百度團隊首創(chuàng)大模型在線蒸餾技術(shù)。
在線蒸餾技術(shù)
通俗來說,這種蒸餾技術(shù)采用了“一師多徒”、“多代傳承”的形式。
具體而言,“一師多徒”技術(shù)在鵬城-百度·文心學習的過程中周期性地將知識信號傳遞給若干個學生模型同時訓練,達到蒸餾階段一次性產(chǎn)出多種尺寸的學生模型的目的。
相對傳統(tǒng)蒸餾技術(shù),該技術(shù)極大節(jié)省了因大模型額外蒸餾計算以及多個學生的重復知識傳遞帶來的算力消耗問題。
這種新穎的蒸餾方式利用了鵬城-百度·文心規(guī)模優(yōu)勢,在蒸餾完成后保證了學生模型的效果和尺寸豐富性,方便不同性能需求的應用場景使用。
此外,百度還發(fā)現(xiàn),鵬城-百度·文心與學生模型尺寸差距千倍以上,模型蒸餾難度極大甚至失效。
為此,研究團隊引入了“多代傳承”,也就是助教模型進行蒸餾的技術(shù),利用助教作為知識傳遞的橋梁以縮短學生模型和鵬城-百度·文心表達空間相距過大的問題,從而促進蒸餾效率的提升。
鵬城-百度·文心壓縮版模型效果
鵬城-百度·文心在線蒸餾方案的效果非常顯著,模型壓縮率達到99.98%。壓縮版模型僅保留0.02%參數(shù)卻能達到和原有模型相當?shù)男ЧO啾戎苯佑柧殔?shù)規(guī)模是自身2倍的BERT Base模型,鵬城-百度·文心在5項任務準確率上絕對提升了2.5%,而相對于同等規(guī)模的RoBERTa Base,準確率則絕對提升了3.4%。
大模型的開發(fā)和應用不僅僅關系到企業(yè)和用戶,它的影響邊界非常廣闊,涉及的人群也非常多樣,包括了:數(shù)據(jù)運維人員、模型研發(fā)人員、下游應用開發(fā)人員、軟件和硬件開發(fā)人員、領域?qū)<业鹊?,每個人都有責任讓大模型產(chǎn)生更好的社會價值。百度作為模型研發(fā)者這一角色,亦深刻意識到了自身的義務。
文心大模型也已通過百度飛槳平臺逐步對外開源開放,它代表著百度對人工智能下一代范式的展望——同質(zhì)化。
如今,NLP 領域幾乎所有的 SOTA 模型都是少數(shù)幾個基于 Transformer 的大模型進化而來。
而在整個AI社區(qū)中,一場范式轉(zhuǎn)變正在蔓延。隨著BERT、GPT-3、DALL-E等大規(guī)模預訓練模型相繼出現(xiàn),人們意識到,大模型似乎就相當于通用模型。無論是圖像、語音還是蛋白質(zhì)序列預測,都在見證這場范式轉(zhuǎn)變——同質(zhì)化。
這種圖景似乎指向了認知科學中一個非常著名的概念——全局工作空間理論(GWT)。GWT是一種意識模型,最初由美國心理學家Bernard J. Baars等人提出,是當代主要的神經(jīng)科學意識理論之一。
該理論提議將大腦分為執(zhí)行不同功能的專用模塊,模塊與模塊之間具有長距離連接。通過注意選擇的過程確定輸入或任務要求后,專用模塊內(nèi)的信息可以在不同模塊之間傳播與共享。
而基于深度學習大模型的通用性,來實現(xiàn)GWT似乎已經(jīng)不再遙不可及。近年來有論文曾提出,可以通過深度學習“全局隱工作空間”將不同的專用預訓練網(wǎng)絡關聯(lián)起來,并通過Transformer的注意力機制進行選擇性關聯(lián)。
這些專用網(wǎng)絡可能涉及:感知(物體識別,檢測,分割,語音識別...),運動(機器人手臂控制,語音生成…),語言(文本理解,機器翻譯,文本-語音轉(zhuǎn)換...),記憶存儲,或更高級別的與認知和行為相關的功能(直觀物理引擎,RL策略,任務嵌入...)。
在這個多模態(tài)專家網(wǎng)絡族群中,百度的足跡已經(jīng)不止于語言、知識,也跨越到了圖像領域。
2020年7月,百度提出了知識增強視覺-語言預訓練模型 ERNIE-ViL,首次將場景圖(Scene Graph)知識融入多模態(tài)預訓練。
本次發(fā)布的鵬城-百度·文心將進一步解決 AI 技術(shù)在應用中缺乏領域和場景化數(shù)據(jù)等關鍵難題,降低門檻,加快人工智能大規(guī)模產(chǎn)業(yè)應用。
雷峰網(wǎng)雷峰網(wǎng)(公眾號:雷峰網(wǎng))雷峰網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。