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

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

使用 AWS CLI 的指令 SageMaker HyperPod APIs

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

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

下面的教程演示了如何創建一個新的 SageMaker HyperPod 集群,並通過 Slurm 進行設置 AWS CLI 用於的指令 SageMaker HyperPod。在教學課程之後,您將建立一個包含三個 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-,因為 to AmazonSageMakerClusterInstanceRolePolicy 只允許存取以特定前綴開頭的 Amazon S3 儲存貯體。IAM角色 SageMaker HyperPod

    如果您是從頭開始,請使用 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

      若要進一步瞭解生命週期指令碼範例,請參閱準備生命週期腳本以設置 Surm 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. 準備格式的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}" } ] }
  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是您的群集用戶需要的 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。若要避免產生費用,請從儲存體或檔案系統中刪除所有人工因素和資料。