潘囿丞/PAN Youcheng,侯永帥/HOU Yongshuai,楊卿/YANG Qing,余躍/YU Yue,相洋/XIANG Yang
(鵬城實(shí)驗(yàn)室,中國 深圳 518055 )
大規(guī)模語言模型是一種使用深度學(xué)習(xí)方法技術(shù)在大規(guī)模無標(biāo)注文本語料數(shù)據(jù)上進(jìn)行訓(xùn)練的人工智能方法。近年來,這類模型得到了快速發(fā)展,模型能力實(shí)現(xiàn)極大提升。然而,模型的參數(shù)規(guī)模也變得越來越大。例如,2018 年谷歌的BERT-Base 模型只有1.1 億個(gè)參數(shù)[1],而到了2020 年,OpenAI 的GPT-3 模型的參數(shù)量已經(jīng)達(dá)到1 750 億個(gè)[2]。隨著模型參數(shù)的增加,模型訓(xùn)練所需的算力資源也變得更加龐大。BERT-Base 模型可以在單張圖形處理器(GPU)上訓(xùn)練,而GPT-3模型則需要在數(shù)千張GPU上進(jìn)行數(shù)月的訓(xùn)練。當(dāng)前,單個(gè)算力集群很少具備數(shù)千張GPU 算力卡的規(guī)模,即使是那些具有數(shù)千張卡的算力集群,也很難將它們?cè)陂L時(shí)間內(nèi)集中用于同一個(gè)任務(wù)。因此,為了滿足大規(guī)模語言模型的訓(xùn)練需求,需要將多個(gè)算力集群的資源聯(lián)合訓(xùn)練來提高效率。隨著“東數(shù)西算”工程的逐步開展,中國各地建立了大量的算力集群。異地跨云計(jì)算將成為今后大模型訓(xùn)練的可行方式。
在跨云集群環(huán)境中進(jìn)行模型訓(xùn)練,需要解決不同云集群之間參數(shù)的傳遞和同步問題,以及由大量數(shù)據(jù)跨云傳輸?shù)臅r(shí)間開銷導(dǎo)致模型訓(xùn)練速度慢的問題。為了提升訓(xùn)練速度,訓(xùn)練任務(wù)被拆分到多個(gè)不同的算力集群上。利用這些集群的算力,可以實(shí)現(xiàn)對(duì)任務(wù)的并行處理。根據(jù)不同的任務(wù)需求和場景,跨云訓(xùn)練可以采用不同的并行策略,包括數(shù)據(jù)并行、模型并行和流水線并行等。
數(shù)據(jù)并行是提升訓(xùn)練速度的一種并行策略,能夠?qū)⒂?xùn)練任務(wù)切分到多個(gè)算力集群上。每個(gè)集群維護(hù)相同的模型參數(shù)和計(jì)算任務(wù),只是處理不同的批數(shù)據(jù)。通過這種方式,全局的數(shù)據(jù)被分配到不同的進(jìn)程,從而減輕單個(gè)集群上的計(jì)算和存儲(chǔ)壓力。
模型并行主要用于模型太大、無法在單個(gè)設(shè)備上加載的場景,對(duì)計(jì)算圖按層切分以減少單個(gè)存儲(chǔ)的容量需求,每個(gè)集群只保留模型的一部分。因此,多個(gè)算力集群可以共同訓(xùn)練一個(gè)更大的模型。
當(dāng)模型并行在某個(gè)集群進(jìn)行計(jì)算時(shí),其余集群都會(huì)處于閑置狀態(tài),這樣會(huì)極大地降低整體的使用效率。于是,在模型并行的基礎(chǔ)上,如圖1所示,把原先的批數(shù)據(jù)再劃分成若干個(gè)微批次,按流水線方式送入各個(gè)算力集群進(jìn)行訓(xùn)練,也就是流水線并行[3]。
▲圖1 普通流水線并行和跨云流水線并行
當(dāng)在跨云場景下進(jìn)行大規(guī)模語言模型訓(xùn)練時(shí),由于巨大的數(shù)據(jù)量和參數(shù)規(guī)模,不論是對(duì)訓(xùn)練數(shù)據(jù)還是模型張量進(jìn)行切分,在進(jìn)行跨云同步傳輸時(shí)都會(huì)產(chǎn)生較大的耗時(shí),會(huì)影響整體的訓(xùn)練速度。由此可見,數(shù)據(jù)并行和模型并行這兩種方式能夠支持的模型參數(shù)規(guī)模有限。而流水線并行訓(xùn)練則將模型參數(shù)按照層次進(jìn)行拆分,把不同層的模型參數(shù)放到不同集群中進(jìn)行訓(xùn)練。訓(xùn)練過程中不需要同步全部模型參數(shù),集群之間只需要串行傳遞訓(xùn)練過程的中間計(jì)算變量。該方法受模型參數(shù)規(guī)模影響較小,更適合大規(guī)模語言模型的跨云訓(xùn)練。
跨云流水線并行和普通流水線并行的最大區(qū)別在于處理通信數(shù)據(jù)的方式。目前,普通流水線并行策略通常僅在單個(gè)計(jì)算資源中心內(nèi)部使用,這意味著計(jì)算設(shè)備之間存在專用的高帶寬網(wǎng)絡(luò)連接。此時(shí),通信代價(jià)極低,通常可以忽略不計(jì)。然而,當(dāng)普通流水線并行策略應(yīng)用于跨云場景時(shí),計(jì)算設(shè)備之間的連接帶寬遠(yuǎn)低于上述連接,通信代價(jià)將顯著增加,這將極大地影響訓(xùn)練效率。圖1 的左圖和右圖分別展示了普通流水線并行和跨云流水線并行的處理流程。
普通流水線并行的效率評(píng)價(jià)指標(biāo)為并行空泡占用率比例(parallelism bubble ration),該比例越小代表效率越高。假設(shè)并行的階段(stage)數(shù)為p,微批次的數(shù)量(micro-batch)為m,每個(gè)micro-batch 的前向和后向執(zhí)行時(shí)間為tf和tb,則空泡率為:
而在跨云流水線并行中,會(huì)出現(xiàn)因?yàn)橥ㄐ哦鴮?dǎo)致的額外空泡。假設(shè)通信時(shí)間為tt,在不做任何處理的情況下,前向和后向的通信時(shí)間相等,此時(shí)空泡率為:
因此,跨云流水線并行所面臨的主要挑戰(zhàn)是如何提高訓(xùn)練效率,即如何降低并行空泡的占用率。從上述公式(2)中可以看出,在跨云場景中,與普通流水線并行不同,增加微批次的數(shù)量并不一定會(huì)提高效率,需要根據(jù)實(shí)際情況進(jìn)行分析,并計(jì)算出最優(yōu)的微批次數(shù)量。此外,公式(2)還表明,縮短通信時(shí)間、減少階段數(shù)量均有助于降低空泡率。特別是由于通信時(shí)間的存在,階段數(shù)量對(duì)空泡率的影響更為顯著。因此,減少階段數(shù)量可以帶來更大的收益。下面我們將從這兩個(gè)方面介紹相關(guān)的技術(shù)。
縮短通信時(shí)間的核心在于減少通信的數(shù)據(jù)量。為此,可以采用稀疏化、量化和低秩訓(xùn)練等技術(shù)。另外,階段數(shù)量主要受到節(jié)點(diǎn)總內(nèi)存的限制。如果能夠降低訓(xùn)練占用的內(nèi)存,就可以使每個(gè)節(jié)點(diǎn)容納更多的參數(shù),從而有可能降低階段數(shù)。需要注意的是,在此處,以增加通信量為代價(jià)來降低內(nèi)存的方案并不適用。
稀疏化的主要思想是,神經(jīng)網(wǎng)絡(luò)層的輸出中絕對(duì)值較大的數(shù)值通常承載了更多的信息量。因此,將中間層數(shù)據(jù)中的大多數(shù)數(shù)值變?yōu)?就不會(huì)損失主要信息。對(duì)此可以利用稀疏化數(shù)據(jù)的表示方式來壓縮數(shù)據(jù),從而減少通信量和存儲(chǔ)空間的占用。
量化則是將傳輸?shù)闹虚g結(jié)果從原本32 位比特的浮點(diǎn)數(shù)映射到8位或者更少比特表示的整型數(shù)據(jù)上。這種方式可以有效壓縮通信數(shù)據(jù),但是會(huì)帶來額外的誤差,進(jìn)而會(huì)影響到訓(xùn)練的精度。因此,需要根據(jù)實(shí)際的數(shù)據(jù)分布情況來設(shè)計(jì)量化的位數(shù)和方式。
大型模型通常存在“過參數(shù)化”的問題,即雖然模型的參數(shù)眾多,但實(shí)際上模型主要依賴于低秩維度的內(nèi)容。為此,可以采用一些基于低秩分解的訓(xùn)練方法,例如低秩適應(yīng)(LoRA)[4]算法。該方法新增了一個(gè)先降維再升維的旁路。這樣的設(shè)計(jì)可以天然地降低中間數(shù)據(jù)的維度。將降維矩陣的輸出位置作為切分點(diǎn)也可以達(dá)到減少通信時(shí)間的目的。
大規(guī)模語言模型的訓(xùn)練任務(wù)包括語言模型預(yù)訓(xùn)練和下游任務(wù)微調(diào)兩個(gè)階段。為了應(yīng)對(duì)跨云模型訓(xùn)練的挑戰(zhàn),本文中我們將介紹一種基于跨云大模型訓(xùn)練框架“星云”[5]的預(yù)訓(xùn)練和微調(diào)方法。如圖2所示,“星云”是一個(gè)專門面向云際環(huán)境的深度學(xué)習(xí)模型統(tǒng)一訓(xùn)練框架,該框架包含了任務(wù)層、訓(xùn)練優(yōu)化層、并行計(jì)算層、通信優(yōu)化層、安全和隱私層、管理和調(diào)度層以及云硬件層等7 個(gè)功能層,支持在低帶寬網(wǎng)絡(luò)環(huán)境下,利用不同算力集群的異構(gòu)算力進(jìn)行大模型的跨云訓(xùn)練,在通信優(yōu)化方面采用了參數(shù)稀疏化、量化以及低秩分解等有效技術(shù)來確保集群間信息傳輸?shù)妮p量化和最小化模型精度損失,并主要采取流水線并行的方式來實(shí)現(xiàn)在多個(gè)算力集群間的并行計(jì)算。
▲圖2 “星云”的框架結(jié)構(gòu)示意圖
針對(duì)多語言模型預(yù)訓(xùn)練任務(wù),我們基于“星云”實(shí)現(xiàn)了一套支持跨云多源數(shù)據(jù)訓(xùn)練的多語言模型預(yù)訓(xùn)練方案,如圖3 所示。為了優(yōu)化訓(xùn)練過程,該方案參考ELECTRA[6]架構(gòu)設(shè)計(jì)了一種適合跨云使用的模型架構(gòu),由生成器(Generator)和判別器(Discriminator)兩部分組成。其中,生成器根據(jù)輸入內(nèi)容生成對(duì)應(yīng)的字符序列,判別器則對(duì)生成的字符序列進(jìn)行判斷,以達(dá)到優(yōu)化訓(xùn)練的目的。
▲圖3 基于“星云”的跨云模型預(yù)訓(xùn)練框架
在模型訓(xùn)練過程中,生成器只需要將輸出的字符序列單向傳遞給判別器。當(dāng)進(jìn)行跨云訓(xùn)練時(shí),生成器和判別器會(huì)被部署在不同的云集群上,此時(shí)生成器只需向判別器傳輸字符串序列即可。在這個(gè)過程中,所需的數(shù)據(jù)傳輸量較少,帶寬需求也較低,這有利于跨云大模型的訓(xùn)練。此外,通過共享生成器和判別器間的詞表、跨云只傳輸字符ID 序列的方式不僅可以進(jìn)一步減少數(shù)據(jù)傳輸量,還可以避免數(shù)據(jù)泄露。
為了支持多源數(shù)據(jù)多方協(xié)同訓(xùn)練,該架構(gòu)需要使用多個(gè)生成器來共同訓(xùn)練判別器。不同的生成器對(duì)應(yīng)不同的訓(xùn)練數(shù)據(jù)和不同的預(yù)訓(xùn)練模型,例如:可以讓每個(gè)生成器負(fù)責(zé)一個(gè)語種的生成,多個(gè)生成器共同支持多語言判別器的訓(xùn)練,這樣可以提高訓(xùn)練效率,增強(qiáng)判別器的泛化能力。
在模型訓(xùn)練過程中,生成器和判別器之間只有單向的字符標(biāo)識(shí)序列傳輸,數(shù)據(jù)量小,受網(wǎng)絡(luò)帶寬瓶頸影響較小。為了提高集群資源的利用率和訓(xùn)練速度,本文中我們采用了數(shù)據(jù)并行的方式在生成器集群和判別器集群內(nèi)部分別進(jìn)行訓(xùn)練。為了驗(yàn)證該框架在異構(gòu)算力環(huán)境下的模型訓(xùn)練能力,我們將生成器部署在GPU 算力集群,將判別器部署在NPU 算力集群。該框架的跨云集群部署及并行計(jì)算方式如圖4 所示。這種部署和計(jì)算方式可以提高訓(xùn)練效率,優(yōu)化資源利用率。
▲圖4 跨云預(yù)訓(xùn)練集群算力互聯(lián)及并行計(jì)算方式
為了測(cè)試跨云模型預(yù)訓(xùn)練的效果,實(shí)驗(yàn)中我們利用包含116種語言的單語數(shù)據(jù)和15種語言的平行語料數(shù)據(jù),進(jìn)行基于生成器-判別器架構(gòu)的跨云大模型訓(xùn)練。使用多語言預(yù)訓(xùn)練語言模型ERNIE-M-Base 來初始化生成器,使用ERNIEM-Large 來初始化判別器,訓(xùn)練得到的判別器ERNIE-MExtra 則作為最終的多語言大模型。為了測(cè)試ERNIE-MExtra 模型的多語言能力,本文中我們首先使用英語數(shù)據(jù)進(jìn)行微調(diào),然后在15種語言的跨語言推理任務(wù)上進(jìn)行了測(cè)試。測(cè)試結(jié)果如表1所示。
▼表1 跨云模型預(yù)訓(xùn)練最終模型精度對(duì)比
由表1可知,ERNIE-M-Extra模型在15種語言的跨語言推理任務(wù)中表現(xiàn)出最優(yōu)的平均成績,相比于基礎(chǔ)模型ERNIE-M-Large,其精度提高了0.2。
為了測(cè)試模型訓(xùn)練過程的吞吐率,我們進(jìn)行了在云集群內(nèi)和跨云集群環(huán)境下的測(cè)試。實(shí)驗(yàn)結(jié)果顯示,跨云訓(xùn)練的吞吐率達(dá)到了單云集群訓(xùn)練的85%。在GPU 算力集群和NPU算力集群環(huán)境下,針對(duì)異構(gòu)環(huán)境下硬件加速效果進(jìn)行了實(shí)驗(yàn),并對(duì)比了由8卡NPU算力增加到64卡的模型訓(xùn)練速度。實(shí)驗(yàn)結(jié)果表明,增加算力卡后訓(xùn)練速度提高了4.34倍。
為了驗(yàn)證模型在跨云集群訓(xùn)練中的有效性,本文對(duì)比了單云環(huán)境和跨云環(huán)境下模型訓(xùn)練的損失曲線,如圖5 所示??梢钥闯?,跨云集群訓(xùn)練可以保持訓(xùn)練過程的持續(xù)收斂。
▲圖5 單云訓(xùn)練和跨云訓(xùn)練損失對(duì)比
綜上所述,采用生成器-判別器架構(gòu)進(jìn)行多語言大模型訓(xùn)練,可以在跨云環(huán)境下保持較高的吞吐率,確保訓(xùn)練過程持續(xù)收斂。此外,增加算力資源可以有效提高訓(xùn)練速度。
微調(diào)是指在預(yù)訓(xùn)練大模型的基礎(chǔ)上,為了特定的任務(wù)進(jìn)行有針對(duì)性的模型訓(xùn)練。本文中我們將分別介紹基于編碼器-解碼器架構(gòu)的自然語言生成微調(diào)訓(xùn)練和基于編碼器架構(gòu)的自然語言理解微調(diào)訓(xùn)練。
2.2.1 針對(duì)自然語言生成任務(wù)的微調(diào)
針對(duì)基于編碼器-解碼器架構(gòu)的自然語言生成模型,本文以機(jī)器翻譯任務(wù)為例,參照ABNet[13]模型架構(gòu)設(shè)計(jì),實(shí)現(xiàn)基于“星云”的跨云機(jī)器翻譯模型微調(diào)訓(xùn)練。ABNet 是一種用于微調(diào)訓(xùn)練的模型架構(gòu),在編碼器和解碼器的各個(gè)子層之間插入需要訓(xùn)練的適配器模塊。在訓(xùn)練過程中,預(yù)訓(xùn)練模型的參數(shù)被凍結(jié)。該微調(diào)方法利用預(yù)訓(xùn)練語言模型的知識(shí),但不調(diào)整預(yù)訓(xùn)練模型的參數(shù)。如圖6 所示,針對(duì)源語言和目標(biāo)語言的預(yù)訓(xùn)練模型分別被部署在兩個(gè)云集群中。
▲圖6 基于ABNet的跨云微調(diào)訓(xùn)練方法
在模型訓(xùn)練時(shí),每進(jìn)行一步前向計(jì)算和反向傳播,編碼端和解碼端都需要進(jìn)行一次跨云中間數(shù)據(jù)傳輸。數(shù)據(jù)傳輸量與數(shù)據(jù)批處理大?。˙)、序列長度(S)、隱藏層維度(H)等因素相關(guān)。需要傳遞的數(shù)據(jù)規(guī)模如公式(3)所示:
在微調(diào)訓(xùn)練過程中,數(shù)據(jù)傳輸占用了大量的網(wǎng)絡(luò)帶寬資源。傳輸時(shí)間的長短對(duì)訓(xùn)練速度的影響很大。當(dāng)網(wǎng)絡(luò)帶寬過低時(shí),跨云訓(xùn)練就無法達(dá)到加速訓(xùn)練的目的。因此,為了提高模型的訓(xùn)練速度,“星云”框架從云間通信和并行訓(xùn)練兩個(gè)方面進(jìn)行綜合優(yōu)化。
為了解決在訓(xùn)練過程中數(shù)據(jù)傳輸量大、傳輸時(shí)間長的問題,針對(duì)需要跨云傳輸?shù)闹虚g數(shù)據(jù),可以采用壓縮通信的策略進(jìn)行優(yōu)化,以減少單次傳輸?shù)臄?shù)據(jù)量。可采用的壓縮通信方法主要包括量化、稀疏化、低秩分解等。為了減小壓縮通信對(duì)模型精度的影響,可以組合使用不同的壓縮策略,并在訓(xùn)練的不同階段采用不同的壓縮傳輸策略。
為了解決在模型訓(xùn)練過程中由串行計(jì)算導(dǎo)致的資源利用率不高的問題,“星云”采用并行優(yōu)化策略來優(yōu)化訓(xùn)練過程。在云集群間采用流水線并行,云集群內(nèi)采用數(shù)據(jù)并行的方式,采用多微批次以流水線并行的方式在云集群間執(zhí)行計(jì)算和數(shù)據(jù)傳輸任務(wù),可以減少同一時(shí)刻資源的停等,提高參與訓(xùn)練各資源的利用率。ABNet架構(gòu)在跨云環(huán)境的部署及并行計(jì)算方式如圖7所示。
▲圖7 跨云微調(diào)訓(xùn)練算力互聯(lián)及并行計(jì)算方式
為了進(jìn)行跨云集群模型微調(diào)的實(shí)驗(yàn),我們選擇IWSLT’14 的西班牙語(Es)到英語(En)的機(jī)器翻譯任務(wù),并采用ABNet跨云架構(gòu)基于預(yù)訓(xùn)練語言模型進(jìn)行微調(diào)訓(xùn)練。在該實(shí)驗(yàn)中,我們使用多語言預(yù)訓(xùn)練模型ERNIE-M-base-cased作為編碼端,使用英文預(yù)訓(xùn)練模型BERT-Base作為解碼端,并將它們分別部署在兩個(gè)配備了8張NVIDIA V100 GPU顯卡的云集群上。
實(shí)驗(yàn)結(jié)果顯示,完全重新訓(xùn)練的Transformer-Base 模型[14]的雙語評(píng)估替換(BLEU)值[15]為39.60,在本地微調(diào)訓(xùn)練的ABNet-Local 模型為43.19,采用跨云微調(diào)訓(xùn)練的ABNet-Cloud模型為41.92。實(shí)驗(yàn)結(jié)果表明,采用基于預(yù)訓(xùn)練模型微調(diào)的翻譯模型性能優(yōu)于僅使用訓(xùn)練數(shù)據(jù)重新訓(xùn)練的Transformer-Base 模型。相對(duì)于僅在本地集群訓(xùn)練的ABNet-Local模型,跨云微調(diào)的ABNet-Cloud模型的BLEU值降低了1.27個(gè),這是由于壓縮通信導(dǎo)致了模型精度損失。然而,相對(duì)于Transformer-Base 模型,ABNet-Cloud 仍然提高了2.32個(gè)BLEU值。這表明在跨云環(huán)境中,基于預(yù)訓(xùn)練語言模型進(jìn)行微調(diào)訓(xùn)練可以復(fù)用預(yù)訓(xùn)練模型的知識(shí),從而提高最終翻譯模型的精度。
為了研究壓縮通信策略對(duì)模型訓(xùn)練的影響,我們對(duì)不同壓縮通信策略下的模型訓(xùn)練速度和最終模型精度進(jìn)行了對(duì)比。其中,前向計(jì)算數(shù)據(jù)傳輸采用FP16 半精度及其與不同壓縮率的SVD 分解的組合,反向傳播采用固定的INT8 量化壓縮。實(shí)驗(yàn)結(jié)果如表2所示,壓縮率越高,模型訓(xùn)練速度越快。在FP16(SVD(0.2))+INT8 的壓縮策略下,模型訓(xùn)練單步消耗時(shí)間僅為不壓縮訓(xùn)練的19%。然而,該策略下模型精度損失了4.19個(gè)BLEU值。在所驗(yàn)證的壓縮策略中,F(xiàn)P16(SVD(0.6))+INT8策略下得到的模型精度最佳(達(dá)到41.92),單步訓(xùn)練時(shí)間僅為不壓縮的32%,訓(xùn)練速度提升了3倍以上。
2.2.2 針對(duì)自然語言理解任務(wù)的微調(diào)
自然語言理解包括文本分類、文本蘊(yùn)含、閱讀理解等任務(wù)。通常人們采用基于編碼器類型的預(yù)訓(xùn)練模型進(jìn)行微調(diào)訓(xùn)練。為了在跨云環(huán)境下微調(diào)這類模型,可以采用低秩結(jié)構(gòu)的思想對(duì)通信數(shù)據(jù)進(jìn)行壓縮[16]。具體的做法如下:
1) 對(duì)于模型中的每一個(gè)Transformer 塊,假設(shè)其輸入和輸出矩陣的維度為Rb×d,即在跨云訓(xùn)練時(shí),通信數(shù)據(jù)的維度也為Rb×d。其中,b表示batch_size,d表示模型的維度參數(shù)。
2)對(duì)于其中一個(gè)Transformer 塊的線性層,可以進(jìn)行奇異值分解來降低通信數(shù)據(jù)的維度。具體做法是:將該線性層的權(quán)重矩陣W∈Rm×d進(jìn)行奇異值分解,選取前r個(gè)奇異值,得到3 個(gè)矩陣u、s和v,維度分別為Rm×r、Rr×r和Rr×d;然后,使用3個(gè)連續(xù)的線性層來替代原始的線性層,這3個(gè)線性層的權(quán)重分別為U、S和V,如圖8所示。
▲圖8 低秩分解過程
3)將用于跨云通信的模型拆分點(diǎn)設(shè)置在S和V層之間,并移除該Transformer塊的直接連接分支。這樣,通信數(shù)據(jù)的維度會(huì)變成Rb×r,即原有數(shù)據(jù)的r/d倍。
根據(jù)上述的壓縮方案,以BERT-Base 為基礎(chǔ)模型,在GLUE數(shù)據(jù)集[17]和SQuAD數(shù)據(jù)集[18]上進(jìn)行跨云微調(diào)訓(xùn)練,并分析該算法在不同層索引上對(duì)訓(xùn)練精度的影響。將上述算法中的r設(shè)置為8,實(shí)驗(yàn)結(jié)果如圖9所示。其中,橫軸表示拆分的層級(jí)索引,縱軸表示準(zhǔn)確率。需要說明的是,由于各個(gè)數(shù)據(jù)集表現(xiàn)出的規(guī)律一致,這里僅以SST-2 和QNLI 數(shù)據(jù)集為代表。
▲圖9 基于低秩分解的跨云微調(diào)
由圖9 可知,r值較小且拆分位置處于模型的底層會(huì)導(dǎo)致訓(xùn)練精度顯著下降。但是,當(dāng)拆分位置位于模型的高層時(shí),r值的大小對(duì)訓(xùn)練精度沒有影響。在實(shí)驗(yàn)中,我們選擇將模型拆分在第11 層,然后針對(duì)不同的r值(分別為8、16和32)進(jìn)行測(cè)試,結(jié)果如表3 所示。特別地,在r等于8 的情況下,傳輸數(shù)據(jù)量降為原有的1/96,同時(shí)精度維持在原有模型的相當(dāng)水平。
▼表3 11層拆分微調(diào)結(jié)果(k表示1 000)
通過跨云場景的模型微調(diào)訓(xùn)練實(shí)驗(yàn)驗(yàn)證,我們證實(shí)了跨云微調(diào)的可行性。用戶可以利用分布在不同云集群上的預(yù)訓(xùn)練模型來微調(diào)目標(biāo)任務(wù)模型,并通過復(fù)用已有模型的知識(shí)來提升模型性能。這比僅使用自身數(shù)據(jù)訓(xùn)練模型更為優(yōu)越。由于模型被拆分成多個(gè)部分,用戶可以將模型的底層部分置于可信集群上,從而確保其他集群無法獲得標(biāo)注數(shù)據(jù),保障用戶標(biāo)注數(shù)據(jù)的安全性。
生成算法、預(yù)訓(xùn)練模型、多模態(tài)等技術(shù)的融合催生了以ChatGPT為代表的人工智能生成內(nèi)容(AIGC)的爆發(fā),進(jìn)而帶來了高算力需求。以ChatGPT 為例,它使用了10 000 塊A100 GPU 進(jìn)行訓(xùn)練。此外,它的部署成本也很高,根據(jù)國盛證券報(bào)告估算,它的每日咨詢量對(duì)應(yīng)的算力需求達(dá)到了上萬塊A100。所以,利用跨云訓(xùn)練可以將廣泛分布的算力結(jié)合起來,這是應(yīng)對(duì)大模型對(duì)算力高需求的一種解決方案,從而有效應(yīng)對(duì)算力對(duì)大模型訓(xùn)練的制約。同時(shí),跨云訓(xùn)練可以利用閑散算力,有效解決碎片化問題,提高云集群資源的利用率。
除了算力限制,與個(gè)人信息強(qiáng)相關(guān)的應(yīng)用,例如語音助手、心理咨詢等,也關(guān)注隱私保護(hù)問題??缭朴?xùn)練機(jī)制具備較好的隱私保護(hù)能力。用戶可以通過構(gòu)建本地設(shè)備與云的協(xié)同訓(xùn)練來實(shí)現(xiàn)個(gè)人信息在本地處理、云端提供算力的方式,從而保證個(gè)人信息不被泄露。
本文的研究表明,在跨云環(huán)境下進(jìn)行大規(guī)模語言模型訓(xùn)練是可行的,是一種提高算力利用率的方案。通過采用模型分割、拆分學(xué)習(xí)、跨云協(xié)同、壓縮通信和模型復(fù)用等關(guān)鍵技術(shù),該方案能夠有效解決跨云訓(xùn)練過程中可能出現(xiàn)的算力和數(shù)據(jù)不足的問題,并提高訓(xùn)練速度和效率。這些技術(shù)在自然語言處理領(lǐng)域的應(yīng)用將有望帶來更為精準(zhǔn)和高效的文本處理和語義分析結(jié)果,并具備較好的隱私保護(hù)能力,為智能化應(yīng)用和人機(jī)交互等領(lǐng)域的發(fā)展提供有力的支持。
致謝
感謝百度飛槳團(tuán)隊(duì)吳志華和鞏偉寶,以及哈爾濱工業(yè)大學(xué)(深圳)施少懷教授對(duì)本文寫作提供的幫助!