---
title: "檢查點機制（Checkpointing）"
slug: checkpointing
language: zh-TW
source: https://aiterms.tw/learning/what-is-checkpointing
updated_at: 2026-07-04
tags: [模型訓練, 模型部署, MLOps, source:ipas]
ipas_term: true
type: deep-dive
---

# 檢查點機制 是什麼？

> 在模型訓練過程中定期儲存模型狀態與權重的技術，可防止意外中斷導致進度遺失，並便於後續推論或微調。

## 核心概念

在機器學習與深度學習的領域中，模型訓練是一個高度消耗運算資源與時間的過程。對於現代的大型語言模型或複雜的電腦視覺模型而言，整個訓練週期可能長達數週甚至數個月。在這麼漫長的運算過程中，硬體設備故障、記憶體溢出、軟體環境崩潰或是電力中斷等意外狀況隨時都可能發生。如果系統缺乏保存中間進度的機制，任何微小的中斷都會導致數百或數千小時的運算心血完全付諸流水。檢查點機制正是為了解決這個問題而誕生的關鍵技術。

它的基本概念非常直觀，就如同在撰寫長篇文章時需要不定期按下存檔鍵，或是電子遊戲中的儲存點功能。系統會在特定的時間間隔或訓練進度下，將當前模型的所有關鍵資訊寫入到非揮發性的儲存媒體中。這些資訊不僅僅包含神經網路中各個節點的權重與偏差值，為了確保訓練能夠順利地無縫接軌，還必須儲存優化器的內部狀態、學習率排程器的當前進度以及整體的訓練步數等中繼資料。透過這種定期備份狀態的方式，工程師可以確保系統具備容錯能力。一旦訓練因為不可抗力的因素中斷，只要重新載入最近一次成功寫入的檢查點檔案，就能讓模型從斷線的那一刻繼續學習，大幅降低了試錯與時間成本。

## 運作原理

要實作一個穩健的檢查點機制，工程師必須處理多個層面的技術細節，涵蓋儲存時機、檔案格式以及分散式架構下的同步問題。首先是儲存時機的判定，常見的做法是基於訓練的迭代次數或是資料集走訪的週期來設定觸發條件。有些系統會進一步結合驗證集的表現指標，只有當模型在驗證資料上的錯誤率下降時，才觸發儲存機制，這種做法可以確保被保留下來的都是品質較佳的模型狀態，而不只是單純的時間紀錄。

在資料寫入的過程中，模型參數通常會被序列化為特定的二進位檔案格式。傳統上，Python 生態系常用內建的序列化工具來打包這些張量資料，但這可能帶來載入時的安全性疑慮以及處理超大檔案時的效能瓶頸。因此，現代框架發展出了專門針對張量最佳化的格式，這類格式支援記憶體映射讀取，可以在不將整個檔案載入主記憶體的狀況下，直接從硬碟讀取特定的參數區塊，這對於參數數量動輒達到數百億的巨型模型來說是不可或缺的設計。

而在分散式訓練情境中，檢查點機制的實作變得相當複雜。當模型被切割並分散在數十甚至數百個運算節點上時，若要求所有節點在同一時間將資料寫入共享的網路儲存系統，會造成嚴重的網路頻寬擠壓與寫入延遲，這種現象稱為輸入輸出瓶頸。為了解決這個問題，分散式系統通常採用非同步的寫入策略，讓運算節點將負責的子模型參數先快速寫入各自的本地儲存空間，接著再由背景處理程序負責將這些分散的碎片資料傳輸並組裝成完整的全域檢查點檔案。這種做法有效地將資料寫入的時間成本隱藏在後續的運算週期中，避免讓儲存動作拖累整體的訓練速度。

## 實際應用

檢查點機制在實務場域中扮演著多重角色，不僅限於單純的災難恢復。在模型開發階段，研究人員經常需要調整超參數以觀察其對收斂過程的影響。透過載入特定階段的檢查點，研究人員可以從訓練中途開啟多個不同的實驗分支，例如在訓練到一半時分別套用不同的學習率下降策略，藉此比較何者能帶來更好的最終成效，而不需要每次都從頭開始訓練。

在微調技術中，預訓練模型發布時所提供的檔案，本質上就是一個經過充分訓練的檢查點。開發者下載這個檢查點後，以此作為起點，使用特定領域的資料集進行後續訓練，這種遷移學習的模式已經成為當代人工智慧應用的標準流程。如果沒有統一且規範化的檢查點儲存格式，社群之間將無法有效共享預訓練成果。

另一個重要的應用是模型融合技術。在追求極致效能的商業應用中，工程師不會只依賴訓練結束時的最後一個模型。相反地，他們會保留訓練後期連續幾個週期的檢查點，並將這些不同階段的模型參數進行平均，藉此獲得一個泛化能力更強、預測更為穩定的最終模型。這種做法證明了歷史檢查點不僅是備份，更是提升模型表現的寶貴資產。

## 常見誤區

在實作或配置檢查點系統時，許多初學者會陷入一些典型的陷阱。常見的錯誤是只儲存模型的權重張量，卻遺漏了優化器與學習率排程器的狀態。現代神經網路極度依賴具有動量概念的自適應優化器，這類優化器會根據過去的梯度更新歷史來決定下一步的走向。如果在恢復訓練時只載入了模型權重，優化器的動量資訊將會歸零，這會導致模型在恢復後的數千步內出現劇烈的震盪，損失函數可能大幅上升，甚至破壞已經學到的特徵表示。

另一個常見的問題是儲存頻率的設定不當。過於頻繁地寫入檢查點會導致系統將大量時間消耗在磁碟讀寫上，嚴重拖慢訓練進度，這在雲端運算環境中不僅浪費時間，更會帶來可觀的硬碟寫入成本。相反地，如果儲存間隔設定得太長，一旦發生系統崩潰，將會損失大量已經完成的運算進度。

缺乏磁碟空間管理機制也是實務上常犯的錯誤。大型模型的單一檢查點檔案可能高達數十甚至數百 GB，如果不設定保留數量的上限，隨著訓練週期的推進，儲存空間很快就會被耗盡，進而導致整個訓練程式因為無法寫入新檔案而異常終止。因此，建立一套自動刪除舊有檢查點、僅保留最近幾個或表現良好的幾個檔案的輪替機制，是系統設計時必須考量的環節。

## 與相關技術的比較

檢查點機制雖然與模型快照在概念上相似，但兩者的目的與內容有所不同。模型快照通常泛指在特定時間點對模型權重進行的單純備份，主要用於推論或作為歷史紀錄，不一定包含接續訓練所需的所有中繼資料。而嚴謹的檢查點機制則必須確保系統能夠從該時間點完整地恢復訓練，兩者在儲存內容的完整度上有著明確的差異。

與權重備份腳本相比，現代深度學習框架所提供的檢查點系統與訓練迴圈的整合度更高。它不再需要工程師手動編寫讀寫檔案的邏輯，而是能夠透過回呼函數等機制，自動在背景處理複雜的狀態提取與序列化工作。在分散式環境下，這種框架層級的支援更是必不可少，因為手動處理跨節點的張量合併幾乎是相當困難且容易出錯的任務。

總結來說，檢查點機制是建構可靠機器學習基礎設施的基石。隨著模型參數規模的持續膨脹，如何設計出寫入速度更快、佔用空間更小且支援容錯機制的檢查點儲存方案，仍是目前大型語言模型訓練工程中備受關注的技術焦點。

## iPAS 考試出題分析

屬於未分類考範圍。

## 常見問題

### Checkpointing 應該多久執行一次比較合適？

儲存頻率取決於計算資源、儲存空間以及模型訓練的穩定性。一般來說，在小型任務中可能會在每個資料走訪週期結束時儲存一次，以確保資料不遺失。而對於需要數天或數週的大型語言模型訓練，通常會依據迭代步數來設定，例如每幾千步寫入一次硬碟。頻繁儲存可以顯著減少意外中斷時的進度損失，但會增加磁碟讀寫負擔並佔用大量空間，因此實務上常會搭配保留最近三個或五個檢查點的輪替刪除策略，以平衡容錯需求與儲存成本。

### 儲存檢查點時只儲存模型權重足夠嗎？

若只是為了後續的推論任務，單純儲存模型參數與權重是足夠的。但若是要在未來接續未完成的訓練，則必須同時儲存優化器的狀態、學習率排程器的當前進度、整體的訓練步數與週期等關鍵中繼資料。若遺漏這些狀態，恢復訓練時優化器的動量等歷史資訊會直接歸零，這可能導致訓練初期的損失函數出現劇烈波動，甚至使模型偏離原本預期的理想收斂軌跡。

### 為什麼在分散式訓練中儲存檢查點特別困難？

在多 GPU 或多節點的分散式訓練中，模型參數可能被分割並儲存在不同的運算設備上，例如採用張量平行或管線平行架構。若讓所有節點同時將各自負責的參數區塊寫入同一個網路儲存系統，會引發嚴重的網路頻寬阻塞與檔案寫入延遲。因此，通常需要設計特殊的非同步分散儲存機制，或是讓每個節點先快速寫入局部儲存，後續再由背景程式進行全域合併。

---

深度解說頁：https://aiterms.tw/learning/what-is-checkpointing
快查頁：https://aiterms.tw/terms/checkpointing
最後更新：2026/07/04