本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 SageMaker HyperPod 叢集
了解如何使用 建立由 Amazon EKS 協調的 SageMaker HyperPod 叢集 AWS CLI。
-
建立 SageMaker HyperPod 叢集之前:
-
請確定您已啟動並執行現有的 Amazon EKS 叢集。如需如何設定 Amazon EKS 叢集的詳細說明,請參閱《Amazon EKS 使用者指南》中的建立 Amazon EKS 叢集。
-
依照 中的指示安裝 Helm Chart使用 Helm 在 Amazon EKS 叢集上安裝套件。如果您建立 建立具有受限執行個體群組 (RIG) 的 HyperPod EKS 叢集,則需要單獨的 Helm Chart。
-
-
準備生命週期組態指令碼並上傳至 Amazon S3 儲存貯體,例如
s3://
。amzn-s3-demo-bucket
/Lifecycle-scripts
/base-config
/為了快速入門,
on_create.sh
請從 AWS ome Distributed Training GitHub 儲存庫下載範例指令碼,並將其上傳至 S3 儲存貯體。您也可以包含額外的設定指示、一系列的設定指令碼,或要在 HyperPod 叢集佈建階段執行的命令。 重要
如果您建立僅SageMaker HyperPod 的 IAM 角色連接受管 的
AmazonSageMakerClusterInstanceRolePolicy
,您的叢集可以存取具有特定字首 的 Amazon S3 儲存貯體sagemaker-
。如果您建立受限制的執行個體群組,則不需要下載並執行生命週期指令碼。反之,您需要執行
install_rig_dependencies.sh
。執行
install_rig_dependencies.sh
指令碼的先決條件包括:-
AWS 節點 (CNI) 和 CoreDNS 都應該啟用。這些是非由標準 SageMaker HyperPod Helm 管理的標準 EKS 附加元件,但可以在 EKS 主控台的附加元件下輕鬆啟用。
-
在執行此指令碼之前,應安裝標準 SageMaker HyperPod Helm Chart。
install_rig_dependencies.sh
指令碼會執行下列動作。-
aws-node
(CNI):新的rig-aws-node
Daemonset 已建立;現有的aws-node
修補可避免 RIG 節點。 -
coredns
:轉換為適用於 RIGs 的 Daemonset,以支援多 RIG 使用並防止過載。 -
training-operators:更新為 RIG Worker 污點容錯和 nodeAffinity 偏好非 RIG 執行個體。
-
Elastic Fabric Adapter (EFA):更新以容忍 RIG 工作者污點,並為每個區域使用正確的容器映像。
-
-
準備 JSON 格式的 CreateCluster API 請求檔案。針對
ExecutionRole
,AmazonSageMakerClusterInstanceRolePolicy
請從 區段提供您使用 受管 建立之 IAM 角色的 ARNSageMaker HyperPod 的 IAM 角色。注意
確保您的 SageMaker HyperPod 叢集部署在與 Amazon EKS 叢集相同的虛擬私有雲端 (VPC) 中。SageMaker HyperPod 叢集組態中指定的子網路和安全群組必須允許與 Amazon EKS 叢集的 API 伺服器端點進行網路連線和通訊。
// create_cluster.json
{ "ClusterName":"string"
, "InstanceGroups": [{ "InstanceGroupName":"string"
, "InstanceType":"string"
, "InstanceCount":number
, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket-sagemaker>/<lifecycle-script-directory>/src/"
, "OnCreate":"on_create.sh"
}, "ExecutionRole":"string"
, "ThreadsPerCore":number
, "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"
] }], "RestrictedInstanceGroups": [ { "EnvironmentConfig": { "FSxLustreConfig": { "PerUnitStorageThroughput":number
, "SizeInGiB":number
} }, "ExecutionRole":"string"
, "InstanceCount":number
, "InstanceGroupName":"string"
, "InstanceStorageConfigs": [ { ... } ], "InstanceType":"string"
, "OnStartDeepHealthChecks": ["string"
], "OverrideVpcConfig": { "SecurityGroupIds": ["string"
], "Subnets": ["string"
] }, "ScheduledUpdateConfig": { "DeploymentConfig": { "AutoRollbackConfiguration": [ { "AlarmName":"string"
} ], "RollingUpdatePolicy": { "MaximumBatchSize": { "Type":"string"
, "Value":number
}, "RollbackMaximumBatchSize": { "Type":"string"
, "Value":number
} }, "WaitIntervalInSeconds":number
}, "ScheduleExpression":"string"
}, "ThreadsPerCore":number
, "TrainingPlanArn":"string"
} ], "VpcConfig": { "SecurityGroupIds": ["string"
], "Subnets": ["string"
] }, "Tags": [{ "Key":"string"
, "Value":"string"
}], "Orchestrator": { "Eks": { "ClusterArn":"string"
, } }, "NodeRecovery": "Automatic" }設定 以建立新的 SageMaker HyperPod 叢集與 EKS 叢集建立關聯時,請注意下列事項。
-
您可以在
InstanceGroups
參數下設定最多 20 個執行個體群組。 -
針對
Orchestator.Eks.ClusterArn
,指定您要用作協調器之 EKS 叢集的 ARN。 -
針對
OnStartDeepHealthChecks
,新增InstanceStress
和InstanceConnectivity
以啟用 深層運作狀態檢查。 -
針對
NodeRecovery
,指定Automatic
以啟用自動節點復原。當運作狀態監控代理程式發現問題時,SageMaker HyperPod 會取代或重新啟動執行個體 (節點)。 -
對於
Tags
參數,您可以新增自訂標籤,以將 SageMaker HyperPod 叢集管理為 AWS 資源。您可以像在支援標記的其他 AWS 服務中新增標籤一樣,將標籤新增至叢集。若要進一步了解一般標記 AWS 資源,請參閱標記 AWS 資源使用者指南。 -
針對
VpcConfig
參數,指定 EKS 叢集中使用的 VPC 資訊。子網路必須是私有的。
-
-
執行 create-cluster 命令,如下所示。
重要
使用
--cli-input-json
參數執行create-cluster
命令時,您必須在 JSON 檔案的完整路徑之前包含file://
字首。需要此字首,以確保 將輸入 AWS CLI 辨識為檔案路徑。省略file://
字首會導致剖析參數錯誤。aws sagemaker create-cluster \ --cli-input-json
file://complete/path/to/create_cluster.json
這應該會傳回新叢集的 ARN。
重要
您可以使用 update-cluster 操作來移除受限制的執行個體群組 (RIG)。當 RIG 縮減至 0 時,不會刪除 FSx for Lustre 檔案系統。若要完全移除 FSx for Lustre 檔案系統,您必須完全移除 RIG。
移除 RIG 不會刪除存放在服務受管 Amazon S3 儲存貯體中的任何成品。不過,您應該確保 FSx for Lustre 檔案系統中的所有成品在移除之前都完全同步到 Amazon S3。我們建議在任務完成後等待至少 30 分鐘,以確保 FSx for Lustre 檔案系統的所有成品完全同步到服務管理的 Amazon S3 儲存貯體。