首頁 > 經典文化 > 經典作品 > FP8、MXFP8和NVFP4差在哪?格式、Block Scaling與硬體支援

延伸主題

FP8、MXFP8和NVFP4差在哪?格式、Block Scaling與硬體支援

FP8使用E4M3/E5M2與Per-tensor Scaling;…

FP8、MXFP8和NVFP4差在哪?格式、Block Scaling與硬體支援

FP8、MXFP8和NVFP4都是降低Transformer訓練與推論資料精度的方法,但格式和Scaling粒度不同。FP8通常以E4M3或E5M2表示元素,搭配Per-tensor或Block Scaling;MXFP8在Blackwell上讓每32個連續值共享E8M0 Scale;NVFP4則以E2M1四位元元素、每16個值的E4M3 Local Scale,以及整個Tensor的FP32 Global Scale維持動態範圍。

位元下降不代表所有運算都用同一低精度。NVIDIA Transformer Engine目前主要讓Linear/GEMM使用低精度,Attention、Normalization、Softmax和部分Reduction仍保留BF16/FP16或FP32。選型要同時看GPU世代、Scale布局、轉置、Distributed Communication、模型收斂和完整Step Time。

重點快讀

  • FP8 E4M3有較多Mantissa,常用於Forward;E5M2動態範圍更大。
  • FP8 Delayed Scaling使用歷史Amax決定下一輪Scale。
  • FP8 Current Scaling使用目前Tensor統計。
  • MXFP8使用E4M3元素,每32值共享E8M0 Scale。
  • NVFP4使用E2M1元素,每16值共享E4M3 Scale,另有FP32 Global Scale。
  • MXFP8和NVFP4都需要Rowwise與Columnwise Representation及Scale Swizzle。
  • FP8支援Hopper、Ada與Blackwell;MXFP8和NVFP4主要需要Blackwell。
  • 部分敏感Layer和Operation仍應保留高精度。

FP8的兩種元素格式

格式位元特性常見方向
E4M31 Sign/4 Exponent/3 Mantissa較高精度、較小動態範圍Forward與Weight/Activation
E5M21 Sign/5 Exponent/2 Mantissa較大動態範圍、較低精度Backward Gradient

Transformer Engine的Hybrid FP8 Recipe通常在Forward使用E4M3、Backward使用E5M2。元素格式只決定有限範圍,實際Tensor還需要Scaling Factor把高精度數值映射到FP8可表示區間。

Delayed Scaling和Current Scaling

方法Scale來源優勢代價
Delayed過去Amax HistoryScale穩定、計算可和當前GEMM分離分布突變時反應較慢
Current目前Tensor Amax立即適應數值分布統計和同步可能進Critical Path
Block Scaling每個小Block的Amax更貼近Local DistributionScale Metadata與Layout更複雜
x_low_precision ≈ x_high_precision / scale
x_reconstructed ≈ x_low_precision × scale

Per-tensor Scale容易實作,但少數Outlier可能占用整個格式範圍;Block Scaling以更細粒度追蹤局部數值,降低Outlier對其他元素的影響。

MXFP8如何運作?

MXFP8(Microscaling FP8)使用FP8 E4M3元素與E8M0 Block Scale。每32個連續值共享一個Scale:

x = x_E4M3 × s_E8M0_block
block_size = 32
  • E8M0只有Exponent,Scale是2的冪。
  • 較細Block降低單一Outlier影響。
  • Forward和Backward通常都可使用E4M3。
  • Block Scale不需要跨節點同步Global Amax。
  • 支援Quantized All-gather。
  • 需要Blackwell SM100/SM103或更新支援。

MXFP8的Scale需要符合GEMM硬體布局。Transformer Engine會在通訊後、GEMM前進行Swizzling;未涉及通訊時可和Quantization融合。

NVFP4如何運作?

NVFP4以E2M1四位元元素表示,數值絕對值最高約6。為維持較大動態範圍,它使用Hierarchical Scaling:

x = x_E2M1
  × s_block_E4M3
  × s_global_FP32

block_size = 16
  • 每16個元素共享一個FP8 E4M3 Local Scale。
  • 整個Tensor另有FP32 Global Scale。
  • 比MXFP8更細的Block與更低位元元素。
  • Scale保留Mantissa,可比E8M0更細。
  • Training需要Blackwell SM100/SM103。
  • Inference支援SM100以上Blackwell路徑。

四位元誤差更敏感,NVIDIA Recipe還搭配Stochastic Rounding、Random Hadamard Transform與部分Layer高精度策略。

FP8、MXFP8、NVFP4比較

面向FP8MXFP8NVFP4
元素格式E4M3/E5M2E4M3E2M1
Scale粒度Per-tensor或Blockwise32元素16元素+Global
Local ScaleFP32或Recipe定義E8M0E4M3
硬體Hopper/Ada/BlackwellBlackwellBlackwell
精度風險較低最高,需要更多穩定策略
資料量8-bit8-bit+Block Scale4-bit+兩層Scale

為什麼需要Rowwise和Columnwise?

Forward GEMM和Backward中的轉置GEMM需要不同資料方向。低精度Tensor不能只把量化後資料直接轉置,因為Scale Block也必須沿新的連續方向重新計算。

  • Rowwise Representation服務正常GEMM。
  • Columnwise Representation服務Transpose方向。
  • 兩者應從高精度來源分別量化。
  • 直接轉置低精度資料會使用錯誤Scale分組。
  • 分散式All-gather後可能需要重新Swizzle。

Stochastic Rounding

NVFP4的可表示值很少,Deterministic Rounding可能累積系統性偏差。Stochastic Rounding依數值和相鄰可表示值距離隨機選擇,讓期望值更接近原值。

  • 降低長時間更新的Bias。
  • 引入Randomness與重現性考量。
  • 需要高品質RNG和分散式一致策略。
  • 不保證單次誤差更小。

Random Hadamard Transform

Hadamard Transform可把少數Outlier的能量分散到更多維度,再進行FP4量化,降低單一Block被極端值支配。反向路徑則套用對應逆變換。

  • 改善重尾Activation或Gradient分布。
  • 增加Transform Kernel與資料流。
  • 需要和GEMM、Communication融合。
  • 完整收益依模型與硬體。

哪些Operation保留高精度?

Operation常見精度原因
Linear/GEMMFP8/MXFP8/NVFP4主要吞吐收益
Attention SoftmaxBF16/FP16/FP32Exponent與Normalization敏感
LayerNorm統計FP32部分運算避免Mean/Variance誤差
Loss與ReductionBF16/FP32累加和小Gradient
敏感首尾Layer較高精度避免品質退化

Distributed Training

  • Per-tensor FP8 Scale可能需要同步Global Amax。
  • MXFP8 Block Scale局部於32元素,不需全域同步Scale。
  • NVFP4 Columnwise Quantized All-gather需共享Global Scale。
  • Scale Metadata和Tensor必須使用一致Sharding。
  • Communication前後可能需要Swizzle/Unswizzle。
  • 量化通訊也要驗證收斂與Bandwidth。

硬體支援

GPU世代FP8MXFP8NVFP4
Ampere非原生主要路徑
Ada支援部分FP8
Hopper原生FP8
Blackwell SM100/103支援支援訓練與推論支援
Blackwell SM120依軟體矩陣依軟體矩陣主要推論支援

具體能力會隨Transformer Engine、CUDA、cuBLAS和TensorRT-LLM版本更新,導入時應讀當前Support Matrix。

驗收矩陣

  1. 建立BF16/FP16基線。
  2. 分別測FP8、MXFP8與NVFP4 Recipe。
  3. 記錄Loss、Gradient、Amax與Scale。
  4. 測短、中、長Training Run。
  5. 測模型能力與下游任務。
  6. 量測Tokens/s、HBM、Network與Power。
  7. 測Checkpoint保存與恢復。
  8. 跨GPU、Driver和Compiler回歸。

推論量化配方另有專文:W4A8和KV Cache量化怎麼選?

常見問題

NVFP4就是一般FP4嗎?

不是只有E2M1元素。NVFP4還包含16元素Local Scale、Global FP32 Scale與訓練穩定策略。

MXFP8一定比FP8準嗎?

較細Block通常更貼近局部分布,但完整品質和速度依模型、Communication與Kernel,仍需實測。

FP4會讓所有Operation快兩倍嗎?

不會。只有硬體原生支援且瓶頸位於相容GEMM時才可能受益;Scale、Transform、通訊和高精度Operation仍占時間。

官方資料

低精度格式的真正差異,位於元素、Scale粒度、資料布局和硬體路徑。FP8降低位元,MXFP8用32值Microblock提高局部精度,NVFP4則用16值Hierarchical Scaling把四位元推進訓練與推論。

作者與編輯責任

本文署名作者:

YOLO LAB 的文章由署名作者或編輯團隊完成。主編 Dex 負責編輯制度、重要事實查核原則、AI 協作規範與重大更正;文章中的分析與判斷以公開來源、作品內容及可驗證資料為依據。

文章若有需要補充或修正的資料,可透過聯絡頁提供原始來源、日期與具體段落,編輯團隊會依出版政策檢查。

發表迴響

探索更多來自 YOLO LAB 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

繼續閱讀