使用 AWS CLI - Amazon SageMaker

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

使用 AWS CLI

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

建立新叢集

  1. 準備生命週期組態指令碼並將其上傳至 S3 儲存貯體,例如s3://sagemaker-<your-s3-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 角色 SageMaker HyperPod受管建立的 IAM 角色的 ARN。

    // create_cluster.json { "ClusterName": "your-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<your-s3-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-<your-s3-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 request 參數,您可以新增自訂標籤,以將 SageMaker HyperPod 叢集當作 AWS 資源管理。您可以使用在其他支援標記的 AWS 服務中新增標記的方式,將標記新增至叢集的方式相同。若要進一步了解標記 AWS 資源的一般資訊,請參閱標記 AWS 資源使用指南

    對於VpcConfig請求參數,請指定要使用的 VPC 資訊。如需詳細資訊,請參閱 (可選) SageMaker HyperPod 使用您的 Amazon VPC 進行設置

  3. 執行下列命令以提交 CreateCluster API 要求。

    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以擷取叢集節點的詳細資訊。您可以從 list-cluster-nodes 輸出中獲取集群節點 ID。您可以指定叢集的名稱或 ARN。

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

列出叢集

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

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 EC2 使用者指南每個執行個體類型每個執行個體類型的 CPU 核心和每個 CPU 核心的每個執行緒的參考表中的每個核心的有效踏板資料欄。

    以下代碼片段是您可以使用的 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-<your-s3-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

此命令會呼叫UpdateCluster軟體 API。API 呼叫後,將叢集執行個體 SageMaker HyperPod 更新為使用最新的執行個體,SageMaker HyperPod DLAMI並在您在叢集建立或更新期間指定的 S3 儲存貯體中執行生命週期指令碼。 SageMaker HyperPod 服務團隊定期推出新SageMaker HyperPod DLAMI的服務,以增強安全性和改善用戶體驗。我們建議您始終保持更新到最新的 SageMaker HyperPod DLAMI。對於 future 用於安全性修補的 SageMaker HyperPod DLAMI 更新,請跟進. Amazon SageMaker HyperPod 版本說明

提示

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

注意

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

使用提供的備份腳本 SageMaker HyperPod

SageMaker HyperPod 1.architectures/5.sagemaker-hyperpod/patching-backup.shAwsome 分散式訓練 GitHub 存放庫中提供用於備份和還原資料的指令碼。該腳本提供了以下兩個功能。

在修補之前將資料備份到 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