斷點續訓練指因硬件故障、系統問題、連接錯誤以及其他未知問題導致訓練任務中斷后,下一次訓練可以在上一次的訓練基礎上繼續執行。斷點續訓練可以減少需要長時間訓練大模型的時間成本。
斷點續訓練是通過checkpoint機制實現。Checkpoint機制是在模型訓練的過程中,不斷地保存訓練結果(包括但不限于EPOCH、模型權重、優化器狀態、調度器狀態)。即便模型訓練中斷,也可以基于Checkpoint接續訓練。當訓練任務發生中斷后需要接續訓練,只需要加載Checkpoint,并使用斷點前最近一次Checkpoint存儲的信息初始化訓練狀態即可。
說明目前僅支持使用昇騰芯片訓練的任務斷點續訓,其他芯片正在開發中,敬請期待。
前提條件
- 資源組內存在空閑節點,即未被其他訓練任務占用的機器。
- 訓練任務所屬隊列內有多余配額可用且足夠時,訓練任務可自動觸發斷點續訓;訓練任務所屬隊列內無多余配額或多余配額不足時,需擴容該隊列,成功后,訓練任務可觸發斷點續訓。
訓練過程
一體化計算加速平臺·異構計算平臺會識別中斷任務并使用斷點前最近一次Checkpoint存儲的信息將訓練任務重新調度并拉齊訓練任務。您只需在訓練開始前設置分布式存儲/讀取Checkpoint,設置成功后將模型代碼上傳至存儲或自定義鏡像,并在”創建訓練任務”頁面選擇對應存儲或自定義鏡像即可,在“高級配置>訓練失敗后”操作選擇“自動重啟”。
Checkpoint有以下兩種工具:
工具一:使用原生Pytorch Checkpoint。
需在pytorch中設置分布式存儲/讀取Checkpoint,例如設置torch.save、torch.load等參數的值。
工具二:在原生Pytorch Checkpoint基礎上使用一體化計算加速平臺·異構計算平臺提供自研CTFlashCkpt加速包,其采用異步存儲機制加快訓練速度,詳見CTFlashCkpt介紹。
CTFlashCkpt加速包的安裝和使用方法參見安裝CTFlashCkpt和使用 CTFlashCkpt。
說明如果latest_checkpointed_iteration.txt內上一次訓練最后保存點和下一次訓練日志中開始點不一致,可能是寫入存儲硬盤速度較慢導致,以日志中開始點為準。