

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Acceder a los nodos SageMaker HyperPod de su clúster
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes"></a>

Puede acceder al **InService**clúster a través de AWS Systems Manager (SSM) ejecutando el AWS CLI comando `aws ssm start-session` con el nombre de host del SageMaker HyperPod clúster en el formato de`sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]`. Puedes recuperar el ID del clúster, el ID de instancia y el nombre del grupo de instancias desde la [SageMaker HyperPod consola](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters) o ejecutando `describe-cluster` y `list-cluster-nodes` desde los [AWS CLI comandos de SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes). Por ejemplo, si el ID del clúster es`aa11bbbbb222`, el nombre del nodo del clúster es `controller-group` y el ID del nodo del clúster es `i-111222333444555aa`, el comando `start-session` de SSM debería ser el siguiente.

**nota**  
Al conceder a los usuarios acceso a los nodos del HyperPod clúster, pueden instalar y utilizar software administrado por los usuarios en los nodos. Asegúrese de cumplir con el principio de conceder privilegios mínimos a los usuarios.  
Si no lo ha configurado AWS Systems Manager, siga las instrucciones que se proporcionan en[Configurar AWS Systems Manager y ejecutar como para el control de acceso de los usuarios del clúster](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#
```

Tenga en cuenta que esto lo conecta inicialmente como usuario raíz. Antes de ejecutar trabajos, cambie al usuario `ubuntu` ejecutando el siguiente comando.

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

Para obtener información sobre la configuración avanzada para el uso práctico de HyperPod los clústeres, consulte los siguientes temas.

**Topics**
+ [Consejos adicionales para acceder a los nodos SageMaker HyperPod del clúster](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips)
+ [Configure un entorno multiusuario a través del espacio FSx compartido de Amazon](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space)
+ [Configure un entorno multiusuario integrando los HyperPod clústeres con Active Directory](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory)

## Consejos adicionales para acceder a los nodos SageMaker HyperPod del clúster
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips"></a>

**Utilice el `easy-ssh.sh` script proporcionado por HyperPod para simplificar el proceso de conexión**

Para convertir el proceso anterior en un comando de una sola línea, el HyperPod equipo proporciona el [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)script que recupera la información del clúster, la agrega en el comando SSM y se conecta al nodo de cómputo. No es necesario buscar manualmente la información de HyperPod clúster necesaria, ya que este script se ejecuta `describe-cluster` y `list-cluster-nodes` ordena y analiza la información necesaria para completar el comando SSM. En los siguientes comandos de ejemplo, se muestra cómo ejecutar el 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). Si se ejecuta correctamente, se conectará al clúster como usuario raíz. También imprime un fragmento de código para configurar SSH añadiendo el HyperPod clúster como un host remoto a través de un proxy SSM. Al configurar SSH, puede conectar su entorno de desarrollo local, como Visual Studio Code, con el clúster. 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#
```

Tenga en cuenta que esto lo conecta inicialmente como usuario raíz. Antes de ejecutar trabajos, cambie al usuario `ubuntu` ejecutando el siguiente comando.

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

**Configúrelo para facilitar el acceso con SSH mediante el uso del nodo de HyperPod cómputo como host remoto**

Para simplificar aún más el acceso al nodo de cómputo mediante SSH desde una máquina local, el `easy-ssh.sh` script genera un fragmento de código que muestra la configuración del HyperPod clúster como un host remoto, como se muestra en la sección anterior. El fragmento de código se genera automáticamente para que pueda añadirlo directamente al archivo `~/.ssh/config` de su dispositivo local. El siguiente procedimiento muestra cómo configurarlo para facilitar el acceso mediante SSH a través del proxy SSM, de forma que usted o los usuarios del clúster puedan conectarse directamente `ssh <cluster-name>` al nodo del clúster. HyperPod 

1. En su dispositivo local, añada al archivo el nodo de HyperPod cómputo con un nombre de usuario como host remoto. `~/.ssh/config` El siguiente comando muestra cómo añadir el fragmento de código generado automáticamente desde el script `easy-ssh.sh` al archivo `~/.ssh/config`. Asegúrese de copiarlo de la salida generada automáticamente del script `easy-ssh.sh` que contiene la información de clúster correcta.

   ```
   $ 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. En el nodo del HyperPod clúster, añade la clave pública del dispositivo local al `~/.ssh/authorized_keys` archivo del nodo del HyperPod clúster.

   1. Imprima el archivo de clave pública en su máquina local.

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

      Esto debería devolver la clave. Copie la salida de este comando. 

      (Opcional) Si no dispone de una clave pública, cree una mediante el siguiente comando.

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

   1. Conéctese al nodo del clúster y cambie al usuario para añadir la clave. El siguiente comando es un ejemplo de acceso como usuario `ubuntu`. Sustituya `ubuntu` por el nombre de usuario para el que desee configurar el acceso fácil con SSH.

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

   1. Abra el archivo `~/.ssh/authorized_keys` y añada la clave pública al final del archivo.

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

Una vez finalizada la configuración, puede conectarse al nodo del HyperPod clúster como usuario ejecutando un comando SSH simplificado de la siguiente manera.

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

Además, puede usar el host para el desarrollo remoto desde un IDE en su dispositivo local, como [Visual Studio Code Remote - SSH](https://code.visualstudio.com/docs/remote/ssh).

## Configure un entorno multiusuario a través del espacio FSx compartido de Amazon
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space"></a>

Puedes usar el espacio FSx compartido de Amazon para gestionar un entorno multiusuario en un clúster de Slurm. SageMaker HyperPod Si configuró su clúster de Slurm con Amazon FSx durante la creación del HyperPod clúster, esta es una buena opción para configurar el espacio de trabajo para los usuarios del clúster. Cree un nuevo usuario y configure el directorio principal del usuario en el sistema de archivos FSx compartidos de Amazon.

**sugerencia**  
Para permitir que los usuarios accedan al clúster con su nombre de usuario y sus directorios dedicados, debe asociarlos además a roles o usuarios de IAM etiquetándolos de la forma que se indica en la **Opción 2** del paso 5 del procedimiento **Activación del soporte Ejecutar como para nodos administrados de Linux y macOS** que se incluye en [Activación del soporte Ejecutar como para nodos administrados de Linux y macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html) de la Guía del usuario de AWS Systems Manager . Véase también [Configurar AWS Systems Manager y ejecutar como para el control de acceso de los usuarios del clúster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

**Para configurar un entorno multiusuario mientras se crea un clúster de Slurm, en SageMaker HyperPod**

El equipo SageMaker HyperPod de servicio proporciona un 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)como parte de los ejemplos de scripts básicos del ciclo de vida. 

1. Prepare un archivo de texto con el nombre `shared_users.txt` que debe crear con el siguiente formato. La primera columna es para los nombres de usuario, la segunda columna es para el usuario IDs único y la tercera columna es para los directorios de usuarios en el espacio FSx compartido de Amazon.

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

1. Asegúrese de cargar los [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)archivos `shared_users.txt` y en el bucket de S3 para los scripts HyperPod del ciclo de vida. Mientras se está creando o actualizando el clúster, o durante la actualización del software del clúster, el [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) lee en el `shared_users.txt` y configura los directorios de usuario correctamente.

**Para crear nuevos usuarios y añadirlos a un clúster de Slurm existente que se ejecute en SageMaker HyperPod **

1. En el nodo principal, ejecute el siguiente comando para guardar un script que ayude a crear un usuario. Asegúrese de ejecutarlo con permisos 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. Ejecute el script con el siguiente comando. Se le pedirá que añada el nombre de un usuario y el número de nodos de computación a los que desea permitir que acceda el usuario.

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

1. Pruebe el usuario ejecutando los siguientes comandos. 

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

1. Añada la información del usuario al archivo `shared_users.txt` para que el usuario se cree en todos los nodos de computación o clústeres nuevos.

## Configure un entorno multiusuario integrando los HyperPod clústeres con Active Directory
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory"></a>

En casos prácticos, los HyperPod clústeres suelen ser utilizados por varios usuarios: investigadores de aprendizaje automático (ML), ingenieros de software, científicos de datos y administradores de clústeres. Cada uno de ellos edita sus propios archivos y ejecuta sus propios trabajos sin que ello afecte al trabajo de los demás. Para configurar un entorno multiusuario, utilice el mecanismo de usuarios y grupos de Linux para crear de forma estática varios usuarios en cada instancia mediante scripts de ciclo de vida. Sin embargo, el inconveniente de este enfoque es que es necesario duplicar la configuración de usuario y grupo en varias instancias del clúster para mantener una configuración uniforme en todas las instancias al realizar actualizaciones, como añadir, editar y eliminar usuarios.

Para solucionar este problema, puede utilizar el [Protocolo ligero de acceso a directorios (LDAP)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) y el [LDAP over TLS/SSL (LDAPS)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) para integrarse con un servicio de directorio como Directory [AWS Service para](https://aws.amazon.com/directoryservice/) Microsoft Active Directory. Para obtener más información sobre cómo configurar Active Directory y un entorno multiusuario en un HyperPod clúster, consulte la entrada del blog [Integrar HyperPod clústeres con Active Directory para iniciar sesión con](https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/) varios usuarios sin problemas.