大規模訓練

FP8 訓練(FP8 training)

FP8 訓練把混合精度再往下推一階,低於已成標準的 bf16,用僅僅八位元表示某些張量。兩種格式分工:E4M3(四位指數、三位尾數)精度較高,用於權重與激活;E5M2(五位指數、兩位尾數)動態範圍較大,用於跨越更大量級的梯度。在具備 FP8 張量核心的硬體上,這大致使矩陣乘法吞吐翻倍,並把最大運算子的記憶體流量減半。

難處在於八位元幾乎不留容錯空間,因此天真地轉型會上溢或下溢。FP8 訓練倚賴逐張量(或更細的逐區塊)縮放因子,在轉型前把每個張量重新縮放進可表示範圍,並用一段滑動歷史追蹤,使縮放隨量級漂移而調整。關鍵是只有矩陣乘法的輸入是 FP8:累加以更高精度進行、權重的主副本保留在 fp32 或 bf16、敏感運算(softmax、layer norm、優化器更新)也維持更高精度。結果是一套「該量化什麼、該保護什麼」的細緻配方。

FP8 訓練是當前低精度預訓練的前沿,在近期加速器上帶來實質吞吐增益,但它比 bf16 更不寬容——縮放錯誤會表現為悄悄發散或精度損失,而非明顯的崩潰,因此採用時要密切監控,並為數值上最脆弱的層留保守的退路。

FP8 不是「位元更少的 bf16」這麼簡單:它的動態範圍緊到逐張量縮放成為必須,而每個張量選哪種格式(E4M3 或 E5M2)是配方的一部分,不是事後補丁。

又称
8-bit floating point trainingE4M3 / E5M2FP8 訓練