

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creazione di utenti su un cluster Slurm su SageMaker HyperPod
<a name="sagemaker-hyperpod-slurm-user-management-create-users"></a>

Esistono tre modi per creare utenti POSIX sui nodi di un cluster Slurm su. SageMaker HyperPod Differiscono nel * momento in cui vengono creati * gli utenti e nella * quantità di configurazione * del ciclo di vita da gestire. Scegli l'opzione più adatta al tuo cluster e al tuo flusso di lavoro, elencata qui dalla più semplice alla più avanzata.


| Opzione | Ideale per | È richiesta la configurazione del ciclo di vita | Quando vengono creati gli utenti | Comportamento in caso di scalabilità verticale o sostituzione dei nodi | 
| --- | --- | --- | --- | --- | 
| [Opzione A: Aggiungi utenti con lo script dell'utilità di creazione degli utenti](#sagemaker-hyperpod-multi-user-method-1-create-users) | Aggiungere utenti a un cluster già esistente  InService, senza toccare la configurazione del ciclo di vita | Nessuno | Su richiesta, ogni volta che si esegue lo script | Manuale Gli utenti non vengono applicati automaticamente; riesegui lo script ogni volta che vengono aggiunti o sostituiti dei nodi (automaticamente o manualmente). | 
| [Opzione B: aggiungere utenti con lo script di estensione add-users ``](#sagemaker-hyperpod-multi-user-method-2-add-users-extension) | AMI-based cluster configurati durante il ciclo di vita che forniscono automaticamente gli utenti | Aggiungere script di estensione per gli utenti | Automaticamente durante il provisioning dei nodi: durante la creazione del cluster, l'aggiunta di nodi (scale-up), gli aggiornamenti dell'AMI, la sostituzione dei nodi. | Automatico. L'estensione viene eseguita su ogni nuovo nodo durante il provisioning, utilizzando il file utente nel bucket Amazon S3 degli script del ciclo di vita. | 
| [Opzione C: aggiungi utenti con gli script del ciclo di vita di base](#sagemaker-hyperpod-multi-user-method-3-base-lcs) | Cluster che già utilizzano il set completo di script personalizzati per il ciclo di vita | Set completo di script per il ciclo di vita personalizzato | Automaticamente durante il provisioning dei nodi: durante la creazione del cluster, l'aggiunta di nodi (scale-up), gli aggiornamenti dell'AMI, la sostituzione dei nodi. | Automatico. Lo script del ciclo di vita di base viene eseguito su ogni nuovo nodo durante il provisioning, utilizzando il file utente nel bucket Amazon S3 degli script del ciclo di vita. | 

Tutte e tre le opzioni utilizzano script forniti dal team di SageMaker HyperPod assistenza nel repository Awsome Distributed Training sul sito Web. [https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod) GitHub 

**Topics**
+ [Opzione A: Aggiungi utenti con lo script dell'utilità di creazione degli utenti](#sagemaker-hyperpod-multi-user-method-1-create-users)
+ [Opzione B: aggiungere utenti con lo script di estensione add-users ``](#sagemaker-hyperpod-multi-user-method-2-add-users-extension)
+ [Opzione C: aggiungi utenti con gli script del ciclo di vita di base](#sagemaker-hyperpod-multi-user-method-3-base-lcs)

## Opzione A: Aggiungi utenti con lo script dell'utilità di creazione degli utenti
<a name="sagemaker-hyperpod-multi-user-method-1-create-users"></a>

Questa è l'opzione più semplice e non richiede alcuna configurazione del ciclo di vita. Usalo quando il cluster è già presente ** InService ** e desideri aggiungere utenti in questo momento. Esegui lo script di [ utilità ](https://github.com/awslabs/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils/create_users.sh) create\_users.sh sul GitHub sito Web sul nodo controller per creare utenti su ogni nodo in un'unica esecuzione. Lo script rileva automaticamente gli altri nodi dai file di configurazione del cluster, crea gli utenti tramite SSH e configura i nodi di calcolo in parallelo per scalare fino a cluster di grandi dimensioni. Lo script supporta tre modalità per specificare gli utenti, selezionate dagli argomenti passati e dai file presenti nella directory corrente, nel seguente ordine di priorità:
+ **Modalità riga di comando**: si passano i nomi utente come argomenti e lo script assegna automaticamente gli UID. Questo è il modo più rapido per aggiungere utenti.
+ **Modalità file**: lo script legge le definizioni degli utenti da un file `shared_users.txt` (CSV) o `shared_users.yaml` (YAML) nella directory corrente.
+ **Modalità interattiva**: lo script richiede nomi utente e, facoltativamente, UID.

**Importante**  
In ogni modalità, `create_users.sh` crea utenti solo sui nodi esistenti al momento dell'esecuzione. Ciò include la modalità file con un `shared_users.txt` o locale`shared_users.yaml`. Gli utenti ** non vengono ricreati ** automaticamente sui nodi aggiunti successivamente mediante scalabilità o sostituzione dei nodi. Si tratta di eventi di provisioning in cui il nuovo nodo viene avviato con un nuovo volume root privo di account POSIX. (Le home directory e le chiavi SSH sul file system condiviso sopravvivono, ma gli account utente stessi no). Re-run `create_users.sh`dopo che i nuovi nodi sono stati aggiunti per allinearli.  
Re-running lo script è sicuro. Eseguilo sul nodo controller; rileva gli altri nodi del cluster e applica gli utenti all'intero cluster in una sola esecuzione. È idempotente per nodo: crea un utente solo dove manca, lasciando invariati i nodi che hanno già l'utente, quindi una nuova esecuzione dopo l'aggiunta dei nodi ha effetto solo sui nuovi nodi.  
Affinché i nuovi nodi ricevano automaticamente gli utenti, il file utente deve far parte della configurazione del ciclo di vita del cluster in modo che venga eseguito durante il provisioning: archivia un `shared_users.yaml` file `shared_users.txt` or nel bucket Amazon S3 degli script del ciclo di vita e utilizzalo con o the. [Opzione B: aggiungere utenti con lo script di estensione add-users ``](#sagemaker-hyperpod-multi-user-method-2-add-users-extension) [Opzione C: aggiungi utenti con gli script del ciclo di vita di base](#sagemaker-hyperpod-multi-user-method-3-base-lcs) `create_users.sh`aiuta aggiungendo ogni utente a cui viene creato `shared_users.txt` e offrendo la possibilità di caricarlo su Amazon S3, ma da solo, in qualsiasi modalità, non obbliga gli utenti a persistere durante gli eventi di provisioning.

Per ogni utente, lo script:
+ Crea un utente POSIX con un UID coerente su ogni nodo.
+ Crea una home directory sul file system condiviso (con rilevamento automatico di OpenZFS at `/home` o Amazon FSX for Lustre at). `/fsx`
+ Genera una coppia di chiavi SSH sul file system condiviso per SSH tra nodi senza password.
+ Aggiunge l'utente al `docker` gruppo (e, facoltativamente, concede l'accesso tramite sudo).
+ Registra l'utente con l'account Slurm sul controller in modo che possa inviare lavori.
+ Aggiunge i nuovi utenti a un `shared_users.txt` file e facoltativamente lo carica su Amazon S3, in modo da poterlo riutilizzare con le altre opzioni.

**Prerequisiti**  
Prima di iniziare, verifica che siano soddisfatti i seguenti requisiti.
+ Il cluster è ** InService ** ed è possibile connettersi al nodo del controller. Consulta [Accesso ai nodi SageMaker HyperPod del cluster](sagemaker-hyperpod-run-jobs-slurm-access-nodes.md).
+ `jq`è installato nel nodo controller.
+ L'accesso SSH è disponibile dal nodo controller a tutti gli altri nodi (lo HyperPod configura per l'utente predefinito).

**Per aggiungere utenti con lo script di utilità `create_users.sh`**  
Completa questa procedura:

1. Connettiti al nodo controller e scarica lo script. Assicurati di eseguirlo con i permessi 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. Esegui lo script usando una delle sue tre modalità, che seleziona in base alla priorità tra gli argomenti passati e i file nella directory corrente: prima gli argomenti della riga di comando, poi un file utente, poi i prompt interattivi. Ogni modalità esegue la stessa sequenza: crea gli utenti sul nodo corrente, configura coppie di chiavi SSH sul file system condiviso, crea gli utenti su tutti i nodi rimanenti (nodi di calcolo in parallelo), registrali con l'account Slurm sul controller, aggiungili e offri di caricare quel file su Amazon S3. `shared_users.txt`

   Le tre modalità sono descritte negli esempi seguenti, ognuna delle quali aggiunge due utenti (e). `user1` `user2`

**Modalità a riga di comando**  
Passa i nomi utente come argomenti. Lo script assegna automaticamente gli UID e chiede se i nuovi utenti devono essere sudoer. Questo è il modo più rapido per aggiungere utenti.

   ```
   $ sudo ./create_users.sh user1 user2
   ```

   Lo script convalida i nomi utente, quindi richiede l'accesso 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
   ```

   Quindi crea gli utenti sul nodo corrente, imposta le coppie di chiavi SSH, li crea sui nodi di calcolo, li registra con l'account Slurm sul controller e scrive`shared_users.txt`, chiedendoti alla fine di caricare quel file su Amazon S3.

**Modalità file**  
Crea un file utente nella stessa directory dello script, quindi esegui lo script senza argomenti. Lo script legge le definizioni utente, le convalida (creando solo utenti che non esistono già e saltando i conflitti UID) e crea gli utenti in tutti i nodi. Lo script accetta due formati di file.

   Per`shared_users.txt`, usa un file CSV con un utente per riga nel formato: `username,uid,home_directory`

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

   In alternativa, per`shared_users.yaml`, usa un file YAML con un semplice elenco di utenti o utenti organizzati in gruppi. L'analisi di questo formato richiede PyYAML sul nodo. Di seguito è riportato il semplice formato dell'elenco:

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

   Se sono presenti entrambi i file, ha la `shared_users.txt` precedenza. Esegui lo script senza argomenti:

   ```
   $ sudo ./create_users.sh
   ```

   Lo script convalida le voci del file, conferma la creazione, richiede l'accesso tramite sudoer e offre la possibilità di aggiungere utenti che non sono presenti nel file. Quindi crea `user1` e `user2` su tutti i nodi con gli UID del file (2001 e 2002), imposta le coppie di chiavi SSH, le registra con l'account Slurm e le aggiorna. `shared_users.txt`

**Modalità interattiva**  
Esegue lo script senza argomenti e senza file utente presenti. Lo script richiede i nomi utente e, facoltativamente, gli UID da assegnare:

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

   Dopo aver risposto alle istruzioni, lo script crea `user1` e, `user2` su tutti i nodi con gli UID inseriti, imposta le coppie di chiavi SSH, le registra con l'account Slurm e le aggiorna. `shared_users.txt`

1. Metti alla prova un utente passando ad esso ed eseguendo un comando nel cluster.

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

**Nota**  
Lo script è idempotente. Gli utenti già esistenti vengono ignorati e le chiavi SSH esistenti e le associazioni contabili di Slurm vengono lasciate al loro posto, quindi è possibile eseguirle nuovamente.

## Opzione B: aggiungere utenti con lo script di estensione add-users ``
<a name="sagemaker-hyperpod-multi-user-method-2-add-users-extension"></a>

Usa questa opzione quando il tuo cluster utilizza la ** AMI-based configurazione ** e desideri che il provisioning degli utenti venga eseguito automaticamente. Con l'opzione del ciclo di vita dell'estensione, SageMaker HyperPod esegue prima la AMI-based configurazione completa, quindi esegue lo script di estensione. Il team di assistenza fornisce un'[estensione per ](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/Extensions/add-users) gli utenti aggiuntivi pronta all'uso nella cartella Extensions del repository Awsome Distributed Training sul sito Web. GitHub Poiché l'estensione viene eseguita durante il provisioning dei nodi, gli utenti vengono creati automaticamente al momento della creazione del cluster e nuovamente su tutti i nuovi nodi aggiunti durante lo scale-out.

Per ulteriori informazioni sulla configurazione delle estensioni:
+ Per configurare le estensioni utilizzando la AWS console, vedi Configurazione del ** ciclo di vita - opzionale ** in Configurazione [ personalizzata. ](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom)
+ Per configurare le estensioni utilizzando l'API, vedi ** Opzione B: Estendi la AMI-based configurazione con OnInitComplete ** in [ Crea il tuo 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`estensione crea utenti POSIX con UID coerenti, imposta le home directory sul file system condiviso, genera coppie di chiavi SSH per SSH tra nodi senza password e registra gli utenti con l'account Slurm sul controller. Accetta due formati di input:
+ `shared_users.txt`— lo stesso formato CSV utilizzato dagli script del ciclo di vita di base (). `username,uid,/fsx/username` Tutti gli utenti vengono aggiunti all'account Slurm. `root`
+ `shared_users.yaml`— un formato YAML che supporta inoltre l'organizzazione degli utenti in gruppi con account Slurm per gruppo e montaggi di file system. I gruppi sono solo organizzativi; non creano gruppi Linux.

Di seguito è riportato un esempio di `shared_users.yaml` utilizzo del formato dei gruppi:

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

**Per aggiungere utenti con l'`estensione` add-users al momento della creazione del cluster**  
Completa questa procedura:

1. Copia il file di esempio appropriato nella `add-users` directory e modificalo con i tuoi utenti:

   ```
   $ cp shared_users_sample.yaml shared_users.yaml
   ```

1. Carica la `add-users` directory nel bucket Amazon S3 dei tuoi script del ciclo di vita (il percorso del bucket deve iniziare con): `s3://sagemaker-`

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

1. Specifica l'estensione nel `LifeCycleConfig` blocco della `CreateCluster` richiesta, utilizzando come script: `add_users.sh` `OnInitComplete`

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

**Suggerimento**  
Se il cluster richiede più funzionalità oltre alla creazione degli utenti (ad esempio, l'osservabilità), carica l'intera cartella Extensions e utilizza l'`run_extensions.sh`orchestrator come script di estensione. Fornisce semplici interruttori booleani, ad esempio per abilitare ciascuna funzionalità. `ENABLE_ADD_USERS="true"` Per informazioni dettagliate, vedi [Guida introduttiva all'utilizzo di SageMaker HyperPod AWS CLI](smcluster-getting-started-slurm-cli.md).

**Per aggiungere utenti a un cluster esistente dopo la creazione**  
Poiché l'estensione viene eseguita solo durante il provisioning dei nodi, l'aggiunta di utenti ai nodi già in esecuzione richiede l'esecuzione manuale dell'estensione.

1. Aggiorna il file utente con i nuovi utenti (mantieni gli utenti esistenti nel file) e caricalo su Amazon S3:

   ```
   $ aws s3 cp add-users/shared_users.yaml s3://DOC-EXAMPLE-BUCKET/add-users/shared_users.yaml
   ```

1. Connettiti al nodo controller e invia gli script al file system condiviso:

   ```
   $ 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. Esegui l'estensione sul controller:

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

1. Esegui l'estensione sui nodi di calcolo con`srun`:

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

Gli script ignorano gli utenti esistenti e ne creano solo di nuovi; sono idempotenti.

## Opzione C: aggiungi utenti con gli script del ciclo di vita di base
<a name="sagemaker-hyperpod-multi-user-method-3-base-lcs"></a>

Utilizzate questa opzione solo se il cluster utilizza già il set completo di script del ciclo di vita di base personalizzato, in cui gli script sono responsabili dell'intera sequenza di provisioning. Questa è l'opzione più avanzata perché gestisci l'intero set di script del ciclo di vita anziché una singola estensione. Il team di assistenza fornisce [ lo script ](https://github.com/awslabs/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh) add\_users.sh sul GitHub sito Web come uno script all'interno del set di script del ciclo di vita di base-config. Durante la creazione del cluster, l'aggiornamento del cluster o l'aggiornamento del software del cluster, viene eseguito lo script lifecycle runner (`lifecycle_script.py`)`add_users.sh`, che legge un `shared_users.txt` file e crea gli utenti e le relative home directory.

In questa opzione, `add_users.sh` gestisce solo la creazione di utenti e home directory POSIX. Generazione di coppie di chiavi SSH per internodi senza password SSH è un modulo separato nel set di script del ciclo di vita di base (ad esempio`gen-keypair-ubuntu.sh`), che il lifecycle script runner richiama come parte del set completo. Assicurati che il modulo chiave SSH sia incluso nel set di script del ciclo di vita in modo che gli utenti ottengano coppie di chiavi nel file system condiviso.

Per ulteriori informazioni sulla configurazione del set completo di script personalizzati per il ciclo di vita:
+ Per configurare gli script del ciclo di vita utilizzando la AWS console, vedi Configurazione del ** ciclo di vita - opzionale in Configurazione personalizzata. ** [https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom)
+ Per configurare gli script del ciclo di vita utilizzando l'API, vedi ** Opzione C: controllo personalizzato completo con in Crea il tuo cluster. OnCreate ** [https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html#smcluster-getting-started-slurm-cli-create-cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html#smcluster-getting-started-slurm-cli-create-cluster)

**Per creare utenti durante la creazione del cluster Slurm**  
Completa questa procedura:

1. Scarica il set di script per il ciclo [ di ](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config) vita della configurazione di base dal sito Web. GitHub Con questa opzione, carichi l'intera cartella base-config come set di script del ciclo di vita, non solo. `add_users.sh`

1. Nella cartella base-config, create o modificate un file di testo denominato nel seguente formato. `shared_users.txt` La prima colonna è il nome utente, la seconda colonna è l'ID utente univoco e la terza colonna è la directory utente nello spazio condiviso di Amazon FSx.

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

   `add_users.sh`viene letto `shared_users.txt` dalla stessa cartella, quindi il file deve trovarsi all'interno di base-config insieme allo script.

1. Carica l'intera cartella base-config nel bucket Amazon S3 per gli script del ciclo di vita. HyperPod Mentre è in corso la creazione del cluster, l'aggiornamento del cluster o l'aggiornamento del software del cluster, viene eseguito il lifecycle script runner`add_users.sh`, che legge e configura gli utenti e le loro home directory. `shared_users.txt`

**Nota**  
`add_users.sh`rileva automaticamente il file system condiviso: se OpenZFS è montato, crea lì le home directory; altrimenti `/home` utilizza il percorso Amazon FSx for Lustre.