本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
縮減 SageMaker HyperPod 叢集
您可以縮減在 Amazon SageMaker HyperPod 叢集上執行的執行個體數量。您可能會基於各種原因而想要縮減叢集,例如降低資源使用率或成本最佳化。
下頁概述了縮減規模的兩種主要方法:
-
在執行個體群組層級縮減規模:此方法使用
UpdateClusterAPI,透過其您可以: -
在執行個體層級縮減規模:此方法使用
BatchDeleteClusterNodesAPI,您可以透過其來指定您要終止的個別節點。請參閱 在執行個體層級縮減規模。
注意
使用 BatchDeleteCusterNodes 在執行個體層級縮減規模時,您一次最多只能終止 99 個執行個體。UpdateCluster 支援終止任意數量的執行個體。
重要考量
-
縮減叢集時,您應該確保剩餘的資源足以處理工作負載,並正確處理任何必要的資料遷移或重新平衡,以避免中斷。
-
在工作節點群組上調用 API 之前,請務必將您的資料備份到 Amazon S3 或 FSx for Lustre 檔案系統。這有助於防止從執行個體根磁碟區中遺失任何潛在資料。如需備份的詳細資訊,請參閱使用 SageMaker HyperPod 提供的備份指令碼。
-
若要在現有叢集上調用此 API,您必須先執行 UpdateClusterSoftware API 來修補叢集。如需修補叢集的詳細資訊,請參閱更新叢集的 SageMaker HyperPod 平台軟體。
-
縮減規模後,將自動停止隨需執行個體的計量/計費。若要停止縮減規模預留執行個體的計量,您應該聯絡 AWS 客戶團隊以取得支援。
-
您可以使用從縮減的預留執行個體釋放的容量,來擴增另一個 SageMaker HyperPod 叢集。
在執行個體群組層級縮減規模
UpdateCluster 操作可讓您對 SageMaker HyperPod 叢集的組態進行變更,例如縮減執行個體群組的執行個體數量,或移除整個執行個體群組。當您想要根據工作負載中的變更來調整配置給叢集的資源、最佳化成本,或變更執行個體群組的執行個體類型時,這會很有用。
縮減執行個體群組
當您有執行個體群組處於閒置狀態,而且可以安全地終止任何執行個體以縮減規模時,請使用此方法。當您提交要縮減規模的 UpdateCluster 請求時,HyperPod 會隨機選擇要終止的執行個體,並縮減至執行個體群組的指定節點數量。
注意
當您將執行個體群組中的執行個體數量縮減至 0 時,該群組內的所有執行個體都會終止。不過,執行個體群組本身仍會做為 SageMaker HyperPod 叢集的一部分存在。稍後,您可以使用相同的執行個體群組組態來擴展執行個體群組備份。
或者,您可以選擇永久移除執行個體群組。如需詳細資訊,請參閱刪除執行個體群組。
使用 UpdateCluster 縮減規模
-
請遵循更新 SageMaker HyperPod 叢集組態中概述的步驟。當到達您在其中指定 InstanceCount 欄位的步驟 1.d 時,請輸入小於目前執行個體數量的數字,以縮減叢集。
-
執行 update-cluster AWS CLI 命令以提交您的請求。
以下是 UpdateCluster JSON 物件的範例。考慮您的執行個體群組目前有 2 個執行中執行個體的情況。如果您將 InstanceCount 欄位設定為 1,如範例所示,HyperPod 會隨機選取其中一個執行個體並將其終止。
{ "ClusterName":"name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName":"training-instances", "InstanceType":"instance-type", "InstanceCount":1, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket/training-script.py", "OnCreate":"s3://amzn-s3-demo-bucket/setup-script.sh"}, "ExecutionRole":"arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore":number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] } ], "NodeRecovery":"Automatic"}
刪除執行個體群組
您可以使用 UpdateCluster 操作,在不再需要執行個體群組時,從 SageMaker HyperPod 叢集中移除整個執行個體群組。這不僅只是簡單的縮減規模,還可讓您從叢集的組態中完全消除特定執行個體群組。
注意
移除執行個體群組時:
-
目標群組內的所有執行個體都會終止。
-
整個群組組態會從叢集中刪除。
-
在該執行個體群組上執行的任何工作負載都會停止。
使用 UpdateCluster 刪除執行個體群組
-
遵循更新 SageMaker HyperPod 叢集組態中概述的步驟時:
-
在
UpdateClusterJSON 中設定選用InstanceGroupsToDelete參數,並傳遞您要刪除之執行個體群組名稱的逗號分隔清單。 -
當您指定
InstanceGroups清單時,請確定您要移除的執行個體群組規格不再列示在InstanceGroups清單中。
-
-
執行 update-cluster AWS CLI 命令以提交您的請求。
重要
-
您的 SageMaker HyperPod 叢集必須一律維持至少一個執行個體群組。
-
在移除之前,請確保已備份所有關鍵資料。
-
移除程序無法復原。
以下是 UpdateCluster JSON 物件的範例。考慮叢集目前有 3 個執行個體群組 (一個 training、一個 prototype-training 和一個 inference-serving 群組) 的情況。您想要刪除 prototype-training 群組。
{ "ClusterName":"name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName":"training", "InstanceType":"instance-type", "InstanceCount":, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket/training-script.py", "OnCreate":"s3://amzn-s3-demo-bucket/setup-script.sh"}, "ExecutionRole":"arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore":number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] }, { "InstanceGroupName":"inference-serving", "InstanceType":"instance-type", "InstanceCount":2, [...] }, ], "InstanceGroupsToDelete": ["prototype-training"], "NodeRecovery":"Automatic"}
在執行個體層級縮減規模
BatchDeleteClusterNodes 操作可讓您透過指定要終止的個別節點來縮減 SageMaker HyperPod 叢集。BatchDeleteClusterNodes 為目標節點移除和叢集最佳化提供更精細的控制。例如,您可能使用 BatchDeleteClusterNodes 刪除目標節點以進行維護、滾動升級,或在地理上重新平衡資源。
API 請求與回應
當您提交 BatchDeleteClusterNodes 請求時,SageMaker HyperPod 會依其執行個體 ID 刪除節點。API 接受具有叢集名稱的請求,以及要刪除的節點 ID 清單。
回應包含兩個區段:
-
Failed:類型BatchDeleteClusterNodesError的錯誤清單 - 每個執行個體 ID 一個。 -
Successful:執行個體 ID 清單已成功終止。
驗證和錯誤處理
API 會執行各種驗證,例如:
-
驗證節點 ID 格式 (字首
i-和 Amazon EC2 執行個體 ID 結構)。 -
檢查節點清單長度,單一
BatchDeleteClusterNodes請求中的節點 ID 數量限制為 99 個或更少。 -
確保具有輸入叢集名稱的有效 SageMaker HyperPod 叢集存在,而且沒有正在進行的叢集層級操作 (更新、系統更新、修補或刪除)。
-
處理執行個體找不到、具有無效狀態或使用中的案例。
API 回應代碼
-
API 會傳回
200狀態代碼表示成功 (例如,所有輸入節點驗證成功) 或部分成功的請求 (例如,某些輸入節點驗證失敗)。 -
如果所有這些驗證都失敗 (例如,所有輸入節點驗證都失敗),API 將傳回
400錯誤請求回應,其中包含適當的錯誤訊息和錯誤代碼。
範例
以下是使用 AWS CLI在執行個體層級縮減叢集的範例:
aws sagemaker batch-delete-cluster-nodes --cluster-name"cluster-name"--node-ids'["i-111112222233333", "i-111112222233333"]'