使用生命周期脚本自定义 SageMaker HyperPod 集群 - Amazon SageMaker

使用生命周期脚本自定义 SageMaker HyperPod 集群

SageMaker HyperPod 提供始终正常运行的计算集群,由于可以编写生命周期脚本来告诉 SageMaker HyperPod 如何设置集群资源,因此具有很强的自定义性。以下主题是使用开源工作负载管理工具准备生命周期脚本以设置 SageMaker HyperPod 集群的最佳实践。

以下主题将深入讨论在 SageMaker HyperPod 上准备生命周期脚本以设置 Slurm 配置的最佳实践。

高级概述

以下步骤是配置 HyperPod 集群并使用 Slurm 设置的主要流。这些步骤按照自下而上的顺序进行。

  1. 计划如何在 HyperPod 集群上创建 Slurm 节点。例如,如果您要配置两个 Slurm 节点,就需要在 HyperPod 集群中设置两个实例组。

  2. 编写 provisioning_parameters.json 文件,它是 在 HyperPod 上配置 Slurm 节点的配置表provisioning_parameters.json 文件应包含要在 HyperPod 集群上配置的 Slurm 节点配置信息。这应反映步骤 1 中 Slurm 节点的设计。

  3. 准备一套生命周期脚本,以便在 HyperPod 上设置 Slurm,安装软件包并在集群中为您的使用场景设置环境。您应构建生命周期脚本,以便在一个中心 Python 脚本 (lifecycle_script.py) 中按顺序集体运行,并编写一个入口点 shell 脚本 (on_create.sh) 来运行 Python 脚本。该入口点 shell 脚本是您在步骤 5 之后向 HyperPod 集群创建请求时需要提供的。

    此外,请注意在创建集群时,应将脚本编写为 HyperPod 生成的 resource_config.jsonresource_config.json 包含 HyperPod 集群资源信息,如 IP 地址、实例类型和 ARN,是配置 Slurm 时需要使用的信息。

  4. 将前面步骤中的所有文件收集到一个文件夹中。

    └── lifecycle_files // your local folder ├── provisioning_parameters.json ├── on_create.sh ├── lifecycle_script.py └── ... // more setup scrips to be fed into lifecycle_script.py
  5. 将所有文件上传到 S3 存储桶。复制并保留 S3 存储桶路径。请注意,您应该创建以 sagemaker- 开头的 S3 存储桶路径,因为您需要选择附加的 AmazonSageMakerClusterInstanceRolePolicySageMaker HyperPod 的 IAM 角色,而这只允许以 sagemaker- 前缀开头的 S3 存储桶路径。以下命令是将所有文件上传到 S3 存储桶的示例命令。

    aws s3 cp --recursive ./lifecycle_files s3://sagemaker-hyperpod-lifecycle/src
  6. 准备创建 HyperPod 集群的请求。

    • 方案 1:如果您使用 AWS CLI,请按照 创建新集群 中的说明以 JSON 格式 (create_cluster.json) 编写集群创建请求。

    • 方案 2:如果您使用 SageMaker 管理控制台用户界面,请按照 创建 SageMaker HyperPod 集群 中的说明,在 HyperPod 管理控制台用户界面中填写创建集群申请表。

    在此阶段,请确保按照步骤 1 和 2 中的计划结构创建实例组。此外,请确保在请求表单中指定步骤 5 中的 S3 存储桶。

  7. 提交集群创建请求。HyperPod 根据请求配置集群,然后在 HyperPod 集群实例中创建 resource_config.json 文件,并在集群上设置 Slurm,运行生命周期脚本。

以下主题将引导您深入了解如何组织配置文件和生命周期脚本,以便在创建 HyperPod 集群时正常工作。