View a markdown version of this page

Approvisionnement de ressources à l'aide de piles CloudFormation - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Approvisionnement de ressources à l'aide de piles CloudFormation

Pour configurer plusieurs nœuds de contrôleur dans un cluster HyperPod Slurm, provisionnez les AWS ressources via deux CloudFormation piles : et. Provisionnement des ressources de base Provisionnement de ressources supplémentaires pour prendre en charge plusieurs nœuds de contrôleur

Provisionnement des ressources de base

Suivez ces étapes pour provisionner des ressources de base pour votre cluster Amazon SageMaker HyperPod Slurm.

  1. Téléchargez le fichier de modèle sagemaker-hyperpod.yaml sur votre ordinateur. Ce fichier YAML est un CloudFormation modèle qui définit les ressources suivantes à créer pour votre cluster Slurm.

    • Un rôle IAM d’exécution pour le groupe d’instances de nœuds de calcul

    • Un compartiment Amazon S3 pour stocker les scripts du cycle de vie

    • Des sous-réseaux publics et privés (les sous-réseaux privés ont accès à Internet via des passerelles NAT)

    • Gateway/NAT Passerelles Internet

    • Deux groupes de sécurité Amazon EC2

    • Un FSx volume Amazon pour stocker les fichiers de configuration

  2. Exécutez la commande CLI suivante pour créer une CloudFormation pile nomméesagemaker-hyperpod. Définissez la zone de disponibilité (AZ) IDs de votre cluster dans PrimarySubnetAZ etBackupSubnetAZ. Par exemple, use1-az4 il s'agit d'un ID AZ pour une zone de disponibilité de la us-east-1 région. Pour plus d'informations, consultez les sections Zone de disponibilité IDs etConfiguration de SageMaker HyperPod clusters sur plusieurs 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

    Pour plus d'informations, consultez la section Déployer à partir de la AWS Command Line Interface référence. La création de la pile peut prendre quelques minutes. Une fois l’opération terminée, vous verrez ce qui suit dans votre interface de ligne de commande.

    Waiting for changeset to be created.. Waiting for stack create/update to complete Successfully created/updated stack - sagemaker-hyperpod
  3. (Facultatif) Vérifiez la pile dans la console CloudFormation.

    • Dans le volet de navigation de gauche, choisissez Pile.

    • Sur la page Pile, recherchez et choisissez sagemaker-hyperpod.

    • Choisissez les onglets tels que Ressources et Sorties pour passer en revue les ressources et les sorties.

  4. Créez des variables d’environnement à partir des sorties de la pile (sagemaker-hyperpod). Vous utiliserez les valeurs de ces variables pour effectuer le Provisionnement de ressources supplémentaires pour prendre en charge plusieurs nœuds de contrôleur.

    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)

    Lorsque vous voyez des invites vous demandant votre adresse e-mail et votre nom d’utilisateur de la base de données, entrez des valeurs telles que les suivantes.

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

    Pour vérifier les valeurs des variables, utilisez la commande print $variable.

    print $REGION us-east-1

Provisionnement de ressources supplémentaires pour prendre en charge plusieurs nœuds de contrôleur

Suivez ces étapes pour fournir des ressources supplémentaires à votre cluster Amazon SageMaker HyperPod Slurm avec plusieurs nœuds de contrôleur.

  1. Téléchargez le fichier modèle sagemaker-hyperpod-slurm-multi-headnode.yaml sur votre machine. Ce deuxième fichier YAML est un CloudFormation modèle qui définit les ressources supplémentaires à créer pour le support de plusieurs nœuds de contrôleur dans votre cluster Slurm.

    • Un rôle IAM d’exécution pour le groupe d’instances de nœuds de contrôleur

    • Une instance Amazon RDS for MariaDB

    • Une rubrique et un abonnement Amazon SNS

    • AWS Secrets Manager informations d'identification pour Amazon RDS for MariaDB

  2. Exécutez la commande CLI suivante pour créer une CloudFormation pile nomméesagemaker-hyperpod-mh. Cette deuxième pile utilise le CloudFormation modèle pour créer des AWS ressources supplémentaires afin de prendre en charge l'architecture à plusieurs nœuds de contrôleur.

    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

    Pour plus d'informations, consultez la section Déployer à partir de la AWS Command Line Interface référence. La création de la pile peut prendre quelques minutes. Une fois l’opération terminée, vous verrez ce qui suit dans votre interface de ligne de commande.

    Waiting for changeset to be created.. Waiting for stack create/update to complete Successfully created/updated stack - sagemaker-hyperpod-mh
  3. (Facultatif) Vérifiez la pile dans la console AWS Cloud Formation.

    • Dans le volet de navigation de gauche, choisissez Pile.

    • Sur la page Stack, recherchez et choisissez sagemaker-hyperpod-mh.

    • Choisissez les onglets tels que Ressources et Sorties pour passer en revue les ressources et les sorties.

  4. Créez des variables d’environnement à partir des sorties de la pile (sagemaker-hyperpod-mh). Vous utiliserez les valeurs de ces variables pour mettre à jour le fichier de configuration (provisioning_parameters.json) dans Préparation et chargement des scripts de cycle de vie.

    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)