詳細解釋
BFloat16(Brain Floating Point 16)的縮寫,Google Brain 開發的 16 位浮點格式,廣泛用於 AI 訓練,平衡精度和效率。
與 FP16 的對比:
- BF16:8 位指數,7 位尾數(與 FP32 相同指數範圍)
- FP16:5 位指數,10 位尾數(更高精度但更小範圍)
優勢:
- 與 FP32 相同動態範圍:不易上溢/下溢
- 無需損失縮放(Loss Scaling):FP16 需特殊處理防止梯度下溢
- 硬件支持:TPU、NVIDIA Ampere+、Intel、AMD 都支持
- 訓練穩定:大模型訓練比 FP16 更穩定
劣勢:
- 精度低於 FP16:某些需要高精度的任務可能不足
- 適用範圍:主要深度學習,其他科學計算可能不夠
應用現狀:
- TPU:從設計就支持 BF16
- NVIDIA:A100、H100、RTX 30/40 系列支持
- 框架:PyTorch、TensorFlow、JAX 原生支持
- 大模型訓練:Llama、GPT、Claude 等都用 BF16
與混合精度的關係:
- 通常 BF16 前向/反向,FP32 主權重(Adam 優化器狀態)
- 或純 BF16 訓練,速度更快
選擇指南:
- 優先 BF16:除非特定任務需更高精度
- 不確定時:從 BF16 開始,有問題再試 FP16/FP32
這是「AI 訓練效率」的關鍵—— 沒有 BF16,大模型訓練成本會高數倍。