技術指南

混合精準訓練

混合精度訓練透過以 16 位元浮點而不是 32 位元執行大部分數學運算來加速神經網路訓練並減少記憶體使用。

概述

混合精度訓練透過以 16 位元浮點而不是 32 位元執行大部分數學運算來加速神經網路訓練並減少記憶體使用。它可以讓相同的 GPU 更快地訓練更大的模型,而幾乎不會失去準確性。

混合精度訓練是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。

深入探討

傳統訓練以 32 位元浮點 (FP32) 儲存權重並運行數學。混合精度使用較低精度的 16 位元格式(FP16 或 bfloat16)進行大量矩陣乘法,同時保留權重的 32 位元「主副本」以實現穩定更新。由於 16 位數的大小只有一半,因此更適合 GPU 內存,並且 Tensor Core 處理它們的速度大約快 2-8 倍。問題是 FP16 的範圍很窄:微小的梯度可能會下溢到零。標準的修復方法是損失縮放,它在反向傳播之前將損失乘以一個大因子,以便小梯度保持可表示性,然後在權重更新之前將其除掉。 NVIDIA 的 Apex 以及 PyTorch 和 TensorFlow 中的內建 AMP(自動混合精度)可自動執行此操作。

技術洞察

FP16 只有 5 個指數位,動態範圍較小,會導致梯度下溢。 Bfloat16 保留 8 個指數位(與 FP32 的範圍匹配),但尾數位較少,因此它很少需要損失縮放 - 這是 Google TPU 和現代 GPU 青睞它的關鍵原因。 Tensor Core 透過將 16 位元運算元相乘但在 FP32 中累積部分和來加速工作,從而在求和誤差會復合的情況下保持精度。

掌握混合精準訓練

混合精度訓練透過以 16 位元浮點而不是 32 位元執行大部分數學運算來加速神經網路訓練並減少記憶體使用。它可以讓相同的 GPU 更快地訓練更大的模型,而幾乎不會失去準確性。混合精度訓練是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。為了建立深入的理解,請將混合精度訓練視為一種操作模型,而不是單一功能:定義期望的結果,澄清假設,並將系統可以可靠地完成的任務與仍需要專家判斷的任務分開。

在實踐中,使用混合精度訓練的強大團隊根據可靠性和成本優化架構、資料和基礎設施選擇。他們記錄明確的成功標準,根據實際數據和工作流程進行測試,並根據觀察到的失敗模式而不是一次性基準測試勝利進行迭代。這就是理論理解轉變為跨產品、政策和營運的持久能力的地方。

多年來,架構決策決定著效能和營運成本。同時,優化一個基準測試可以隱藏更廣泛的系統弱點。最具彈性的方法是將實驗速度與治理規則結合:運行試點、捕獲證據、發布決策日誌,並隨著模型行為、使用者期望和監管要求的發展不斷更新保障措施。

戰略影響

多年來,架構決策決定著效能和營運成本。

多年來,架構決策決定著效能和營運成本。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

更好的工程選擇可以減少生產中的可靠性事故。

更好的工程選擇可以減少生產中的可靠性事故。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

混合精準度訓練的未來

精度不斷下降。 NVIDIA Hopper 和 Blackwell GPU 支援的 FP8 訓練正在成為前沿模型的標準,並且對 FP4 和微縮放格式 (MXFP) 的研究也在進一步推進。期望框架能夠自動選擇每層精度,硬體能夠原生處理更窄的格式,量化感知訓練能夠模糊低精度訓練和推理之間的界限,從而降低訓練萬億參數模型的成本。

現實世界的實施

PyTorch 的 torch.cuda.amp.autocast 包裝了一個訓練循環,將單個 GPU 上的記憶體大致減半並將吞吐量加倍

在 TPU 上訓練大型語言模型,例如 bfloat16 中的 GPT 式轉換器,以避免損失縮放調整

透過將 ResNet 影像訓練從 FP32 切換到 FP16,在消費級 RTX GPU 上安裝更大的批次大小

NVIDIA H100 GPU 上的 FP8 混合精度可降低預訓練前緣規模模型的成本

實施模式

混合精準度訓練實踐

PyTorch 的 torch.cuda.amp.autocast 包裝了一個訓練循環,以將單個 GPU 上的記憶體大致減半並使吞吐量加倍。

PyTorch 的 torch.cuda.amp.autocast 封裝了一個訓練循環,以將單個 GPU 上的記憶體大致減半並使吞吐量加倍。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

混合精準度訓練實踐

在 TPU 上訓練大型語言模型,例如 bfloat16 中的 GPT 式轉換器,以避免損失縮放調整。

在 TPU 上的 bfloat16 中訓練大型語言模型(例如 GPT 式轉換器)以避免損失擴展調整 團隊在預先定義質量閾值、為邊緣情況保留人工升級路徑並隨著時間的推移跟踪生產力增益和錯誤成本時,通常會獲得更好的結果。

混合精準度訓練實踐

透過將 ResNet 影像訓練從 FP32 切換到 FP16,在消費級 RTX GPU 上安裝更大的批次大小。

透過將 ResNet 影像訓練從 FP32 切換到 FP16,在消費級 RTX GPU 上安裝更大的批量大小 當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移跟踪生產力增益和錯誤成本時,通常會獲得更好的結果。

混合精準度訓練實踐

NVIDIA H100 GPU 上的 FP8 混合精度可降低預訓練前緣規模模型的成本。

NVIDIA H100 GPU 上的 FP8 混合精度可降低預訓練前緣規模模型的成本當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移跟踪生產力增益和錯誤成本時,通常會獲得更好的結果。

風險與防護欄

!

優化一項基準測試可以隱藏更廣泛的系統弱點。

!

基礎設施和維護成本常常被低估。

!

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

在實施之前定義延遲、品質和成本目標。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

2

在實際負載和資料條件下進行基準測試。

在實際負載和資料條件下進行基準測試。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

3

儀器監控錯誤、漂移和使用者影響。

儀器監控錯誤、漂移和使用者影響。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

4

在擴展之前準備回滾和事件回應路徑。

在擴展之前準備回滾和事件回應路徑。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

不斷探索