

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

# 准备并上传生命周期脚本
<a name="sagemaker-hyperpod-multihead-slurm-scripts"></a>

创建完所有必需的资源后，您需要为 SageMaker HyperPod 集群设置[生命周期脚本](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts)。这些[生命周期脚本](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts)提供了可用于创建[基本 HyperPod Slurm 集群的基本配置](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config)。

## 准备生命周期脚本
<a name="sagemaker-hyperpod-multihead-slurm-prepare-scripts"></a>

按照以下步骤操作可获取生命周期脚本。

1. 将[生命周期脚本](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts)从 GitHub 存储库下载到您的计算机。

1. 使用 [cp](https://docs.aws.amazon.com//cli/latest/reference/s3/cp.html) CLI 命令将[生命周期脚本](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts)上传到您在[预调配基本资源](sagemaker-hyperpod-multihead-slurm-cfn.md#sagemaker-hyperpod-multihead-slurm-cfn-basic)中创建的 Amazon S3 存储桶。

   ```
   aws s3 cp --recursive LifeCycleScripts/base-config s3://${ROOT_BUCKET_NAME}/LifeCycleScripts/base-config
   ```

## 创建配置文件
<a name="sagemaker-hyperpod-multihead-slurm-update-config-file"></a>

按照以下步骤操作，创建配置文件并将其上传到用于存储生命周期脚本的同一 Amazon S3 存储桶。

1. 使用以下配置创建名为 `provisioning_parameters.json` 的配置文件。请注意，`slurm_sns_arn` 是可选项。如果未提供， HyperPod 则无法设置 Amazon SNS 通知。

   ```
   cat <<EOF > /tmp/provisioning_parameters.json
   {
     "version": "1.0.0",
     "workload_manager": "slurm",
     "controller_group": "$CONTOLLER_IG_NAME",
     "login_group": "my-login-group",
     "worker_groups": [
       {
         "instance_group_name": "$COMPUTE_IG_NAME",
         "partition_name": "dev"
       }
     ],
     "fsx_dns_name": "$SLURM_FSX_DNS_NAME",
     "fsx_mountname": "$SLURM_FSX_MOUNT_NAME",
     "slurm_configurations": {
       "slurm_database_secret_arn": "$SLURM_DB_SECRET_ARN",
       "slurm_database_endpoint": "$SLURM_DB_ENDPOINT_ADDRESS",
       "slurm_shared_directory": "/fsx",
       "slurm_database_user": "$DB_USER_NAME",
       "slurm_sns_arn": "$SLURM_SNS_FAILOVER_TOPIC_ARN"
     }
   }
   EOF
   ```

1. 将 `provisioning_parameters.json` 文件上传到用于存储生命周期脚本的同一 Amazon S3 存储桶。

   ```
   aws s3 cp /tmp/provisioning_parameters.json s3://${ROOT_BUCKET_NAME}/LifeCycleScripts/base-config/provisioning_parameters.json
   ```
**注意**  
如果您使用的是 API 驱动的配置，则不需要该`provisioning_parameters.json`文件。使用 API 驱动的配置，您可以直接在 API 负载中定义 Slurm 节点类型、分区和 FSx 挂载。 CreateCluster 有关详细信息，请参阅[ SageMaker HyperPod 使用入门 AWS CLI](smcluster-getting-started-slurm-cli.md)。

## 验证 Amazon S3 存储桶中的文件
<a name="sagemaker-hyperpod-multihead-slurm-verify-s3"></a>

上传所有生命周期脚本和 `provisioning_parameters.json` 文件后，Amazon S3 存储桶应如下所示。

![\[图片显示了在 Amazon Simple Storage Service 控制台中上传到 Amazon S3 存储桶的所有生命周期脚本。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/hyperpod/hyperpod-lifecycle-scripts-s3.png)


有关更多信息，请参阅[从提供的基本生命周期脚本开始 HyperPod](https://docs.aws.amazon.com//sagemaker/latest/dg/sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.html)。