使用 AWS CLI - Amazon SageMaker

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

使用 AWS CLI

下列主題提供如何以 JSON 格式寫入 SageMaker HyperPod API請求檔案,並使用 AWS CLI 命令執行這些檔案的指引。

建立新的叢集

  1. 準備生命週期組態指令碼,並將其上傳至 S3 儲存貯體,例如 s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/。下列步驟 2 假設指定的 S3 儲存貯體on_create.sh中有一個名為 的輸入點指令碼。

    重要

    請務必將 S3 路徑設定為以 開頭s3://sagemaker-IAM角色 SageMaker HyperPod 具有受管AmazonSageMakerClusterInstanceRolePolicy連接,允許存取具有特定字首 的 S3 儲存貯體sagemaker-

  2. 準備 JSON 格式的CreateClusterAPI請求檔案。您應該設定執行個體群組,以與您在建立叢集期間用來執行一組生命週期指令碼的provisioning_params.json檔案中設計的 Slurm 叢集相符。如需進一步了解,請參閱 使用生命週期指令碼自訂 SageMaker HyperPod叢集。下列範本有兩個執行個體群組,以滿足 Slurm 叢集的最低需求:一個控制器 (前端) 節點和一個運算 (工作者) 節點。針對 ExecutionRole,提供您AmazonSageMakerClusterInstanceRolePolicy透過 受管 所建立IAM角色ARN的 。 IAM角色 SageMaker HyperPod

    // create_cluster.json { "ClusterName": "your-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", // 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": "worker-group-1", "InstanceType": "ml.p4d.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster" } ], // Optional "Tags": [ { "Key": "string", "Value": "string" } ], // Optional "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } }

    根據您透過生命週期指令碼設計叢集結構的方式,您可以在 InstanceGroups 參數下設定最多 20 個執行個體群組。

    對於Tags請求參數,您可以新增自訂標籤,以將 SageMaker HyperPod 叢集管理為 AWS 資源。您可以將標籤新增至叢集,方式與在支援標記的 AWS 其他服務中新增標籤的方式相同。若要進一步了解一般如何標記 AWS 資源,請參閱標記 AWS 資源使用者指南

    針對VpcConfig請求參數,指定VPC您要使用的 資訊。如需詳細資訊,請參閱使用 Amazon 設定 SageMaker HyperPod VPC

  3. 執行 create-cluster 命令,如下所示。

    aws sagemaker create-cluster \ --cli-input-json file://complete/path/to/create_cluster.json

    這應該會傳回新叢集ARN的 。

描述叢集

執行 describe-cluster 以檢查叢集的狀態。您可以指定叢集的名稱或 ARN 。

aws sagemaker describe-cluster --cluster-name your-hyperpod-cluster

叢集的狀態變為 後InService,繼續下一個步驟。使用此 API,您也可以從執行其他 HyperPod API操作中擷取失敗訊息。

列出叢集節點的詳細資訊

執行 list-cluster-nodes 以檢查叢集節點的金鑰資訊。

aws sagemaker list-cluster-nodes --cluster-name your-hyperpod-cluster

這會傳回回應,而 InstanceId是記錄 (使用 aws ssm) 至回應時需要使用的 。

描述叢集節點的詳細資訊

執行 describe-cluster-node 以擷取叢集節點的詳細資訊。您可以從輸出取得叢集節點 ID list-cluster-nodes。您可以指定叢集的名稱或 ARN 。

aws sagemaker describe-cluster-node \ --cluster-name your-hyperpod-cluster \ --node-id i-111222333444555aa

列出叢集

執行 list-cluster 以列出您帳戶中的所有叢集。

aws sagemaker list-clusters

您也可以新增其他旗標,以篩選向下的叢集清單。若要進一步了解此命令在低層級執行的作業,以及其他用於篩選的旗標,請參閱 ListClustersAPI參考。

更新叢集組態

執行 update-cluster 以更新叢集的組態。

  1. 建立 JSON 格式的UpdateCluster請求檔案。請務必指定要更新的正確叢集名稱和執行個體群組名稱。您可以變更執行個體類型、執行個體數量、生命週期組態進入點指令碼,以及指令碼的路徑。

    1. 針對 ClusterName,指定您要更新的叢集名稱。

    2. 針對 InstanceGroupName

      1. 若要更新現有的執行個體群組,請指定您要更新的執行個體群組名稱。

      2. 若要新增執行個體群組,請指定叢集中不存在的新名稱。

    3. 針對 InstanceType

      1. 若要更新現有的執行個體群組,您必須符合您最初指定給群組的執行個體類型。

      2. 若要新增執行個體群組,請指定您要設定群組的執行個體類型。

    4. 針對 InstanceCount

      1. 若要更新現有的執行個體群組,請指定大於目前執行個體數目的整數。目前,您只能增加執行個體的數量。

      2. 若要新增執行個體群組,請指定大於或等於 1 的整數。

    5. 對於 LifeCycleConfig,您可以在想要更新執行個體群組時同時變更 SourceS3UriOnCreat值。

    6. 針對 ExecutionRole

      1. 若要更新現有的執行個體群組,請繼續使用您在叢集建立期間連接的相同IAM角色。

      2. 若要新增執行個體群組,請指定您要連接IAM的角色。

    7. 針對 TreadsPerCore

      1. 若要更新現有的執行個體群組,請繼續使用您在叢集建立期間指定的相同值。

      2. 若要新增執行個體群組,您可以從每個執行個體類型的允許選項中選擇任何值。如需詳細資訊,請搜尋執行個體類型,並參閱 Amazon 使用者指南 中的每個CPU執行個體類型之核心和每個CPU核心執行緒的參考資料表中的每個核心有效執行緒 EC2

    下列程式碼片段是您可以使用的JSON請求檔案範本。如需此 的請求語法和參數的詳細資訊API,請參閱 UpdateClusterAPI參考。

    // update_cluster.json { // Required "ClusterName": "name-of-cluster-to-update", // Required "InstanceGroups": [ { "InstanceGroupName": "name-of-instance-group-to-update", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<amzn-s3-demo-bucket>/<lifecycle-script-directory>/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/iam-role-for-cluster", // 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, } } ] }, // add more blocks of instance groups as needed { ... } ] }
  2. 執行下列update-cluster命令以提交請求。

    aws sagemaker update-cluster \ --cli-input-json file://complete/path/to/update_cluster.json

更新叢集的 SageMaker HyperPod 平台軟體

執行 update-cluster-software 以使用 SageMaker HyperPod 服務提供的軟體和安全修補程式來更新現有叢集。針對 --cluster-name,指定要更新的ARN叢集名稱或 。

重要

請注意,您必須先備份工作,才能執行此 API。修補程序會以更新的 取代根磁碟區AMI,這表示先前存放在執行個體根磁碟區中的資料將會遺失。請務必將資料從執行個體根磁碟區備份至 Amazon S3 或 Amazon FSx for Lustre。如需詳細資訊,請參閱使用 提供的備份指令碼 SageMaker HyperPod

aws sagemaker update-cluster-software --cluster-name your-hyperpod-cluster

此命令會呼叫 UpdateClusterSoftware API。API 呼叫之後, 會 SageMaker HyperPod 更新叢集執行個體,以使用最新的 ,SageMaker HyperPod DLAMI並在叢集建立或更新期間指定的 S3 儲存貯體中執行生命週期指令碼。 SageMaker HyperPod 服務團隊會定期推出新的 SageMaker HyperPod DLAMI,以增強安全性並改善使用者體驗。建議您始終更新至最新的 SageMaker HyperPod DLAMI。如需安全 SageMaker HyperPod DLAMI修補的未來更新,請追蹤 Amazon SageMaker HyperPod 版本備註

提示

如果安全修補程式失敗,您可以DescribeClusterAPI依照 的指示執行 來擷取失敗訊息描述叢集

注意

您只能以API程式設計方式執行此 。修補功能未在 SageMaker HyperPod 主控台 UI 中實作。

使用 提供的備份指令碼 SageMaker HyperPod

SageMaker HyperPod 提供指令碼,以在 Awsome 分散式訓練 GitHub 儲存庫 1.architectures/5.sagemaker-hyperpod/patching-backup.sh 中備份和還原您在 的資料。指令碼提供下列兩個函數。

若要在修補之前將資料備份至 S3 儲存貯體

sudo bash patching-backup.sh --create <s3-buckup-bucket-path>

執行 命令後,指令碼會檢查squeue是否有佇列任務、如果佇列中沒有任務,則會停止 Slurm、備份 mariadb,並在 下定義的磁碟上複製本機項目LOCAL_ITEMS。您可以將更多檔案和目錄新增至 LOCAL_ITEMS

# Define files and directories to back up. LOCAL_ITEMS=( "/var/spool/slurmd" "/var/spool/slurmctld" "/etc/systemd/system/slurmctld.service" "/home/ubuntu/backup_slurm_acct_db.sql" # ... Add more items as needed )

此外,您可以將自訂程式碼新增至提供的指令碼,以備份任何適用於使用案例的應用程式。

修補後從 S3 儲存貯體還原資料

sudo bash patching-backup.sh --restore <s3-buckup-bucket-path>

刪除叢集

執行 delete-cluster 以刪除叢集。您可以指定叢集的名稱或 ARN 。

aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster