登頂全球最權威AI性能基準評測,百度飛槳給分散式訓練創造了標杆

大模型時代,飛槳產業級平臺的優勢開始顯現。

從問答、翻譯、作畫再到寫論文,最近一段時間,實現各種神奇能力的 AI 總有個「大模型」的稱號。

在工業界,大模型也被視為重要的發展方向,它既可以減少機器學習訓練對資料標註的需求,又無需手寫專家知識,降低了 AI 應用的行業門檻。在業界和一些科學領域,人工智慧已經進入了「煉大模型」的新階段。

然而天下沒有免費的午餐,大模型帶來了 AI 能力的突破,也對算力提出了無窮無盡的需求。晶片製造商和科技公司都在尋找提升 AI 訓練效率的方法。國內 AI 技術領先的百度,最近展示了真正的技術。

11 月 10 日,機器學習基準測試平臺 MLPerf 放出了最新一期榜單,在 BERT 模型訓練排行榜上,百度使用飛槳框架提交的 8 機 64 卡配置在同等 GPU 配置下獲得第一名[1]。而 BERT 模型中的 Transformer 結構正是目前主流大模型的基礎架構。

百度提交的方案中,64 塊 GPU 在 149 秒內訓練了 BERT 模型。在國際權威基準測試中取得領先,體現了飛槳框架在分散式訓練性能上的優勢,其中用到的技術也已成為百度業務創新的重要組成部分。

在最權威的基準平臺打榜

MLPerf 是目前國際公認的權威 AI 性能評測基準,由圖靈獎得主大衛 · 帕特森(David Patterson)聯合學術機構和企業在 2018 年 5 月創立。它通過一套規則和最佳實踐,解決了一直以來機器學習系統化評估困難的問題。

該基準覆蓋計算機視覺、自然語言處理、推薦系統、強化學習等方向。要求參與者在指定資料集上訓練經典演算法達到一定精度,同時對提交的處理細節進行仔細標註,另外還要開源程式碼,公佈包括算力設施,CPU、GPU 等處理器型號數量,使用的機器學習框架甚至加速庫等資訊,以確保可復現性。

由於嚴謹客觀的標準,MLPerf 一直以來吸引了晶片廠商和科技公司不斷將最新、最強大的軟硬體解決方案提交到榜單中互相比較。

在最新的 MLPerf v2.1 版本上,百度參與的自然語言處理賽道要求訓練 BERT Large 模型,比較語言模型準確率(Masked Language Model Accuracy)訓練至 72% 的端到端時間。作為 NLP 領域的知名模型之一,BERT 使用的 Transformer 架構正是如今很多大規模預訓練模型的基礎。

本次評測共有 21 個公司和機構參與。百度提出的方法在端到端訓練時間和訓練吞吐兩個指標上均超越了同等 GPU 配置下的所有對手。

百度工程師表示,模型訓練不僅需要考慮純粹的 GPU 算力,還與深度學習前向、反向計算的速度,以及資料 IO 和通訊效率有很大關聯。除了硬體和伺服器組織結構之外,此類任務也對於軟體框架提出了很高的要求。

這並不是百度第一次在 MLPerf 上出成績:在 6 月 30 日發佈的 v2.0 榜單中,飛槳在 8 卡 GPU 單機配置下已經實現了 BERT 模型訓練性能排名第一,比其他提交結果速度快了 5% 到 11% 不等[2]。

百度在 v2.1 中提交的多機評測結果進一步印證了飛槳分散式訓練的性能表現,其提供的方案,在同等 GPU 配置下端到端訓練收斂時間比其它提交結果快 1% 到 20%,在訓練吞吐量上比其他提交結果要快 2% 到 12%。

MLPerf Training v2.1 BERT 模型端到端訓練收斂時間排名(8 機 64 卡 GPU)。

MLPerf Training v2.1 BERT 模型提交結果吞吐量比較(8 機 64 卡 GPU)。

值得一提的是,這個成績還超過了 GPU 廠商英偉達使用自身高度定製化的 NGC PyTorch 框架跑出的性能資料。

讓 8 塊 GPU 跑出等效 8.2 的算力

MLPerf 基準測試上獲得的高速度,得益於飛槳框架在分散式訓練核心技術上的持續探索和創新。

本次百度參加的是多節點分散式訓練的賽道。在跨設備並聯計算的情況下,飛槳解決了一些此前單機訓練時無法遇到的挑戰,最佳化範圍包括設備間的負載均衡,以及 CPU、GPU 等異構算力的負載均衡。在跨設備通訊的問題上,飛槳還使用了全局通訊與分層次通訊相結合的方法提高通訊效率。

首先,為了提高 AI 模型的訓練效率,系統需要對資料和模型進行切分,並制定策略讓多個處理器分別計算其中的一部分。針對大規模稠密參數模型高效訓練問題,飛槳在業內首創了 4D 混合並行訓練策略,其包括張量模型並行、流水線模型並行、參數分組切片的資料並行和純資料並行。

飛槳支持的重計算策略,在使用混合並行訓練千億級模型時可以用來增大 batch size。另一方面,作為一個獨立通用的策略,重計算不依賴多卡並行。人們可以根據實際業務模型大小,及集群上的總卡數獨立調節兩個維度來達到更快訓練大模型的目的。

4D 混合並行策略示意圖

4D 混合並行策略示意圖。

在 MLPerf BERT 模型訓練任務上,基於飛槳的混合並行策略,百度的 8 機 64 卡相對於單機的擴展效率達到了 94%,實現了接近線性的性能增長。

針對分散式訓練調優困難的問題,飛槳提出了端到端自適應分散式訓練架構,其可以將異構算力資源轉化成統一的集群資源視圖,通過端到端代價模型建模選擇最優策略,然後使用非同步流水運行的機制開始訓練。如果部分設備出現故障或增減算力時,彈性資源管理機制可以觸發訓練架構各個模組自動做出反應。

在 MLPerf BERT 模型訓練任務上,飛槳根據集群通訊拓撲特點並結合 NCCL SHARP 協議,使用全局通訊與分層次通訊結合的方式降低整體通訊耗時,有效提升了模型訓練性能。

針對分散式訓練經常出現的負載不均、資料載入速度瓶頸等問題,飛槳利用異構設備混合負載均衡方案,根據不同設備的特點把任務分配到效率最高的算力上。在 MLPerf 訓練任務上,飛槳通過使用 GPU 高頻寬通訊解決了模型訓練啟動時的資料載入慢問題,又用 CPU 異構設備通訊實現了模型訓練過程與資料負載均衡間的重疊,提高了模型訓練效率。

另外,飛槳框架還在 Transformer 類模型底層提供了專門的高性能支持,對資料的輸入、模型結構、運算元實現等方面實現了最佳化。

值得一提的是,在資料並行最佳化的基礎上,百度的方案在 8GPU 的機器上實現了超過 8 的效率——用框架的最佳化跑出了超過等效物理晶片數量的速度。

飛槳的分組參數切片混合並行策略示意圖

飛槳的分組參數切片混合並行策略示意圖。

在多 GPU 計算單元機器學習並行運算時,各 GPU 的最佳化器計算部分是冗餘重複的。飛槳最佳化了冗餘重複計算的部分,讓每張卡只需計算參數梯度的一部分,然後再進行聚合同步更新;在此基礎上,結合分層參數切分與通訊、跨 step 通訊 – 計算重疊、多流併發參數廣播、底層運算元深度最佳化等方式,進一步提升分散式訓練極致性能,實現了 1+1 大於 2 的效果。

發揮 AI 大模型全部潛力

在 AI 訓練任務上,晶片決定了算力的理論上限,伺服器和集群的整合可以保證基礎的運行效率,而最終能充分發揮計算潛力的是深度學習框架。

百度飛槳在 MLPerf 上連續兩次第一的成績其實源於一次小嚐試。早在半年前,飛槳就已實現了目前的多機分散式最佳化能力,但並沒有直接向 MLPerf 提交多伺服器的成績,只用單機最佳化成績就拿到了第一。

據介紹,上一次沒有提交多機分散式訓練結果的部分原因在於百度內部算大模型的需求太大,一時計算資源過於緊張——在百度內部每時每刻都有訓練大模型的需求。

如今的「文心大模型」已經覆蓋了從 NLP、CV、跨模態到生物計算等領域二十多個大模型,而飛槳一直在為大模型的訓練和推理提供技術支撐。這正是飛槳所擅長的工作:作為面向生產環境的深度學習平臺,飛槳因大規模 AI 計算而生,自誕生以來一直在百度業務實踐中被不斷改進,基礎訓練性能也一路提升。

結合計算機視覺、自然語言處理、科學計算等領域的應用,飛槳研發了異構硬體下的低儲存和高性能訓練技術,相繼發佈了業界首個通用異構參數伺服器架構、4D 混合並行訓練策略、端到端自適應分散式訓練架構等多項領先技術成果。

它們支持了百度在大模型領域的快速迭代,百度在此基礎上相繼發佈了全球首個知識增強千億大模型「鵬城 – 百度 · 文心」[3]、全球首個百億參數中英文對話預訓練生成模型 PLATO-XL、全球規模最大中文跨模態生成模型 ERNIE-ViLG、業界規模最大的多工統一視覺大模型 VIMER-UFO。

目前,文心已發佈 20 多個大模型,覆蓋自然語言處理、計算機視覺、跨模態、生物計算等領域,賦能工業、能源、城市、金融等千行百業。

而飛槳在硬體生態上也已攜手超過 30 家硬體廠商完成了深度融合最佳化,與英偉達、英特爾、瑞芯微、Arm、Imagination 等多傢伙伴廠商展開了合作,針對不同應用場景和產品,共同推出了飛槳生態發行版、開源開放模型庫,還包括一系列面向開發者的課程。

MLPerf 打榜之外,飛槳的自適應分散式訓練架構在多個場景下得到了驗證。在 GPT-3 千億模型 GPU 訓練場景下,經測試,飛槳訓練性能達到訓練硬體峰值性能的 51.3%,在同等實驗環境下超越業界同類實現(DeepSpeed/Megatron-LM);而在「鵬城 – 百度 · 文心」千億大模型的訓練上,飛槳支持的性能達到同規模、非自適應架構下的性能的 2.1 倍[3]。

此外,在蛋白質結構預測領域,飛槳創新性地提出了「分支並行 – 動態軸並行 – 資料並行」的混合並行策略,性能提升 36% 以上[4],並在國產硬體集群上將 AlphaFold2 千萬級別蛋白 initial training 階段從 7 天壓縮到了 2.6 天。在稀疏門控混合專家並行領域,飛槳提出了 Task MoE 分散式訓練架構和基於 Task 的負載均衡機制,同等實驗環境下訓練性能比 PyTorch 提升 66%,有力支撐文心 VIMER-UFO 2.0 大模型高效訓練。

AI 對於大規模計算的需求仍在不斷增長,在不久的將來,我們可能會見證全新架構的晶片和演算法出現。百度的工程師們表示,期待未來能夠出現演算法、硬體和框架能夠出現高度協同的設計,讓 AI 在設計之初就充分考慮可計算性,從基礎上充分最佳化性能。

與此同時,飛槳正在軟硬協同性能最佳化和大規模分散式訓練、推理等方向持續創新,為廣大使用者提供廣泛適配、性能優異的產業級深度學習平臺。

最新的訊息是:在 11 月 30 日即將舉行的 Wave Summit + 深度學習開發者峰會上,飛槳即將發佈新版本,並推出有關大模型的全新工具。

大模型的大規模產業應用,離我們越來越近了。

參考文獻

[1]MLPerf Training v2.1 Results. https://mlcommons.org/en/training-normal-21/

[2]MLPerf Training v2.0 Results. https://mlcommons.org/en/training-normal-20/

[3]ERNIE 3.0 Titan: Exploring Larger-scale Knowledge Enhanced Pre-training for Language Understanding and Generation. Shuohuan Wang, et al. arXiv preprint arXiv: 2112.12731, 2021.

[4]Efficient AlphaFold2 Training using Parallel Evoformer and Branch Parallelism. Guoxia Wang, et al. arXiv preprint arXiv: 2211.00235, 2022.

相關文章

工業AI也將迎來「ChatGPT時刻」

工業AI也將迎來「ChatGPT時刻」

作者:吳昕 基於單模態 GPT-3 的 ChatGPT 「地震」餘波未平,多模態 GPT-4「海嘯」又頃刻席捲朋友圈。 「這提醒我們,對人工...