

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
<a name="sagemaker-hyperpod-slurm-user-management-create-users"></a>

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](#sagemaker-hyperpod-multi-user-method-1-create-users) | 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](#sagemaker-hyperpod-multi-user-method-2-add-users-extension) | 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](#sagemaker-hyperpod-multi-user-method-3-base-lcs) | 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 ](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod) Awsome Distributed Training du site GitHub Web.

**Topics**
+ [Option A : ajouter des utilisateurs à l'aide du script utilitaire de création d'utilisateurs](#sagemaker-hyperpod-multi-user-method-1-create-users)
+ [Option B : ajouter des utilisateurs à l'aide du script d'`extension` add-users](#sagemaker-hyperpod-multi-user-method-2-add-users-extension)
+ [Option C : ajouter des utilisateurs avec les scripts de cycle de vie de base](#sagemaker-hyperpod-multi-user-method-3-base-lcs)

## Option A : ajouter des utilisateurs à l'aide du script utilitaire de création d'utilisateurs
<a name="sagemaker-hyperpod-multi-user-method-1-create-users"></a>

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 ](https://github.com/awslabs/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils/create_users.sh) 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 local`shared_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.sh`aprè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](#sagemaker-hyperpod-multi-user-method-2-add-users-extension) ou le[Option C : ajouter des utilisateurs avec les scripts de cycle de vie de base](#sagemaker-hyperpod-multi-user-method-3-base-lcs). `create_users.sh`aide 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](sagemaker-hyperpod-run-jobs-slurm-access-nodes.md).
+ `jq`est 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
   ```

1. 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 (`user1`et`user2`).

**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 écrit`shared_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.

   Pour`shared_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`

1. 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
<a name="sagemaker-hyperpod-multi-user-method-2-add-users-extension"></a>

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'](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/Extensions/add-users)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](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom).
+ Pour configurer des extensions à l'aide de l'API, voir ** Option B : étendre AMI-based la configuration avec OnInitComplete ** sous [ Créer votre cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html#smcluster-getting-started-slurm-cli-create-cluster).

L'`add-users`extension 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
   ```

1. 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 par`s3://sagemaker-`) :

   ```
   $ aws s3 cp add-users/ s3://DOC-EXAMPLE-BUCKET/add-users/ --recursive
   ```

1. 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.sh`orchestrateur 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](smcluster-getting-started-slurm-cli.md).

**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
   ```

1. 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
   ```

1. Exécutez l'extension sur le contrôleur :

   ```
   $ sudo bash /fsx/cluster-scripts/add-users/add_users.sh
   ```

1. 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
<a name="sagemaker-hyperpod-multi-user-method-3-base-lcs"></a>

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 ](https://github.com/awslabs/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh) 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écute`add_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 exemple`gen-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](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom).
+ 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](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html#smcluster-getting-started-slurm-cli-create-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 ](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config) 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`

1. 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.sh`lit `shared_users.txt` depuis le même dossier, le fichier doit donc se trouver dans base-config à côté du script.

1. 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écute`add_users.sh`, qui lit `shared_users.txt` et configure les utilisateurs et leurs répertoires personnels.

**Note**  
`add_users.sh`dé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.