Acceda a los nodos SageMaker HyperPod de su clúster - Amazon SageMaker

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.

Acceda a los nodos SageMaker HyperPod de su clúster

Puede acceder a su InServiceclú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 desagemaker-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 o ejecutando describe-cluster y list-cluster-nodes desde los AWS CLI comandos for SageMaker HyperPod. Por ejemplo, si el ID del clúster esaa11bbbbb222, el nombre del nodo del clúster es controller-group y el ID del nodo del clúster esi-111222333444555aa, el SSM start-session comando debería ser el siguiente.

nota

Si no lo ha configurado AWS Systems Manager, siga las instrucciones que se proporcionan enConfigurar AWS Systems Manager y ejecutar como para el control de acceso de los usuarios del clúster.

$ 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 root. Antes de ejecutar los trabajos, cambie al ubuntu usuario 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 una configuración avanzada para el uso práctico de HyperPod los clústeres, consulte los siguientes temas.

Consejos adicionales para acceder a los nodos SageMaker HyperPod del clúster

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 easy-ssh.shscript que recupera la información del clúster, la agrega al SSM comando y se conecta al nodo de cómputo. No es necesario buscar manualmente la información del 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 Los siguientes comandos de ejemplo muestran cómo ejecutar el easy-ssh.shscript. Si se ejecuta correctamente, se conectará al clúster como usuario root. También imprime un fragmento de código para configurarlo SSH añadiendo el HyperPod clúster como un host remoto a través de un SSM proxy. Al configurarloSSH, puede conectar su entorno de desarrollo local, como Visual Studio Code, con el HyperPod clúster.

$ 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 root. Antes de ejecutar los trabajos, cambie al ubuntu usuario 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 SSH mediante el nodo de HyperPod cómputo como host remoto

Para simplificar aún más el acceso al nodo de cómputo SSH desde una máquina local, el easy-ssh.sh script genera un fragmento de código para configurar el 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 ayudarte a añadirlo directamente al ~/.ssh/config archivo en tu dispositivo local. El siguiente procedimiento muestra cómo configurarlo para facilitar el acceso SSH mediante el SSM proxy, de modo que usted o los usuarios del clúster puedan conectarse directamente ssh <cluster-name> al nodo del HyperPod clúster.

  1. En su dispositivo local, añada al ~/.ssh/config archivo el nodo de HyperPod cómputo con un nombre de usuario como host remoto. El siguiente comando muestra cómo añadir el fragmento de código generado automáticamente desde el easy-ssh.sh script al archivo. ~/.ssh/config Asegúrese de copiarlo de la salida generada automáticamente del easy-ssh.sh script 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
  2. En el nodo del HyperPod clúster, añada 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 devolverte la clave. Copia el resultado de este comando.

      (Opcional) Si no tiene una clave pública, cree una ejecutando el siguiente comando.

      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
    2. 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 ubuntu usuario. ubuntuSustitúyalo por el nombre de usuario con el que desee configurar el acceso fácilSSH.

      $ ./easy-ssh.sh -c <node-group> <cluster-name> $ sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#
    3. Abra el ~/.ssh/authorized_keys archivo 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 SSH comando 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 dispositivo local, como Visual Studio Code Remote - SSH.

Configure un entorno multiusuario a través del espacio FSx compartido de Amazon

Puede utilizar 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 de su 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 a través de su nombre de usuario y sus directorios dedicados, también debe asociarlos a IAM roles o usuarios etiquetándolos como se indica en la opción 2 del paso 5 del procedimiento Para activar la compatibilidad con los nodos gestionados de Linux y macOS, que se proporciona en Activar la compatibilidad con los nodos gestionados de Linux y macOS de la Guía del AWS Systems Manager usuario. Véase también Configurar AWS Systems Manager y ejecutar como para el control de acceso de los usuarios del clúster.

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 add_users.shcomo 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 necesite crear en 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 ...
  2. Asegúrese de cargar los add_users.sharchivos shared_users.txt y en el bucket de S3 para los scripts HyperPod del ciclo de vida. Mientras la creación del clúster, la actualización del clúster o la actualización del software del clúster están en curso, add_users.shlee los directorios de usuarios shared_users.txt y los configura correctamente.

Para crear nuevos usuarios y añadirlos a un clúster de Slurm existente que se esté ejecutando 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 ejecutar esto con los permisos de 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. 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 cómputo a los que desea permitir el acceso del usuario.

    $ bash create-user.sh
  3. Ejecute los siguientes comandos para probar al usuario.

    $ sudo su - <user> && ssh $(srun hostname)
  4. Añada la información del usuario al shared_users.txt archivo para que el usuario se cree en cualquier nodo de cómputo o clúster nuevo.

Configure un entorno multiusuario mediante la integración de HyperPod los clústeres con Active Directory

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. Editan sus propios archivos y ejecutan 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) y LDAPmás deTLS/SSL(LDAPS) para integrarlo con un servicio de AWS directorio como Directory Service para 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 varios usuarios sin problemas.