技術指南

優化器狀態卸載到 CPU 和 NVMe

節省記憶體的技巧,將繁重的訓練記錄(優化器狀態、梯度,有時是權重)存放在 CPU RAM 或 NVMe SSD 上,而不是稀缺的 GPU 記憶體中。

概述

節省記憶體的技巧,將繁重的訓練記錄(優化器狀態、梯度,有時是權重)存放在 CPU RAM 或 NVMe SSD 上,而不是稀缺的 GPU 記憶體中。它可以讓人們訓練比 GPU 記憶體允許的更大的模型。

優化器狀態卸載到 CPU 和 NVMe 是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。

深入探討

當您使用 Adam 這樣的優化器訓練神經網路時,每個參數都會帶來額外的負擔:兩個運行統計資料(動量和方差),加上權重的全精度副本及其梯度。在混合精準度訓練中,每個參數總計約 16 個字節,使權重本身的 2 個位元組相形見絀。卸載將這些負擔從 GPU 上移除。 CPU 卸載透過 PCIe 匯流排將最佳化器狀態串流傳輸到普通系統 RAM,而 NVMe 卸載將它們一直推送到快速固態磁碟。這項技術因 DeepSpeed 的 ZeRO-Infinity 和 ZeRO-Offload 而流行,以原始速度換取容量,讓單一 GPU 或小型叢集能夠微調具有數十億個參數的模型。

技術洞察

關鍵是將資料移動與計算重疊。優化器狀態位於 CPU/NVMe 中;在向後傳遞期間,分區在需要之前透過 PCIe 預取,且優化器步驟本身通常在 CPU 上運行。 ZeRO-Offload 將 float32 主權重和 Adam 矩保留在 CPU 上,因此只有前向和後向數學保留在 GPU 上。 NVMe 新增了分層緩存,因此 TB 等級狀態會溢出到磁碟,而熱分割區則保留在 RAM 中。

掌握優化器狀態卸載至 CPU 和 NVMe

節省記憶體的技巧,將繁重的訓練記錄(優化器狀態、梯度,有時是權重)存放在 CPU RAM 或 NVMe SSD 上,而不是稀缺的 GPU 記憶體中。它可以讓人們訓練比 GPU 記憶體允許的更大的模型。優化器狀態卸載到 CPU 和 NVMe 是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。為了加深理解,請將最佳化器狀態卸載到 CPU 和 NVMe 視為一種操作模型,而不是單一功能:定義所需的結果,澄清假設,並將系統可以可靠地執行的操作與仍需要專家判斷的操作分開。

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

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

戰略影響

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

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

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

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

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

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

優化器狀態卸載到 CPU 和 NVMe 的未來

隨著模型的 GPU 記憶體不斷增長,分層卸載正在成為標準而不是奇特的。預計與更快的互連(例如模糊 CPU-GPU 邊界的 NVLink-C2C 和 CXL 記憶體池)以及更聰明的調度程式(可以預測要預取的狀態)的更緊密整合。 Grace Hopper 等統一記憶體架構減少了 PCIe 損失,框架正在推動多層卸載幾乎透明,以便愛好者可以在適度的硬體上微調大型模型。

現實世界的實施

使用 DeepSpeed ZeRO-Offload 在單一 24 GB 消費級 GPU 上微調 130 億參數 LLM,將 Adam 狀態推送到 CPU RAM。

一個小型研究實驗室透過 ZeRO-Infinity 將優化器狀態溢位到 NVMe 驅動器,在幾個 GPU 上訓練數十億參數模型。

Hugging Face Accelerate 設定可啟用 CPU 卸載,以便使用者可以執行完整的微調作業,否則會引發記憶體不足錯誤。

注重成本的新創公司租用更便宜、記憶體較低的雲端 GPU 並卸載到附加的 NVMe,而不是購買頂級 80 GB 卡。

實施模式

實踐中優化器狀態卸載到 CPU 和 NVMe

使用 DeepSpeed ZeRO-Offload 在單一 24 GB 消費級 GPU 上微調 130 億參數 LLM,將 Adam 狀態推送到 CPU RAM。

使用 DeepSpeed ZeRO-Offload 在單一 24 GB 消費級 GPU 上微調 130 億參數的 LLM,將 Adam 狀態推送到 CPU RAM 團隊在預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移跟踪生產力增益和錯誤成本時,通常會獲得更好的結果。

實踐中優化器狀態卸載到 CPU 和 NVMe

一個小型研究實驗室透過 ZeRO-Infinity 將優化器狀態溢位到 NVMe 驅動器,在幾個 GPU 上訓練數十億參數模型。

一個小型研究實驗室透過使用 ZeRO-Infinity 團隊將優化器狀態溢出到 NVMe 驅動器來在幾個 GPU 上訓練數十億參數模型,當他們預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移跟踪生產力增益和錯誤成本時,通常會得到更好的結果。

實踐中優化器狀態卸載到 CPU 和 NVMe

Hugging Face Accelerate 設定可啟用 CPU 卸載,以便使用者可以執行完整的微調作業,否則會引發記憶體不足錯誤。

Hugging Face Accelerate 配置可實現 CPU 卸載,以便使用者可以執行全面的微調作業,否則會引發記憶體不足錯誤。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

實踐中優化器狀態卸載到 CPU 和 NVMe

注重成本的新創公司租用更便宜、記憶體較低的雲端 GPU 並卸載到附加的 NVMe,而不是購買頂級 80 GB 卡。

具有成本意識的新創公司租用更便宜、記憶體更低的雲端 GPU 並卸載到附加的 NVMe,而不是支付頂級 80 GB 卡的費用。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

風險與防護欄

!

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

!

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

!

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

實施路線圖

1

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

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

2

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

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

3

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

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

4

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

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

不斷探索