更新您的 SageMaker HyperPod 叢集中的 AMI 版本 - Amazon SageMaker AI

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

更新您的 SageMaker HyperPod 叢集中的 AMI 版本

Amazon SageMaker HyperPod Amazon Machine Image (AMI) 是特殊化的機器映像,適用於分散式機器學習工作負載和高效能運算。每個 AMI 都會預先載入驅動程式、機器學習架構、訓練程式庫和效能監控工具。透過更新您叢集中的 AMI 版本,您可以將這些元件和套件的最新版本用於訓練任務和工作流程。

在更新您叢集內的 AMI 版本時,您可以選擇立即處理更新、排程僅限一次的更新,或使用 Cron 表達式建立週期性排程。您也可以選擇更新執行個體群組中的所有執行個體,或僅批次更新執行個體。如果選擇批次更新,您可以設定 SageMaker AI 應該一次升級的執行個體百分比或數量。如果使用此更新方法,您可以設定 SageMaker AI 在批次之間應等待多久的間隔。

如果選擇批次更新,您也可以包含警示和指標的清單。在等待間隔期間,SageMaker AI 會觀察這些指標,如果有任何指標超過閾值,對應警示便會進入 ALARM 狀態,而 SageMaker AI 則會復原 AMI 更新。若要使用自動復原,您的 IAM 執行角色必須具有許可 cloudwatch:DescribeAlarms

注意

批次更新叢集僅適用於與 Amazon EKS 整合的 HyperPod 叢集。此外,如果您要建立多個排程,我們建議您在排程之間有一個緩衝時間。如果排程重疊,更新可能會失敗。

如需 HyperPod 叢集每個 AMI 版本的詳細資訊,請參閱 Amazon SageMaker HyperPod AMI。如需一般 HyperPod 版本的詳細資訊,請參閱 Amazon SageMaker HyperPod 版本備註

您可以使用 SageMaker AI API 或 CLI 操作來更新叢集,或查看特定叢集的排程更新。如果您使用的是 AWS 主控台,請遵循下列步驟:

注意

使用 AWS 主控台更新您的 AMI 僅適用於與 Amazon EKS 整合的叢集。如果您有 Slurm 叢集,則必須使用 SageMaker AI API 或 CLI 操作。

  1. 開啟 Amazon SageMaker AI 主控台,網址為 https://console.aws.amazon.com/sagemaker/

  2. 在左側展開 HyperPod 叢集,然後選擇叢集管理

  3. 選擇您要更新的叢集,然後選擇詳細資訊更新 AMI

若要以程式設計方式建立和管理更新排程,請使用下列 API 操作:

所需的許可

根據您在 Amazon EKS 叢集中設定 Pod 中斷預算的方式,HyperPod 會移出 Pod、釋出節點,並防止在 AMI 更新過程中進行任何更新排程。如果違反了預算中的任何限制條件,HyperPod 會在 AMI 更新期間略過該節點。若要讓 SageMaker HyperPod 正確移出 Pod,您必須將必要的許可新增至 HyperPod 服務連結角色。下列 yaml 檔案具有必要的許可。

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: hyperpod-patching rules: - apiGroups: [""] resources: ["pods"] verbs: ["list"] - apiGroups: [""] resources: ["pods/eviction"] verbs: ["create"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: hyperpod-patching subjects: - kind: User name: hyperpod-service-linked-role roleRef: kind: ClusterRole name: hyperpod-patching apiGroup: rbac.authorization.k8s.io

使用下列命令來套用許可。

git clone https://github.com/aws/sagemaker-hyperpod-cli.git cd sagemaker-hyperpod-cli/helm_chart helm upgrade hyperpod-dependencies HyperPodHelmChart --namespace kube-system --install

Cron 表達式

若要在特定時間或週期性排程設定一次性更新,請使用 cron 表達式。Cron 表達式支援六個欄位,並以空格隔開。所有六個欄位都是必要欄位。

cron(Minutes Hours Day-of-month Month Day-of-week Year)
欄位 Values (數值) 萬用字元

分鐘

00 – 59

N/A

小時

00 – 23

N/A

月中的日

01 – 31

?

01 – 12

* /

週中的日

1 – 7 或 MON-SUN

? # L

本年度 – 2099

*
萬用字元
  • * (星號) 包含欄位中所有的值。在 Hours 欄位,* 包含每個小時。

  • / (斜線) 萬用字元用於指定增量。在 Months 欄位中,您可以輸入 */3 來指定每 3 個月一次。

  • ? (問號) 萬用字元用於表示不限定任何一個。在 Day-of-month 欄位,您可以輸入 7,如果您不在意這個月的 7 號是星期幾,就可以在 Day-of-week (週中的日) 欄位中輸入 ?

  • day-of-week 或欄位中的 L 萬用字元指定該月或週的最後一天。例如,5L 表示該月的最後一個星期五。

  • 星期幾欄位中的 # 萬用字元指定一個月內指定星期幾的某個執行個體。例如,3#2 代表則該月的第二個星期二:3 是指星期二,因為它是每週的第三天,2 指的是一個月內該類型的第二天。

您可以將 Cron 表達式用於以下案例:

  • 在特定時間和日子執行的一次性排程。您可以使用 ? 萬用字元來表示幾號或星期幾並不重要。

    cron(30 14 ? 12 MON 2024)
    cron(30 14 15 12 ? 2024)
  • 在特定時間和日子執行的每週排程。以下範例建立了一個無論幾號都在每個星期一中午 12:00 執行的排程。

    cron(00 12 ? * 1 *)
  • 每個月執行的每月排程,無論星期幾。下列排程會在每月 15 號的中午 12:30 執行。

    cron(30 12 15 * ? *)
  • 使用星期幾的每月排程。

    cron(30 12 ? * MON *)
  • 若要建立每第 N 個月執行的排程,請使用 / 萬用字元。下列範例會建立每 3 個月執行的每月排程。下列兩個範例示範如何使用星期幾和幾號。

    cron(30 12 15 */3 ? *)
    cron(30 12 ? */3 MON *)
  • 在指定星期幾的某個執行個體上執行的排程。下列範例會建立一個在每個月第二個星期一中午 12:30 執行的排程。

    cron(30 12 ? * 1#2 *)
  • 在指定星期幾的最後一個執行個體上執行的排程。下列排程會在每個月最後一個星期一的中午 12:30 執行。

    cron(30 12 ? * 1L *)