GPT-3沒有親自上手,不如展望一下GPT-4?

ai科技評論 發佈 2020-08-07T03:09:15+00:00

近日,GPT-3在國內外引起了火爆的關注,各路大神都對它玩起了圖靈測試,不知道小夥伴們有沒有親手實踐一波,但是據說GPT-3的API申請列表早已滿了,需要做維護才能後期開放。

作者 | 青暮、陳大鑫

編輯 | 叢末

近日,GPT-3在國內外引起了火爆的關注,各路大神都對它玩起了圖靈測試,不知道小夥伴們有沒有親手實踐一波,但是據說GPT-3的API申請列表早已滿了,需要做維護才能後期開放。

那不如我們直接瞻仰一下GPT-4吧。

啊這?難道GPT-4已經誕生了?

並沒有,但是我們今天來討論一下實現GPT-4所需要的大概20萬億參數量的可行性。

reddit近日有一個議題引起了熱烈討論,樓主u/AxeLond稱自己發現一篇論文(ZeRO)能基本解釋從GPT-2到GPT-3的增益,即從15億參數增加到1,750億參數,是如何實現的。語言模型的性能與參數量、數據集規模和訓練吞吐量存在簡單的冪律關係。他甚至據此推出了下一代GPT即GPT-4的參數量、訓練數據量和訓練費用,規模驚人,稱得上是「國家級」語言模型,即便是巨頭科技企業都很可能負擔不起GPT-4的訓練。

ZeRO論文地址:https://arxiv.org/abs/1910.02054

現有的訓練大型深度學習模型的方法,例如數據和模型並行,已經顯示出基本的局限性,即無法將模型擬合到有限的內存中,同時兼具計算、通信和開發效率。

在論文中,研究人員開發了一種新穎的解決方案ZeRO以優化內存,在大大提高訓練速度的同時,增加模型參數。

圖:使用ZeRO-100B的600億參數模型的超線性可擴展性和訓練吞吐量。

ZeRO消除了數據和模型並行訓練中的內存冗餘,同時保持了低通信量和高計算粒度,從而能夠按設備數量成比例地縮放模型參數。

研究人員通過分析內存需求和通訊量,表明ZeRO可以使用現有的硬體擴展到超過1萬億個參數。

1 內存優化

基本的數據並行化不會減少每個設備的內存,如果要訓練超過14億參數的模型,32GB內存(GPU)是不足的。

論文還討論了如何對優化器狀態、梯度進行巧妙分區,來減少GPU節點之間通信的需求,從而實現內存優化。但是即便不使用模型並行,也要在1個GPU上運行1個模型副本。

ZeRO-100B可以在128個GPU上訓練多達130億參數的模型,而無需模型並行,平均每個GPU的吞吐量超過40 TFlops。

相比之下,如果沒有ZeRO,則最大的僅數據並行的可訓練模型就只有14億參數,每個GPU的吞吐量小於20 TFlops。

在英偉達 V100和128個節點的DGX-2集群中添加16路模型並行處理,可以訓練大約2,000億個參數。

從16路模型並行開始,可以運行15.4倍的大型模型,而不會真正造成性能損失,而在運行16路模型並行和64路數據並行(1024個GPU)時,性能僅比峰值性能低30%。

圖:比較模型狀態的每設備內存消耗,以及三個階段的ZeRO-DP優化。Ψ表示模型大小(參數數量),K表示優化器狀態的內存乘數,N_d表示DP度。在本例中,我們假設模型尺寸ψ=7.5B,DP為N_d=64,K=12,基於Adam優化器的混合精度訓練。

以上增益全部源自對梯度和優化器狀態進行分區。研究人員討論了參數分區,並說明它可以線性地減少內存(與GPU數量成比例)。

因此64個GPU可以運行64倍大的模型,並且僅需要50%的通信帶寬。不過有待商榷的是,研究人員實際上並沒有對此進行任何實現。

2 冪律關係

網友u/AxeLond表示,根據GPT-3引用OpenAI自家論文《Scaling Laws for Neural Language Models》的方法,我們能得出一個經驗規律,即語言模型的性能與參數量、數據集規模和訓練吞吐量存在簡單的冪律關係。

圖:隨著我們增加模型大小、數據集大小和用於訓練的計算吞吐量,語言建模性能會平穩提高。為了獲得最佳性能,必須同時放大所有三個因素。當沒有其他兩個瓶頸時,經驗性能與每個因素都有冪律關係。

損失(L)和模型參數數量(N)存在以下關係:

將模型參數轉換為吞吐量(C,單位petaFLOP/s-days),我們得到:

GPT-3能很好地擬合這個等式:

C和N之間的關係如下:

如果我們把GPT-2至GPT-3的參數擴大規模同等應用到GPT-3至GPT-4上面,那麼可以計算得到:C≈3.43×10^7,則N≈20萬億。

也就是說GPT-4將有20萬億個參數,因為GPT-3已經有1,750億個參數(C≈18,300)。

GPT-3訓練了3000億token,但是GPT-4的訓練需要大約16萬億token。據統計,英語維基百科有30億token,網絡抓取570 GB的數據有4000億token,因此要得到16萬億token,大概需要23 TB的數據,相當於Facebook每天要處理的數據量,也就是說,GPT-4的訓練將需要巨頭科技企業傾盡全力。

由於GPT-3的計算成本約為460萬美元,則同等硬體環境下訓練GPT-4的計算成本估計為86億美元。

如果從內存的角度來看,使用參數分區訓練更大的模型是如此容易,但是需要解決內存問題才能真正使它完全加載。

與V100相比,A100的計算量可增加3-6倍,但即便如此,成本也要高達14億美元。

英偉達在2020年第一季度報告的「數據中心」收入是11.5億美元,所以僅僅為了訓練「GPT-4」,幾乎需要全球1個季度(3個月)的顯卡供應,或者說至少得這個數量級。

3 GPT-4不值得?

這篇文章在reddit引起了熱烈討論。

網友tornado28認為,用如此巨額資金用於訓練一個語言模型是不值得的:「如果我們有86億美元用於建立一個語言模型,我建議投入50億美元作為研究經費,並可以用剩下的36億美元和3萬篇關於語言建模的新研究論文來訓練一個相當好的模型。」

但是,這3萬篇論文又會有多少是真正的算法突破呢?Science曾經在5月刊文提到:一些多年前的老算法經過微調,性能足以匹敵當前的SOTA,機器學習領域調參和鍊金研究模式仍然盛行,算法的泛化能力有限。一句話總結就是:有調查有真相!某些AI領域多年無實際進展。

網友bohreffect認為,GPT-4的存在不切實際,並且沒有必要:「先別說內存需求,世界上真的存在16萬億token的文本數據嗎?在某種意義上,這個假想的GPT-4的VC維度似乎會超過英語本身的複雜性,因此會產生過擬合。」

如果GPT-4沒有足夠的訓練數據,那就只需要記憶數據就行,這樣的話它的存在並沒有意義。

網友RusticScentedMale認為,問題不在於算法而在於計算:「GPT-3的成就不是通過發表更多的研究論文而是通過加大訓練費用獲得的,所以把錢繼續花在研究經費上或許不是最好的選擇,除非是關於如何更有效地構建並行計算晶片的研究。」

網友SrslyPaladin評估了所謂「16萬億token」是什麼概念,GPT-4可能是文本生成模型的極限:「16萬億token大概是所有已印刷書籍的大小:1.5億本書x每本書200頁x每頁300token= 9萬億token,但是你提出了一個很好的觀點,假想的GPT-4可能代表了文本輸入的有用性極限。」

如果GPT-4真的能學習全世界的文本數據,可能到時候就沒有什麼文本任務能難倒它,從而它能超仿真的通過圖靈測試。

網友thunder_jaxx提到了谷歌的一項新研究,谷歌提出了Gshard模型,這個模型有6000億參數,論文中的一張圖能明顯看出BLUE分數的提升與參數量增加的關係。

Gshard論文連結:https://arxiv.org/abs/2006.16668

網友thunder_jaxx表示,我們也應該看看MIT這篇關於深度學習的計算極限的文章,第12頁的圖很有洞察力。「僅僅擴大計算規模並不是唯一的出路。GPT-3可以做很多有用的任務,但是要完全解決語言的細微差別,需要的不僅僅是計算,因為有太多模型「記憶」(過擬合)的例子了。我們需要一些全新的東西,就像原始的transformer一樣。transformer為序列建模問題創建了一個範式轉換。我們需要這樣的東西來解決通用智能問題。」

ZeRO這篇論文再次揭示了深度學習模型性能和算力之間的強依賴關係,如何突破這個困境,以及如何在算法研究上取得真正的突破,仍然值得深思。

論文第12頁的圖:

圖:深度學習應用程式的性能改善與訓練該模型的計算負載有關(以千兆浮點運算為單位)。

參考資料:

https://www.reddit.com/r/MachineLearning/comments/i49jf8/d_biggest_roadblock_in_making_gpt4_a_20_trillion/

關鍵字: