本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS CLI 的指令 SageMaker HyperPod APIs
使用建立您的第一個 SageMaker HyperPod 叢集 AWS CLI 用於的指令 HyperPod。
使用 Slurm 建立您的第一個 SageMaker HyperPod 叢集
下面的教程演示了如何創建一個新的 SageMaker HyperPod 集群,並通過 Slurm 進行設置 AWS CLI
用於的指令 SageMaker HyperPod。在教學課程之後,您將建立一個包含三個 Slurm 節點、my-controller-group
my-login-group
、和的 HyperPod 叢集。worker-group-1
-
首先,準備生命週期指令碼並將其上傳到 Amazon S3 儲存貯體。叢集建立期間,請在每個 HyperPod 執行個體群組中執行它們。使用下列命令將生命週期指令碼上傳到 Amazon S3。
aws s3 sync \ ~/
local-dir-to-lifecycle-scripts
/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
注意
S3 儲存貯體路徑應該以前綴開頭
sagemaker-
,因為 toAmazonSageMakerClusterInstanceRolePolicy
只允許存取以特定前綴開頭的 Amazon S3 儲存貯體。IAM角色 SageMaker HyperPod如果您是從頭開始,請使用 Awsome 分散式訓練 GitHub 儲存庫
中提供的範例生命週期指令碼。下列子步驟說明如何下載、修改內容,以及如何將範例生命週期指令碼上傳到 Amazon S3 儲存貯體。 -
將生命週期指令碼範例的複本下載到本機電腦上的目錄。
git clone https://github.com/aws-samples/awsome-distributed-training/
-
進入目錄
1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
,在那裡你可以找到一組生命週期腳本。 cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config
若要進一步瞭解生命週期指令碼範例,請參閱準備生命週期腳本以設置 Surm SageMaker HyperPod。
-
編寫 Slurm 配置文件並將其另存為。
provisioning_params.json
在檔案中,指定基本 Slurm 組態參數,將 Slurm 節點正確指派給叢集執行個體群組。 SageMaker HyperPod 在此自學課程中,設定三個名為my-controller-group
、my-login-group
和的 Slurm 節點worker-group-1
,如下列範例組態所示。provisioning_params.json
{ "version": "1.0.0", "workload_manager": "
slurm
", "controller_group": "my-controller-group
", "login_group": "my-login-group
", "worker_groups": [ { "instance_group_name": "worker-group-1
", "partition_name": "partition-1
" } ] } -
將指令碼上傳至
s3://sagemaker-
. 您可以使用 Amazon S3 主控台或執行下列指令來執行這項操作 AWS CLI Amazon S3 命令。<unique-s3-bucket-name>
/<lifecycle-script-directory>
/srcaws s3 sync \ ~/
local-dir-to-lifecycle-scripts
/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
-
-
準備格式的CreateCluster請求檔JSON案並另存新檔
create_cluster.json
。下面的請求模板與在步驟 1.c 中定義的 Slurm 節點配置對provisioning_params.json
齊。對於ExecutionRole
,提供您使用AmazonSageMakerClusterInstanceRolePolicy
中受管理ARN的IAM角色建立的角色使用 SageMaker HyperPod 的先決條件。{
// Required: Specify the name of the cluster.
"ClusterName": "my-hyperpod-cluster
",// Required: Configure instance groups to be launched in the cluster
"InstanceGroups": [ {// Required: Specify the basic configurations to set up a controller node.
"InstanceGroupName": "my-controller-group
", "InstanceType": "ml.c5.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "${ROLE}
",// Optional: Configure an additional storage per instance group.
"InstanceStorageConfigs": [ {// Attach an additional EBS volume to each instance within the instance group.
// The default mount path for the additional EBS volume is /opt/sagemaker.
"EbsVolumeConfig":{// Specify an integer between 1 and 16384 in gigabytes (GB).
"VolumeSizeInGB":integer
, } } ] }, { "InstanceGroupName": "my-login-group
", "InstanceType": "ml.m5.4xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "${ROLE}
" }, { "InstanceGroupName": "worker-group-1
", "InstanceType": "ml.trn1.32xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "${ROLE}
" } ] } -
執行下列命令以建立叢集。
aws sagemaker create-cluster --cli-input-json
file://complete/path/to/create_cluster.json
這應該返回創建ARN的集群。
如果您因為資源限制而收到錯誤訊息,請務必將執行個體類型變更為帳戶中有足夠配額的執行個體類型,或遵循下列步驟來要求額外配額SageMaker HyperPod 配額。
-
執行
describe-cluster
以檢查叢集的狀態。aws sagemaker describe-cluster --cluster-name
my-hyperpod-cluster
叢集狀態變為之後
InService
,繼續執行下一個步驟。 -
執行
list-cluster-nodes
以檢查叢集節點的詳細資訊。aws sagemaker list-cluster-nodes --cluster-name
my-hyperpod-cluster
這將返回一個響應,並且
InstanceId
是您的群集用戶需要的 loging(aws ssm
)到他們。如需有關登入叢集節點和執行 ML 工作負載的詳細資訊,請參閱在 SageMaker HyperPod 叢集上執行工作。
刪除叢集並清除資源
成功測試建立叢集之後, SageMaker HyperPod 叢集會繼續以InService
狀態執行,直到您刪除叢集為止。建議您在未使用時刪除任何使用隨需 SageMaker 容量建立的叢集,以避免根據隨需定價產生持續的服務費用。在本教學課程中,您已建立包含兩個執行個體群組的叢集。其中一個使用 C5 執行個體,因此請務必執行下列命令來刪除叢集。
aws sagemaker delete-cluster --cluster-name
my-hyperpod-cluster
若要從用於本教學的 Amazon S3 儲存貯體清理生命週期指令碼,請前往您在叢集建立期間使用的 Amazon S3 儲存貯體,然後完全移除檔案。
如果您已測試在叢集上執行任何模型訓練工作負載,請同時檢查您是否已上傳任何資料,或者您的任務是否已將任何成品儲存至不同的 Amazon S3 儲存貯體或檔案系統服務,例如 Amazon FSx to Lustre 和 Amazon Elastic File System。若要避免產生費用,請從儲存體或檔案系統中刪除所有人工因素和資料。