本頁面說明訓練叢集在訓練工作生命週期中的狀態,以及 Agent Platform 如何處理訓練錯誤。您可以根據這項資訊調整訓練程式碼。
訓練工作的生命週期
本節說明 Agent Platform 如何在訓練工作生命週期中處理工作站 VM。
將新工作加入佇列
建立 CustomJob 或 HyperparameterTuningJob 時,工作可能會在 JOB_STATE_QUEUED 狀態中停留一段時間,然後才由 Agent Platform 執行。這段時間通常很短,但如果Google Cloud 專案的自訂訓練配額不足以執行工作,Agent Platform 就會將工作保留在佇列中,直到配額充足為止。
並行啟動 worker
訓練工作開始時,Agent Platform 會在短時間內盡可能排定多個工作站。因此,工作站可能會並行啟動,而非依序啟動。為減少啟動延遲,Agent Platform 會在每個工作站可用時,立即開始執行程式碼。所有工作站都可用時,Agent Platform 會將工作狀態設為 JOB_STATE_RUNNING。
在大多數情況下,機器學習架構會自動處理並行啟動的工作站。如果您在訓練程式碼中使用分配策略,可能需要手動調整,以處理平行啟動的工作站。進一步瞭解 TensorFlow 和 PyTorch 中的分配策略。
在訓練作業期間重新啟動 worker
在訓練工作期間,Agent Platform 可以從任何具有相同主機名稱的工作站集區重新啟動工作站。可能原因如下:
- VM 維護:如果執行工作者的 VM 必須進行維護,Agent Platform 會在另一個 VM 上重新啟動工作者。進一步瞭解 VM 維護作業的即時遷移。
非零結束:如果任何 worker 以非零結束代碼結束,Agent Platform 會立即在同一部 VM 中重新啟動該 worker。
如要在訓練程式碼中處理工作站重新啟動,請在訓練期間定期儲存檢查點,以便在工作站重新啟動時從檢查點還原。如果訓練時間預計超過四小時,建議您至少每四小時儲存一次檢查點。瞭解如何在 TensorFlow 和 PyTorch 中使用訓練檢查點。
順利完成工作
當主要副本以結束代碼 0 結束時,訓練工作即成功完成。屆時,Agent Platform 會關閉所有其他執行中的工作站。
Agent Platform 如何處理訓練工作錯誤
本節說明 Agent Platform 如何處理常見的訓練工作錯誤和內部錯誤。
工作結束後約一分鐘,Agent Platform 會根據結束代碼,在訓練工作物件上設定錯誤代碼。
處理常見錯誤
如果遇到下列任一問題,Agent Platform 會關閉所有工作人員:
| 錯誤類型 | 錯誤訊息/記錄 | 附註 |
| 使用者代碼例外狀況 | 副本 REPLICA_NAME 以非零狀態 EXIT_CODE 結束。終止原因:REASON。 | 如果工作遇到可能暫時性的結束代碼,Agent Platform 最多會嘗試重新啟動工作三次。如果出現下列可能暫時性的錯誤代碼,Agent Platform 會提示重試工作:
|
| 記憶體不足 | 副本 REPLICA_NAME 記憶體不足,並以非零狀態 EXIT_CODE 結束。 |
GKE 會保留 Agent Platform 節點上的記憶體。在最小的機器類型 (例如 n1-standard-4) 上,Agent Platform 系統代理程式最多可能佔用 40% 的總記憶體。如果是較大的 VM,負擔相對較小。比較
n1-standard機器類型可分配的記憶體。 |
| 所在區域容量不足 (Compute Engine 缺貨) | 區域「REGION_NAME」的資源不足,請嘗試使用其他區域或加速器。 | 如果 Compute Engine 區域中選取的 CPU 或 GPU 容量已達上限,就會發生缺貨情形。與專案配額無關。
發生這種情況時,Agent Platform 最多會嘗試重新啟動工作三次。
對於在 A2 和 A3 VM 上執行的工作,Dynamic Workload Scheduler 可讓您排定工作,在要求的 GPU 資源可用時執行,而不是因缺貨錯誤而失敗。詳情請參閱根據資源可用性排定訓練工作時間表。 |
處理內部錯誤
如果 Agent Platform 發生內部錯誤,系統會嘗試重新啟動工作兩次 (總共三次)。如果重新啟動嘗試也失敗,Agent Platform 會傳回內部錯誤,訊息為:Internal error occurred for the current attempt。