📢 Gate廣場專屬 #WXTM创作大赛# 正式開啓!
聚焦 CandyDrop 第59期 —— MinoTari (WXTM),總獎池 70,000 枚 WXTM 等你贏!
🎯 關於 MinoTari (WXTM)
Tari 是一個以數字資產爲核心的區塊鏈協議,由 Rust 構建,致力於爲創作者提供設計全新數字體驗的平台。
通過 Tari,數字稀缺資產(如收藏品、遊戲資產等)將成爲創作者拓展商業價值的新方式。
🎨 活動時間:
2025年8月7日 17:00 - 8月12日 24:00(UTC+8)
📌 參與方式:
在 Gate廣場發布與 WXTM 或相關活動(充值 / 交易 / CandyDrop)相關的原創內容
內容不少於 100 字,形式不限(觀點分析、教程分享、圖文創意等)
添加標籤: #WXTM创作大赛# 和 #WXTM#
附本人活動截圖(如充值記錄、交易頁面或 CandyDrop 報名圖)
🏆 獎勵設置(共計 70,000 枚 WXTM):
一等獎(1名):20,000 枚 WXTM
二等獎(3名):10,000 枚 WXTM
三等獎(10名):2,000 枚 WXTM
📋 評選標準:
內容質量(主題相關、邏輯清晰、有深度)
用戶互動熱度(點讚、評論)
附帶參與截圖者優先
📄 活動說明:
內容必須原創,禁止抄襲和小號刷量行爲
獲獎用戶需完成 Gate廣場實名
用FP8訓練大模型有多香? 微軟:比BF16快64%,省42%記憶體
原文來源:機器之心
大型語言模型(LLM)具有前所未有的語言理解和生成能力,但是解鎖這些高級的能力需要巨大的模型規模和訓練計算量。 在這種背景下,尤其是當我們關注擴展至 OpenAI 提出的超級智慧 (Super Intelligence) 模型規模時,低精度訓練是其中最有效且最關鍵的技術之一,其優勢包括記憶體佔用小、訓練速度快,通信開銷低。 目前大多數訓練框架(如 Megatron-LM、MetaSeq 和 Colossal-AI)訓練 LLM 預設使用 FP32 全精度或者 FP16/BF16 混合精度。
但這仍然沒有推至極限:隨著英偉達 H100 GPU 的發佈,FP8 正在成為下一代低精度表徵的數據類型。 理論上,相比於當前的 FP16/BF16 浮點混合精度訓練,FP8 能帶來 2 倍的速度提升,節省 50% - 75% 的記憶體成本和 50% - 75% 的通信成本。
儘管如此,目前對 FP8 訓練的支援還很有限。 英偉達的 Transformer Engine (TE),只將 FP8 用於 GEMM 計算,其所帶來的端到端加速、記憶體和通信成本節省優勢就非常有限了。
但現在微軟開源的 FP8-LM FP8 混合精度框架極大地解決了這個問題:FP8-LM 框架經過高度優化,在訓練前向和後向傳遞中全程使用 FP8 格式,極大降低了系統的計算,顯存和通信開銷。
實驗結果表明,在 H100 GPU 平臺上訓練 GPT-175B 模型時, FP8-LM 混合精度訓練框架不僅減少了 42% 的實際記憶體佔用,而且運行速度比廣泛採用的 BF16 框架(即 Megatron-LM)快 64%,比 Nvidia Transformer Engine 快 17%。 而且在預訓練和多個下游任務上,使用 FP8-LM 訓練框架可以得到目前標準的 BF16 混合精度框架相似結果的模型。
在給定計算資源情況下,使用 FP8-LM 框架能夠無痛提升可訓練的模型大小多達 2.5 倍。 有研發人員在推特上熱議:如果 GPT-5 使用 FP8 訓練,即使只使用同樣數量的 H100,模型大小也將會是 GPT-4 的 2.5 倍!
FP8-LM 實現
具體來說,對於使用 FP8 來簡化混合精度和分散式訓練的目標,他們設計了三個優化層級。 這三個層級能以一種漸進方式來逐漸整合8位的集體通信優化器和分散式並行訓練。 優化層級越高,就說明 LLM 訓練中使用的 FP8 就越多。
此外,對於大規模訓練(比如在數千台 GPU 上訓練 GPT-175B),該框架能提供 FP8 精度的低位數並行化,包括張量、訓練流程和訓練的並行化,這能鋪就通往下一代低精度並行訓練的道路。
張量並行化是將一個模型的各個層分散到多台設備上,從而將權重、梯度和啟動張量的分片放在不同的 GPU 上。
為了讓張量並行化支援 FP8,微軟這個團隊的做法是將分片的權重和啟動張量轉換成 FP8 格式,以便線性層計算,從而讓前向計算和後向梯度集體通信全都使用 FP8。
另一方面,序列並行化則是將輸入序列切分成多個數據塊,然後將子序列饋送到不同設備以節省啟動記憶體。
如圖 2 所示,在一個 Transformer 模型中的不同部分,序列並行化和張量並行化正在執行,以充分利用可用記憶體並提高訓練效率。
為了解決這個問題,研究者實現了一種新的 FP8 分配方案,其可將每個張量作為一個整體分散到多台設備上,而不是像 ZeRO 方法一樣將其切分成多個子張量。 該方法是以一種貪婪的方式來處理 FP8 張量的分配,如演算法 1 所示。
精度解耦
精度解耦涉及到解耦數據精度對權重、梯度、優化器狀態等參數的影響,並將經過約簡的精度分配給對精度不敏感的元件。
針對精度解耦,該團隊表示他們發現了一個指導原則:梯度統計可以使用較低的精度,而主權重必需高精度。
更具體而言,一階梯度矩可以容忍較高的量化誤差,可以配備低精度的 FP8,而二階矩則需要更高的精度。 這是因為在使用 Adam 時,在模型更新期間,梯度的方向比其幅度更重要。 具有張量縮放能力的 FP8 可以有效地將一階矩的分佈保留成高精度張量,儘管它也會導致精度出現一定程度的下降。 由於梯度值通常很小,所以為二階梯度矩計算梯度的平方可能導致數據下溢問題。 因此,為了保留數值準確度,有必要分配更高的 16 位精度。
另一方面,他們還發現使用高精度來保存主權重也很關鍵。 其根本原因是在訓練過程中,權重更新有時候會變得非常大或非常小,對於主權重而言,更高的精度有助於防止權重更新時丟失信息,實現更穩定和更準確的訓練。
在該實現中,主權重有兩個可行選項:要麼使用 FP32 全精度,要麼使用帶張量縮放的 FP16。 帶張量縮放的 FP16 的優勢是能在無損於準確度的前提下節省記憶體。 因此,新框架的預設選擇是使用帶張量縮放的 FP16 來儲存優化器中的主權重。 在訓練中,對於 FP8 混合精度優化器,每個參數需要 6 個字節的記憶體:
自動縮放
自動縮放是為了將梯度值保存到 FP8 數據格式的表徵範圍內,這需要動態調整張量縮放因數,由此可以減少 all-reduce 通信過程中出現的數據下溢和溢出問題。
具體來說,研究者引入了一個自動縮放因數 μ,其可以在訓練過程中根據情況變化。
實驗結果
為了驗證新提出的 FP8 低精度框架,研究者實驗了用它來訓練 GPT 式的模型,其中包括預訓練和監督式微調(SFT)。 實驗在 Azure 雲計算最新 NDv5 H100 超算平台上進行。
實驗結果表明新提出的 FP8 方法是有效的:相比於之前廣泛使用 BF16 混合精度訓練方法,新方法優勢明顯,包括真實記憶體用量下降了 27%-42%(比如對於 GPT-7B 模型下降了 27%,對於 GPT-175B 模型則下降了 42%); 權重梯度通信開銷更是下降了 63%-65%。
他們也進行了消融實驗,驗證了各元件的有效性。
可預見,FP8 低精度訓練將成為未來大模型研發的新基建。