本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新您的 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 操作。
-
開啟 Amazon SageMaker AI 主控台,網址為 https://console.aws.amazon.com/sagemaker/
。 -
在左側展開 HyperPod 叢集,然後選擇叢集管理。
-
選擇您要更新的叢集,然後選擇詳細資訊和更新 AMI。
若要以程式設計方式建立和管理更新排程,請使用下列 API 操作:
-
CreateCluster – 在指定更新排程時建立叢集
-
UpdateCluster – 更新叢集以新增更新排程
-
UpdateClusterSoftware – 更新叢集的平台軟體
-
DescribeCluster – 查看您為叢集建立的更新排程
-
DescribeClusterNode 和 ListClusterNodes – 查看叢集上次更新的時間。
所需的許可
根據您在 Amazon EKS 叢集中設定 Pod 中斷預算
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(MinutesHoursDay-of-monthMonthDay-of-weekYear)
| 欄位 | 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 *)