AI 大底座,大模型時代的答卷
1. 文心一言的誕生
“文心一言就是在這個全國 AI 領域規模最大的高性能 GPU 集群上完成訓練的。”
早在 2021 年 6 月,為了滿足未來的大模型訓練任務,百度智能云開始規劃全新的高性能 GPU 集群的建設,聯合 NVIDIA 共同完成了可以容納萬卡以上規模的 IB 網絡架構設計,集群中節點間的每張 GPU 卡都通過 IB 網絡連接, 并在 2022 年 4 月將集群建設完成,提供單集群 EFLOPS 級別的算力。
2023 年 3 月,文心一言在這個高性能集群上誕生,并不斷迭代出新的能力。目前,這個集群的規模還在不斷擴大。
NVIDIA 中國區解決方案與工程總經理賴俊杰博士:高速 IB 網絡互聯的 GPU 集群是大模型時代的關鍵基礎設施。NVIDIA 和百度智能云共同建成的這個國內云計算市場最大規模的高性能 GPU/IB 集群,將加速百度在大模型領域獲得更大突破。
2. 高性能集群設計
高性能集群并不是算力的簡單堆積,還需要經過專門的設計和優化,才能發揮出集群的整體算力。
在分布式訓練中 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 大模型訓練任務的順利完成,還需要更多系統性軟硬一體的優化。
3. 大模型訓練的挑戰
過去幾年,大模型的參數規模將達到每年增長 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 顯存。
計算墻和顯存墻的本質是有限的單卡能力和模型的巨大的存儲、計算需求之間的矛盾。這可以通過分布式訓練的方法解決,但分布式訓練之后又會遇到通信墻的問題。
通信墻,主要是分布式訓練下集群各計算單元需要頻繁參數同步,通信性能將影響整體計算速度。如果通信墻如果處理的不好,很可能導致集群規模越大,訓練效率反而會降低。成功的突破通信墻,體現為集群有較強的擴展能力,即集群的多卡加速能力和規模是匹配的。多卡的線性加速比就是評估集群多卡加速能力的指標,數值越高越好。
這幾堵墻在多機多卡的訓練中開始出現。隨著大模型的參數越來越大,對應的集群規模也越來越大,這三堵墻也越來越高。同時,在大集群長時間訓練過程中,還會出現設備故障,有可能會影響或者中斷訓練進程。
4. 大模型訓練的過程
一般來說,從基礎設施視角看大模型訓練,整個過程可以大致分成以下兩個階段:
階段一:并行策略和訓練優化
在提交待訓練的大模型后,AI 框架會綜合考慮大模型的結構等信息、以及訓練集群的能力,為本次訓練任務制定出一個并行訓練策略,并完成 AI 任務放置。這個過程就是拆開模型、放置任務,即大模型應該被如何拆解,被拆開的各個部分如何放置到集群的各個 GPU/XPU 中。
針對放置在 GPU/XPU 中運行的 AI 任務,AI 框架會聯合訓練集群在單卡運行時和集群通信層面進行全鏈路優化,加速大模型訓練過程中各個 AI 任務的運行效率,包括數據加載,算子計算、通信策略等。比如將 AI 任務中運行的普通算子替換為經過優化的高性能算子,提供適配當前并行策略和訓練集群網絡能力的通信策略等。
階段二:資源管理和任務調度
大模型訓練任務按照上面制定的并行策略開始運行,訓練集群為 AI 任務提供各類高性能的資源。比如 AI 任務運行在什么環境中,如何為 AI 任務提供資源對接,AI 任務通過什么存儲方式讀取和保存數據,GPU/XPU 通過什么類型網絡設施通信等。
同時,在運行過程中,訓練集群會聯合 AI 框架通過彈性容錯等方式,為大模型的長時間訓練提供可靠的環境。比如如何觀測和感知集群中各類資源和 AI 任務的運行狀態等,如何在集群變化時能夠對資源和 AI 任務進行調度等。
從以上兩個階段的拆解中,我們可以發現整個大模型訓練的過程,都依賴 AI 框架和訓練集群的密切配合,完成對三堵墻的突破,共同確保大模型訓練的高效和穩定。
5. 全棧融合,「AI 大底座」加速大模型訓練
結合多年在 AI 和大模型領域的技術積累和工程實踐,百度在 2022 年底推出了全棧自研的 AI 基礎設施「AI 大底座」,包括「芯片 – 框架 – 模型 」三層技術棧,在各個層面都擁有關鍵自研技術和領先產品,分別對應昆侖芯、飛槳 (PaddlePaddle)、文心大模型。
在這三層技術棧的基礎上,百度智能云推出了兩大 AI 工程平臺,「AI 中臺」和「百度百舸· AI 異構計算平臺」,分別在開發和資源層面進行提效,完成對三堵墻的突破,加速訓練過程。
其中,「AI 中臺」依托 AI 框架為大模型訓練過程制定并行策略和優化過的環境,覆蓋訓練的全生命周期。「百度百舸 」實現了高效的芯片使能,提供各類 AI 資源的管理和任務調度的能力。

百度「AI 大底座」對各層的技術棧進行了全棧融合、系統優化,完成了云和智的技術一體化建設,可以實現對大模型訓練的端到端優化和加速。
百度集團副總裁侯震宇:大模型訓練是一個系統工程,集群規模、訓練時間、花費金額,相比過去都提高了很多。如果不是全棧優化,很難保證大模型訓練的順利完成。百度多年來在大模型上的技術投入和工程實踐,使得我們建立起了一套完整的軟件棧能力,用來加速大模型的訓練。
接下來,我們將結合上文提到的大模型訓練過程的兩階段,講述「AI 大底座」的各層技術棧是如何相互融合、系統優化,實現大模型訓練的端到端優化和加速。
5.1 并行策略和訓練優化
模型拆分
飛槳可以為大模型訓練提供數據并行、模型并行、流水并行、參數分組切片、專家并行等豐富的并行策略。這些并行策略可以滿足從十億到千億、甚至萬億參數規模大模型的訓練,實現對計算墻和顯存墻的突破。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 框架。
5.2 資源管理和任務調度
資源管理
百度百舸可以提供各類計算、網絡、存儲等 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 上,確保訓練的平滑高效運行。
6. 大模型時代的 AI 普惠
大模型是人工智能邁向通用智能的里程碑技術,駕馭好大模型是完成智能化升級路徑上的必答題。超大規模的算力、全棧融合的軟件優化,是對這道必答題的最好回答。
為了幫助社會和產業快速訓練出自己的大模型,搶占時代先機,2022 年底百度智能云發布了陽泉智算中心,搭載百度「AI 大底座」的全棧能力,可以提供 4 EFLOPS 的異構算力。這是目前亞洲單體規模最大、技術最先進的數據中心。
目前,百度智能云已經將「AI 大底座」的全部能力對外開放,實現大模型時代的 AI 普惠,通過各個地域的中心云、邊緣云 BEC、本地計算集群 LCC、私有云 ABC Stack 等多種形式進行交付,使得社會和產業可以方便的獲得智能服務。
































