📢 Gate廣場 #NERO发帖挑战# 秀觀點贏大獎活動火熱開啓!
Gate NERO生態周來襲!發帖秀出NERO項目洞察和活動實用攻略,瓜分30,000NERO!
💰️ 15位優質發帖用戶 * 2,000枚NERO每人
如何參與:
1️⃣ 調研NERO項目
對NERO的基本面、社區治理、發展目標、代幣經濟模型等方面進行研究,分享你對項目的深度研究。
2️⃣ 參與並分享真實體驗
參與NERO生態周相關活動,並曬出你的參與截圖、收益圖或實用教程。可以是收益展示、簡明易懂的新手攻略、小竅門,也可以是行情點位分析,內容詳實優先。
3️⃣ 鼓勵帶新互動
如果你的帖子吸引到他人參與活動,或者有好友評論“已參與/已交易”,將大幅提升你的獲獎概率!
NERO熱門活動(帖文需附以下活動連結):
NERO Chain (NERO) 生態周:Gate 已上線 NERO 現貨交易,爲回饋平台用戶,HODLer Airdrop、Launchpool、CandyDrop、餘幣寶已上線 NERO,邀您體驗。參與攻略見公告:https://www.gate.com/announcements/article/46284
高質量帖子Tips:
教程越詳細、圖片越直觀、互動量越高,獲獎幾率越大!
市場見解獨到、真實參與經歷、有帶新互動者,評選將優先考慮。
帖子需原創,字數不少於250字,且需獲得至少3條有效互動
新加坡國立大學尤洋:高性能AI 如何突破?
來源:雷鋒網
作者:黃楠
由此可見,訓練成本高、週期長,是當前大模型發展最需要克服的難題。
針對這一問題,尤洋提出了Colossal-AI 系統,從高效內存系統、N 維並行系統和大規模優化三個層次出發,以實現同樣的設備條件下將數據移動的最小化,將GPU 的吞吐量擴大至最高點。
尤洋還指出,現階段的模型參數量以10 萬倍擴大、但層數增加不多,這或意味著:如今的AI 發展可能不再是深度學習、而是進入了寬度學習時代。在模型變得更寬的情況下,面對大規模、長時間的GPU 訓練任務,大模型訓練系統的核心將是如何實現GPU 並行計算,以實現大模型訓練越快越省錢的目標。
以下為尤洋的現場演講內容,雷峰網作了不改變原意的編輯及整理:
AI 大模型的機遇和挑戰
首先展示一張圖片。圖上的橫坐標是時間,縱坐標是AI 模型的參數量。
2016 年,當時世界上最好的模型是ResNet-50,而今天最好的模型是GPT-4。從架構上來看,雖然OpenAI 沒有對外公佈GPT-4 的架構,但對比ResNet-50 的50 層神經網絡和GPT-3 未達100 層的架構,可以說AI 模型近年來的層數並沒有產生的太大的變化。
從ResNet-50 到GPT-4,雖然參數量大了10 萬倍左右,其實是每一層都變得更加寬了。包括LLaMA-65B 版本,也是幾十層的網絡。
所以我們可能不是深度學習,而是進入了一個寬度學習時代。
可以看到,自2019 年開始, Transformer 架構基本統一了AI 大模型賽道,當前最高效的AI 大模型均是Transformer 架構。上圖中的兩條虛線,既展示了大模型參數的變化趨勢,實際上也展現了GPU 的變化趨勢。
雖然現在英偉達的股價漲了很多倍,但包括英偉達在內的廠商,其GPU 內存的增長速度遠跟不上大模型的發展速度。
相較於過去六年模型參數量的增長速度變化,2016 年1 月至2021 年1 月間,英偉達GPU 的計算增長速度每18 個月僅增長了1.7 倍。
以A100 80G 為例計算GPT-3 訓練所需的內存數,GPT-3 有大概1750 億參數,為方便計算取整數2000 億,等於200 乘以10 的9 次方,每個單精度佔用4 個字節,僅參數就要佔800G 內存,梯度也佔了800G 內存。按照當前的優化方法儲存一階矩(first moment)、二階矩(second moment)等信息均為800G。也就是說,如果訓練一個什麼事情都不干大模型,至少需要幾T 的內存,單個A100 GPU 僅80G 內存遠遠不夠,加上中間結果的batch size 越大,內存開銷也越大。
這也是為什麼從內存角度上看,訓練大模型首先需要有成千上萬個GPU 的原因。
但由於煉大模型並不僅限於一次訓練,可能一個好的大模型產品迭代至少需要五六次,前期都是在試錯。因此,據公開渠道分析, GPT-4 單次訓練成本在6000 萬美金左右,且訓練一次需要至少幾個月時間。這也是為什麼目前ChatGPT 即便將其升級至最新版本,其底層還是2021 年9 月版本的模型。也就是說,從2021 年9 月至今,OpenAI 實質上並沒有升級其產品,根本原因就在於,模型的每次訓練不僅成本很高,訓練週期也很長,因此大模型訓練的代價高就非常嚴重。
到今天而言,我覺得這個問題暫時無法用科學回答。原因有幾個。
首先,訓練神經網絡存在非凸優化的問題,目前訓練所收斂的點多為局部最優解、而非全局最優解。因此,我們要驗證神經網絡訓練到什麼程度,在現有計算資源情況下是無法驗證的。
第二個難度在於,大模型訓練往往只訓練一兩個epoch,而此前的CNN 模型中,ResNet 訓練有90 個epoch,甚至自監督學習訓練有1000 個epoch,因此大模型只訓練一兩個epoch的方式,相當於只將數據集過了一兩遍,收斂就更加不充分了。因此在訓練成本如此之高的情況下,我們很難驗證,一個1 萬億參數的模型和2 萬億參數的模型二者誰更好,因為它們潛力都沒有能通過實驗得到充分發揮。因此我認為,今天AI 大模型是一個實驗性學科,如何能高效提升這個實驗的效率,降低成本,對整個行業的普及具有根本性的作用。
回到現實之中,為什麼今天人人都在追求大模型?從數學邏輯上看,模型參數越大、效果越好,這是絕對的。
與此同時,成本也再不斷攀高。目前訓練大模型需要成百上千、甚至上萬個GPU,如何將上萬個GPU 的成本進一步降低,挑戰非常大的。
在20 年前,由於當時依靠的是主頻的,所有的程序都是串行的,假設將硬件速度提高10 倍,在一行代碼都不用的更改的情況下,其運行速度也可以提升10 倍。但到瞭如今,如果想將代碼速度提升10 倍,假定硬件已經增速10 倍,但如果不優化代碼,很可能速度反而會變慢。原因就在於,機器規模更大的情況下,比如GPU 內部,GPU 內存和CPU 之間的數據移動,或是GPU 間的數據移動,再加上服務器實現的數據移動,會佔據整個系統的大部分時間,把大部分時間都花在了數據移動上,模型的擴展性也會變得不好。
我認為,未來一個好的分佈式軟件和一個差的分佈式軟件,在上千個GPU 上,甚至500 個GPU 上,其速度可能相差10 倍。
**Colossal-AI 如何運行? **
基於上述的挑戰,我們提出了大模型訓練系統Colossal-AI,提供優化方法,降低數據移動的代價,將模型擴展性效率提到最高。
一個具體的數據是,使用最簡單的PyTorch 訓練GPT-3,成本為1000 萬美金,英偉達經過優化後,用Megatron 可將其成本減少至300 萬美金,而使用Colossal-AI 後,成本可以降低到130 萬美金。可以看到,相同的設備條件下,數據移動的最小化將數據移動佔比降低最低,能夠把GPU 吞吐量擴大至最高點。
第一層是優化內存,先確保單個GPU、單個服務器的內存效率最高,這是基礎。
第二層是N 維的並行。當前我們使用上千、上萬個GPU 時,其核心技術就是ParallelComputing(並行計算)。從1 個GPU 擴到10 個GPU,因為其規模比較小,我們可以輕易獲得7 倍加速;從10 個到100 個GPU 時,往往可能只獲得4 倍加速,因為並行規模變大,它的通信代價變高了。而從100 個GPU 到1000 個GPU,因為通信代價進一步加高,很可能只獲得2 倍的加速。而從1000 個GPU 到1 萬個GPU,如果軟件運行情況不佳時,不僅可能無法加速,甚至還會更慢,因為設備將所有時間花耗在了更高密度的通信上。
其次是優化問題,未來AI 大模型的發展方向我認為有兩層,第一層是模型變得更加智能,設計出更好的結構,比如說從BERT 到GPT,或者從ResNet 到BERT等,都是在不斷地嘗試改變模型結構。
此外還有優化方法的進步,從SGD 過渡到MOMENTUM、ADAGRAD,到現在有ADAM,未來又會有哪些更好的優化方法能夠將效率提升10 倍,這一點也非常重要。
具體到實際操作訓練大模型的並行問題。
首先是數據並行,這是最簡單、也是最高效的並行方法。數據並行指的是,假設現有1 萬張圖片,每次循環處理1000 張圖片,如果有10 個機器,每個機器分配100 張,10 個循環即可完成所有圖片的處理。
在數據並行的過程中需要進行匯總,每個機器用不同的數據獲得不同梯度,機器在不同數據上學習不同的更改,並更新參數梯度,最後算出全局梯度,目前採用的是加和求平均的方式,效果已經非常好了。此前Colossal-AI 在數據並行中的LARS 方法,就為谷歌、 Meta、騰訊、索尼等公司,將ImageNet 的訓練時間從一小時縮短至一分鐘。
基於這個考慮,我認為數據並行是一個根本性的基礎設施。
當然,僅用數據並行並不夠,原因在於:數據並行有一個假設,必須將模型拷貝到每個GPU 或服務器內,由服務器或GPU 去交換梯度。但如果GPU 僅80G 內存時,萬億參數的模型則需要幾十T 的內存,這在GPU 中是無法存放的,需要將模型切割至不同的GPU 上再匯總結果。這種方法叫做模型並行。模型並行包括兩種,第一種是張量並行( tensor paralism),即層內的模型並行。例如GPT-3 的層數大概為八九十層,每層切割一次模型,將其層內計算分隔成多份,算完一層再算下一層,依次類推,這就是張量並行。
當樓數越多,樓和工程隊之間的比值越高,效率也越高,相當於10 個工程隊在同時運轉。其中每個工程隊就相當於一個GPU,每個樓就相當於一個pipe,樓的層數相當於這個神經網絡的層數,這就流水線並行的核心邏輯。
目前工業界已經做了相關的工作,除了Colossal-AI 之外,還有英偉達的TensorRT 和微軟的DeepSpeed,他們也是技術壁壘最高的兩家公司。
但Colossal-AI 與其不同之處是,Colossal-AI 專注於未來大模型的發展方向。可以看到,當前的模型還在變得更寬,而不是變得更深,張量並行將會更加重要,但它最大的弊端就在於,因為它是切割的是整個層,通信開銷太大。這也是為什麼英偉達CEO 在GTC 峰會上首次介紹3D 並行時特別說明其通信開銷太大的問題,只能放到一個服務器內去做。因此,Colossal-AI 主打2D 張量並行和2.5D 張量並行,將計算成本降低了一個數量級。
3D 張量並行也是同樣,每升高一個維度,它的設計複雜度會高一個數量級,最終通信複雜度下降了。
為了讓模型預測效果更好,我們往往需要長序列數據,當前大模型的本質是通過一個單詞的輸出來預測下一個單詞的概率,長序列成為剛需。對此, Colossal-AI 也推出了Sequence Parallelism(序列並行)。
具體而言,在將序列進行切割後,會面臨一個嚴重的問題是:在進行attention score 時,每個token 都需要跟全局序列中的其他token 去評估,而切分後的服務器上只有部分token ,其他服務器上也會分佈不同的token,以至於每個服務器運行是需要同其他服務器打交道。
也就是說,假設今天屋子裡200 個人每人分別拿了一包零食,我希望每個人能品嚐下其他所有人的零食,至少需要200 個平方次交換,才能讓每個人都嚐到其他人的所有零食。那麼最簡單的方式是:所有人圍一個圈,每個人將自己吃過的零食遞給右手邊的人,從自己的左手邊獲得零食,僅需n-1 次,即199 次的傳遞即可完成。從而降低了整個通信成本。
目前在內存優化方面,我們處於一個沒有太多選擇的環境,英偉達GPU 是最好的,我們好像也沒有其他更好的方案能夠去取代它。但美中不足的是,英偉達GPU 的內存有限,在這種情況下,我們能否思考如何利用CPU 內存、NVMe內存,核心思想就是,GPU 內存放不下就移到CPU 上,CPU 放不下就放到NVMe上,相當於在蓋樓時,所需要的原材料自家樓下工地放不下,那我們就將其放到隔壁工廠。其技術的核心也在於最小化數據移動,即最小化CPU、 GPU 之間的數據移動,最強化CPU 和NVMe 之間的數據移動,從而將吞吐力速度提升到最高。
走向開源
Colossal-AI 是一個開源軟件,同時我們也做了一個商業化的平台,對沒有GPU 的用戶,可以直接在平台上去訓練部署自己的大模型。我們也提供了LLaMA、PaLM、 GPT 等各種模型,最快僅需兩三天就可完成一個模型微調。相比之前用戶可能需要幾週、乃至幾個月來處理硬件、軟件等基礎設施,效率得到了極大提升。同時,Colossal-AI 也保護用戶的隱私,平台不會保留、訪問用戶數據,這是Colossal-AI 與OpenAI ChatGPT 的本質區別。我們將數據上傳至Google Cloud 時,很多時候Google 並沒有碰我們的數據,但是OpenAI GPT 會進行分析,AI 模型的不可解釋性、訓練不徹底等風險普遍存在。因此,未來也會有很多企業訓練自己的大模型,Colossal-AI 做的,是最大化保護用戶的隱私,同時提供大模型訓練的工具。
在性能上,Colossal-AI 在同樣的硬件上可以訓練24 倍大的模型,相對於DeepSpeed 的3 倍加速,即便是一個低端的服務器,也可以藉助Colossal-AI 完成相應的模型訓練。例如LLaMA-65B 的訓練,在Colossal-AI 上使用同樣的代碼放,可以直接獲得約50% 的加速效率。
一個簡單的比喻,比如說現在大模型是挖金子,英偉達是賣鏟子的,那我們就是賣手套、賣衣服的,把挖金子的效率提到最高。