

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à.

# Accesso ai nodi SageMaker HyperPod del cluster
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes"></a>

È possibile accedere al **InService**cluster tramite AWS Systems Manager (SSM) eseguendo il AWS CLI comando `aws ssm start-session` con il nome host del SageMaker HyperPod cluster nel formato di`sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]`. È possibile recuperare l'ID del cluster, l'ID dell'istanza e il nome del gruppo di istanze dalla [SageMaker HyperPod console](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters) o eseguendo `describe-cluster` e `list-cluster-nodes` dai [AWS CLI comandi](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes) di. SageMaker HyperPod Ad esempio, se l’ID del cluster è `aa11bbbbb222`, il nome del nodo del cluster è `controller-group` e l’ID del nodo del cluster è `i-111222333444555aa`, il comando `start-session` di SSM dovrebbe essere il seguente.

**Nota**  
La concessione agli utenti dell'accesso ai nodi HyperPod del cluster consente loro di installare e utilizzare software gestito dagli utenti sui nodi. Assicurati di rispettare il principio delle autorizzazioni con privilegio minimo per gli utenti.  
Se non l'hai ancora configurato AWS Systems Manager, segui le istruzioni fornite all'indirizzo. [Configurazione AWS Systems Manager e Run As per il controllo degli accessi degli utenti del cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm)

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

Tieni presente che questa operazione esegue una connessione iniziale come utente root. Prima di eseguire i processi, passa all’utente `ubuntu` con il comando seguente.

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

Per le impostazioni avanzate per l'uso pratico dei HyperPod cluster, consulta i seguenti argomenti.

**Topics**
+ [Suggerimenti aggiuntivi per accedere ai SageMaker HyperPod nodi del cluster](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips)
+ [Configurazione di un ambiente multiutente tramite lo spazio condiviso Amazon FSx](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space)
+ [Configura un ambiente multiutente integrando HyperPod i cluster con Active Directory](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory)

## Suggerimenti aggiuntivi per accedere ai SageMaker HyperPod nodi del cluster
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips"></a>

**Utilizza lo `easy-ssh.sh` script fornito da HyperPod per semplificare il processo di connessione**

Per trasformare il processo precedente in un comando a riga singola, il HyperPod team fornisce [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh)lo script che recupera le informazioni sul cluster, le aggrega nel comando SSM e si connette al nodo di calcolo. Non è necessario cercare manualmente le informazioni richieste sul HyperPod cluster poiché questo script viene eseguito, `list-cluster-nodes` comanda `describe-cluster` e analizza le informazioni necessarie per completare il comando SSM. I comandi di esempio seguenti mostrano come eseguire lo script [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh). Se lo script viene eseguito correttamente, viene stabilita una connessione al cluster come utente root. Stampa anche un frammento di codice per configurare SSH aggiungendo il HyperPod cluster come host remoto tramite un proxy SSM. Configurando SSH, puoi connettere il tuo ambiente di sviluppo locale, ad esempio Visual Studio Code, con il cluster. HyperPod 

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

Tieni presente che questa operazione esegue una connessione iniziale come utente root. Prima di eseguire i processi, passa all’utente `ubuntu` con il comando seguente.

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

**Configura per un facile accesso con SSH utilizzando il nodo di HyperPod calcolo come host remoto**

Per semplificare ulteriormente l'accesso al nodo di calcolo tramite SSH da una macchina locale, lo `easy-ssh.sh` script genera un frammento di codice relativo alla configurazione del HyperPod cluster come host remoto, come mostrato nella sezione precedente. Lo snippet di codice viene generato automaticamente per aiutarti ad aggiungere direttamente lo script al file `~/.ssh/config` sul tuo dispositivo locale. La procedura seguente mostra come configurare un accesso semplificato tramite SSH tramite il proxy SSM, in modo che tu o gli utenti del cluster possiate `ssh {{<cluster-name>}}` collegarvi direttamente al nodo del cluster. HyperPod 

1. Sul dispositivo locale, aggiungi al file il nodo di HyperPod elaborazione con un nome utente come host remoto. `~/.ssh/config` Il comando seguente mostra come aggiungere il frammento di codice generato automaticamente dallo script `easy-ssh.sh` al file `~/.ssh/config`. Assicurati di copiarlo dall’output generato automaticamente dello script `easy-ssh.sh` che contiene le informazioni corrette sul cluster.

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

1. Sul nodo del HyperPod cluster, aggiungi la chiave pubblica sul dispositivo locale al `~/.ssh/authorized_keys` file sul nodo del HyperPod cluster.

   1. Stampa il file della chiave pubblica sul computer locale.

      ```
      $ cat ~/.ssh/id_rsa.pub
      ```

      Questa operazione dovrebbe restituire la tua chiave. Copia l’output di questo comando. 

      (Facoltativo) Se non disponi di una chiave pubblica, creane una con il comando seguente.

      ```
      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
      ```

   1. Connettiti al nodo del cluster e passa all’utente per aggiungere la chiave. Il comando seguente è un esempio di accesso come utente `ubuntu`. Sostituisci `ubuntu` con il nome utente per il quale impostare l’accesso semplificato con SSH.

      ```
      $ ./easy-ssh.sh -c {{<node-group> <cluster-name>}}
      $ sudo su - {{ubuntu}}
      ubuntu@ip-111-22-333-444:/usr/bin#
      ```

   1. Apri il file `~/.ssh/authorized_keys` e aggiungi la chiave pubblica alla fine del file.

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

Al termine della configurazione, puoi connetterti al nodo del HyperPod cluster come utente eseguendo un comando SSH semplificato come segue.

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

Inoltre, puoi utilizzare l’host per lo sviluppo remoto da un IDE sul tuo dispositivo locale, ad esempio [Visual Studio Code Remote - SSH](https://code.visualstudio.com/docs/remote/ssh).

## Configurazione di un ambiente multiutente tramite lo spazio condiviso Amazon FSx
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space"></a>

Puoi utilizzare lo spazio condiviso Amazon FSx per gestire un ambiente multiutente in un cluster Slurm su. SageMaker HyperPod Se hai configurato il tuo cluster Slurm con Amazon FSx durante la creazione del HyperPod cluster, questa è una buona opzione per configurare lo spazio di lavoro per gli utenti del cluster. Crea un nuovo utente e configura la home directory per l’utente sul file system condiviso Amazon FSx.

**Suggerimento**  
Per consentire agli utenti di accedere al cluster con il proprio nome utente e le directory dedicate, devi anche associarli a ruoli o utenti IAM taggandoli come indicato nell’**opzione 2** della fase 5 della procedura **To turn on Run As support for Linux and macOS managed nodes** disponibile in [Turn on Run As support for Linux and macOS managed nodes](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html) in AWS Systems Manager User Guide. Consulta anche [Configurazione AWS Systems Manager e Run As per il controllo degli accessi degli utenti del cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

**Per configurare un ambiente multiutente durante la creazione di un cluster Slurm su SageMaker HyperPod**

Il team SageMaker HyperPod di assistenza fornisce uno script [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh)come parte degli esempi di script del ciclo di vita di base. 

1. Prepara un file di testo denominato `shared_users.txt` che abbia il seguente formato. La prima colonna è per i nomi utente, la seconda per gli ID utente univoci e la terza per le directory degli utenti nello spazio condiviso di Amazon FSx.

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

1. Assicurati di caricare [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh)i file `shared_users.txt` and nel bucket S3 per gli script del ciclo di vita. HyperPod Durante la creazione del cluster oppure l’aggiornamento del cluster o del software del cluster, [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh) legge `shared_users.txt` e configura correttamente le directory degli utenti.

**Per creare nuovi utenti e aggiungerli a un cluster Slurm esistente in esecuzione su SageMaker HyperPod **

1. Sul nodo head, utilizza il comando seguente per salvare uno script che consente di creare un utente. Assicurati di eseguirlo con le autorizzazioni 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
   ```

1. Esegui lo script con il comando seguente. Ti verrà richiesto di aggiungere il nome di un utente e il numero di nodi di calcolo a cui desideri che l’utente abbia accesso.

   ```
   $ bash create-user.sh
   ```

1. Testa l’utente utilizzando i comandi seguenti. 

   ```
   $ sudo su - {{<user>}} && ssh $(srun hostname)
   ```

1. Aggiungi le informazioni sull’utente al file `shared_users.txt`, in modo che l’utente venga creato su qualsiasi nuovo nodo di calcolo o nuovo cluster.

## Configura un ambiente multiutente integrando HyperPod i cluster con Active Directory
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory"></a>

Nei casi d'uso pratici, HyperPod i cluster vengono in genere utilizzati da più utenti: ricercatori di machine learning (ML), ingegneri del software, data scientist e amministratori di cluster. Questi utenti modificano i propri file ed eseguono i processi senza influire sul lavoro degli altri. Per configurare un ambiente multiutente, utilizza il meccanismo di utenti e gruppi Linux per creare staticamente più utenti su ogni istanza con gli script del ciclo di vita. Lo svantaggio di questo approccio, tuttavia, è che è necessario duplicare le impostazioni di utenti e gruppi su più istanze del cluster per mantenere una configurazione coerente in tutte le istanze quando si apportano aggiornamenti come l’aggiunta, la modifica e la rimozione di utenti.

Per risolvere questo problema, è possibile utilizzare [Lightweight Directory Access Protocol (LDAP)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) e [LDAP over TLS/SSL (LDAPS)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) per l'integrazione con un servizio di directory come Directory Service [for Microsoft AWS Active](https://aws.amazon.com/directoryservice/) Directory. Per ulteriori informazioni sulla configurazione di Active Directory e di un ambiente multiutente in un HyperPod cluster, consulta il post sul blog [Integrare HyperPod i cluster con Active Directory](https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/) per un accesso multiutente senza interruzioni.