使用 的 AWS CLI 命令 SageMaker HyperPod APIs - Amazon SageMaker

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

使用 的 AWS CLI 命令 SageMaker HyperPod APIs

使用 的 AWS CLI 命令建立您的第一個 SageMaker HyperPod 叢集 HyperPod。

使用 Slurm 建立您的第一個 SageMaker HyperPod 叢集

下列教學課程示範如何建立新的 SageMaker HyperPod 叢集,並透過 AWS CLI 的命令 SageMaker HyperPod使用 Slurm 設定叢集。遵循教學課程,您將建立具有三個 Slurm 節點 my-controller-groupmy-login-group和 的 HyperPod 叢集worker-group-1

  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-,因為IAM角色 SageMaker HyperPod具有 的 AmazonSageMakerClusterInstanceRolePolicy僅允許存取以特定字首開頭的 Amazon S3 儲存貯體。

    如果您是從頭開始,請使用 Awsome 分散式訓練 GitHub 儲存庫 中提供的範例生命週期指令碼。下列子步驟說明如何下載、修改內容,以及如何將範例生命週期指令碼上傳至 Amazon S3 儲存貯體。

    1. 將生命週期指令碼範例的複本下載至本機電腦上的目錄。

      git clone https://github.com/aws-samples/awsome-distributed-training/
    2. 前往目錄 1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config,您可以在其中找到一組生命週期指令碼。

      cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config

      若要進一步了解生命週期指令碼範例,請參閱 使用生命週期指令碼自訂 SageMaker HyperPod叢集

    3. 寫入 Slurm 組態檔案,並將其儲存為 provisioning_params.json。在 檔案中,指定基本 Slurm 組態參數,以將 Slurm 節點正確指派給 SageMaker HyperPod 叢集執行個體群組。在本教學課程中,設定三個名為 my-controller-groupmy-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" } ] }
    4. 將指令碼上傳至 s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src。您可以使用 Amazon S3 主控台,或執行下列 AWS CLI Amazon S3 命令來執行此操作。

      aws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
  2. 準備 JSON 格式的CreateCluster請求檔案,並儲存為 create_cluster.json。下列請求範本與步驟 1.c provisioning_params.json 中定義的 Slurm 節點組態相符。針對 ExecutionRole,提供您在 AmazonSageMakerClusterInstanceRolePolicy中使用 受管 所建立IAM角色ARN的 使用 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}" } ] }
  3. 執行下列命令來建立叢集。

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

    這應該會傳回已建立叢集ARN的 。

    如果您因為資源限制而收到錯誤,請確定您將執行個體類型變更為帳戶中具有足夠配額的執行個體類型,或遵循 的 請求額外的配額SageMaker HyperPod 配額

  4. 執行 describe-cluster 以檢查叢集的狀態。

    aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster

    叢集的狀態變為 後InService,繼續下一個步驟。

  5. 執行 list-cluster-nodes 以檢查叢集節點的詳細資訊。

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

    這會傳回回應,而 InstanceId是您的叢集使用者記錄 (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 for Lustre 和 Amazon Elastic File System 若要避免產生費用,請從儲存體或檔案系統中刪除所有成品和資料。