国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

鵬程·盤古:大規(guī)模自回歸中文預(yù)訓(xùn)練語言模型及應(yīng)用

2022-05-20 09:11:00曾煒ZENGWei蘇騰SUTeng王暉WANGHui田永鴻TIANYonghong高文GAOWen
中興通訊技術(shù) 2022年2期
關(guān)鍵詞:盤古鵬程語料

曾煒/ZENG Wei,蘇騰/SU Teng,王暉/WANG Hui,田永鴻/TIAN Yonghong,高文/GAO Wen

(1.鵬城實(shí)驗(yàn)室,中國深圳518055;2.北京大學(xué),中國北京100871;3.華為技術(shù)有限公司,中國杭州310052)

近年來,有關(guān)大規(guī)模預(yù)訓(xùn)練語言模型(PLM)的研究在自然語言處理(NLP)領(lǐng)域取得了巨大的突破。通過自監(jiān)督方式從大規(guī)模語料庫中學(xué)習(xí)文本的上下文表示,預(yù)訓(xùn)練語言模型在完成自然語言理解和自然語言生成(NLG)等任務(wù)時(shí)所表現(xiàn)的性能已達(dá)到國際先進(jìn)水平。A.RADFORD等首次提出基于自回歸語言模型(ALM)的預(yù)訓(xùn)練模型——GPT。通過在大規(guī)模文本數(shù)據(jù)上進(jìn)行無監(jiān)督預(yù)訓(xùn)練,并針對(duì)不同有監(jiān)督任務(wù)進(jìn)行微調(diào),GPT模型的性能在各種NLP任務(wù)上均獲得了顯著提升。

2020年,美國OpenAI團(tuán)隊(duì)推出GPT系列模型的最新版本GPT-3。其中,最大的GPT-3模型包含1 750億個(gè)參數(shù),能使用570 GB的文本數(shù)據(jù)進(jìn)行訓(xùn)練。除了具有高質(zhì)量的文本生成能力外,在沒有進(jìn)行特定任務(wù)微調(diào)的情形下,GPT-3模型小樣本學(xué)習(xí)和零樣本學(xué)習(xí)的性能會(huì)隨著模型參數(shù)的增加而穩(wěn)步提升。有些任務(wù)的性能甚至達(dá)到了當(dāng)前最高水平。GPT-3模型的提出是革命性的,它減輕了人們?yōu)樾氯蝿?wù)標(biāo)記更多示例和再次訓(xùn)練模型的負(fù)擔(dān),成為模擬人類小樣本學(xué)習(xí)能力的新范式,為探索通用人工智能(AI)開辟了新途徑。

目前,GPT-3模型主要是基于英文語料數(shù)據(jù)訓(xùn)練出來的,且只能通過OpenAI應(yīng)用程序接口(API)進(jìn)行有限度訪問。為了促進(jìn)中文預(yù)訓(xùn)練語言模型的研究和應(yīng)用,以鵬城實(shí)驗(yàn)室為首的聯(lián)合團(tuán)隊(duì)在基于昇騰910芯片的E級(jí)智能算力平臺(tái)(鵬城云腦II)上訓(xùn)練了全球首個(gè)全開源2 000億參數(shù)的自回歸中文預(yù)訓(xùn)練語言大模型——鵬程·盤古。

當(dāng)模型規(guī)模超過100億時(shí),模型越大,模型訓(xùn)練的難度就越高。其中,模型訓(xùn)練面臨的技術(shù)挑戰(zhàn)主要包括以下幾個(gè)方面:

(1)模型設(shè)計(jì)。隨著模型規(guī)模的擴(kuò)大,訓(xùn)練過程中可能會(huì)出現(xiàn)收斂緩慢甚至發(fā)散的問題。在前期工作的基礎(chǔ)上,鵬程·盤古模型將基于Transformer的ALM作為基礎(chǔ)架構(gòu),并在Transformer層之上增加了Query層以誘導(dǎo)模型的預(yù)期輸出。實(shí)驗(yàn)證明,該架構(gòu)具有很好的擴(kuò)展性,能夠有效支持2 000億參數(shù)規(guī)模的模型訓(xùn)練。

(2)訓(xùn)練語料庫。訓(xùn)練語料對(duì)一個(gè)強(qiáng)大、可擴(kuò)展的預(yù)訓(xùn)練模型至關(guān)重要。一方面,語料的數(shù)據(jù)量應(yīng)該足以滿足一個(gè)預(yù)訓(xùn)練大模型的需求;另一方面,語料數(shù)據(jù)應(yīng)是高質(zhì)量和多樣性的,以確保PLM的通用性。為了覆蓋廣泛的中文語料庫,鵬城團(tuán)隊(duì)從Common Crawl、電子書、百科全書等資源中收集大量數(shù)據(jù),并在此基礎(chǔ)上,對(duì)數(shù)據(jù)進(jìn)行多重過濾和清洗,以確保語料數(shù)據(jù)滿足高質(zhì)量和多樣性需求。

(3)分布式訓(xùn)練。2 000億參數(shù)規(guī)模的鵬程·盤古模型對(duì)內(nèi)存的需求遠(yuǎn)遠(yuǎn)超出了目前普通多機(jī)多卡集群。因此,模型需要在大規(guī)模AI集群上進(jìn)行基于模型切分的并行訓(xùn)練。然而,在大規(guī)模AI集群上保持高資源利用率的同時(shí),模型很難獲得較大的端到端吞吐量。當(dāng)涉及硬件拓?fù)浣Y(jié)構(gòu)時(shí),這個(gè)問題變得更具挑戰(zhàn)性。通過將五維并行與精心設(shè)計(jì)的并行策略結(jié)合起來,鵬城團(tuán)隊(duì)在2 048個(gè)Ascend 910處理器大集群上,基于昇騰處理器的異構(gòu)計(jì)算架構(gòu)(CANN)完成了鵬程·盤古模型的高效并行訓(xùn)練。

鵬城團(tuán)隊(duì)在1.1 TB高質(zhì)量中文文本語料庫上訓(xùn)練了鵬程·盤古2.6B、鵬程·盤古13B和鵬程·盤古200B 3個(gè)模型,并評(píng)估了鵬程·盤古2.6B、鵬程·盤古13B兩個(gè)模型在16個(gè)NLP下游任務(wù)上的小樣本學(xué)習(xí)能力。實(shí)驗(yàn)結(jié)果表明,隨著模型參數(shù)規(guī)模的擴(kuò)大,鵬程·盤古模型在各種下游任務(wù)上的性能表現(xiàn)會(huì)更優(yōu)異。

然而,大模型如何賦能實(shí)際應(yīng)用仍然面臨很大挑戰(zhàn)。例如,當(dāng)模型太大時(shí),如何通過有效的模型壓縮來賦能邊端應(yīng)用場景?如何將應(yīng)用任務(wù)轉(zhuǎn)化為大模型的原始任務(wù),并通過提示微調(diào)學(xué)習(xí)技術(shù)來實(shí)現(xiàn)NLP模型訓(xùn)練新范式?如何針對(duì)新的數(shù)據(jù)集和任務(wù),在大模型基礎(chǔ)上開展持續(xù)學(xué)習(xí),并構(gòu)建高效持續(xù)演化的大模型生態(tài)?針對(duì)這些挑戰(zhàn),我們進(jìn)一步研發(fā)了鵬程·盤古增強(qiáng)版模型。該模型在大模型壓縮、提示微調(diào)學(xué)習(xí)、多任務(wù)學(xué)習(xí)以及持續(xù)學(xué)習(xí)等方面均表現(xiàn)出很好的效果。

1 模型架構(gòu)

鵬程·盤古是一個(gè)基于海量文本語料庫進(jìn)行預(yù)訓(xùn)練得到的大規(guī)模ALM。該模型的訓(xùn)練語料絕大部分是中文。該模型會(huì)對(duì)語料庫中所有Token的生成過程進(jìn)行建模。一個(gè)序列中的一個(gè)Token的生成取決于它前面的所有Token。假設(shè)一個(gè)序列X={x,x,...,x}由N個(gè)Token組成,那么訓(xùn)練目標(biāo)可以表述為最大化對(duì)數(shù)似然:

其中,p(x|x,...,x;θ)是指,在知道前n-1個(gè)Token x的情況下,觀察到第n個(gè)Tokenx的概率;θ表示模型參數(shù)。如圖1所示,鵬程·盤古保留了Transformer架構(gòu),在Transformer層之上還構(gòu)建了Query層。Query層可用來預(yù)測下一個(gè)Token。

圖1 鵬程·盤古模型結(jié)構(gòu)

1.1 Transformer層

在計(jì)算完包含多個(gè)頭的注意力后,輸出就可以變成:

對(duì)于MHA和FFN,本文采取了Pre-layer Normalization方案。該方案可以使Transformer模型訓(xùn)練變得更加簡單、高效。

1.2 Query層

模型在Transformer層之上堆疊了一個(gè)Query層,目的是輸出一個(gè)明確的引導(dǎo)。在ALM的預(yù)訓(xùn)練階段,Query層可被用來預(yù)測下一個(gè)Token。Query層的結(jié)構(gòu)與Transformer層類似。在計(jì)算注意力機(jī)制的時(shí)候,Query層會(huì)對(duì)表示下一個(gè)位置的位置嵌入p∈R做Query向量處理。具體來說,假設(shè)H是最上層Transformer層的輸出,則Query層的注意力向量可以表示為:

隨后,MHA和FFN的計(jì)算方式仍與原始Transformer相同。如果把最終的輸出表示為o,則下一個(gè)Token的負(fù)對(duì)數(shù)似然就可以寫為:

其中,x表示真實(shí)Token,W、b是任務(wù)相關(guān)的額外參數(shù)。

1.3 模型配置

為了評(píng)估鵬程·盤古模型的擴(kuò)展能力,本文訓(xùn)練了3個(gè)參數(shù)不斷增加的模型,即鵬程·盤古2.6B、鵬程·盤古13B和鵬程·盤古200B。表1展示了這3個(gè)模型的詳細(xì)配置,包括參數(shù)總數(shù)量、Token的隱藏維度、前饋層的內(nèi)層維度和注意力的頭數(shù)。

表1 鵬程·盤古模型的規(guī)模和參數(shù)

2 數(shù)據(jù)集

超大規(guī)模高質(zhì)量中文語料數(shù)據(jù)集對(duì)訓(xùn)練千億級(jí)參數(shù)規(guī)模的鵬程·盤古模型至關(guān)重要。目前已有3個(gè)100 GB以上規(guī)模的中文語料數(shù)據(jù)集,它們分別是:(1)從Common Crawl抽取得到的CLUECorpus2020,該模型的數(shù)據(jù)量為100 GB;(2)阿里巴巴集團(tuán)發(fā)布的M6中文多模態(tài)模型,該模型使用300 GB語料;(3)北京智源研究院面向合作者發(fā)布的包含300 GB高質(zhì)量中文語料WuDaoCorpus。然而,與目前同等規(guī)模參數(shù)量的英文預(yù)訓(xùn)練模所使用的數(shù)據(jù)量相比,上面這些中文語料數(shù)據(jù)仍然不能滿足2 000億中文預(yù)訓(xùn)練語言模型的訓(xùn)練數(shù)據(jù)需求。

盡管像SogouT和Common Crawl等原始網(wǎng)頁數(shù)據(jù)已經(jīng)包含大量的中文語料數(shù)據(jù),但是構(gòu)建一個(gè)可滿足2 000億參數(shù)模型訓(xùn)練需求的大規(guī)模語料數(shù)據(jù)集仍需要解決諸多問題。這些問題包括:(1)原始網(wǎng)頁數(shù)據(jù)質(zhì)量參差不齊,語料預(yù)處理流程繁瑣復(fù)雜;(2)海量原始語料數(shù)據(jù)處理缺少大規(guī)模存儲(chǔ)和計(jì)算能力的支撐;(3)缺乏一個(gè)有效準(zhǔn)確的數(shù)據(jù)質(zhì)量評(píng)估方法。

為解決上述問題,我們搭建了一個(gè)大規(guī)模中文語料數(shù)據(jù)處理平臺(tái),以提升海量數(shù)據(jù)采集、清洗、過濾等處理效率,并以此構(gòu)建了一個(gè)1.1 TB的高質(zhì)量中文語料數(shù)據(jù)集。在數(shù)據(jù)集的構(gòu)建過程中,我們采用人工評(píng)估與模型評(píng)估相結(jié)合的方法為數(shù)據(jù)集的清洗、過濾以及訓(xùn)練數(shù)據(jù)集的選擇提供指導(dǎo)。

2.1 數(shù)據(jù)集構(gòu)建

為了構(gòu)建一個(gè)大規(guī)模高質(zhì)量中文語料數(shù)據(jù)集,我們收集了包含開放數(shù)據(jù)集、Common Crawl原始網(wǎng)頁數(shù)據(jù)、百科數(shù)據(jù)、新聞數(shù)據(jù)、電子書籍等近80 TB的原始數(shù)據(jù)。如圖2所示,數(shù)據(jù)集構(gòu)建流程包括3個(gè)主要步驟:基于規(guī)則的數(shù)據(jù)清洗、基于模型的過濾、數(shù)據(jù)去重。我們通過人工和模型分別對(duì)數(shù)據(jù)質(zhì)量進(jìn)行評(píng)估,并且通過不斷迭代前兩個(gè)步驟來提升數(shù)據(jù)質(zhì)量。整個(gè)數(shù)據(jù)集的構(gòu)建過程是基于Spark/Hadoop搭建的大數(shù)據(jù)處理平臺(tái)完成的。該平臺(tái)使數(shù)據(jù)處理效率得到了明顯提升。

2.1.1 數(shù)據(jù)清洗和過濾

在圖2所示的5種數(shù)據(jù)來源中,Common Crawl的數(shù)據(jù)占比雖然最大,但是它包含了大量低質(zhì)量的網(wǎng)頁數(shù)據(jù)。因此,我們首先采用如下規(guī)則對(duì)Common Crawl的原始數(shù)據(jù)進(jìn)行清洗。

圖2 鵬程·盤古模型的訓(xùn)練數(shù)據(jù)處理流程

?去除中文字符低于60%或者字符數(shù)小于150的數(shù)據(jù)(僅有網(wǎng)頁名稱的數(shù)據(jù)也會(huì)被去除);

?去除特殊字符,并去除在一個(gè)網(wǎng)頁中重復(fù)出現(xiàn)的段落;

?通過廣告關(guān)鍵詞去除包含大量廣告的網(wǎng)頁數(shù)據(jù);

?將所有繁體中文轉(zhuǎn)換為簡體中文;

?識(shí)別并去除網(wǎng)頁導(dǎo)航頁。

在完成原始數(shù)據(jù)清洗后,我們采用3個(gè)過濾器來進(jìn)一步過濾數(shù)據(jù)中的敏感詞、廣告、低質(zhì)量段落等信息。

?關(guān)鍵詞過濾。構(gòu)建一個(gè)包含724個(gè)敏感詞的詞庫,并通過敏感詞庫去除包含3個(gè)以上敏感詞的網(wǎng)頁數(shù)據(jù)。

?基于模型的過濾。為了進(jìn)一步去除垃圾廣告和垃圾郵件數(shù)據(jù),我們通過人工標(biāo)注數(shù)據(jù)來訓(xùn)練一個(gè)FastText文本分類模型。負(fù)樣本為從Common Crawl數(shù)據(jù)中人工挑選的1萬條垃圾文本數(shù)據(jù),正樣本為從高質(zhì)量中文語料數(shù)據(jù)中抽樣得到的數(shù)據(jù)?;贔astText的文本分類模型可以對(duì)語料進(jìn)行垃圾過濾處理。

?低質(zhì)量文本過濾。借鑒GPT-3的數(shù)據(jù)處理策略,我們訓(xùn)練了一個(gè)數(shù)據(jù)質(zhì)量評(píng)分模型。該模型可去除得分較低的文本(詳見GPT-3附錄-A)。

2.1.2 文本去重

由于全量數(shù)據(jù)太大,基于Spark的MinHashLSH算法在對(duì)200 MB數(shù)據(jù)進(jìn)行去重時(shí)需要消耗至少8 h的時(shí)間,去重效率較低。為了加速文本數(shù)據(jù)去重過程,我們設(shè)計(jì)了一種分布式海量文本數(shù)據(jù)重復(fù)檢測和去重算法。針對(duì)500 GB語料數(shù)據(jù)的去重任務(wù),該算法能夠?qū)⒃?0 000 h的時(shí)間縮短至3.5 h,極大地提升了去重效率。

2.1.3 數(shù)據(jù)質(zhì)量評(píng)估

數(shù)據(jù)清洗過程中的一個(gè)重要問題是如何確定清洗規(guī)則或數(shù)據(jù)過濾閾值。對(duì)此,我們提出人工和模型相結(jié)合的數(shù)據(jù)質(zhì)量評(píng)估方法,在每一輪數(shù)據(jù)清洗和過濾后,對(duì)數(shù)據(jù)清洗和過濾的效果進(jìn)行評(píng)估,并通過清洗過濾、質(zhì)量評(píng)估的多輪迭代來提升數(shù)據(jù)質(zhì)量。其中,人工評(píng)估數(shù)據(jù)原則主要從句子通順性、文本低質(zhì)量內(nèi)容占比(如廣告短語、重復(fù)短句、敏感詞等)兩個(gè)維度進(jìn)行評(píng)估。

人工評(píng)估雖然有效,但是對(duì)于大規(guī)模語料數(shù)據(jù)來說,能夠評(píng)估的語料占比太小,不能充分反應(yīng)數(shù)據(jù)集的整體質(zhì)量。為了提高數(shù)據(jù)評(píng)估準(zhǔn)確度,我們從待評(píng)估全量數(shù)據(jù)中抽取30 GB的數(shù)據(jù)來訓(xùn)練鵬程·盤古350M模型,并通過該模型在高質(zhì)量數(shù)據(jù)集中的困惑度(PPL)指標(biāo)來評(píng)估數(shù)據(jù)質(zhì)量。模型在高質(zhì)量數(shù)據(jù)中的PPL越小,數(shù)據(jù)集清洗和過濾所采用的清洗規(guī)則和過濾模型就越好。

2.2 數(shù)據(jù)采樣策略

通過圖2中的數(shù)據(jù)處理流程,我們從5種來源的近80 TB原始數(shù)據(jù)中清洗并構(gòu)建了一個(gè)1.1 TB的高質(zhì)量中文語料數(shù)據(jù)集。數(shù)據(jù)集組成和數(shù)據(jù)處理方法如表2所示?;谟缮鲜霾襟E構(gòu)建的語料數(shù)據(jù),采樣形成的兩個(gè)訓(xùn)練數(shù)據(jù)集被用于訓(xùn)練鵬程·盤古2.6B、鵬程·盤古13B和鵬程·盤古200B模型。兩個(gè)訓(xùn)練數(shù)據(jù)集的數(shù)據(jù)量分別是100 GB和1 TB。如表3所示,訓(xùn)練數(shù)據(jù)集對(duì)每個(gè)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行采樣。采樣比例和重復(fù)次數(shù)越大,數(shù)據(jù)源的質(zhì)量就越好。在兩個(gè)訓(xùn)練集的詞Token數(shù)量分布方面,100 GB訓(xùn)練集和1 TB訓(xùn)練集的平均段落長度分別是239、405個(gè)Token??梢钥闯觯? TB的平均段落長度更長。這是因?yàn)? TB訓(xùn)練集中Common Crawl數(shù)據(jù)的占比更大。值得注意的是,訓(xùn)練數(shù)據(jù)段落長短與模型生成效果有關(guān)。當(dāng)訓(xùn)練樣本平均長度較短時(shí),模型傾向于生成更短的句子,從而有利于模型處理下游任務(wù)中需要生成短句的任務(wù);反之,當(dāng)訓(xùn)練樣本平均長度較長時(shí),模型會(huì)傾向于生成更長的句子。

表2 1.1 TB中文語料數(shù)據(jù)組成

表3 鵬程·盤古模型訓(xùn)練數(shù)據(jù)采樣策略

3 并行訓(xùn)練系統(tǒng)

鵬程·盤古200B的模型訓(xùn)練將面臨巨大挑戰(zhàn)。比如,鵬程·盤古200B的內(nèi)存存儲(chǔ)需求就高達(dá)750 GB。由于梯度和優(yōu)化器狀態(tài)對(duì)參數(shù)更新也很重要,因此訓(xùn)練如此龐大的模型所消耗的內(nèi)存會(huì)比參數(shù)存儲(chǔ)要高好幾倍。相比之下,現(xiàn)代AI處理器(如圖形處理器、Ascend 910 AI處理器)的內(nèi)存約為30~40 GB。因此,將模型切分到設(shè)備(處理器)的集群中是不可避免的。為此,我們需要應(yīng)對(duì)兩個(gè)方面的技術(shù)挑戰(zhàn)。首先,多個(gè)不同的并行功能應(yīng)該結(jié)合起來,以使模型獲得較高的端到端性能。然而,由于策略空間巨大,尋找最佳的策略組合是一個(gè)挑戰(zhàn)。其次,并行訓(xùn)練應(yīng)滿足易用性與高效性的雙重需求,底層與并行相關(guān)的處理邏輯應(yīng)該與模型定義的處理邏輯相解耦。

在基于昇騰910芯片的E級(jí)智能算力平臺(tái)(鵬城云腦II)上,我們使用MindSpore自動(dòng)并行技術(shù)來應(yīng)對(duì)上述兩個(gè)方面的挑戰(zhàn),從而最大限度地提高計(jì)算通信比。該自動(dòng)并行技術(shù)支持五維度的并行能力,并使用拓?fù)涓兄{(diào)度將切片的模型映射到集群上,以獲得較高的端到端性能。此外,該自動(dòng)并行技術(shù)只需要對(duì)單機(jī)代碼進(jìn)行最少的代碼修改,就可以實(shí)現(xiàn)快捷高效的超大模型并行訓(xùn)練。

(1) 五維并行和拓?fù)涓兄{(diào)度

最常用的并行方式是數(shù)據(jù)并行,它在設(shè)備之間劃分訓(xùn)練的批次大小,并在執(zhí)行迭代優(yōu)化命令之前與來自不同設(shè)備的梯度信息保持同步,如圖3(a)所示。模型并行有3種方式。第1種是算子級(jí)并行,它對(duì)每個(gè)算子所涉及的張量進(jìn)行切分。如圖3(b)所示,算子級(jí)并行通過對(duì)參數(shù)和顯存進(jìn)行切片來減少顯存消耗,同時(shí)通過通信優(yōu)化來使連續(xù)算子之間的分布式張量狀態(tài)保持一致。第2種是流水并行,它將總的模型層劃分為不同階段,然后將不同階段的模型層放置到不同的設(shè)備上,如圖3(c)所示。每臺(tái)設(shè)備只擁有模型層次的一部分,可大大節(jié)省顯存占用,并使通信只發(fā)生在不同狀態(tài)的邊界上。第3種機(jī)制是優(yōu)化器并行,其作用是減少由數(shù)據(jù)并行所導(dǎo)致的優(yōu)化器內(nèi)存冗余和計(jì)算消耗。圖3(d)中前向運(yùn)算階段的一些中間結(jié)果要在顯存中駐留相當(dāng)長的時(shí)間,以加速后向階段的梯度計(jì)算。如圖3(e)所示,重計(jì)算前向運(yùn)算結(jié)果可以釋放部分中間結(jié)果,以減少整個(gè)訓(xùn)練階段顯存消耗。需要指出的是,每個(gè)維度的并行都要通過計(jì)算(或通信)開銷來換取顯存(或吞吐量)收益。因此,為了獲得最大的端到端吞吐量,我們需要在多維度并行之間找到一個(gè)最佳組合平衡點(diǎn)。而設(shè)備集群中的異構(gòu)帶寬使這變得更具挑戰(zhàn)性。

圖3 5種并行方式及其優(yōu)化顯存和吞吐量的過程

(2) 混合并行訓(xùn)練

圖4展示了鵬程·盤古200B模型的混合并行方案。首先,將模型總層次(64層)劃分成16個(gè)狀態(tài),每個(gè)狀態(tài)包含4層。每一層會(huì)為每個(gè)算子切分所需要的參數(shù)和張量。具體來說,Query(Q)、Key(K)和Value(V)算子相關(guān)的參數(shù)被切分為8片。我們將這3個(gè)算子的輸入張量劃分為16個(gè)切片,并以此確定優(yōu)化器并行的維度。該層中其他算子的并行策略也以同樣的方式進(jìn)行配置。每層算子都首先被切分,然后再執(zhí)行下發(fā)命令。這有效降低了額外的計(jì)算開銷。在本方案中,我們總共使用了2 048個(gè)來自鵬城云腦II的Ascend 910 AI處理器。

圖4 一個(gè)簡化的鵬程·盤古并行策略

鵬程·盤古200B模型具體的混合并行策略為:數(shù)據(jù)并行8路、算子級(jí)并行8路、流水并行16路,在數(shù)據(jù)并行的同時(shí)疊加優(yōu)化器并行。模型會(huì)將通信量大的并行方式(算子級(jí)并行)放置在服務(wù)器內(nèi)部的多卡之間,將通信量較小的并行方式(流水并行)放置在同一機(jī)架內(nèi)的服務(wù)器之間,將部分?jǐn)?shù)據(jù)并行(疊加優(yōu)化器并行)放置在不同機(jī)架之間。因此,通信可以與計(jì)算同時(shí)進(jìn)行,對(duì)帶寬要求較低。

4 實(shí)驗(yàn)

4.1 訓(xùn)練細(xì)節(jié)

鵬程·盤古模型是基于華為Mindspore框架開發(fā)的,它采用由2 048塊Ascend910 AI處理器組成的集群進(jìn)行訓(xùn)練,并最終擴(kuò)展到全機(jī)4 096塊Ascend910 AI處理器集群上。模型的詳細(xì)配置如表4所示。在訓(xùn)練程·盤古200B模型時(shí),我們首先采用2 048塊處理器,然后將其切換到1 024塊上繼續(xù)進(jìn)行訓(xùn)練。實(shí)驗(yàn)將字節(jié)對(duì)編碼(BPE)作為分詞器,詞表的規(guī)模為40 000,并且所有模型均采用1 024的序列長度。

表4 鵬程·盤古的詳細(xì)訓(xùn)練配置

鵬程·盤古模型的訓(xùn)練損失曲線如圖5所示。因?yàn)轾i程·盤古200B、鵬程·盤古13B和鵬程·盤古2.6B模型訓(xùn)練的批量大小不同,所以我們用Token數(shù)作為X軸。由圖5可以看出,鵬程·盤古200B、鵬程·盤古13B和鵬程·盤古2.6B的模型訓(xùn)練損失分別收斂在2.49、2.58和2.64,并且在訓(xùn)練結(jié)束時(shí)訓(xùn)練損失仍然在下降。這表明模型精度仍有提升的潛力。本文在驗(yàn)證集上評(píng)估了模型的PPL性能。其中,驗(yàn)證集是從Common Crawl數(shù)據(jù)集中隨機(jī)抽取的。評(píng)估結(jié)果表明,模型越大,PPL就越低,模型性能也就越優(yōu)。

圖5 不同參數(shù)規(guī)模下鵬程·盤古的訓(xùn)練曲線

4.2 任務(wù)描述

本文在多種自然語言處理下游任務(wù)的基礎(chǔ)上來評(píng)估模型的性能。與GPT-3類似,實(shí)驗(yàn)采用3種不經(jīng)任務(wù)微調(diào)的配置:零樣本學(xué)習(xí)、單樣本學(xué)習(xí)和小樣本學(xué)習(xí)。如果能獲取到測試集,每個(gè)下游任務(wù)就會(huì)在測試集上進(jìn)行評(píng)估。參與的16個(gè)下游任務(wù)包含7個(gè)類別:完形填空與補(bǔ)全、閱讀理解、閉卷問答、指代消解、常識(shí)推理、自然語言推理、文本分類。

4.3 評(píng)估細(xì)節(jié)

由于測試方式不同,本文將所有任務(wù)分為兩大類:生成類任務(wù)和分類任務(wù)。

(1)生成類任務(wù)的評(píng)測方法

生成類任務(wù)包含詞級(jí)別和句子級(jí)別的生成任務(wù)。鵬程·盤古模型天然具備強(qiáng)大的文本生成能力,能夠采用模型自然生成文本的方式生成此類任務(wù)的答案。對(duì)于中文上下文詞語預(yù)測數(shù)據(jù)集(WPLC)、中文填空型閱讀理解(PD&CFT)和閱讀理解評(píng)測(CMRC2017)這類完形填空與補(bǔ)全任務(wù),上下文可作為提示被放置在待預(yù)測位置的前面。而對(duì)于閱讀理解和閉卷問答任務(wù),模型則能夠根據(jù)需要設(shè)計(jì)相應(yīng)的提示模板。例如,閱讀理解任務(wù)可將樣本填充到“Reading document:$Document Question:$Question Answer:”模板中,并將其作為提示輸入到模型中。類似于GPT-3,小樣本學(xué)習(xí)采用上下文學(xué)習(xí)的方式,即把K個(gè)提示相互拼接。其中,前K-1個(gè)提示均包含答案,最后一個(gè)提示的答案則通過模型預(yù)測來獲得。

(2)分類任務(wù)的評(píng)測方法

分類任務(wù)主要采用基于PPL的評(píng)測方法。針對(duì)每組<段落,標(biāo)簽>數(shù)據(jù)對(duì),該方法會(huì)根據(jù)預(yù)設(shè)計(jì)模板自動(dòng)生成輸入。由模板生成的序列將被輸入到模型中,同時(shí)模型將計(jì)算出相應(yīng)的PPL值。具有最小PPL值的標(biāo)簽將被作為該段落的預(yù)測結(jié)果。與生成類任務(wù)評(píng)測類似,分類任務(wù)也采用上下文學(xué)習(xí)策略來完成小樣本學(xué)習(xí)任務(wù)。

4.4 實(shí)驗(yàn)結(jié)果

本文對(duì)比了鵬程·盤古2.6B模型和CPM2.6B模型在16個(gè)中文下游任務(wù)上的表現(xiàn)。鵬程·盤古2.6B模型在11個(gè)零樣本學(xué)習(xí)任務(wù)、12個(gè)單樣本學(xué)習(xí)任務(wù)、14個(gè)小樣本學(xué)習(xí)任務(wù)上的表現(xiàn)均超越CPM 2.6B模型。實(shí)驗(yàn)結(jié)果表明,相比于CPM2.6B模型,鵬程·盤古2.6B模型具有更強(qiáng)的上下文學(xué)習(xí)能力(尤其在小樣本學(xué)習(xí)和生成方面)。在生成任務(wù)方面,鵬程·盤古2.6B模型要比CPM2.6B模型平均高出6個(gè)百分點(diǎn)。具體地,在閱讀理解任務(wù)和閉卷問答任務(wù)上,鵬程·盤古2.6B模型比CPM2.6B模型高出5個(gè)百分點(diǎn);在無選項(xiàng)完形填空任務(wù)上,鵬程·盤古2.6B模型比CPM2.6B模型高出7個(gè)百分點(diǎn)。在PPL任務(wù)方面,鵬程·盤古2.6B模型與CPM2.6B模型相當(dāng),而在TNEWS和IFLYTEK分類任務(wù)上的表現(xiàn)則不如CPM2.6B模型。造成這種現(xiàn)象的主要原因是CPM2.6B模型和鵬程·盤古2.6B模型的訓(xùn)練語料具有差異性。

我們同時(shí)對(duì)比了鵬程·盤古13B和鵬程·盤古2.6B在16個(gè)中文NLP下游任務(wù)上的表現(xiàn)。鵬程·盤古13B在所有生成式任務(wù)和絕大多數(shù)PPL任務(wù)上的表現(xiàn),均明顯優(yōu)于鵬程·盤古2.6B模型。在CMRC2018、DRCD和WebQA任務(wù)上,鵬程·盤古13B小樣本學(xué)習(xí)的性能比零樣本學(xué)習(xí)高10個(gè)百分點(diǎn)。這說明鵬程·盤古13B模型具有極強(qiáng)的上下文學(xué)習(xí)能力。鵬程·盤古13B在16個(gè)下游任務(wù)中的表現(xiàn)比鵬程·盤古2.6B高出近3個(gè)百分點(diǎn)。具體地,鵬程·盤古13B模型在閱讀理解和閉卷問答任務(wù)上的表現(xiàn)比鵬程·盤古2.6B模型高出近4個(gè)百分點(diǎn),在無選項(xiàng)完形填空任務(wù)上的表現(xiàn)比鵬程·盤古2.6B高出近2個(gè)百分點(diǎn)。在自然語言推理(NLI)任務(wù)上,鵬程·盤古13B模型的表現(xiàn)則不如鵬程·盤古2.6B,這與GPT-3實(shí)驗(yàn)結(jié)果是一致的。總之,鵬程·盤古13B模型和鵬程·盤古2.6B模型的對(duì)比實(shí)驗(yàn)表明:更大規(guī)模的預(yù)訓(xùn)練模型的性能通常能在小樣本學(xué)習(xí)任務(wù)上取得提升。

5 大模型應(yīng)用

5.1 模型壓縮

雖然鵬程·盤古模型具備強(qiáng)大的能力,但超大規(guī)模的模型參數(shù)量卻限制了它的應(yīng)用。我們通常希望應(yīng)用端能夠在保持幾乎同等性能的條件下就可得到較小參數(shù)規(guī)模的模型,以便提升應(yīng)用效率。因此,我們研究了鵬程·盤古的模型壓縮技術(shù),并采用量化與參數(shù)共享的方法實(shí)現(xiàn)了鵬程·盤古13B模型和鵬程·盤古2.6B模型在單張Ascend 910卡上的應(yīng)用。其中,量化是指借助低精度類型加載模型,用FP16代替大部分FP32類型參數(shù),同時(shí)對(duì)量化噪聲和數(shù)值溢出進(jìn)行處理;參數(shù)共享是指將部分層的參數(shù)進(jìn)行共享,例如將輸出層參數(shù)與嵌入層參數(shù)進(jìn)行共享。這種壓縮技術(shù)使顯存占用降低50%,系統(tǒng)性能波動(dòng)僅為2%左右。為了評(píng)估壓縮技術(shù)對(duì)模型性能的影響,實(shí)驗(yàn)測試了部分下游任務(wù)在壓縮前后的性能指標(biāo)。結(jié)果表明,在閉卷問答任務(wù)(WebQA)上,壓縮后鵬程·盤古13B模型的F1值比壓縮前小0.01;在代詞消歧任務(wù)(CLUEWSC2020)中,壓縮后鵬程·盤古13B模型的精度僅比壓縮前下降1個(gè)百分點(diǎn)。

5.2 模型移植

為了便于更多用戶使用鵬程·盤古模型,我們將該模型從Mindspore框架成功移植到PyTorch框架下。移植流程主要包括3個(gè)步驟。

第1步:在PyTorch框架上復(fù)現(xiàn)鵬程·盤古。復(fù)現(xiàn)工作是基于開源分布式Transformer的Megatron框架實(shí)現(xiàn)的,即在Transformer的decoder解碼結(jié)構(gòu)上加一層Query層。

第2步:手動(dòng)轉(zhuǎn)換模型文件。由于鵬程·盤古的部分算子不能轉(zhuǎn)成開放神經(jīng)網(wǎng)絡(luò)交換(ONNX)通用模型格式,所以我們需要對(duì)模型文件進(jìn)行手動(dòng)轉(zhuǎn)換。手動(dòng)轉(zhuǎn)換模型文件的流程包括:(1)提取Mindspore模型中的參數(shù)數(shù)據(jù)和參數(shù)名稱,并將提取的參數(shù)保存為數(shù)組數(shù)據(jù);(2)手動(dòng)對(duì)齊Mindspore和PyTorch模型的參數(shù)名稱和參數(shù)維度,并將其保存為PyTorch模型文件類型。

第3步:對(duì)齊PyTorch實(shí)現(xiàn)版本和Mindspore實(shí)現(xiàn)版本的并行策略。在進(jìn)行分布式訓(xùn)練時(shí),我們需要把隱藏態(tài)分割到不同的設(shè)備上。然而,基于兩個(gè)不同框架實(shí)現(xiàn)的分割方案存在一定的差異。圖6展示了Mindspore實(shí)現(xiàn)版本和PyTorch實(shí)現(xiàn)版本的模型切割策略。可以看出,左邊Mindspore的切割策略是直接從中間將隱藏態(tài)分成兩份,然后為每個(gè)設(shè)備分配一份;而右邊PyTorch的切割策略則是先將隱藏態(tài)分成3份,然后再把每份數(shù)據(jù)平均分配到不同的設(shè)備上。為了保證最后輸出結(jié)果的一致性,我們需要手動(dòng)調(diào)整移植后模型文件的權(quán)重。

圖6 鵬程·盤古的模型切割策略

目前,移植到PyTorch框架后的鵬程·盤古代碼和模型文件已經(jīng)在OpenI社區(qū)開源共享。

5.3 基于增量推理的在線體驗(yàn)服務(wù)加速

為了讓更多的用戶體驗(yàn)鵬程·盤古模型的強(qiáng)大功能,我們設(shè)計(jì)并開放了在線體驗(yàn)服務(wù),目前已處理上萬條用戶請求。鵬程·盤古模型一次完整的在線推理可以包含多個(gè)Tokens的生成。模型需要根據(jù)上文輸入來預(yù)測下一個(gè)Token,然后將預(yù)測的Token追加至輸入內(nèi)容結(jié)尾,以便讓模型繼續(xù)生成下一個(gè)Token。

通常,在對(duì)輸入序列Pad補(bǔ)到固定長度(如1 024)后再讓模型進(jìn)行自回歸生成的方式,會(huì)明顯引入冗余計(jì)算。這將極大降低模型的推理能力。對(duì)此,我們采用狀態(tài)復(fù)用的改進(jìn)算法(增量推理),來提高模型的推理能力。對(duì)于不同步的輸入,前部分序列的內(nèi)容完全相同。當(dāng)計(jì)算索引為i的位置時(shí),前0~i-1位置對(duì)應(yīng)的狀態(tài)在上一步中已進(jìn)行計(jì)算。因此,在推理過程中,第i步可以復(fù)用第i-1步的狀態(tài),并將其和當(dāng)前推理得到的狀態(tài)進(jìn)行拼接,以便作為第i步的完整狀態(tài)。系統(tǒng)在得到第i步輸出的Token時(shí),即可省掉這些重復(fù)計(jì)算。這將極大提升模型的推理能力。測試結(jié)果表明,增量推理可使模型性能提升5倍以上(評(píng)估的方法是:輸入一段話,預(yù)測下一個(gè)詞的平均輸出時(shí)間)。基于增量推理的在線體驗(yàn)服務(wù)網(wǎng)址為https://pangu-alpha.openi.org.cn/。

5.4 鵬程·盤古增強(qiáng)版

鵬程·盤古增強(qiáng)版能針對(duì)多個(gè)下游任務(wù)進(jìn)行持續(xù)的提示微調(diào)訓(xùn)練,其主要?jiǎng)?chuàng)新包括:

?創(chuàng)新應(yīng)用多任務(wù)學(xué)習(xí)、任務(wù)統(tǒng)一格式、提示微調(diào)和持續(xù)學(xué)習(xí)技術(shù),對(duì)基本版模型進(jìn)行能力擴(kuò)展和增強(qiáng),使模型性能得到大幅提升;

?形成基于鵬程·盤古模型進(jìn)行提示微調(diào)和持續(xù)學(xué)習(xí)的應(yīng)用新范式,更好地識(shí)別用戶的任務(wù)說明,同時(shí)能盡量保持模型的原始生成能力;

?參數(shù)量為26億規(guī)模,在中英文翻譯、開放域知識(shí)問答、文本分類、摘要生成等方面的能力提升顯著,在一張V100 GPU卡上就可以完成多路并行推理。

(1)技術(shù)方案

圖7顯示了構(gòu)建鵬程·盤古增強(qiáng)版模型的技術(shù)方案。該方案采用多任務(wù)、統(tǒng)一任務(wù)格式、提升微調(diào)和持續(xù)學(xué)習(xí)等技術(shù)方法來增強(qiáng)模型的任務(wù)處理能力,同時(shí)提升對(duì)任務(wù)描述的泛化能力。

圖7 鵬程·盤古增強(qiáng)版技術(shù)原理

(2)統(tǒng)一任務(wù)格式

我們設(shè)計(jì)了統(tǒng)一的任務(wù)數(shù)據(jù)格式。該統(tǒng)一格式旨在減少下游任務(wù)之間的差異,提高知識(shí)轉(zhuǎn)移和任務(wù)描述的泛化能力。借助統(tǒng)一格式,我們在18個(gè)任務(wù)上構(gòu)建了50多個(gè)提示,并通過提示微調(diào)技術(shù)來訓(xùn)練盤古增強(qiáng)版模型。統(tǒng)一任務(wù)格式的具體細(xì)節(jié)可從https://git.openi.org.cn/PCL-Platform.Intelligence/PanGu-Alpha-Evolution網(wǎng)頁中查詢了解。

(3)實(shí)驗(yàn)性能

我們開展了大量實(shí)驗(yàn)來比較鵬程·盤古增強(qiáng)版和鵬程·盤古基本版在自然語言理解任務(wù)、自然語言生成任務(wù)中的性能。對(duì)于每個(gè)任務(wù)來說,如果能獲取到測試集則在測試集上進(jìn)行評(píng)估,否則就在驗(yàn)證集上進(jìn)行評(píng)估。為了降低計(jì)算資源消耗,部分任務(wù)會(huì)從數(shù)據(jù)中隨機(jī)采樣部分子集來進(jìn)行評(píng)估。性能對(duì)比結(jié)果如表5,表中“Δ”是指鵬程·盤古增強(qiáng)版相對(duì)鵬程·盤古基本版提升的絕對(duì)值,“相對(duì)提升”是指鵬程·盤古增強(qiáng)版相對(duì)鵬程·盤古基本版提升的百分比。因?yàn)轾i程·盤古不具備翻譯能力,所以我們不計(jì)算這方面的相對(duì)提升百分比。結(jié)果表明,鵬程·盤古增強(qiáng)版在各項(xiàng)任務(wù)上的表現(xiàn)均遠(yuǎn)遠(yuǎn)優(yōu)于鵬程·盤古基本版(平均相對(duì)提升高達(dá)1 064.70%)。人工評(píng)估表明,鵬程·盤古增強(qiáng)版具有與鵬程·盤古基本版相同的文本生成能力。

表5 鵬程·盤古增強(qiáng)版優(yōu)越的性能

6 結(jié)束語

本文詳細(xì)介紹了大規(guī)模自回歸中文預(yù)訓(xùn)練語言模型鵬程·盤古,并探索了該模型的具體應(yīng)用。大規(guī)模語言模型雖然是當(dāng)前的研究熱點(diǎn),但仍存在很多開放性的問題。

(1)大規(guī)模語言模型在NLP任務(wù)上表現(xiàn)出較好的小樣本學(xué)習(xí)能力,但目前對(duì)大規(guī)模語言模型的系統(tǒng)性研究仍然比較缺乏。如何訓(xùn)練出大規(guī)模PLM并使模型生成的文本更加規(guī)范安全、更加魯棒、更加符合常識(shí)(或知識(shí))仍是最具挑戰(zhàn)性的問題。

(2)超大規(guī)模語言模型的訓(xùn)練、推理和維護(hù)成本非常高。如何高效地訓(xùn)練出一個(gè)大模型并使模型具有持續(xù)演化能力?大規(guī)模PLM的綠色生態(tài)、持續(xù)學(xué)習(xí)演化等是一個(gè)有趣的探索方向。

(3)大規(guī)模語言模型被認(rèn)為是通向通用人工智能的重要途徑。它的自監(jiān)督預(yù)訓(xùn)練模式、小樣本學(xué)習(xí)能力以及單模型多任務(wù)的適配能力都具有很好的應(yīng)用前景。由于目前仍缺乏兼具邏輯推理、常識(shí)和認(rèn)知能力的大模型,人們只能使用巨量參數(shù)來擬合并訓(xùn)練語料中長尾分布的記憶“巨獸”。如何大模型它具備人類推理、思考和認(rèn)知能力仍然任重而道遠(yuǎn)。

感謝鵬城實(shí)驗(yàn)室提供鵬城云腦支撐本文研究。感謝鵬城實(shí)驗(yàn)室的王暉、張艷、顏達(dá)森、蔣芳清、易澤軒、陶恒韜、王進(jìn),華為公司的蘇騰、任曉哲、廖億、蔣欣、王志偉等為本研究做了大量工作。

猜你喜歡
盤古鵬程語料
GLEASON’S PROBLEM ON THE SPACE Fp,q,s(B) IN Cn*
A PRIORI BOUNDS AND THE EXISTENCE OF POSITIVE SOLUTIONS FOR WEIGHTED FRACTIONAL SYSTEMS?
在傳統(tǒng)與創(chuàng)新中尋求制衡點(diǎn)
THE CAUCHY PROBLEM FOR THE TWO LAYER VISOUS SHALLOW WATER EQUATIONS*
盤古開天辟地
盤古
盤古
盤古開天辟地
基于語料調(diào)查的“連……都(也)……”出現(xiàn)的語義背景分析
華語電影作為真實(shí)語料在翻譯教學(xué)中的應(yīng)用
色达县| 安龙县| 崇左市| 黄石市| 博爱县| 葫芦岛市| 叶城县| 高唐县| 屯留县| 黄梅县| 霍林郭勒市| 西藏| 黄山市| 绵竹市| 民丰县| 南和县| 辉县市| 岳池县| 渝中区| 斗六市| 时尚| 前郭尔| 临沧市| 普定县| 古丈县| 伊川县| 开原市| 浪卡子县| 尖扎县| 九龙县| 庆安县| 长寿区| 崇明县| 乌什县| 南开区| 沂水县| 邯郸市| 南京市| 龙游县| 灌南县| 沽源县|