View a markdown version of this page

在 Amazon SageMaker HyperPod 任務控管中使用 gang 排程 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 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 叢集。附加元件狀態必須為 ActiveDegraded

注意

您也可以kubectl編輯叢集上的 Kueue 組態,直接使用 設定 Gang 排程。

啟用 Gang 排程 (SageMaker AI 主控台)
  1. 開啟 Amazon SageMaker AI 主控台並導覽至 HyperPod 叢集。

  2. 選擇政策管理索引標籤。

  3. 任務控管區段中,開啟動作,然後選擇設定 gang 排程

  4. 在 上切換 gang 排程並設定設定。

  5. 選擇儲存。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 受管工作負載,而不只是特定團隊或佇列。