「文心一言就是在這個全國AI 領域規模最大的高性能GPU 集群上完成訓練的。」
早在2021年6 月,為了滿足未來的大模型訓練任務,百度智能雲開始規劃全新的高性能GPU 集群的建設,聯合NVIDIA 共同完成了可以容納萬卡以上規模的IB 網路架構設計,集群中節點間的每張GPU 卡都透過IB 網路連接, 並在2022 年4 月將集群建設完成,提供單集群EFLOPS 級別的算力。
2023 年 3 月,文心一言在這個高效能叢集上誕生,並不斷迭代出新的能力。目前,這個集群的規模還在不斷擴大。
NVIDIA 中國區解決方案與工程總經理賴俊傑博士:高速 IB 網路互聯的 GPU 叢集是大模型時代的關鍵基礎設施。 NVIDIA 和百度智慧雲端共同建成的這個國內雲端運算市場最大規模的高效能 GPU/IB 集群,將加速百度在大模型領域獲得更大突破。
高效能叢集並不是算力的簡單堆積,還需要經過專門的設計與最佳化,才能發揮出叢集的整體算力。
在分散式訓練中 GPU 會在機間和機內不斷地進行通訊。在利用IB 、RoCE 等高效能網路為機間通訊提供高吞吐、低時延的服務同時,還需要對伺服器的內部網路連接,以及叢集網路中的通訊拓撲進行專門設計,滿足大模型訓練對通信的要求。
做到極致的設計優化,需要對 AI 任務中的各項操作都對基礎設施意味著什麼有深刻理解。分散式訓練中不同的平行策略,即模型、資料、參數如何進行拆分,會產生不同的資料通訊需求,例如資料並行和模型並行會分別引入大量的機內和機間Allreduce 操作,專家並行會產生機間All2All 操作,4D 混合併行則會將各類並行策略產生的通訊操作都引入。
為此,百度智慧雲端從單機伺服器和叢集網路兩個方面優化設計,建構高效能 GPU 叢集。
在單機伺服器方面,百度智慧雲端的超級 AI 電腦 X-MAN,目前已經進化到第 4 代。 X-MAN 4.0 為 GPU 建立起了高性能的卡間通信,提供單機內部 134 GB/s 的 Allreduce 頻寬。這是目前百度客製化程度最高,專用物料最多的伺服器產品。在 MLCommons 1.1 名單中,X-MAN 4.0 在同配置單機硬體效能名列 TOP2。
在叢集網路方面,專門設計了面向大模型訓練優化過的三層 Clos 架構,確保在大規模訓練時叢集的效能和加速比。和傳統方式相比,此架構經過八導軌的優化,讓任一同號卡在不同機器中的通訊中的跳步數盡可能少,為AI 訓練中網路流量佔比最大的同號卡Allreduce 操作提供高吞吐和低延遲的網路服務。
此網路架構可以最大能支援到 16000 卡的超大規模集群,這個規模是現階段全 IB 網路盒式網路的最大規模。此集群的網路效能穩定一致性能做到了 98% 的水平,接近一直在穩定通訊的狀態。經大模型演算法團隊驗證,在此超大規模集群上提交千億模型訓練作業,同等機器規模下整體訓練效率是上一代集群的 3.87 倍。
但是,建立大規模高效能異質集群,只是大模型成功落地的第一步。確保 AI 大模型訓練任務的順利完成,還需要更多系統性軟硬一體的最佳化。
過去幾年,大模型的參數規模將達到每年增長 10 倍的速度。 2020 年左右,億級參數才是大模型,2022 年,已經是需要千億參數規模才能叫大模型了。
在大模型之前,一個 AI 模型的訓練,通常單機單卡、或單機多卡就可以滿足,訓練週期在小時到數天之間。現在,為了完成千億參數大模型的訓練,數百台伺服器、數千張 GPU/XPU 卡的大集群分散式訓練成為必選項,訓練週期也擴展到以月為單位。
為了訓練1750 億參數的GPT-3 (3000 億token 數據),1 塊A100 以半精度峰值計算性能折算需要32 年, 1024 塊A100 按資源利用率45% 計算需要34 天時間。當然,即使不考慮時間問題,1 塊 A100 也是無法訓練千億參數規模的模型的,因為模型參數已經超過單卡顯存容量。
在分散式訓練的環境下進行大模型訓練,訓練週期從單卡幾十年縮短到幾十天,需要突破計算牆、顯存牆、通訊牆等各種挑戰,使得集群內的所有資源都能充分利用,加速訓練過程,縮短訓練週期。
計算牆,指的是單卡算力和模型總算力之間的巨大差異。 A100 的單卡算力只有 312 TFLOPS,而 GPT-3 則需要 314 ZFLOPs 的總算力,兩者相差了 9 個數量級。
顯存牆,指的是單卡無法完整儲存一個大模型的參數。 GPT-3 的 1750 億參數本身就需要 700 GB 的顯存空間(每個參數以 4 個位元組計算),而 NVIDIA A100 GPU 只有 80 GB 記憶體。
計算牆和顯存牆的本質是有限的單卡能力和模型的巨大的儲存、運算需求之間的矛盾。這可以透過分散式訓練的方法來解決,但分散式訓練之後又會遇到通訊牆的問題。
通訊牆,主要是分散式訓練下叢集各運算單元需頻繁參數同步,通訊效能將影響整體運算速度。如果通訊牆如果處理的不好,很可能導致集群規模越大,訓練效率反而會降低。成功的突破通訊牆,體現為集群有較強的擴展能力,即集群的多卡加速能力和規模是匹配的。多卡的線性加速比就是評估群集多卡加速能力的指標,數值越高越好。
這幾面牆在多機多卡的訓練中開始出現。隨著大模型的參數越來越大,對應的群集規模也越來越大,這三面牆也越來越高。同時,在大集群長時間訓練過程中,也會出現設備故障,有可能會影響或中斷訓練流程。
一般來說,從基礎設施視角看大模型訓練,整個過程可以大致分成以下兩個階段:
在提交待訓練的大模型後,AI 框架會綜合考慮大模型的結構等資訊、以及訓練集群的能力,為本次訓練任務制定出一個平行訓練策略,並完成AI 任務放置。這個過程就是拆開模型、放置任務,也就是大模型應該如何拆解,被拆開的各個部分如何放置到叢集的各個 GPU/XPU 中。
針對放置在GPU/XPU 中運行的AI 任務,AI 框架會聯合訓練集群在單卡運行時和集群通信層面進行全鏈路優化,加速大模型訓練過程中各個AI 任務的運行效率,包括資料加載,算子計算、通訊策略等。例如將 AI 任務中運行的普通算子替換為經過優化的高效能算子,提供適配當前並行策略和訓練集群網路能力的通訊策略等。
大模型訓練任務依照上述制定的平行策略開始運行,訓練叢集為 AI 任務提供各類高效能的資源。例如 AI 任務運行在什麼環境中,如何為 AI 任務提供資源對接,AI 任務透過什麼儲存方式讀取和保存數據,GPU/XPU 透過什麼類型網路設施通訊等。
同時,在運作過程中,訓練集群會聯合 AI 框架透過彈性容錯等方式,為大模型的長時間訓練提供可靠的環境。例如如何觀測和感知集群中各類資源和 AI 任務的運行狀態等,如何在集群變化時能夠對資源和 AI 任務進行調度等。
從以上兩個階段的拆解中,我們可以發現整個大模型訓練的過程,都依賴AI 框架和訓練集群的密切配合,完成對三堵牆的突破,共同確保大模型訓練的高效和穩定。
結合多年在AI 和大模型領域的技術積累和工程實踐,百度在2022 年底推出了全棧自研的AI 基礎設施「AI 大底座」,包括「晶片– 框架– 模型」三層技術棧,在各個層面都擁有關鍵自研技術和領先產品,分別對應崑崙芯、飛槳(PaddlePaddle)、文心大模型。
在這三層技術堆疊的基礎上,百度智慧雲端推出了兩大AI 工程平台,「AI 中台」和「百度百舸· AI 異質運算平台」,分別在開發和資源層面進行提效,完成三面牆的突破,加速訓練過程。
其中,「AI 中台」依托 AI 框架為大模型訓練過程製定並行策略和優化過的環境,涵蓋訓練的全生命週期。 「百度百舸 」實現了高效率的晶片使能,提供各類 AI 資源的管理和任務調度的能力。
百度「AI 大底座」對各層的技術堆疊進行了全棧融合、系統優化,完成了雲和智的技術一體化建設,可以實現對大模型訓練的端到端最佳化和加速。
百度集團副總裁侯震宇:大模型訓練是一個系統工程,集群規模、訓練時間、花費金額,相比過去都提高了很多。如果不是全端優化,很難保證大模型訓練的順利完成。百度多年來在大模型上的技術投入和工程實踐,使得我們建立起了一套完整的軟體堆疊能力,用來加速大模型的訓練。
接下來,我們將結合上文提到的大模型訓練過程的兩階段,講述「AI 大底座」的各層技術堆疊是如何相互融合、系統最佳化,實現大模型訓練的端到端最佳化與加速。
#飛槳可以為大模型訓練提供資料並行、模型並行、流水並行、參數分組切片、專家並行等豐富的並行策略。這些平行策略可以滿足從十億到千億、甚至萬億參數規模大模型的訓練,實現計算牆和顯存牆的突破。 2021 年 4 月,飛槳在業界第一個提出 4D 混合並行策略,可支援千億級大模型的訓練在月級別完成。
百度百舸擁有專為大模型訓練場景準備的叢集拓樸感知能力,包括節點內架構感知、節點間架構感知等,例如每台伺服器內部的算力大小、 CPU 與 GPU/XPU、GPU/XPU 與 GPU/XPU 連結方式,以及伺服器之間 GPU/XPU 與 GPU/XPU 網路連結方式等資訊。
在大模型訓練任務開始運作前,飛槳可以依據百度百舸平台的拓樸感知能力,對群集形成統一分散式資源圖。同時,飛槳根據待訓練的大模型形成的統一邏輯計算視圖。
綜合這兩張圖,飛槳自動化地為模型搜尋出最優的模型切分和硬體組合策略,將模型參數、梯度、最佳化器狀態依照最佳策略分配到不同的 GPU/ XPU 上,完成AI 任務的放置以提升訓練表現。
例如將模型並行的 AI 任務都放置在同一台伺服器的不同 GPU 上,這些 GPU 透過伺服器內部的 NVSwitch 連結。將資料並行、管線並行的 AI 任務放置在不同伺服器的同號 GPU 上,這些 GPU 透過 IB 或 RoCE 連結。透過這種依據 AI 任務的類型進行 AI 任務放置的方法,使得叢集資源能夠被有效地使用,加速大模型訓練。
在訓練任務運行過程中,如果叢集發生了變化,例如有資源出現了故障,或者叢集規模有變化,百度百舸會進行容錯的替換或彈性擴縮容。由於參與計算的節點所在位置發生了變化,它們之間的通訊模式也許已經不是最優。飛槳能夠依據最新的集群訊息,自動調整模型切分和 AI 任務放置策略。同時,百度百舸完成相應的任務和資源的調度。
飛槳統一的資源和計算視圖以及自動並行能力,再結合百度百舸的彈性調度能力,實現了大模型的端到端自適應分佈式訓練,可以覆蓋集群訓練的全生命週期。
這是AI 框架和AI 異構算力平台的深入交互,實現了算力、框架、演算法三位一體的系統優化,支援大模型自動彈性的進行訓練,端到端實測有2.1 倍的性能提升,保證了大規模訓練的高效性。
完成模型的分割和AI 任務的放置後,在訓練過程中為了確保算子在飛槳、Pytorch 等各類主流AI 框架和各類計算卡上可以加速運算,百度百舸平台內建了AI 加速套件。 AI 加速套件包括了資料層儲存加速、訓練和推理加速庫 AIAK ,分別從資料載入、模型計算、分散式通訊等維度進行了全鏈路最佳化。
其中,資料載入和模型運算的最佳化可以有效提高單卡的運作效率;分散式通訊的最佳化,結合叢集的IB 或RoCE 等高效能網路和專門優化的通訊拓撲,以及合理的AI 任務放置策略,共同解決通訊牆問題。
百度百舸在千卡規模集群中的多卡加速比達到了 90%,使得集群擁有的整體算力可以被充分釋放出來。
在2022 年11 月發布的MLPerf Trainning v2.1 測試結果中,百度使用飛槳加百度百舸提交的模型訓練性能結果,位列同等GPU 配置下世界第一,端到端訓練時間和訓練吞吐均超越NGC PyTorch 框架。
百度百舸可提供各類運算、網路、儲存等AI 資源,包括百度太行·彈性裸金屬伺服器BBC、IB 網路、RoCE 網路、平行檔案儲存PFS 、物件儲存BOS、資料湖儲存加速RapidFS 等各類適合大模型訓練的雲端運算資源。
在任務執行時,可以將這些高效能資源進行合理的組合,進一步提升 AI 作業的效率,全流程實現 AI 任務的運算加速。在 AI 任務開始前可以預熱物件儲存 BOS 中的訓練數據,透過彈性 RDMA 網路將資料載入至資料湖儲存加速 RapidFS 中。彈性 RDMA 網路相比傳統網路可以降低 2 至 3 倍通訊時延,在高效能儲存的基礎上,加速 AI 任務資料的讀取。最後透過高效能的百度太行·彈性裸金屬伺服器 BBC 或雲端伺服器 BCC,進行 AI 任務的運算。
AI 任務執行時,不僅需要高效能的資源,還需要確保叢集的穩定,最大程度降低資源故障發生率以免打斷訓練。但是,資源的故障不能絕對避免,AI 框架和訓練集群需要聯合保證訓練任務被打斷後能夠從最近的狀態恢復,從而為大模型的長時間訓練提供可靠環境。
百度自研的異構集合通庫 ECCL ,支援崑崙芯和其他異構晶片的通信,支援慢節點和故障節點的感知。透過百度百舸的資源彈性和容錯策略,將慢節點和故障節點剔除,並將最新的架構拓撲回饋給飛槳,重新進行任務佈置,對應訓練任務調配至其他XPU/GPU 上,確保訓練的平滑高效運作。
大模型是人工智慧邁向通用智慧的里程碑技術,駕馭好大模型是完成智慧升級路徑上的必答題。超大規模的算力、全端融合的軟體優化,是這道必答題的最佳答案。
為了幫助社會和產業快速訓練出自己的大模型,搶佔時代先機,2022 年底百度智能雲發布了陽泉智算中心,搭載百度“AI 大底座”的全棧能力,可以提供4 EFLOPS 的異構算力。這是目前亞洲單體規模最大、技術最先進的資料中心。
目前,百度智能雲已經將「AI 大底座」的全部能力對外開放,實現大模型時代的AI 普惠,透過各個地域的中心雲、邊緣雲BEC、本地計算集群LCC、私有雲ABC Stack 等多種形式進行交付,使得社會和產業可以方便的獲得智慧服務。
以上是AI 大底座,大模型時代的答案卷的詳細內容。更多資訊請關注PHP中文網其他相關文章!