本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon SageMaker HyperPod 任務控管中使用 gang 排程
在分散式 ML 訓練中,任務通常需要在具有 Pod pod-to-pod通訊的節點之間同時執行多個 Pod。HyperPod 任務控管使用 Kueue waitForPodsReady的功能來實作 gang 排程。啟用時,Kueue 會監控工作負載,直到其所有 Pod 就緒為止,這表示排程、執行和傳遞選用的整備探查。如果工作負載的所有 Pod 未在設定的逾時內就緒,則會移出工作負載並重新排入佇列。
Gang 排程提供下列優點:
-
防止資源浪費 — 如果所有 Pod 都未就緒,則 Kueue 會移出和重新排入佇列工作負載,確保部分執行的工作負載不會無限期保留資源。
-
避免死結 — 防止任務無限期地保留部分資源和封鎖彼此。
-
自動復原:如果 Pod 在逾時內未就緒,工作負載會被移出,並以可設定的指數退避重新排入佇列,而不是無限期地掛起。
啟用 gang 排程
若要啟用 Gang 排程,您必須安裝具有任務控管 Amazon EKS 附加元件的 HyperPod Amazon EKS 叢集。附加元件狀態必須為 Active或 Degraded。
注意
您也可以kubectl編輯叢集上的 Kueue 組態,直接使用 設定 Gang 排程。
啟用 Gang 排程 (SageMaker AI 主控台)
-
開啟 Amazon SageMaker AI 主控台
並導覽至 HyperPod 叢集。 -
選擇政策管理索引標籤。
-
在任務控管區段中,開啟動作,然後選擇設定 gang 排程。
-
在 上切換 gang 排程並設定設定。
-
選擇儲存。Kueue 控制器會重新啟動以套用變更。
Gang 排程組態設定
下表說明 gang 排程的組態設定。
| 設定 | 描述 | 預設 |
|---|---|---|
timeout |
Kueue 等待所有 Pod 就緒的時間,再移出工作負載並重新排入佇列。 | 5m |
recoveryTimeout |
Kueue 在節點故障後等待 Pod 復原的時間,再重新佇列工作負載。設定為 0s以停用。timeout 如果未設定,則預設為 的值。 |
5m |
blockAdmission |
啟用時,會依序認可工作負載。在目前工作負載的所有 Pod 都就緒之前,不會接受新的工作負載。防止資源受限叢集上的死結。 | 關閉 |
requeuingStrategy timestamp |
佇列順序是使用 Creation(原始提交時間,保留佇列位置) 還是 Eviction(上次移出的時間,有效取消重複失敗任務的優先順序)。 |
移出 |
requeuingStrategy backoffLimitCount |
Kueue 永久停用工作負載之前的最大佇列嘗試次數。為無限制的重試保留空白。 | 無限制 |
requeuingStrategy backoffBaseSeconds |
每次連續逾時後重新佇列工作負載時,指數退避的基本時間,以秒為單位。指數為 2。 | 60 年代 |
requeuingStrategy backoffMaxSeconds |
指數退避延遲的上限。到達後,Kue 會繼續在此固定間隔重新排入佇列。 | 3600 秒 |
注意
修改 gang 排程設定會重新啟動 Kueue 控制器,這可能會暫時延遲任務許可。無論您是啟用、停用或更新任何值,這都會套用。執行中的任務不會中斷。
注意
Gang 排程適用於整個叢集。它適用於叢集上的所有 Kueue 受管工作負載,而不只是特定團隊或佇列。