使用 Amazon CloudFormation 堆栈配置资源 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon CloudFormation 堆栈配置资源

要在 HyperPod Slurm 集群中设置多个控制器节点,请通过两个 Amazon CloudFormation 堆栈配置 Amazon 资源:和。配置基本资源 配置更多资源以支持多个控制器节点

配置基本资源

按照以下步骤为您的 Amazon SageMaker HyperPod Slurm 集群配置基本资源。

  1. sagemaker-hyperpod.yaml 模板文件下载到你的计算机上。此 YAML 文件是一个 Amazon CloudFormation 模板,用于定义要为 Slurm 集群创建的以下资源。

    • 计算节点实例组的执行 IAM 角色

    • 用于存储生命周期脚本的 Amazon S3 存储桶

    • 公有子网和私有子网(私有子网可通过 NAT 网关访问互联网)

    • 互联网 Gateway/NAT 网关

    • 两个亚马逊 EC2 安全组

    • 用于存储配置文件的 Amazon FSx 卷

  2. 运行以下 CLI 命令创建名为的 Amazon CloudFormation 堆栈sagemaker-hyperpod。在和中 IDs 为您的集群定义可用区 (AZ) BackupSubnetAZPrimarySubnetAZ例如,use1-az4是该us-east-1区域中可用区的可用区 ID。有关更多信息,请参阅可用区 IDs在多个 SageMaker HyperPod 集群中设置集群 AZs

    aws cloudformation deploy \ --template-file /path_to_template/sagemaker-hyperpod.yaml \ --stack-name sagemaker-hyperpod \ --parameter-overrides PrimarySubnetAZ=use1-az4 BackupSubnetAZ=use1-az1 \ --capabilities CAPABILITY_IAM

    有关更多信息,请参见通过 Amazon Command Line Interface 参考进行部署。堆栈创建可能需要几分钟才能完成。完成后,您将在命令行界面中看到以下内容。

    Waiting for changeset to be created.. Waiting for stack create/update to complete Successfully created/updated stack - sagemaker-hyperpod
  3. (可选)在Amazon CloudFormation 控制台中验证堆栈。

    • 从左侧导航栏中选择 “堆栈”。

    • Stack 页面上,找到并选择 sag emaker-hyperpod。

    • 选择 “资源” 和 “输出” 等选项卡以查看资源和输出。

  4. 从 stack (sagemaker-hyperpod) 输出中创建环境变量。您将使用这些变量的值来配置更多资源以支持多个控制器节点

    source .env PRIMARY_SUBNET=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`PrimaryPrivateSubnet`].OutputValue' --output text) BACKUP_SUBNET=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`BackupPrivateSubnet`].OutputValue' --output text) EMAIL=$(bash -c 'read -p "INPUT YOUR SNSSubEmailAddress HERE: " && echo $REPLY') DB_USER_NAME=$(bash -c 'read -p "INPUT YOUR DB_USER_NAME HERE: " && echo $REPLY') SECURITY_GROUP=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`SecurityGroup`].OutputValue' --output text) ROOT_BUCKET_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmazonS3BucketName`].OutputValue' --output text) SLURM_FSX_DNS_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`FSxLustreFilesystemDNSname`].OutputValue' --output text) SLURM_FSX_MOUNT_NAME=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`FSxLustreFilesystemMountname`].OutputValue' --output text) COMPUTE_NODE_ROLE=$(aws --region $REGION cloudformation describe-stacks --stack-name $SAGEMAKER_STACK_NAME --query 'Stacks[0].Outputs[?OutputKey==`AmazonSagemakerClusterExecutionRoleArn`].OutputValue' --output text)

    当您看到要求您输入电子邮件地址和数据库用户名的提示时,请输入如下值。

    INPUT YOUR SNSSubEmailAddress HERE: Email_address_to_receive_SNS_notifications INPUT YOUR DB_USER_NAME HERE: Database_user_name_you_define

    要验证变量值,请使用print $variable命令。

    print $REGION us-east-1

配置更多资源以支持多个控制器节点

按照以下步骤为具有多个控制器节点的 Amazon SageMaker HyperPod Slurm 集群配置更多资源。

  1. sagemaker-hyperpod-slurm-multi-headnode.yaml 模板文件下载到您的计算机上。第二个 YAML 文件是一个 Amazon CloudFormation 模板,用于定义要为 Slurm 集群中的多个控制器节点支持创建的额外资源。

    • 控制器节点实例组的执行 IAM 角色

    • 适用于 MariaDB 的 Amazon RDS 实例

    • 亚马逊 SNS 主题和订阅

    • Amazon Secrets Manager 适用于 MariaDB 的 Amazon RDS 的凭证

  2. 运行以下 CLI 命令创建名为的 Amazon CloudFormation 堆栈sagemaker-hyperpod-mh。第二个堆栈使用 Amazon CloudFormation 模板创建其他 Amazon 资源来支持多控制器节点架构。

    aws cloudformation deploy \ --template-file /path_to_template/slurm-multi-headnode.yaml \ --stack-name sagemaker-hyperpod-mh \ --parameter-overrides \ SlurmDBSecurityGroupId=$SECURITY_GROUP \ SlurmDBSubnetGroupId1=$PRIMARY_SUBNET \ SlurmDBSubnetGroupId2=$BACKUP_SUBNET \ SNSSubEmailAddress=$EMAIL \ SlurmDBUsername=$DB_USER_NAME \ --capabilities CAPABILITY_NAMED_IAM

    有关更多信息,请参见通过 Amazon Command Line Interface 参考进行部署。堆栈创建可能需要几分钟才能完成。完成后,您将在命令行界面中看到以下内容。

    Waiting for changeset to be created.. Waiting for stack create/update to complete Successfully created/updated stack - sagemaker-hyperpod-mh
  3. (可选)在 Amazon Cloud Formation 控制台中验证堆栈。

    • 从左侧导航栏中选择 “堆栈”。

    • 堆栈页面上,找到并选择sagemaker-hyperpod-mh

    • 选择 “资源” 和 “输出” 等选项卡以查看资源和输出。

  4. 从 stack (sagemaker-hyperpod-mh) 输出中创建环境变量。您将使用这些变量的值来更新中的配置文件 (provisioning_parameters.json) 准备和上传生命周期脚本

    source .env SLURM_DB_ENDPOINT_ADDRESS=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmDBEndpointAddress`].OutputValue' --output text) SLURM_DB_SECRET_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmDBSecretArn`].OutputValue' --output text) SLURM_EXECUTION_ROLE_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmExecutionRoleArn`].OutputValue' --output text) SLURM_SNS_FAILOVER_TOPIC_ARN=$(aws --region us-east-1 cloudformation describe-stacks --stack-name $MULTI_HEAD_SLURM_STACK --query 'Stacks[0].Outputs[?OutputKey==`SlurmFailOverSNSTopicArn`].OutputValue' --output text)