?

鵬程·盤古:大規模自回歸中文預訓練語言模型及應用

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

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

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

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

2020年,美國OpenAI團隊推出GPT系列模型的最新版本GPT-3。其中,最大的GPT-3模型包含1 750億個參數,能使用570 GB的文本數據進行訓練。除了具有高質量的文本生成能力外,在沒有進行特定任務微調的情形下,GPT-3模型小樣本學習和零樣本學習的性能會隨著模型參數的增加而穩步提升。有些任務的性能甚至達到了當前最高水平。GPT-3模型的提出是革命性的,它減輕了人們為新任務標記更多示例和再次訓練模型的負擔,成為模擬人類小樣本學習能力的新范式,為探索通用人工智能(AI)開辟了新途徑。

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

當模型規模超過100億時,模型越大,模型訓練的難度就越高。其中,模型訓練面臨的技術挑戰主要包括以下幾個方面:

(1)模型設計。隨著模型規模的擴大,訓練過程中可能會出現收斂緩慢甚至發散的問題。在前期工作的基礎上,鵬程·盤古模型將基于Transformer的ALM作為基礎架構,并在Transformer層之上增加了Query層以誘導模型的預期輸出。實驗證明,該架構具有很好的擴展性,能夠有效支持2 000億參數規模的模型訓練。

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

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

鵬城團隊在1.1 TB高質量中文文本語料庫上訓練了鵬程·盤古2.6B、鵬程·盤古13B和鵬程·盤古200B 3個模型,并評估了鵬程·盤古2.6B、鵬程·盤古13B兩個模型在16個NLP下游任務上的小樣本學習能力。實驗結果表明,隨著模型參數規模的擴大,鵬程·盤古模型在各種下游任務上的性能表現會更優異。

然而,大模型如何賦能實際應用仍然面臨很大挑戰。例如,當模型太大時,如何通過有效的模型壓縮來賦能邊端應用場景?如何將應用任務轉化為大模型的原始任務,并通過提示微調學習技術來實現NLP模型訓練新范式?如何針對新的數據集和任務,在大模型基礎上開展持續學習,并構建高效持續演化的大模型生態?針對這些挑戰,我們進一步研發了鵬程·盤古增強版模型。該模型在大模型壓縮、提示微調學習、多任務學習以及持續學習等方面均表現出很好的效果。

1 模型架構

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

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

圖1 鵬程·盤古模型結構

1.1 Transformer層

在計算完包含多個頭的注意力后,輸出就可以變成:

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

1.2 Query層

模型在Transformer層之上堆疊了一個Query層,目的是輸出一個明確的引導。在ALM的預訓練階段,Query層可被用來預測下一個Token。Query層的結構與Transformer層類似。在計算注意力機制的時候,Query層會對表示下一個位置的位置嵌入p∈R做Query向量處理。具體來說,假設H是最上層Transformer層的輸出,則Query層的注意力向量可以表示為:

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

其中,x表示真實Token,W、b是任務相關的額外參數。

1.3 模型配置

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

表1 鵬程·盤古模型的規模和參數

2 數據集

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

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

為解決上述問題,我們搭建了一個大規模中文語料數據處理平臺,以提升海量數據采集、清洗、過濾等處理效率,并以此構建了一個1.1 TB的高質量中文語料數據集。在數據集的構建過程中,我們采用人工評估與模型評估相結合的方法為數據集的清洗、過濾以及訓練數據集的選擇提供指導。

2.1 數據集構建

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

2.1.1 數據清洗和過濾

在圖2所示的5種數據來源中,Common Crawl的數據占比雖然最大,但是它包含了大量低質量的網頁數據。因此,我們首先采用如下規則對Common Crawl的原始數據進行清洗。

圖2 鵬程·盤古模型的訓練數據處理流程

?去除中文字符低于60%或者字符數小于150的數據(僅有網頁名稱的數據也會被去除);

?去除特殊字符,并去除在一個網頁中重復出現的段落;

?通過廣告關鍵詞去除包含大量廣告的網頁數據;

?將所有繁體中文轉換為簡體中文;

?識別并去除網頁導航頁。

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

?關鍵詞過濾。構建一個包含724個敏感詞的詞庫,并通過敏感詞庫去除包含3個以上敏感詞的網頁數據。

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

?低質量文本過濾。借鑒GPT-3的數據處理策略,我們訓練了一個數據質量評分模型。該模型可去除得分較低的文本(詳見GPT-3附錄-A)。

2.1.2 文本去重

由于全量數據太大,基于Spark的MinHashLSH算法在對200 MB數據進行去重時需要消耗至少8 h的時間,去重效率較低。為了加速文本數據去重過程,我們設計了一種分布式海量文本數據重復檢測和去重算法。針對500 GB語料數據的去重任務,該算法能夠將原本20 000 h的時間縮短至3.5 h,極大地提升了去重效率。

2.1.3 數據質量評估

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

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

2.2 數據采樣策略

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

表2 1.1 TB中文語料數據組成

表3 鵬程·盤古模型訓練數據采樣策略

3 并行訓練系統

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

在基于昇騰910芯片的E級智能算力平臺(鵬城云腦II)上,我們使用MindSpore自動并行技術來應對上述兩個方面的挑戰,從而最大限度地提高計算通信比。該自動并行技術支持五維度的并行能力,并使用拓撲感知調度將切片的模型映射到集群上,以獲得較高的端到端性能。此外,該自動并行技術只需要對單機代碼進行最少的代碼修改,就可以實現快捷高效的超大模型并行訓練。

(1) 五維并行和拓撲感知調度

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

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

(2) 混合并行訓練

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

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

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

4 實驗

4.1 訓練細節

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

表4 鵬程·盤古的詳細訓練配置

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

圖5 不同參數規模下鵬程·盤古的訓練曲線

4.2 任務描述

本文在多種自然語言處理下游任務的基礎上來評估模型的性能。與GPT-3類似,實驗采用3種不經任務微調的配置:零樣本學習、單樣本學習和小樣本學習。如果能獲取到測試集,每個下游任務就會在測試集上進行評估。參與的16個下游任務包含7個類別:完形填空與補全、閱讀理解、閉卷問答、指代消解、常識推理、自然語言推理、文本分類。

4.3 評估細節

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

(1)生成類任務的評測方法

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

(2)分類任務的評測方法

分類任務主要采用基于PPL的評測方法。針對每組<段落,標簽>數據對,該方法會根據預設計模板自動生成輸入。由模板生成的序列將被輸入到模型中,同時模型將計算出相應的PPL值。具有最小PPL值的標簽將被作為該段落的預測結果。與生成類任務評測類似,分類任務也采用上下文學習策略來完成小樣本學習任務。

4.4 實驗結果

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

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

5 大模型應用

5.1 模型壓縮

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

5.2 模型移植

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

第1步:在PyTorch框架上復現鵬程·盤古。復現工作是基于開源分布式Transformer的Megatron框架實現的,即在Transformer的decoder解碼結構上加一層Query層。

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

第3步:對齊PyTorch實現版本和Mindspore實現版本的并行策略。在進行分布式訓練時,我們需要把隱藏態分割到不同的設備上。然而,基于兩個不同框架實現的分割方案存在一定的差異。圖6展示了Mindspore實現版本和PyTorch實現版本的模型切割策略??梢钥闯?,左邊Mindspore的切割策略是直接從中間將隱藏態分成兩份,然后為每個設備分配一份;而右邊PyTorch的切割策略則是先將隱藏態分成3份,然后再把每份數據平均分配到不同的設備上。為了保證最后輸出結果的一致性,我們需要手動調整移植后模型文件的權重。

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

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

5.3 基于增量推理的在線體驗服務加速

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

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

5.4 鵬程·盤古增強版

鵬程·盤古增強版能針對多個下游任務進行持續的提示微調訓練,其主要創新包括:

?創新應用多任務學習、任務統一格式、提示微調和持續學習技術,對基本版模型進行能力擴展和增強,使模型性能得到大幅提升;

?形成基于鵬程·盤古模型進行提示微調和持續學習的應用新范式,更好地識別用戶的任務說明,同時能盡量保持模型的原始生成能力;

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

(1)技術方案

圖7顯示了構建鵬程·盤古增強版模型的技術方案。該方案采用多任務、統一任務格式、提升微調和持續學習等技術方法來增強模型的任務處理能力,同時提升對任務描述的泛化能力。

圖7 鵬程·盤古增強版技術原理

(2)統一任務格式

我們設計了統一的任務數據格式。該統一格式旨在減少下游任務之間的差異,提高知識轉移和任務描述的泛化能力。借助統一格式,我們在18個任務上構建了50多個提示,并通過提示微調技術來訓練盤古增強版模型。統一任務格式的具體細節可從https://git.openi.org.cn/PCL-Platform.Intelligence/PanGu-Alpha-Evolution網頁中查詢了解。

(3)實驗性能

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

表5 鵬程·盤古增強版優越的性能

6 結束語

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

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

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

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

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

猜你喜歡
盤古語料鵬程
盤古開天辟地
在傳統與創新中尋求制衡點
可比語料庫構建與可比度計算研究綜述
盤古
盤古
中古漢語分期研究所涉及的語料問題
審計意見、真實盈余管理與股價崩盤
如何使用第二外語學習者語料
晨霧
英語教學中真實語料的運用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合