使用生命周期脚本自定义 SageMaker HyperPod 集群
SageMaker HyperPod 提供始终正常运行的计算集群,由于可以编写生命周期脚本来告诉 SageMaker HyperPod 如何设置集群资源,因此具有很强的自定义性。以下主题是使用开源工作负载管理工具准备生命周期脚本以设置 SageMaker HyperPod 集群的最佳实践。
以下主题将深入讨论在 SageMaker HyperPod 上准备生命周期脚本以设置 Slurm 配置的最佳实践。
高级概述
以下步骤是配置 HyperPod 集群并使用 Slurm 设置的主要流。这些步骤按照自下而上的顺序进行。
-
计划如何在 HyperPod 集群上创建 Slurm 节点。例如,如果您要配置两个 Slurm 节点,就需要在 HyperPod 集群中设置两个实例组。
-
编写
provisioning_parameters.json
文件,它是 在 HyperPod 上配置 Slurm 节点的配置表。provisioning_parameters.json
文件应包含要在 HyperPod 集群上配置的 Slurm 节点配置信息。这应反映步骤 1 中 Slurm 节点的设计。 -
准备一套生命周期脚本,以便在 HyperPod 上设置 Slurm,安装软件包并在集群中为您的使用场景设置环境。您应构建生命周期脚本,以便在一个中心 Python 脚本 (
lifecycle_script.py
) 中按顺序集体运行,并编写一个入口点 shell 脚本 (on_create.sh
) 来运行 Python 脚本。该入口点 shell 脚本是您在步骤 5 之后向 HyperPod 集群创建请求时需要提供的。此外,请注意在创建集群时,应将脚本编写为 HyperPod 生成的
resource_config.json
。resource_config.json
包含 HyperPod 集群资源信息,如 IP 地址、实例类型和 ARN,是配置 Slurm 时需要使用的信息。 -
将前面步骤中的所有文件收集到一个文件夹中。
└── lifecycle_files // your local folder ├── provisioning_parameters.json ├── on_create.sh ├── lifecycle_script.py └── ... // more setup scrips to be fed into lifecycle_script.py
-
将所有文件上传到 S3 存储桶。复制并保留 S3 存储桶路径。请注意,您应该创建以
sagemaker-
开头的 S3 存储桶路径,因为您需要选择附加的 AmazonSageMakerClusterInstanceRolePolicy 的 SageMaker HyperPod 的 IAM 角色,而这只允许以sagemaker-
前缀开头的 S3 存储桶路径。以下命令是将所有文件上传到 S3 存储桶的示例命令。aws s3 cp --recursive
./lifecycle_files
s3://sagemaker-hyperpod-lifecycle/src
-
准备创建 HyperPod 集群的请求。
-
方案 1:如果您使用 AWS CLI,请按照 创建新集群 中的说明以 JSON 格式 (
create_cluster.json
) 编写集群创建请求。 -
方案 2:如果您使用 SageMaker 管理控制台用户界面,请按照 创建 SageMaker HyperPod 集群 中的说明,在 HyperPod 管理控制台用户界面中填写创建集群申请表。
在此阶段,请确保按照步骤 1 和 2 中的计划结构创建实例组。此外,请确保在请求表单中指定步骤 5 中的 S3 存储桶。
-
-
提交集群创建请求。HyperPod 根据请求配置集群,然后在 HyperPod 集群实例中创建
resource_config.json
文件,并在集群上设置 Slurm,运行生命周期脚本。
以下主题将引导您深入了解如何组织配置文件和生命周期脚本,以便在创建 HyperPod 集群时正常工作。