發(fā)布史上最大NLG模型:基于Transformer架構(gòu),170億參數(shù)加持
近年來,BERT、GPT-2等深度學(xué)習(xí)語言模型,極大地提高了問答、摘要、人機(jī)對話等下游自然語言處理任務(wù)的性能。
而今天,微軟研究院重磅發(fā)布了有史以來最大的基于Transformer架構(gòu)的語言生成模型 Turing-NLG。此模型的參數(shù)高達(dá)170億,是英偉達(dá)的Megatron(也就是現(xiàn)在第二大Transformer模型)的兩倍,是OpenAI的GPT-2的十倍。
基于Transformer的架構(gòu),意味著該模型可以生成詞來完成開放式文本任務(wù)。除了填充不完整語句外,它還可以對輸入文檔的問題和摘要生成答案。
而微軟之所以能夠開發(fā)出 Turing-NLG 這一重磅級的語言生成模型,實際上離不開其差不多同一時間開源的深度學(xué)習(xí)庫——DeepSpeed。
微軟表示,DeepSpeed 能夠讓他們降低模型并行度(從16降低到4),將每個節(jié)點的批處理大小增加4倍,并將訓(xùn)練時間減少到原來的1/3。不僅如此,DeepSpeed 使用更少的GPU 就可以提高大型模型的訓(xùn)練效率。
一、Turing-NLG:自帶170億參數(shù),性能超其他最佳模型
Turing-NLG 一個基于Transformer的生成語言模型,擁有 170億參數(shù),在諸多語言模型基準(zhǔn)上都超越了當(dāng)前性能最佳的其他模型,并且在應(yīng)用于問答、摘要等實踐任務(wù)時,表現(xiàn)出色。此前的問答和摘要系統(tǒng)依賴于從文檔中提取現(xiàn)有的內(nèi)容作為生成答案和摘要的“立足點”,這樣生成的結(jié)果往往是不自然且不連貫的。而Turing-NLG 則能夠非常自然地完成問答和摘要任務(wù)。
1、開發(fā)Turing-NLG 所依賴的硬件和軟件突破
實際上,參數(shù)超過 13億的任何模型都無法裝入單個的GPU(即便是內(nèi)存為 32 GB),因而模型本身需要在多個 GPU 上實現(xiàn)并行化。
據(jù)微軟介紹,訓(xùn)練 Turing-NLG 模型主要基于硬件和軟件實現(xiàn)的以下幾個突破:
第一,他們使用了NVIDIA 新一代超級計算機(jī) DGX-2的硬件配置,結(jié)合InfiniBand連接技術(shù),從而讓GPU 之間的通信比此前更迅速得多。
第二,他們在 NVIDIA的 Megatron-LM 框架上應(yīng)用 Tensor切片對橫跨 4 個 NVIDIA V100 GPU 的模型進(jìn)行切片處理;
第三,ZeRO 優(yōu)化器和DeepSpeed庫,則讓他們降低了模型的并行度(從16降到4 ),將每個節(jié)點的批處理大小增加了4倍,并將訓(xùn)練時間減少到原來的1/3。
并且,DeepSpeed 使用更少的GPU 就可以提高大型模型的訓(xùn)練效率,它在訓(xùn)練大小為 512 的批處理時僅需要256個NVIDIA的 GPU,而僅使用Megatron-LM 框架的模型則需要1024個NVIDIA的 GPU。
相同條件設(shè)置下,Turing-NLG 模型和Open AI 的GPT-2 、Megatron-LM 模型在標(biāo)準(zhǔn)語言任務(wù)上的性能指標(biāo)——WikiText-103 困惑度(越低性能越好)、LAMBADA 下一個詞的預(yù)測準(zhǔn)確度(越高性能越好)的對比情況如下表:
Open AI 使用了額外的處理(停用詞過濾)讓 GPT-2 實現(xiàn)了更好的表現(xiàn),而Turing-NLG 和Megatron-LM 模型都沒有使用到該停用詞過濾技術(shù)。無論在WikiText-103 困惑度上還是在LAMBADA 下一個詞的預(yù)測準(zhǔn)確度上,Turing-NLG 模型的表現(xiàn)都優(yōu)于Open AI GPT-2和Megatron-LM 模型。而下圖則展示了Turing-NLG模型(藍(lán)線和綠線)和Megatron-LM 模型(橙線)在驗證困惑度上的表現(xiàn)對比情況:
(雷鋒網(wǎng)出品)圖1:Turing-NLG 17B 模型(藍(lán)線和綠線)和Megatron-8B 模型(橙線)在驗證困惑度上的對比圖。虛線表示當(dāng)前性能最佳模型實現(xiàn)的最低驗證損失。圖中從藍(lán)線到綠色的轉(zhuǎn)換,代表 Turing-NLG 模型的性能從弱于當(dāng)前性能最佳模型到超越當(dāng)前性能最佳模型的轉(zhuǎn)變。據(jù)圖顯示,Turing-NLG 模型在驗證困惑度上的表現(xiàn)也始終要比Megatron-LM 模型要好。
2、Turing-NLG 在問答和摘要任務(wù)上實現(xiàn)的兩大突破
在問答和摘要任務(wù)上,Turing-NLG 分別實現(xiàn)了兩個方面的突破:
1)實現(xiàn)了直接生成問答或在零樣本下生成問答的能力很多網(wǎng)絡(luò)用戶在網(wǎng)頁上搜索問題的時候,往往會在答案頁面的頂部看到一張答案卡片,而這些答案大多為某個段落上下文中可以回答問題的句子。
Turing-NLG 則可以直接回答用戶的問題,從而滿足他們的信息搜索需求。例如,當(dāng)用戶搜索“Jason Mraz 與誰訂婚了?”時,大多數(shù)搜索引擎在展示完整的答案頁面時,會突出顯示“Tristan Prettyman”這個名字,如下圖所示:
而Turing-NLG則會直接用一個完整的句子:“Jason Mraz 與Tristan Prettyman訂婚了”。
在網(wǎng)頁搜索以外的應(yīng)用場景中,這種直接生成回答的能力還要更加重要,例如,當(dāng)用戶詢問其個人輸入(如電子郵箱或Word 文檔)時,這種能力能夠讓 AI 助手智能化地對此問題進(jìn)行回復(fù),更加自然而不顯得突兀。Turing-NLG 模型還擁有“零樣本”問答的能力,也就是說能夠在沒有上下文段落的情況下,回答問題。下圖展示了該模型在沒有給出段落的情況下直接回答問題的兩個案例:
(雷鋒網(wǎng)出品)
在該情況下,Turing-NLG 模型依賴預(yù)訓(xùn)練期間所獲得的知識,生成了最終的答案。下圖展示了Turing-NLG 模型和此前的基準(zhǔn)系統(tǒng)(類似于CopyNet的 LSTM模型)在事實正確性(Factual Correctness)和語法正確性(Grammatical Correctness)兩項指標(biāo)上的對比情況:
微軟研究者發(fā)現(xiàn),大型的預(yù)訓(xùn)練模型需要更少下游任務(wù)的示例來更好地對其進(jìn)行學(xué)習(xí),而他們僅僅只有最多100,000 個“直接”回答問題的樣本,并且模型訓(xùn)練的示例也非常少,在這樣的情況下,Turing-NLG 模型無論在事實正確性(Factual Correctness)和語法正確性(Grammatical Correctness)上,都比 LSTM 基準(zhǔn)模型的表現(xiàn)更好。
2)能夠在更少的監(jiān)督下生成抽象式摘要在自然語言處理的文獻(xiàn)中,摘要分為兩種:提取式摘要:從文檔中提取出少量的句子作為摘要內(nèi)容;抽象式摘要:使用 NLG 模型生成摘要,就像人類做摘要的方式一樣。而Turing-NLG模型則旨在像人類一樣,為電子郵件、博客文章、Word 文檔甚至是Excel 表格和PPT 演示等各種各樣的文本文檔“編寫”抽象式摘要。
其中一個主要的挑戰(zhàn)便是缺少面向這些場景的有監(jiān)督的訓(xùn)練數(shù)據(jù),因為人類并不總會明確地對這些文檔類型做摘要處理。而 Turing-NLG 的強(qiáng)大之處則在于,它非常擅長理解文本,以至于不需要太多的監(jiān)督就能夠比其他摘要技術(shù),表現(xiàn)更好。
為了讓Turing-NLG 盡可能廣泛地為不同類型的文本生成摘要,研究者們還在幾乎所有對外開放的摘要數(shù)據(jù)集上,采用多任務(wù)模式對Turing-NLG模型進(jìn)行了微調(diào)。下圖展示了 Turing-NLG 模型和 PEGASUS(同樣為最近新提出的基于Transformer的語言模型)、SOTA(先前性能最佳的語言模型)在 ROUGE評價指標(biāo)上的對比情況:
其中需要注意的是,Turing-NLG 采用多任務(wù)模式進(jìn)行了訓(xùn)練,即在所有數(shù)據(jù)集上進(jìn)行了同步訓(xùn)練。而眾所周知,ROUGE評價指標(biāo)在摘要任務(wù)方面存在一定的缺陷,因而在下表中展示了Turing-NLG 模型對一些公開文章輸出的摘要內(nèi)容以供參考:
二、ZeRO DeepSpeed:優(yōu)化器+深度學(xué)習(xí)庫助力大模型訓(xùn)練
正如上所述,Turing-NLG是建立在ZeRO 優(yōu)化器和DeepSpeed庫基礎(chǔ)上開發(fā)出來的。DeepSpeed作為微軟最新發(fā)布的深度學(xué)習(xí)開源庫,能夠提高模型訓(xùn)練的速度、成本以及可用性。更為重要的是,最新發(fā)布的DeepSpeed解鎖了其訓(xùn)練1000億參數(shù)模型的能力,雖然不是超參數(shù)的數(shù)量,但是在大規(guī)模數(shù)據(jù)訓(xùn)練領(lǐng)域也算是首屈一指了。
DeepSpeed與PyTorch兼容,里面內(nèi)嵌ZeRO并行優(yōu)化器,利用這個優(yōu)化器,可以大大減少模型和數(shù)據(jù)并行性所需的資源,同時可以大幅度增加可訓(xùn)練的參數(shù)數(shù)量。具體而言,零冗余優(yōu)化器(Zero Redundancy Optimizer,簡稱Zero)是一種面向大規(guī)模分布式深度學(xué)習(xí)的新型存儲優(yōu)化技術(shù)。其可以在當(dāng)前一代GPU集群上訓(xùn)練1000億個參數(shù)的深度學(xué)習(xí)模型,吞吐量大概是當(dāng)前最棒系統(tǒng)的3到5倍。
1、使用ZeRO克服數(shù)據(jù)并行性和模型并行性的局限性
論文已發(fā)布,地址:https://arxiv.org/pdf/1910.02054.pdf
毋庸置疑,大型的深度學(xué)習(xí)模型可以顯著提高準(zhǔn)確度,但是直接訓(xùn)練數(shù)帶有十億參數(shù)的模型,硬件往往受不了。為了解決這種硬件內(nèi)存問題,通常的解決方案是兼顧計算資源、效率,但是往往卻有以下兩點限制:
數(shù)據(jù)的并行性對節(jié)約設(shè)備的內(nèi)存起不到什么作用:即使32G的GUP,在面對10億個參數(shù)的模型也束手無策。
由于細(xì)粒度并行計算和通信昂貴,模型并行不能有效地擴(kuò)展到單個節(jié)點之外。
但是,使用ZeRO可以克服數(shù)據(jù)并行性和模型并行性的局限。ZeRO通過跨數(shù)據(jù)并行進(jìn)程劃分模型狀態(tài)(參數(shù),梯度和優(yōu)化器狀態(tài)),在一定程度上能夠消除數(shù)據(jù)并行進(jìn)程之間的內(nèi)存冗余。ZeRO還能夠在模型訓(xùn)練期間動態(tài)規(guī)劃通信,保證了分布式設(shè)備之間共享必要的狀態(tài),從而保持?jǐn)?shù)據(jù)粒度的計算和通信量。換句話說ZeRO允許每個設(shè)備的內(nèi)存使用量隨數(shù)據(jù)并行性的程度而進(jìn)行線性擴(kuò)展,也即只要聚合的設(shè)備內(nèi)存足夠大,ZeRO支持的數(shù)據(jù)并行性可以“拿下”任意大小的模型。
ZeRO主要有三個優(yōu)化階段,如下圖所示分,這三個階段別是:優(yōu)化器狀態(tài)、梯度和參數(shù)的劃分。
圖注:與標(biāo)準(zhǔn)數(shù)據(jù)并行基準(zhǔn)相比,ZeRO的三個階段節(jié)省的內(nèi)存和通信量。其中Ψ表示模型中參數(shù)的數(shù)量,K是優(yōu)化器特定的常數(shù)項。
更為具體的:優(yōu)化器狀態(tài)分區(qū)(Pos)階段內(nèi)存降低到了原來的1/4;增加梯度分區(qū)((Pos+g)階段內(nèi)存減少到原來的1/8,此外。通信量與數(shù)據(jù)并行度相同;添加參數(shù)分區(qū)階段內(nèi)存減少量與數(shù)據(jù)并行度Nd成線性關(guān)系。啟用上述所有個階段后,使用ZeRO就可以用1024個 NVIDIA 型號的GPU 上訓(xùn)練一個萬億參數(shù)模型。
如果使用具16位精度的Adam來訓(xùn)練一個萬億參數(shù)級別的模型大概需要16TB的內(nèi)存才能讓優(yōu)化器保持訓(xùn)練狀態(tài)。16TB除以1024等于16GB,還好在GPU內(nèi)存的合理范圍。
2、DeepSpeed:PyTorch兼容性和系統(tǒng)性能
前面也提到,最先發(fā)布DeepSpeed能夠與PyTorch兼容,并且引入的輕量級API 包含最新的訓(xùn)練技術(shù),例如ZeRO,分布式訓(xùn)練,混合精度等等。在操作層面上,只需對PyTorch模型進(jìn)行簡單的幾行代碼更改,就可以利用DeepSpeed提高模型訓(xùn)練的速度和規(guī)模。
左圖:與Megatron-LM相比吞吐量的程度。右圖:使用和不使用ZeRO時,對于單獨使用數(shù)據(jù)并行性的可訓(xùn)練模型大小比較。
如上圖所示,DeepSpeed在規(guī)模、 速度、成本、 可用性這四個方面標(biāo)新都非常出色。
規(guī)模:當(dāng)前最先進(jìn)的大規(guī)模訓(xùn)練,例如OpenAI GPT-2,NVIDIA Megatron-LM和Google T5,其大小也就分別是15億、83億和110億個參數(shù)。而有ZeRO加持的DeepSpeed能夠運(yùn)行1000億個參數(shù)。
速度:現(xiàn)有的吞吐量比當(dāng)前最先進(jìn)的技術(shù)都要高出5倍。例如為了能夠在GPT系列有效訓(xùn)練模型,DeepSpeed將ZeRO功率(ZeRO-powered)數(shù)據(jù)并行與NVIDIA Megatron-LM模型并行相結(jié)合。另外,在具有低帶寬互連的NVIDIA GPU群集上,對具有15億參數(shù)的標(biāo)準(zhǔn)GPT-2模型,與單獨使用Megatron-LM相比,吞吐量提高了3.75倍。這種速度的提高與DeepSpeed更高的內(nèi)存效率以及使用較低程度的模型并行有關(guān),當(dāng)然較大的批處理量也在提高吞吐量的工作中做了貢獻(xiàn)。
成本:提高吞吐量的同時,對訓(xùn)練成本的節(jié)約也是非常大的。例如,要訓(xùn)練具有200億個參數(shù)的模型,傳統(tǒng)則比DeepSpeed需要的資源多3倍。
可用性:只需更改幾行代碼就可在PyTorch模型中使用DeepSpeed和ZeRO。也就是說與當(dāng)前的模型并行性庫相比,DeepSpeed不需要重新設(shè)計代碼或重構(gòu)模型,即使對于參數(shù)多達(dá)60億的模型,也可以方便地使用ZeRO提供支持的數(shù)據(jù)并行性。
綜上所述,ZeRO-OS與不同類型的模型并行性互補(bǔ)并兼容,對于不適合單個節(jié)點的大型模型,它能夠顯著提升性能,節(jié)省資源等等優(yōu)點。
三、Reddit 評價:褒貶不一
正如文章開頭所稱,微軟DeepSpeed中利用ZeRO-OS來訓(xùn)練一個170億參數(shù)的Turing-NLG模型,訓(xùn)練結(jié)果表明其準(zhǔn)確性和訓(xùn)練效率高于當(dāng)前的最新方法。
與單獨使用NVIDIA Megatron-LM相比,ZeRO-OS能夠大量節(jié)省內(nèi)存,并使Turning-NLG模型的模型并行度降低到原來1/4,批處理量增大4倍,吞吐量增長3倍。
至于這自帶170億參數(shù)的Turing-NLG模型,也在社交媒體上引起了不少討論,Reddit的“r/MachineLearning”版面中,僅僅10個小時,相關(guān)話題熱度已經(jīng)達(dá)到了216,70多人發(fā)表了看法。
討論頁面:https://reddit/r/MachineLearning/comments/f1tuv0/r_turingnlg_a_17billionparameter_language_model/
跟帖最高的一條評論是這樣說的:幸好是170億個參數(shù),而不是170億個超參數(shù)。當(dāng)前最智能的機(jī)器有著超過100萬億的參數(shù)(他這里說的是人類),并不否認(rèn)效率也很重要,但是在資金充足的情況下,參數(shù)多一些并沒有什么錯呀。
針對這條評論,也有人回應(yīng)說,這種比較沒有意義,想想神經(jīng)元之間的質(zhì)量差異,尤其是最新研究單表明,單個人類神經(jīng)元也可以異或運(yùn)算,這就相當(dāng)于2層人工神經(jīng)網(wǎng)絡(luò)了。
也有評論將討論引入了復(fù)雜的生物學(xué):人類神經(jīng)元是其數(shù)千個突觸的復(fù)雜網(wǎng)絡(luò)。合理地說,突觸與NN參數(shù)可比約為1:1,而神經(jīng)元與NN神經(jīng)元可比約為1:1,因為在NN中,需要一小束“神經(jīng)元”才能達(dá)到復(fù)雜性。
吃瓜群眾質(zhì)疑道:提起圖靈,我就想起了“營銷”,
吃瓜群眾質(zhì)疑道:提起圖靈,我就想起了“營銷”,
當(dāng)然,也有更加專業(yè)的討論:知道添加多少個參數(shù)之后,下一步怎么辦?
這條消息的發(fā)布者指出了這項工作的不足:是否有足夠的VRAM在單個GPU上運(yùn)行模型仍然沒有解決。
也有網(wǎng)友提到了碳排放:更多的參數(shù)意味著更多的碳消耗。那么,你對此模型有何看法?~~~