View a markdown version of this page

Création d'utilisateurs sur un cluster Slurm sur SageMaker HyperPod - 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.

Création d'utilisateurs sur un cluster Slurm sur SageMaker HyperPod

Il existe trois manières de créer des utilisateurs POSIX sur les nœuds d'un cluster Slurm. SageMaker HyperPod Ils diffèrent en ce qui concerne le moment où les utilisateurs sont créés et le niveau de configuration du cycle de vie que vous devez gérer. Choisissez l'option qui correspond à votre cluster et à votre flux de travail, répertoriée ici, de la plus simple à la plus avancée.

Option Idéal pour Configuration du cycle de vie requise Quand les utilisateurs sont créés Comportement lors de la mise à l'échelle ou du remplacement de nœuds
Option A : ajouter des utilisateurs à l'aide du script utilitaire de création d'utilisateurs Ajouter des utilisateurs à un cluster déjà existant InService, sans modifier la configuration du cycle de vie Aucune À la demande, chaque fois que vous exécutez le script Manuel Les utilisateurs ne sont pas appliqués automatiquement ; réexécutez le script chaque fois que des nœuds sont ajoutés ou remplacés (automatiquement ou manuellement).
Option B : ajouter des utilisateurs à l'aide du script d'extension add-users AMI-based clusters configurés sur le cycle de vie qui approvisionnent automatiquement les utilisateurs Ajouter des scripts d'extension pour les utilisateurs Automatiquement lors du provisionnement des nœuds : lors de la création du cluster, de l'ajout de nœuds (mise à l'échelle), des mises à jour de l'AMI, des remplacements de nœuds. Automatique L'extension s'exécute sur chaque nouveau nœud pendant le provisionnement, à l'aide du fichier utilisateur dans le compartiment Amazon S3 des scripts de cycle de vie.
Option C : ajouter des utilisateurs avec les scripts de cycle de vie de base Clusters qui utilisent déjà l'ensemble complet de scripts de cycle de vie de base personnalisés Ensemble complet de scripts de cycle de vie personnalisés Automatiquement lors du provisionnement des nœuds : lors de la création du cluster, de l'ajout de nœuds (mise à l'échelle), des mises à jour de l'AMI, des remplacements de nœuds. Automatique Le script de cycle de vie de base s'exécute sur chaque nouveau nœud pendant le provisionnement, à l'aide du fichier utilisateur dans le compartiment Amazon S3 des scripts de cycle de vie.

Les trois options utilisent des scripts fournis par l'équipe de SageMaker HyperPod service dans le référentiel Awsome Distributed Training du site GitHub Web.

Option A : ajouter des utilisateurs à l'aide du script utilitaire de création d'utilisateurs

Il s'agit de l'option la plus simple qui ne nécessite aucune configuration du cycle de vie. Utilisez-le lorsque votre cluster existe déjà InService et que vous souhaitez ajouter des utilisateurs immédiatement. Exécutez le script utilitaire create_users.sh sur le GitHub site Web du nœud contrôleur pour créer des utilisateurs sur chaque nœud en une seule exécution. Le script détecte automatiquement les autres nœuds à partir des fichiers de configuration du cluster, crée les utilisateurs via SSH et configure les nœuds de calcul en parallèle pour les adapter aux grands clusters. Le script prend en charge trois modes pour spécifier les utilisateurs, sélectionnés en fonction des arguments que vous transmettez et des fichiers présents dans le répertoire actuel, dans l'ordre de priorité suivant :

  • Mode ligne de commande  : vous transmettez des noms d'utilisateur en tant qu'arguments et le script attribue automatiquement des UID. Il s'agit de la méthode la plus rapide pour ajouter des utilisateurs.

  • Mode fichier  : le script lit les définitions utilisateur à partir d'un fichier shared_users.txt (CSV) ou shared_users.yaml (YAML) du répertoire en cours.

  • Mode interactif  : le script vous demande de saisir des noms d'utilisateur et, éventuellement, des UID.

Important

Dans tous les modes, create_users.sh crée des utilisateurs uniquement sur les nœuds qui existent lorsque vous l'exécutez. Cela inclut le mode fichier avec un shared_users.txt ou localshared_users.yaml. Les utilisateurs ne sont pas automatiquement recréés sur les nœuds ajoutés ultérieurement par mise à l'échelle ou par remplacement de nœuds. Il s'agit d'événements de provisionnement au cours desquels le nouveau nœud démarre avec un nouveau volume racine qui ne possède aucun compte POSIX. (Les répertoires personnels et les clés SSH du système de fichiers partagé survivent, mais pas les comptes utilisateur eux-mêmes.) Re-run create_users.shaprès l'ajout des nouveaux nœuds pour les mettre en ligne.

Re-running le script est sécurisé. Exécutez-le sur le nœud contrôleur ; il découvre les autres nœuds du cluster et applique les utilisateurs à l'ensemble du cluster en une seule exécution. Il est idempotent par nœud : il crée un utilisateur uniquement là où il est absent, laissant les nœuds dont l'utilisateur est déjà inchangé. Ainsi, une nouvelle exécution après l'ajout de nœuds n'affecte que les nouveaux nœuds.

Pour que les nouveaux nœuds reçoivent automatiquement des utilisateurs, le fichier utilisateur doit faire partie de la configuration du cycle de vie du cluster afin qu'il soit exécuté pendant le provisionnement : stockez un shared_users.yaml fichier shared_users.txt ou dans le compartiment Amazon S3 de vos scripts de cycle de vie et utilisez-le avec le Option B : ajouter des utilisateurs à l'aide du script d'extension add-users ou leOption C : ajouter des utilisateurs avec les scripts de cycle de vie de base. create_users.shaide en ajoutant chaque utilisateur qu'il crée shared_users.txt et en proposant de le télécharger sur Amazon S3, mais à lui seul, quel que soit le mode, il ne permet pas aux utilisateurs de persister malgré les événements de provisionnement.

Pour chaque utilisateur, le script :

  • Crée un utilisateur POSIX avec un UID cohérent sur chaque nœud.

  • Crée un répertoire personnel sur le système de fichiers partagé (détection automatique d'OpenZFS sur /home ou d'Amazon FSx pour Lustre sur). /fsx

  • Génère une paire de clés SSH sur le système de fichiers partagé pour le SSH inter-nœuds sans mot de passe.

  • Ajoute l'utilisateur au docker groupe (et, éventuellement, accorde un accès sudo).

  • Enregistre l'utilisateur avec Slurm Accounting sur le contrôleur afin qu'il puisse soumettre des tâches.

  • Ajoute les nouveaux utilisateurs à un shared_users.txt fichier et le télécharge éventuellement sur Amazon S3, afin que vous puissiez le réutiliser avec les autres options.

Conditions préalables

Avant de commencer, vérifiez que les conditions suivantes sont remplies.

  • Le cluster est InService et vous pouvez vous connecter au nœud du contrôleur. Consultez Accès aux nœuds SageMaker HyperPod de votre cluster.

  • jqest installé sur le nœud du contrôleur.

  • L'accès SSH est disponible depuis le nœud contrôleur vers tous les autres nœuds (le HyperPod configure pour l'utilisateur par défaut).

Pour ajouter des utilisateurs à l'aide du script utilitaire create_users.sh

Procédez comme suit :

  1. Connectez-vous au nœud du contrôleur et téléchargez le script. Assurez-vous de l'exécuter avec les autorisations sudo.

    $ curl -O https://raw.githubusercontent.com/awslabs/awsome-distributed-training/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils/create_users.sh chmod +x create_users.sh
  2. Exécutez le script en utilisant l'un de ses trois modes, qu'il sélectionne par priorité parmi les arguments que vous transmettez et les fichiers du répertoire en cours : d'abord les arguments de la ligne de commande, puis un fichier utilisateur, puis des invites interactives. Chaque mode exécute la même séquence : créer les utilisateurs sur le nœud actuel, configurer des paires de clés SSH sur le système de fichiers partagé, créer les utilisateurs sur tous les nœuds restants (nœuds de calcul en parallèle), les enregistrer dans la comptabilité Slurm sur le contrôleur, les ajouter à shared_users.txt et proposer de télécharger ce fichier sur Amazon S3.

    Les trois modes sont décrits dans les exemples suivants, chacun ajoutant deux utilisateurs (user1etuser2).

    Mode ligne de commande

    Transmettez les noms d'utilisateur en tant qu'arguments. Le script attribue automatiquement des UID et demande si les nouveaux utilisateurs doivent être des sudoers. Il s'agit de la méthode la plus rapide pour ajouter des utilisateurs.

    $ sudo ./create_users.sh user1 user2

    Le script valide les noms d'utilisateur, puis demande l'accès au sudoer :

    ======================================== Step 1: User Configuration ======================================== Users from CLI args: user1 user2 ✓ user1 — will be created (auto-assign UID) ✓ user2 — will be created (auto-assign UID) Make these user(s) sudoer(s)? (y/N): n

    Il crée ensuite les utilisateurs sur le nœud actuel, configure les paires de clés SSH, les crée sur les nœuds de calcul, les enregistre dans la comptabilité Slurm sur le contrôleur et écritshared_users.txt, vous invitant à la fin à télécharger ce fichier sur Amazon S3.

    Mode fichier

    Créez un fichier utilisateur dans le même répertoire que le script, puis exécutez le script sans argument. Le script lit les définitions des utilisateurs, les valide (en créant uniquement les utilisateurs qui n'existent pas encore et en évitant les conflits d'UID) et crée les utilisateurs sur tous les nœuds. Le script accepte deux formats de fichiers.

    Pourshared_users.txt, utilisez un fichier CSV avec un utilisateur par ligne au format suivant username,uid,home_directory :

    user1,2001,/fsx/user1 user2,2002,/fsx/user2

    Vous pouvez également utiliser un fichier YAML contenant soit une simple liste d'utilisateurs, soit des utilisateurs organisés en groupes. shared_users.yaml L'analyse de ce format nécessite PyYAML sur le nœud. Le format de liste simple est le suivant :

    users: - username: user1 uid: 2001 - username: user2 uid: 2002

    Si les deux fichiers sont présents, shared_users.txt c'est prioritaire. Exécutez le script sans argument :

    $ sudo ./create_users.sh

    Le script valide les entrées du fichier, confirme la création, invite le sudoer à accéder et propose d'ajouter des utilisateurs qui ne figurent pas dans le fichier. Il crée ensuite user1 et user2 sur tous les nœuds dotés des UID du fichier (2001 et 2002), configure les paires de clés SSH, les enregistre dans la comptabilité Slurm et les met à jour. shared_users.txt

    Mode interactif

    Exécutez le script sans argument et sans fichier utilisateur. Le script vous demande les noms d'utilisateur et, éventuellement, les UID à attribuer :

    $ sudo ./create_users.sh
    ======================================== Step 1: User Configuration ======================================== No shared_users.txt or shared_users.yaml found. Entering interactive mode... Enter username(s), comma-separated (e.g. 'sean' or 'sean,alice,bob'): user1,user2 Specify UIDs? (Enter for auto-assign, or comma-separated UIDs): 2001,2002 Make these user(s) sudoer(s)? (y/N): n

    Une fois que vous avez répondu aux instructions, le script crée user1 et, user2 sur tous les nœuds dotés des UID que vous avez saisis, configure les paires de clés SSH, les enregistre dans la comptabilité Slurm et les met à jour. shared_users.txt

  3. Testez un utilisateur en basculant dessus et en exécutant une commande sur l'ensemble du cluster.

    $ sudo su - user1 && ssh $(srun hostname)
Note

Le script est idempotent. Les utilisateurs qui existent déjà sont ignorés et les clés SSH et les associations comptables Slurm existantes sont laissées en place, ce qui permet de les réexécuter en toute sécurité.

Option B : ajouter des utilisateurs à l'aide du script d'extension add-users

Utilisez cette option lorsque votre cluster utilise la AMI-based configuration et que vous souhaitez que les utilisateurs soient automatiquement provisionnés. Avec l'option de cycle de vie des SageMaker HyperPod extensions, exécutez d'abord la AMI-based configuration complète, puis exécutez votre script d'extension. L'équipe de service fournit une extension d'utilisateurs complémentaires prête à l'emploi dans le dossier Extensions du référentiel Awsome Distributed Training sur le site Web. GitHub Étant donné que l'extension s'exécute pendant le provisionnement des nœuds, les utilisateurs sont créés automatiquement lors de la création du cluster, puis à nouveau sur tous les nouveaux nœuds ajoutés lors de la mise à l'échelle.

Pour plus d'informations sur la configuration des extensions :

  • Pour configurer des extensions à l'aide de la AWS console, voir Configuration du cycle de vie - facultatif sous Configuration personnalisée.

  • Pour configurer des extensions à l'aide de l'API, voir Option B : étendre AMI-based la configuration avec OnInitComplete sous Créer votre cluster.

L'add-usersextension crée des utilisateurs POSIX avec des UID cohérents, configure des répertoires personnels sur le système de fichiers partagé, génère des paires de clés SSH pour le SSH inter-nœuds sans mot de passe et enregistre les utilisateurs avec la comptabilité Slurm sur le contrôleur. Il accepte deux formats d'entrée :

  • shared_users.txt— le même format CSV que celui utilisé par les scripts de cycle de vie de base (username,uid,/fsx/username). Tous les utilisateurs sont ajoutés au compte root Slurm.

  • shared_users.yaml— un format YAML qui permet également d'organiser les utilisateurs en groupes avec des comptes Slurm par groupe et des montages de système de fichiers. Les groupes sont uniquement organisationnels ; ils ne créent pas de groupes Linux.

Voici un exemple shared_users.yaml utilisant le format de groupes :

groups: - name: research slurm_account: research users: - username: user1 uid: 2001 - username: user2 uid: 2002 - name: platform slurm_account: platform users: - username: user3 uid: 3001
Pour ajouter des utilisateurs à l'aide de l'extension Add-Users lors de la création du cluster

Procédez comme suit :

  1. Copiez le fichier d'exemple approprié dans le add-users répertoire et modifiez-le avec vos utilisateurs :

    $ cp shared_users_sample.yaml shared_users.yaml
  2. Téléchargez le add-users répertoire dans le compartiment Amazon S3 de vos scripts de cycle de vie (le chemin du compartiment doit commencer pars3://sagemaker-) :

    $ aws s3 cp add-users/ s3://DOC-EXAMPLE-BUCKET/add-users/ --recursive
  3. Spécifiez l'extension dans le LifeCycleConfig bloc de votre CreateCluster demande, en utilisant add_users.sh comme OnInitComplete script :

    "LifeCycleConfig": { "OnInitComplete": "add_users.sh", "SourceS3Uri": "s3://DOC-EXAMPLE-BUCKET/add-users/" }
Astuce

Si votre cluster nécessite plusieurs fonctionnalités en plus de la création d'utilisateurs (par exemple, l'observabilité), téléchargez l'intégralité du dossier Extensions et utilisez l'run_extensions.shorchestrateur comme script d'extension. Il fournit des bascules booléennes simples, par exemple ENABLE_ADD_USERS="true" pour activer chaque fonctionnalité. Pour en savoir plus, consultez Commencer à SageMaker HyperPod utiliser le AWS CLI.

Pour ajouter des utilisateurs à un cluster existant après sa création

Étant donné que l'extension s'exécute uniquement pendant le provisionnement des nœuds, l'ajout d'utilisateurs à des nœuds déjà en cours d'exécution nécessite que vous exécutiez l'extension manuellement.

  1. Mettez à jour votre fichier utilisateur avec les nouveaux utilisateurs (conservez les utilisateurs existants dans le fichier) et téléchargez-le sur Amazon S3 :

    $ aws s3 cp add-users/shared_users.yaml s3://DOC-EXAMPLE-BUCKET/add-users/shared_users.yaml
  2. Connectez-vous au nœud du contrôleur et extrayez les scripts vers le système de fichiers partagé :

    $ sudo mkdir -p /fsx/cluster-scripts/add-users sudo aws s3 cp s3://DOC-EXAMPLE-BUCKET/add-users/ /fsx/cluster-scripts/add-users/ --recursive sudo chmod +x /fsx/cluster-scripts/add-users/*.sh
  3. Exécutez l'extension sur le contrôleur :

    $ sudo bash /fsx/cluster-scripts/add-users/add_users.sh
  4. Exécutez l'extension sur les nœuds de calcul avec srun :

    $ sudo srun --partition=partition-name bash /fsx/cluster-scripts/add-users/add_users.sh

Les scripts ignorent les utilisateurs existants et n'en créent que de nouveaux ; ils sont idempotents.

Option C : ajouter des utilisateurs avec les scripts de cycle de vie de base

Utilisez cette option uniquement si votre cluster utilise déjà l'ensemble complet de scripts de cycle de vie de base personnalisés, où vos scripts sont propriétaires de l'intégralité de la séquence de provisionnement. Il s'agit de l'option la plus avancée car vous gérez l'ensemble de scripts du cycle de vie complet plutôt qu'une seule extension. L'équipe de service fournit le script add_users.sh sur le GitHub site Web sous la forme d'un script intégré au jeu de scripts de cycle de vie de base de configuration. Lors de la création, de la mise à jour du cluster ou de la mise à jour logicielle du cluster, le moteur de script Lifecycle (lifecycle_script.py) s'exécuteadd_users.sh, qui lit un shared_users.txt fichier et crée les utilisateurs et leurs répertoires personnels.

Dans cette option, add_users.sh gère uniquement la création de répertoires utilisateur et personnel POSIX. La génération de paires de clés SSH pour le SSH inter-nœuds sans mot de passe est un module distinct du jeu de scripts de cycle de vie de base (par exemplegen-keypair-ubuntu.sh), que l'exécuteur de scripts de cycle de vie invoque dans le cadre de l'ensemble complet. Assurez-vous que le module de clé SSH est inclus dans votre jeu de scripts de cycle de vie afin que les utilisateurs obtiennent des paires de clés sur le système de fichiers partagé.

Pour plus d'informations sur la configuration de l'ensemble complet de scripts de cycle de vie personnalisés :

  • Pour configurer des scripts de cycle de vie à l'aide de la AWS console, voir Configuration du cycle de vie - facultatif sous Configuration personnalisée.

  • Pour configurer des scripts de cycle de vie à l'aide de l'API, voir Option C : Contrôle personnalisé complet OnCreate sous Créer votre cluster.

Pour créer des utilisateurs lors de la création d'un cluster Slurm

Procédez comme suit :

  1. Téléchargez le script de cycle de vie de la configuration de base sur le GitHub site Web. Avec cette option, vous chargez l'intégralité du dossier base-config en tant que jeu de scripts de cycle de vie, et pas seulement. add_users.sh

  2. Dans le dossier base-config, créez ou modifiez un fichier texte nommé shared_users.txt au format suivant. La première colonne est le nom d'utilisateur, la deuxième est l'ID utilisateur unique et la troisième est l'annuaire des utilisateurs dans l'espace partagé Amazon FSx.

    username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...

    add_users.shlit shared_users.txt depuis le même dossier, le fichier doit donc se trouver dans base-config à côté du script.

  3. Téléchargez l'intégralité du dossier base-config dans le compartiment Amazon S3 pour vos scripts de HyperPod cycle de vie. Pendant la création, la mise à jour du cluster ou la mise à jour logicielle du cluster, le moteur de script Lifecycle s'exécuteadd_users.sh, qui lit shared_users.txt et configure les utilisateurs et leurs répertoires personnels.

Note

add_users.shdétecte automatiquement le système de fichiers partagé : si OpenZFS est monté sur, /home il y crée des répertoires personnels ; sinon, il utilise le chemin Amazon FSx pour Lustre.