為維護事件做好準備
TPU VM 是指附加 TPU 硬體的 Compute Engine VM 執行個體。Compute Engine VM 會受到 Compute Engine VM 維護事件影響。每個 TPU 都會連線至 Compute Engine VM,因此使用更多 TPU (例如在 TPU 節點中) 時,其中一個 VM 遇到維護事件的機率就會增加。
本文說明如何處理 Cloud TPU 長時間執行的訓練工作維護事件。如要瞭解如何處理 Google Kubernetes Engine (GKE) 中 TPU 的維護事件,請參閱「管理 GPU 和 TPU 的 GKE 節點中斷情形」。
查看即將進行維護作業的通知
您可以查看即將進行的主機維護事件通知。監控執行個體即將進行的維護作業,有助於您主動準備工作負載,以因應即將進行的維護作業,將中斷情形降到最低。詳情請參閱「查看維護通知」。
使用檢查點,在維護事件後快速復原
檢查點是從維護事件中快速復原的關鍵,因此應經常儲存。根據經驗法則,建議您大約每小時儲存一次檢查點。如果檢查點不夠頻繁,維護事件或其他訓練中斷情況可能會導致訓練進度大幅倒退。
查核點通常是指訓練時使用的所有已儲存參數,例如模型權重。儲存檢查點所需的時間可能從幾秒到幾分鐘不等。
雖然 TPU 可從大多數維護事件中自動復原,且訓練作業會繼續進行,不需手動介入,但仍可能發生作業未重新啟動並自動繼續的極端情況。發生這種情況時,您需要刪除並重新建立 TPU 資源,然後從儲存的檢查點重新啟動訓練工作。如要瞭解如何偵測及從自動復原失敗中復原,請參閱「偵測及從 TPU 故障中復原」。
每個 ML 架構都有不同的檢查點儲存和載入機制。支援的 Cloud TPU 模型通常內建檢查點功能。如要進一步瞭解檢查點,請參閱:TensorFlow 2.x、PyTorch 或 JAX/flax。
使用自動檢查點
您可以透過自動檢查點功能保留訓練進度,方法是設定程式碼,在發生維護事件時儲存非排程檢查點。如要進一步瞭解自動檢查點,請參閱「Cloud TPU 自動檢查點」。
重試訓練指令碼
訓練指令碼可能會因中斷事件而停止。
您可以使用 bash 指令碼,持續重試訓練指令碼,直到訓練完成為止。例如:
while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done
每次重試都應從最新的檢查點繼續,因此您應一律搭配檢查點使用重試指令碼。
隨時可用於實際工作的訓練管道應使用資源管理系統,例如 Google Kubernetes Engine (GKE)。如要進一步瞭解如何搭配使用 Google Kubernetes Engine 與 TPU VM,請參閱「部署 TPU 工作負載」。
偵測 TPU 故障並從中復原
如果 TPU 無法從維護事件中復原,您可以使用復原指令碼偵測 TPU 狀態,然後刪除並重新建立 TPU。如需復原指令碼範例,請參閱 retry.sh。如果執行訓練指令碼的程序當機,您可以修改復原指令碼,重新嘗試執行訓練指令碼。
如要瞭解如何手動刪除及重新建立 TPU,請參閱「管理 TPU 資源」。
使用收藏內容排程
Cloud TPU 具有集合排程的概念,提供兩種集合類型,供客戶用來支援訓練或服務和推斷工作負載。使用這項功能部署 Cloud TPU 執行個體時, Google Cloud 會套用最符合應用程式需求的專屬維護時間表。以下是各集合類型的預期行為:
訓練 (預設):這類集合適用於一般訓練工作負載,您需要盡量減少所有執行個體的停機時間,並限制非預期的中斷,以便在維護事件期間快速還原服務。訓練集合類型可為一組執行個體平行排定及執行維護事件。
服務 (可使用
--workload-type=AVAILABILITY_OPTIMIZED):對於大多數服務或推論工作負載而言,這類集合類型很有幫助,因為您只需要在部分執行個體 (副本) 中將停機時間降到最低,就能確保服務持續運作,即使在維護作業期間也不例外。服務集合類型可為一組執行個體提供交錯排程,並執行維護事件。只有 TPU v6e 支援指定服務集合。
如要進一步瞭解集合排程,請參閱「推論工作負載的 TPU 集合排程」。
偵測維護事件
您可以使用下列 gcloud compute tpus tpu-vm
describe 指令,偵測 TPU 是否發生維護事件,以及發生時間:
$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone | grep 'health'
這項指令的輸出內容會顯示 TPU 的目前狀態,以及最近一次維護事件的說明。輸出內容應與下列內容類似:
health: HEALTHY healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z
查看維護事件記錄
您可以在 系統事件稽核記錄中,查看 TPU 維護事件的歷來記錄。
在 Google Cloud 控制台導覽選單中,前往「記錄檔探索工具」頁面:
使用下列搜尋查詢,查看已終止或重新啟動的任何 TPU:
"tpu.nodes.terminate" OR "tpu.nodes.restart"結果會顯示搜尋時間範圍內,TPU 工作人員的任何中斷和維修記錄。記錄包括:
- 活動的日期和時間
- 事件類型
- 如果是「終止」事件,請在
protoPayload.metadata.terminateReason欄位中填寫終止原因