混合精度訓練 是什麼?
Mixed Precision Training — 混合精度訓練 的完整解釋
混合精度訓練是一種使用不同精度(如 FP16 和 FP32)的浮點數進行模型訓練的技術,旨在加速訓練過程並減少記憶體佔用。
容易混淆
混合精度訓練 vs 全精度訓練
混合精度訓練:同時使用 FP16、BF16 或 FP32。 全精度訓練:大多數運算都維持在較高精度。 最關鍵的區別:前者更省資源,後者更穩但更吃記憶體。
混合精度訓練 vs 模型量化
混合精度訓練:多發生在訓練過程。 模型量化:多發生在部署或壓縮階段。 最關鍵的區別:前者是訓練策略,後者是模型轉換策略。
記住這句就好
訓練時先省一部分精度,換速度和顯存。
實際案例
訓練大型語言模型
同一張 GPU 能裝下更多參數和 batch,訓練速度也常比全精度更快。
影像模型微調
原本跑不動的大 batch,開混合精度後可以順利訓練,還能保住大部分準確率。
算法與應用
常見做法是用低精度做矩陣乘法,用高精度保護累加和關鍵更新。 動態 loss scaling 常用來避免梯度下溢。 在現代 GPU 上,它幾乎是大模型訓練的標配技巧。
情境判斷
Q1(情境題): 如果開了混合精度後,模型突然不穩,該怎麼看?
→ 先檢查 loss scaling、數值下溢和不支援的算子,有些層可能還是要保留較高精度。
Q2(情境題): 混合精度訓練一定會讓準確率掉很多嗎?
→ 通常不會,正確設定下多半能維持接近的效果,同時節省資源。
相關術語
常見問題
混合精度訓練只適合 GPU 嗎?
主要是,但概念上也可以延伸到其他支援低精度運算的硬體。
它和量化訓練一樣嗎?
不一樣。混合精度訓練是混著用不同精度,量化訓練則更像把數值壓到更低位元表示。
為什麼它能提速?
因為低精度運算通常更快、資料搬移更少,GPU 吞吐也會更高。