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

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

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

SageMaker HyperPod 始终提供 up-and-running计算集群,这些集群是高度可定制的,因为您可以编写生命周期脚本来告诉 SageMaker HyperPod 如何设置集群资源。以下主题是准备生命周期脚本以使用开源工作负载管理器工具设置 SageMaker HyperPod 集群的最佳实践。

以下主题深入探讨了准备用于设置 Slurm 配置的生命周期脚本的最佳实践。 SageMaker HyperPod

高级概述

以下过程是配置 HyperPod 集群并使用 Slurm 对其进行设置的主要流程。这些步骤按自下而上的方法排列。

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

  2. 准备一个provisioning_parameters.json文件,该文件是用于在上配置 Slurm 节点的配置表 HyperPod. provisioning_parameters.json应包含要在集群上配置的 Slurm 节点配置信息。 HyperPod 这应该反映步骤 1 中对 Slurm 节点的设计。

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

    另外,请注意,您应该编写预期的脚本resource_config.json,这些脚本将在集群创建 HyperPod 期间生成。 resource_config.json包含 HyperPod 群集资源信息,例如 IP 地址、实例类型和ARNs,是配置 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 存储桶路径。请注意,您应该以开头创建 S3 存储桶路径,sagemaker-因为您需要选择一个IAM的角色 SageMaker HyperPod附加的 AmazonSageMakerClusterInstanceRolePolicy,该路径仅允许以前缀开头的 S3 存储桶路径sagemaker-。以下命令是将所有文件上传到 S3 存储桶的示例命令。

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

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

    • 选项 2:如果您使用 SageMaker 控制台 UI,请按照中的说明在 HyperPod 控制台 UI 中填写创建集群申请表创建集 SageMaker HyperPod 群

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

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

以下主题将引导您完成并深入探讨如何组织配置文件和生命周期脚本以在创建 HyperPod集群期间正常运行的详细信息。