Accédez aux nœuds SageMaker HyperPod de votre cluster - Amazon SageMaker

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.

Accédez aux nœuds SageMaker HyperPod de votre cluster

Vous pouvez accéder à votre InServicecluster via AWS Systems Manager (SSM) en exécutant la AWS CLI commande aws ssm start-session avec le nom d'hôte du SageMaker HyperPod cluster au format desagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]. Vous pouvez récupérer l'ID du cluster, l'ID de l'instance et le nom du groupe d'instances depuis la SageMaker HyperPod console ou en exécutant describe-cluster et list-cluster-nodes depuis les AWS CLI commandes pour SageMaker HyperPod. Par exemple, si votre ID de cluster estaa11bbbbb222, le nom du nœud de cluster est controller-group et l'ID du nœud de cluster esti-111222333444555aa, la start-session commande SSM doit être la suivante.

Note

Si vous ne l'avez pas encore configuré AWS Systems Manager, suivez les instructions fournies à l'adresseConfigurer AWS Systems Manager et exécuter en tant que pour le contrôle d'accès des utilisateurs du cluster.

$ aws ssm start-session \ --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa \ --region us-west-2 Starting session with SessionId: s0011223344aabbccdd root@ip-111-22-333-444:/usr/bin#

Notez que cela vous connecte initialement en tant qu'utilisateur root. Avant d'exécuter des tâches, passez à l'ubuntuutilisateur en exécutant la commande suivante.

root@ip-111-22-333-444:/usr/bin# sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#

Pour les paramètres avancés permettant une utilisation pratique des HyperPod clusters, consultez les rubriques suivantes.

Conseils supplémentaires pour accéder aux nœuds de votre SageMaker HyperPod cluster

Utilisez le easy-ssh.sh script fourni par HyperPod pour simplifier le processus de connexion

Pour transformer le processus précédent en une seule ligne de commande, l' HyperPod équipe fournit le easy-ssh.shscript qui récupère les informations de votre cluster, les agrège dans la commande SSM et se connecte au nœud de calcul. Il n'est pas nécessaire de rechercher manuellement les informations de HyperPod cluster requises car ce script s'exécute describe-cluster et list-cluster-nodes commande et analyse les informations nécessaires pour exécuter la commande SSM. Les exemples de commandes suivants montrent comment exécuter le easy-ssh.shscript. S'il s'exécute correctement, vous serez connecté au cluster en tant qu'utilisateur root. Il imprime également un extrait de code pour configurer SSH en ajoutant le HyperPod cluster en tant qu'hôte distant via un proxy SSM. En configurant SSH, vous pouvez connecter votre environnement de développement local tel que Visual Studio Code au HyperPod cluster.

$ chmod +x easy-ssh.sh $ ./easy-ssh.sh -c <node-group> <cluster-name> Cluster id: <cluster_id> Instance id: <instance_id> Node Group: <node-group> Add the following to your ~/.ssh/config to easily connect: $ cat <<EOF >> ~/.ssh/config Host <cluster-name> User ubuntu ProxyCommand sh -c "aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id> --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" EOF Add your ssh keypair and then you can do: $ ssh <cluster-name> aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id> Starting session with SessionId: s0011223344aabbccdd root@ip-111-22-333-444:/usr/bin#

Notez que cela vous connecte initialement en tant qu'utilisateur root. Avant d'exécuter des tâches, passez à l'ubuntuutilisateur en exécutant la commande suivante.

root@ip-111-22-333-444:/usr/bin# sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#

Configuration pour un accès facile avec SSH en utilisant le nœud de HyperPod calcul comme hôte distant

Pour simplifier davantage l'accès au nœud de calcul via SSH à partir d'une machine locale, le easy-ssh.sh script génère un extrait de code expliquant comment configurer le HyperPod cluster en tant qu'hôte distant, comme indiqué dans la section précédente. L'extrait de code est généré automatiquement pour vous aider à l'ajouter directement au ~/.ssh/config fichier sur votre appareil local. La procédure suivante explique comment configurer un accès facile à l'aide de SSH via le proxy SSM, afin que vous ou les utilisateurs de votre cluster puissiez directement vous connecter ssh <cluster-name> au nœud du HyperPod cluster.

  1. Sur votre appareil local, ajoutez le nœud de HyperPod calcul avec un nom d'utilisateur en tant qu'hôte distant au ~/.ssh/config fichier. La commande suivante indique comment ajouter au fichier l'extrait de code généré automatiquement à partir du easy-ssh.sh script. ~/.ssh/config Assurez-vous de le copier à partir de la sortie générée automatiquement du easy-ssh.sh script contenant les informations de cluster correctes.

    $ cat <<EOF >> ~/.ssh/config Host <cluster-name> User ubuntu ProxyCommand sh -c "aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id> --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" EOF
  2. Sur le nœud de HyperPod cluster, ajoutez la clé publique de votre appareil local au ~/.ssh/authorized_keys fichier sur le nœud de HyperPod cluster.

    1. Imprimez le fichier de clé publique sur votre machine locale.

      $ cat ~/.ssh/id_rsa.pub

      Cela devrait vous rendre votre clé. Copiez le résultat de cette commande.

      (Facultatif) Si vous n'avez pas de clé publique, créez-en une en exécutant la commande suivante.

      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
    2. Connectez-vous au nœud du cluster et passez à l'utilisateur pour ajouter la clé. La commande suivante est un exemple d'accès en tant qu'ubuntuutilisateur. Remplacez par ubuntu le nom d'utilisateur pour lequel vous souhaitez configurer l'accès facile avec SSH.

      $ ./easy-ssh.sh -c <node-group> <cluster-name> $ sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#
    3. Ouvrez le ~/.ssh/authorized_keys fichier et ajoutez la clé publique à la fin du fichier.

      ubuntu@ip-111-22-333-444:/usr/bin# vim ~/.ssh/authorized_keys

Une fois la configuration terminée, vous pouvez vous connecter au nœud du HyperPod cluster en tant qu'utilisateur en exécutant une commande SSH simplifiée comme suit.

$ ssh <cluster-name> ubuntu@ip-111-22-333-444:/usr/bin#

Vous pouvez également utiliser l'hôte pour le développement à distance à partir d'un IDE sur votre appareil local, tel que Visual Studio Code Remote - SSH.

Configuration d'un environnement multi-utilisateurs via l'espace partagé Amazon FSx

Vous pouvez utiliser l'espace partagé Amazon FSx pour gérer un environnement multi-utilisateurs dans un cluster Slurm sur. SageMaker HyperPod Si vous avez configuré votre cluster Slurm avec Amazon FSx lors de la création du HyperPod cluster, il s'agit d'une bonne option pour configurer un espace de travail pour les utilisateurs de votre cluster. Créez un nouvel utilisateur et configurez le répertoire personnel de l'utilisateur sur le système de fichiers partagé Amazon FSx.

Astuce

Pour permettre aux utilisateurs d'accéder à votre cluster par le biais de leur nom d'utilisateur et de répertoires dédiés, vous devez également les associer à des rôles ou à des utilisateurs IAM en les balisant comme indiqué dans l'option 2 de l'étape 5 de la procédure Pour activer le support pour les nœuds gérés Linux et macOS fournie dans la section Activer le support pour les nœuds gérés Linux et macOS dans le guide de l' AWS Systems Manager utilisateur. Voir aussi Configurer AWS Systems Manager et exécuter en tant que pour le contrôle d'accès des utilisateurs du cluster.

Pour configurer un environnement multi-utilisateurs lors de la création d'un cluster Slurm sur SageMaker HyperPod

L'équipe SageMaker HyperPod de service fournit un script dans le add_users.shcadre des exemples de script de cycle de vie de base.

  1. Préparez un fichier texte nommé shared_users.txt que vous devez créer au format suivant. La première colonne est destinée aux noms d'utilisateur, la deuxième aux identifiants utilisateur uniques et la troisième aux annuaires des utilisateurs de l'espace partagé Amazon FSx.

    username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...
  2. Assurez-vous de télécharger les add_users.shfichiers shared_users.txt et dans le compartiment S3 pour les scripts de HyperPod cycle de vie. Lorsque la création du cluster, la mise à jour du cluster ou la mise à jour logicielle du cluster est en cours, le répertoire des utilisateurs est add_users.shlu shared_users.txt et configuré correctement.

Pour créer de nouveaux utilisateurs et les ajouter à un cluster Slurm existant exécuté sur SageMaker HyperPod

  1. Sur le nœud principal, exécutez la commande suivante pour enregistrer un script permettant de créer un utilisateur. Assurez-vous de l'exécuter avec les autorisations sudo.

    $ cat > create-user.sh << EOL #!/bin/bash set -x # Prompt user to get the new user name. read -p "Enter the new user name, i.e. 'sean': " USER # create home directory as /fsx/<user> # Create the new user on the head node sudo useradd \$USER -m -d /fsx/\$USER --shell /bin/bash; user_id=\$(id -u \$USER) # add user to docker group sudo usermod -aG docker \${USER} # setup SSH Keypair sudo -u \$USER ssh-keygen -t rsa -q -f "/fsx/\$USER/.ssh/id_rsa" -N "" sudo -u \$USER cat /fsx/\$USER/.ssh/id_rsa.pub | sudo -u \$USER tee /fsx/\$USER/.ssh/authorized_keys # add user to compute nodes read -p "Number of compute nodes in your cluster, i.e. 8: " NUM_NODES srun -N \$NUM_NODES sudo useradd -u \$user_id \$USER -d /fsx/\$USER --shell /bin/bash; # add them as a sudoer read -p "Do you want this user to be a sudoer? (y/N): " SUDO if [ "\$SUDO" = "y" ]; then sudo usermod -aG sudo \$USER sudo srun -N \$NUM_NODES sudo usermod -aG sudo \$USER echo -e "If you haven't already you'll need to run:\n\nsudo visudo /etc/sudoers\n\nChange the line:\n\n%sudo ALL=(ALL:ALL) ALL\n\nTo\n\n%sudo ALL=(ALL:ALL) NOPASSWD: ALL\n\nOn each node." fi EOL
  2. Exécutez le script à l'aide de la commande suivante. Il vous sera demandé d'ajouter le nom d'un utilisateur et le nombre de nœuds de calcul auxquels vous souhaitez autoriser l'utilisateur à accéder.

    $ bash create-user.sh
  3. Testez l'utilisateur en exécutant les commandes suivantes.

    $ sudo su - <user> && ssh $(srun hostname)
  4. Ajoutez les informations utilisateur au shared_users.txt fichier afin que l'utilisateur soit créé sur tout nouveau nœud de calcul ou nouveau cluster.

Configuration d'un environnement multi-utilisateurs en intégrant des HyperPod clusters à Active Directory

Dans les cas pratiques, les HyperPod clusters sont généralement utilisés par plusieurs utilisateurs : chercheurs en apprentissage automatique (ML), ingénieurs logiciels, scientifiques des données et administrateurs de clusters. Ils éditent leurs propres fichiers et exécutent leurs propres tâches sans affecter le travail des autres. Pour configurer un environnement multi-utilisateurs, utilisez le mécanisme des utilisateurs et des groupes Linux pour créer de manière statique plusieurs utilisateurs sur chaque instance via des scripts de cycle de vie. Toutefois, l'inconvénient de cette approche est que vous devez dupliquer les paramètres des utilisateurs et des groupes sur plusieurs instances du cluster afin de conserver une configuration cohérente dans toutes les instances lorsque vous effectuez des mises à jour, telles que l'ajout, la modification et la suppression d'utilisateurs.

Pour résoudre ce problème, vous pouvez utiliser le protocole LDAP (Lightweight Directory Access Protocol) et le protocole LDAP over TLS/SSL (LDAPS) pour intégrer un service d'annuaire tel que Directory AWS Service pour Microsoft Active Directory. Pour en savoir plus sur la configuration d'Active Directory et d'un environnement multi-utilisateurs dans un HyperPod cluster, consultez le billet de blog Intégrer les HyperPod clusters à Active Directory pour une connexion multi-utilisateurs fluide.