AI 在訓練時,**浮點數格式(Floating Point Format)**決定了:
- 權重(weights)如何儲存
- 梯度(gradients)如何計算
- 訓練速度
- VRAM 需求
- 數值穩定性
這其實是你之前問「怎樣算 VRAM」的核心之一。
一、為什麼 AI 訓練需要浮點數?
神經網路本質是:
所有:
- 權重 W
- 偏置 b
- 梯度
- activation
都是連續實數
電腦只能用浮點數表示。
二、IEEE 754 浮點數結構
FP32(單精度)

結構:

精度:約 7 位有效數字
FP16(半精度)

結構:

精度:約 3–4 位有效數字
三、AI 訓練常見數值格式

四、BF16 為什麼重要?

BF16 結構:

👉 重點:Exponent 和 FP32 一樣大
這代表:
- 數值範圍接近 FP32
- 不容易梯度爆炸
- 非常適合 Transformer
所以現在:
- NVIDIA H100/B200 主打 BF16
- Google TPU 也主推 BF16
五、為什麼不能全用 FP16?
問題:梯度 underflow
當梯度太小:

FP16 表示不出來 → 直接變 0
結果:
- 模型不學習
- Loss 卡死
所以現代做法是:
六、混合精度訓練(Mixed Precision)
流程:
- 權重用 FP16 / BF16
- 反向傳播用 FP32 master copy
- 使用 Loss Scaling
這樣可以:
- VRAM 減半
- 訓練速度 ×2
- 幾乎不掉精度
七、VRAM 佔用怎麼算?
假設:
- 7B 模型
- FP32

FP16:

再加上:
- 梯度
- optimizer states(通常 ×2)
實際訓練需求:
FP32 7B 可能需要 80–100GB VRAM
這就是為什麼:
- RTX 4090 很難訓練 7B 全參數
- H100 可以
八、FP8 是未來嗎?

FP8 常見格式:
- E4M3
- E5M2
優點:
- VRAM 再減半
- 訓練更快
缺點:
- 數值不穩定
- 需要特製硬體(Transformer Engine)
九、給一個武俠式比喻 😄
- FP32 = 重劍無鋒(穩)
- FP16 = 輕劍快攻(快)
- BF16 = 內力深厚(範圍大)
- FP8 = 飛刀(危險但高效)
十、總結(工程角度)
AI 訓練核心其實是:
在「數值穩定」與「顯存成本」之間取得平衡
目前主流:
- 訓練 → BF16 + FP32 master
- 推理 → FP16 / FP8 / INT8



















