Zubnet AI學習Wiki › 檢查點
訓練

檢查點

別名:模型檢查點、快照

在訓練過程中儲存的模型狀態快照 — 權重、最佳化器狀態、學習率排程和訓練步數。檢查點讓你能在中斷後恢復訓練(硬體故障、被搶佔)、評估模型的中間版本,以及在訓練退化時回退到較早的版本。每隔幾千步儲存檢查點是標準做法。

為什麼重要

訓練大型模型需要數天到數月。沒有檢查點,在 100,000 步訓練的第 90,000 步發生 GPU 故障就意味著從頭開始。檢查點是保險:它們漸進地儲存進度,所以你只會失去自上次檢查點以來的工作。它們也能實現模型選擇 — 有時較早的檢查點在你的評估指標上表現比最終版本更好。

深度解析

一個 70B 模型的完整檢查點包括:模型權重(FP16 約 140 GB)、最佳化器狀態(Adam 約 280 GB,為每個參數儲存兩個移動平均值)、學習率排程器狀態、隨機數生成器狀態,以及當前訓練步數。總計:每個檢查點約 420 GB。將其儲存到磁碟需要大量時間和儲存空間,這就是為什麼檢查點是定期而非每步進行。

檢查點策略

常見策略:每 N 步儲存(簡單但使用大量儲存空間)、只保留最近 K 個檢查點(刪除較舊的以節省空間)、根據評估指標儲存(保留驗證損失最佳的檢查點),以及使用異步檢查點(在背景儲存,同時訓練繼續處理下一批)。大型訓練通常使用所有這些:在快速 NVMe 儲存上頻繁的本地檢查點,加上定期的遠端檢查點到網路儲存以進行災難恢復。

檢查點轉換

不同的框架使用不同的檢查點格式:PyTorch 的 state_dict、Hugging Face 的 safetensors、FSDP 的分片檢查點,以及 DeepSpeed 的 ZeRO 檢查點。在格式之間轉換是一個常見的任務 — 你可能用 DeepSpeed 訓練(跨 GPU 分片)但需要一個合併的單一檢查點用於推論或上傳到 Hugging Face。safetensors 格式正成為共享的標準,因為它載入快速且記憶體安全。

相關概念

← 所有術語
← 機器學習 檢索 →