Accedi ai nodi SageMaker HyperPod del cluster - Amazon SageMaker

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

Accedi ai nodi SageMaker HyperPod del cluster

È possibile accedere al InServicecluster tramite AWS Systems Manager (SSM) eseguendo il AWS CLI comando aws ssm start-session con il nome host del SageMaker HyperPod cluster nel formato disagemaker-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 o eseguendo describe-cluster e list-cluster-nodes dai AWS CLI comandi 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 start-session comando SSM dovrebbe essere il seguente.

Nota

Se non l'hai configurato AWS Systems Manager, segui le istruzioni fornite all'indirizzoConfigura AWS Systems Manager ed esegui come per il controllo degli accessi degli utenti del 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#

Nota che questo inizialmente ti connette come utente root. Prima di eseguire i job, passate all'ubuntuutente eseguendo 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, vedere i seguenti argomenti.

Suggerimenti aggiuntivi per accedere ai SageMaker HyperPod nodi del cluster

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 easy-ssh.shlo 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 seguenti comandi di esempio mostrano come eseguire lo easy-ssh.shscript. Se viene eseguito correttamente, sarai connesso 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#

Nota che questo inizialmente ti connette come utente root. Prima di eseguire i job, passate all'ubuntuutente eseguendo 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 al ~/.ssh/config file 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 collegarvi direttamente ssh <cluster-name> 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 lo snippet di codice generato automaticamente dallo easy-ssh.sh script al file. ~/.ssh/config Assicurati di copiarlo dall'output generato automaticamente dello easy-ssh.sh script 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
  2. 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 tuo computer locale.

      $ cat ~/.ssh/id_rsa.pub

      Questo dovrebbe restituire la tua chiave. Copia l'output di questo comando.

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

      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
    2. Connect al nodo del cluster e passa all'utente per aggiungere la chiave. Il comando seguente è un esempio di accesso come ubuntu utente. Sostituisci ubuntu con il nome utente per il quale desideri configurare l'accesso facile con SSH.

      $ ./easy-ssh.sh -c <node-group> <cluster-name> $ sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#
    3. Apri il ~/.ssh/authorized_keys file 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, è possibile connettersi 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.

Configura un ambiente multiutente tramite lo spazio condiviso Amazon FSx

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 directory home per l'utente sul file system condiviso Amazon FSx.

Suggerimento

Per consentire agli utenti di accedere al cluster tramite il proprio nome utente e le directory dedicate, è inoltre necessario associarli a ruoli o utenti IAM etichettandoli come indicato nell'Opzione 2 del passaggio 5 della procedura Per attivare il supporto RunAs per i nodi gestiti Linux e macOS fornita in Attiva il supporto RunAs per i nodi gestiti Linux e macOS nella Guida per l'utente. AWS Systems Manager Consulta anche Configura AWS Systems Manager ed esegui come per il controllo degli accessi degli utenti del cluster.

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

Il team SageMaker HyperPod di assistenza fornisce uno script add_users.shcome parte degli esempi di script del ciclo di vita di base.

  1. Preparate un file di testo denominato shared_users.txt che dovete creare nel 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 ...
  2. Assicurati di caricare add_users.shi file shared_users.txt and nel bucket S3 per gli script del ciclo di vita. HyperPod Durante la creazione del cluster, l'aggiornamento del cluster o l'aggiornamento del software del cluster, add_users.shlegge shared_users.txt e configura correttamente le directory utente.

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

  1. Sul nodo principale, esegui il comando seguente per salvare uno script che aiuti a creare un utente. Assicurati di eseguirlo con i permessi 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. Esegui lo script con il seguente comando. Ti verrà richiesto di aggiungere il nome di un utente e il numero di nodi di calcolo a cui desideri consentire all'utente di accedere.

    $ bash create-user.sh
  3. Metti alla prova l'utente eseguendo i seguenti comandi.

    $ sudo su - <user> && ssh $(srun hostname)
  4. Aggiungi le informazioni sull'utente al shared_users.txt file, 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

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. Modificano i propri file ed eseguono il proprio lavoro 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 tramite script del ciclo di vita. Tuttavia, lo svantaggio di questo approccio è 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, puoi utilizzare Lightweight Directory Access Protocol (LDAP) e LDAP over TLS/SSL (LDAPS) per l'integrazione con un servizio di directory come Directory AWS Service for Microsoft Active Directory. Per ulteriori informazioni sulla configurazione di Active Directory e di un ambiente multiutente in un HyperPod cluster, consulta il post sul blog Integrare i cluster con Active Directory per un accesso multiutente senza HyperPod interruzioni.