每 3 個小時 1 次、平均 1 天 8 次,Llama 3.1 405B 預(yù)訓(xùn)練老出故障,H100 是罪魁禍首?
最近有人從 Meta 發(fā)布的 92 頁超長 Llama 3.1 論文中發(fā)現(xiàn)了華點:
Llama 3.1 在為期 54 天的預(yù)訓(xùn)練期間,經(jīng)歷了共 466 次任務(wù)中斷。其中只有 47 次是計劃內(nèi)的,419 次純屬意外,意外中 78% 已確認或懷疑是硬件問題導(dǎo)致。
而且 GPU 問題最嚴重,占了 58.7%。
Llama 3.1 405 模型是在一個含 16384 塊 Nvidia H100 80GB GPU 集群上進行訓(xùn)練的。雖說針對大規(guī)模系統(tǒng)有句老話:唯一確定的就是會出故障。
但這一問題還是引起不少網(wǎng)友關(guān)注。
放慢速度,check 一下產(chǎn)品吧。
老出故障,咋整?
具體來看,在 419 次意外中斷中,148 次(30.1%)是由各種 GPU 故障(包括 NVLink 故障)引起的,72 次(17.2%)可以具體到是由 HBM3 內(nèi)存故障引起。
鑒于 H100 的 700W 高功耗和熱應(yīng)力,出現(xiàn)這樣的結(jié)果也并不意外。
有意思的是,54 天內(nèi)只有兩次是 CPU 出現(xiàn)了故障。
除了 GPU 外的另一半故障由眾多因素導(dǎo)致,比如軟件 Bug、網(wǎng)絡(luò)電纜等等。
不過最終,Llama 3.1 團隊保持了超 90% 的有效訓(xùn)練時間。只有三起故障需要人工大幅介入,其余的都自動化處理了。
那么他們是如何應(yīng)對的?
為了增加有效訓(xùn)練時間,Llama 3.1 團隊表示減少了任務(wù)啟動和 checkpointing 時間,并開發(fā)了一些工具來快速診斷和解決問題。
其中廣泛使用了 PyTorch 的內(nèi)置 NCCL flight recorder(Ansel 等人 2024 年開發(fā)),是一個可以把集體元數(shù)據(jù)和堆棧跟蹤記錄到一個循環(huán)緩沖區(qū)里的功能,這樣就能快速診斷大規(guī)模卡頓和性能問題,特別是跟 NCCLX 有關(guān)的問題。
用這個工具,團隊能有效記錄每次通信事件和每個集體操作的持續(xù)時間,在 NCCLX Watchdog 或 Heartbeat 超時時還能自動導(dǎo)出跟蹤數(shù)據(jù)。
還可以根據(jù)需要,通過在線配置更改(Tang 等人 2015 年提出的方法)來選擇性地啟用一些計算量更大的跟蹤操作和元數(shù)據(jù)收集,而不需要重新發(fā)布代碼或重啟任務(wù)。
團隊表示,在大規(guī)模訓(xùn)練中調(diào)試問題很復(fù)雜,因為網(wǎng)絡(luò)同時使用了 NVLink 和 RoCE。通過 NVLink 傳輸數(shù)據(jù)通常是通過 CUDA 內(nèi)核發(fā)出的加載 / 存儲操作來完成的,如果遠程 GPU 或 NVLink 連接出了問題,往往表現(xiàn)為 CUDA 內(nèi)核里的加載 / 存儲操作卡住了,卻不會返回明確的錯誤代碼。
而 NCCLX 通過與 PyTorch 緊密配合,提高了故障檢測和定位的速度和準確性,讓 PyTorch 能夠訪問 NCCLX 的內(nèi)部狀態(tài)并跟蹤相關(guān)信息。
雖然無法完全避免 NVLink 故障導(dǎo)致的卡頓,但系統(tǒng)會監(jiān)控通信庫狀態(tài),在發(fā)現(xiàn)卡頓時自動超時。
此外,NCCLX 還會跟蹤每次 NCCLX 通信的內(nèi)核和網(wǎng)絡(luò)活動,并在失敗時提供 NCCLX 集體操作內(nèi)部狀態(tài)“快照”,包括所有等級之間已完成和待處理的數(shù)據(jù)傳輸。團隊通過分析這些數(shù)據(jù)來調(diào)試 NCCLX 的擴展問題。
有時,硬件問題可能導(dǎo)致某些部分雖然看起來還在運行,但速度變慢,這種情況很難被發(fā)現(xiàn)。即使只有一個部分變慢,也可能拖慢數(shù)千個其它 GPU 的速度。
為此團隊開發(fā)了一些工具,可以優(yōu)先處理某些可能有問題的進程組的通信。通常只需要調(diào)查幾個最可疑的對象,就能有效找出那些變慢的部分。
團隊還觀察到了一個有趣的現(xiàn)象 —— 環(huán)境因素對大規(guī)模訓(xùn)練性能的影響。在訓(xùn)練 Llama 3.1 405B 時,吞吐量會根據(jù)一天中時間的不同而有 1-2% 的變化。這是因為中午溫度較高,影響了 GPU 動態(tài)電壓和頻率調(diào)節(jié)。
在訓(xùn)練過程中,數(shù)萬個 GPU 可能會同時增加或減少功耗,比如在所有 GPU 等待 checkpointing 或集體通信完成時,或者在整個訓(xùn)練任務(wù)啟動 / 關(guān)閉時。這種情況發(fā)生,可能導(dǎo)致數(shù)據(jù)中心的瞬時功耗波動達到數(shù)十兆瓦,對電網(wǎng)來說是個不小的考驗。
團隊最后還表示:
隨著未來更大的 Llama 模型擴展訓(xùn)練規(guī)模,這一挑戰(zhàn)將持續(xù)存在。
AI 集群問題正待破壁
Meta2022 年首次分享了其 AI 研究超級集群(RSC)的詳細信息,當時擁有 16000 個 NVIDIA A100 GPU,幫助其構(gòu)建了第一代 AI 模型,在 Llama 初代和 Llama 2 開發(fā)中都發(fā)揮了重要作用。
△ 來自 Meta
今年三月份,Meta 又公開了 24576 個 NVIDIA H100 GPU 的 AI 集群,支持 Llama 3 及之后模型。
更是定下了到今年年底增加 350000 個 NVIDIA H100 GPU 的目標,作為整體算力的一部分(整體算力近 600000 個 H100 GPU)。
這么大的規(guī)模,emmm 可不是個持續(xù)性的挑戰(zhàn)嘛。當然,大規(guī)模 AI 集群會給模型訓(xùn)練造成故障是一個有些“遠古”的問題,很早之前就有相關(guān)研究。
H100 本身什么含金量無需多言。
在去年最新 MLPerf 訓(xùn)練基準測試中,英偉達 H100 集群,橫掃八項測試,全部創(chuàng)下新紀錄,并且在大語言模型任務(wù)中表現(xiàn)尤為突出。
11 分鐘內(nèi)訓(xùn)練一遍 GPT-3,8 秒訓(xùn)完 BERT。在大語言模型任務(wù)中,H100 集群的加速性能逼近線性增長。即隨著集群處理器數(shù)量增加,加速效果也幾乎同比增加。
意味著在集群內(nèi) GPU 之間的通信效率非常高。
除此之外,H100 還完成了推薦算法、CV、醫(yī)學(xué)圖像識別以及語音識別等任務(wù),是唯一一個參加 8 項測試的集群。
不過,SemiAnalysis 一個月前的一篇文章指出,構(gòu)建大規(guī)模 AI 算力集群非常復(fù)雜,遠遠不只是有沒有錢買卡的事。
在電力、網(wǎng)絡(luò)設(shè)計、并行、可靠性等很多方面都面臨局限。
參考鏈接:
[1]https://ai.meta.com/research/publications/the-llama-3-herd-of-models/
[2]https://engineering.fb.com/2024/03/12/data-center-engineering/building-metas-genai-infrastructure/
[3]https://www.semianalysis.com/p/100000-h100-clusters-power-network
本文來自微信公眾號:量子位(ID:QbitAI),作者:西風(fēng)
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。