使用适用于 SageMaker HyperPod API 的 Amazon CLI 命令 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用适用于 SageMaker HyperPod API 的 Amazon CLI 命令

使用中的 Amazon CLI 命令创建您的第一个 SageMaker HyperPod 集群 HyperPod。

使用 Slurm 创建你的第一个 SageMaker HyperPod 集群

以下教程演示了如何创建新 SageMaker HyperPod 集群并通过的Amazon CLI 命令使用 Slurm 对其进行设置。 SageMaker HyperPod按照教程,您将创建一个包含三个 Slurm 节点的 HyperPod 集群,my-controller-groupmy-login-group、和。worker-group-1

  1. 首先,准备生命周期脚本并将其上传到 S3 存储桶。在创建集群期间,在每个实例组中 HyperPod 运行它们。使用以下命令将生命周期脚本上传到 S3。

    aws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
    注意

    S3 存储桶路径应以前缀开头sagemaker-,因为 IAM 角色适用于 SageMaker HyperPod with AmazonSageMakerClusterInstanceRolePolicy 仅允许访问以特定前缀开头的 S3 存储桶。

    如果您是从头开始,请使用 Awsome 分布式训练 GitHub 存储库中提供的示例生命周期脚本。以下子步骤说明如何下载、修改哪些内容以及如何将示例生命周期脚本上传到 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

      要了解有关生命周期脚本示例的更多信息,请参阅为设置 Slurm 准备生命周期脚本 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。您可以使用 S3 控制台或运行以下 S Amazon CLI 3 命令来执行此操作。

      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 中定义的 Slurm 节点配置一致provisioning_params.json。对于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

要从用于本教程的 S3 存储桶中清理生命周期脚本,请转到您在创建集群时使用的 S3 存储桶并完全删除这些文件。

如果您已测试在集群上运行任何模型训练工作负载,还要检查是否已上传任何数据,或者您的任务是否已将任何项目保存到不同的 S3 存储桶或文件系统服务,例如 Amazon FSx for Lustre 和 Amazon Elastic File System 和 Amazon Elastic File System。为防止产生费用,请从存储或文件系统中删除所有对象和数据。