View a markdown version of this page

CloudFormation スタックを使用したリソースのプロビジョニング - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CloudFormation スタックを使用したリソースのプロビジョニング

HyperPod Slurm クラスターに複数のコントローラーノードを設定するには、 リソースをプロビジョンすると の 2 つの CloudFormation スタックを使用してリソースをプロビジョニング AWS します複数のコントローラーノードをサポートするように追加のリソースをプロビジョンする

リソースをプロビジョンする

Amazon SageMaker HyperPod Slurm クラスターの基本的なリソースをプロビジョンするには、次の手順に従います。

  1. sagemaker-hyperpod.yaml テンプレートファイルをマシンにダウンロードします。この YAML ファイルは、Slurm クラスター用に作成する以下のリソースを定義する CloudFormation テンプレートです。

    • コンピューティングノードインスタンスグループの実行 IAM ロール

    • ライフサイクルスクリプトを保存する Amazon S3 バケット

    • パブリックサブネットとプライベートサブネット (プライベートサブネットには NAT ゲートウェイを介したインターネットアクセスがあります)

    • インターネットゲートウェイ/NAT ゲートウェイ

    • 2 つの Amazon EC2 セキュリティグループ

    • 設定ファイルを保存する Amazon FSx ボリューム

  2. 次の CLI コマンドを実行して、 という名前の CloudFormation スタックを作成しますsagemaker-hyperpodPrimarySubnetAZ および BackupSubnetAZ でクラスターのアベイラビリティーゾーン (AZ) ID を定義します。たとえば、use1-az4 は、us-east-1 リージョンのアベイラビリティーゾーンの AZ ID です。詳細については、「アベイラビリティーゾーン ID」と「複数の AZ にまたがる SageMaker HyperPod クラスターのセットアップ」を参照してください。

    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

    詳細については、「 AWS Command Line Interface リファレンス」の「デプロイ」を参照してください。スタックの作成が完了するまでに数分かかる場合があります。完了すると、コマンドラインインターフェイスに以下が表示されます。

    Waiting for changeset to be created.. Waiting for stack create/update to complete Successfully created/updated stack - sagemaker-hyperpod
  3. (オプション) CloudFormation コンソールでスタックを検証します。

    • 左のナビゲーションメニューから [スタック] を選択します。

    • [スタック] ページで、sagemaker-hyperpod を探して選択します。

    • [リソース][出力] などのタブを選択して、リソースと出力を確認します。

  4. スタック (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)

    E メールアドレスとデータベースユーザー名の入力を求めるプロンプトが表示されたら、以下のとおり値を入力します。

    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 テンプレートファイルをマシンにダウンロードします。この 2 番目の YAML ファイルは、Slurm クラスターで複数のコントローラーノードをサポートするために作成する追加のリソースを定義する CloudFormation テンプレートです。

    • コンピューティングノードインスタンスグループの実行 IAM ロール

    • Amazon RDS for MariaDB インスタンス

    • Amazon SNS トピックとサブスクリプション

    • AWS Secrets Manager Amazon RDS for MariaDB の 認証情報

  2. 次の CLI コマンドを実行して、 という名前の CloudFormation スタックを作成しますsagemaker-hyperpod-mh。この 2 番目のスタックは、 CloudFormation テンプレートを使用して、複数のコントローラーノードアーキテクチャをサポートする追加の AWS リソースを作成します。

    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

    詳細については、「 AWS Command Line Interface リファレンス」の「デプロイ」を参照してください。スタックの作成が完了するまでに数分かかる場合があります。完了すると、コマンドラインインターフェイスに以下が表示されます。

    Waiting for changeset to be created.. Waiting for stack create/update to complete Successfully created/updated stack - sagemaker-hyperpod-mh
  3. (オプション) AWS Cloud Formation コンソールでスタックを検証します。

    • 左のナビゲーションメニューから [スタック] を選択します。

    • [スタック] ページで、sagemaker-hyperpod-mh を探して選択します-。

    • [リソース][出力] などのタブを選択して、リソースと出力を確認します。

  4. スタック (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)