Acesse seus nós SageMaker HyperPod de cluster - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Acesse seus nós SageMaker HyperPod de cluster

Você pode acessar seu InServicecluster por meio de AWS Systems Manager (SSM) executando o AWS CLI comando aws ssm start-session com o nome do host do SageMaker HyperPod cluster no formato desagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]. Você pode recuperar o ID do cluster, o ID da instância e o nome do grupo de instâncias no SageMaker HyperPod console ou executando describe-cluster e list-cluster-nodes usando os AWS CLI comandos para SageMaker HyperPod. Por exemplo, se o ID do cluster foraa11bbbbb222, o nome do nó do cluster for controller-group e o ID do nó do cluster fori-111222333444555aa, o start-session comando SSM deverá ser o seguinte.

nota

Se você não tiver configurado AWS Systems Manager, siga as instruções fornecidas emConfiguração AWS Systems Manager e Run As para controle de acesso do usuário do 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#

Observe que isso inicialmente conecta você como usuário root. Antes de executar trabalhos, alterne para o ubuntu usuário executando o comando a seguir.

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

Para configurações avançadas para o uso prático de HyperPod clusters, consulte os tópicos a seguir.

Dicas adicionais para acessar seus nós SageMaker HyperPod de cluster

Use o easy-ssh.sh script fornecido por HyperPod para simplificar o processo de conexão

Para transformar o processo anterior em uma única linha de comando, a HyperPod equipe fornece o easy-ssh.shscript que recupera as informações do cluster, as agrega ao comando SSM e se conecta ao nó de computação. Você não precisa procurar manualmente as informações necessárias do HyperPod cluster, pois esse script é executado describe-cluster e list-cluster-nodes comanda e analisa as informações necessárias para concluir o comando SSM. Os comandos de exemplo a seguir mostram como executar o easy-ssh.shscript. Se ele for executado com êxito, você será conectado ao cluster como usuário root. Ele também imprime um trecho de código para configurar o SSH adicionando o HyperPod cluster como um host remoto por meio de um proxy SSM. Ao configurar o SSH, você pode conectar seu ambiente de desenvolvimento local, como o Visual Studio Code, ao HyperPod cluster.

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

Observe que isso inicialmente conecta você como usuário root. Antes de executar trabalhos, alterne para o ubuntu usuário executando o comando a seguir.

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

Configure para facilitar o acesso com SSH usando o nó de HyperPod computação como um host remoto

Para simplificar ainda mais o acesso ao nó de computação usando SSH de uma máquina local, o easy-ssh.sh script gera um trecho de código da configuração do HyperPod cluster como um host remoto, conforme mostrado na seção anterior. O trecho de código é gerado automaticamente para ajudar você a adicioná-lo diretamente ao ~/.ssh/config arquivo em seu dispositivo local. O procedimento a seguir mostra como configurar o acesso fácil usando SSH por meio do proxy SSM, para que você ou os usuários do cluster possam executar diretamente ssh <cluster-name> a conexão com o nó do HyperPod cluster.

  1. Em seu dispositivo local, adicione o nó de HyperPod computação com um nome de usuário como host remoto ao ~/.ssh/config arquivo. O comando a seguir mostra como anexar o trecho de código gerado automaticamente do script ao easy-ssh.sh arquivo. ~/.ssh/config Certifique-se de copiá-lo da saída gerada automaticamente do easy-ssh.sh script que tem as informações corretas do 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. No nó do HyperPod cluster, adicione a chave pública do seu dispositivo local ao ~/.ssh/authorized_keys arquivo no nó do HyperPod cluster.

    1. Imprima o arquivo de chave pública em sua máquina local.

      $ cat ~/.ssh/id_rsa.pub

      Isso deve devolver sua chave. Copie a saída desse comando.

      (Opcional) Se você não tiver uma chave pública, crie uma executando o comando a seguir.

      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
    2. Conecte-se ao nó do cluster e alterne para o usuário para adicionar a chave. O comando a seguir é um exemplo de acesso como ubuntu usuário. ubuntuSubstitua pelo nome de usuário para o qual você deseja configurar o acesso fácil com SSH.

      $ ./easy-ssh.sh -c <node-group> <cluster-name> $ sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#
    3. Abra o ~/.ssh/authorized_keys arquivo e adicione a chave pública no final do arquivo.

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

Depois de concluir a configuração, você pode se conectar ao nó do HyperPod cluster como usuário executando um comando SSH simplificado da seguinte forma.

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

Além disso, você pode usar o host para desenvolvimento remoto a partir de um IDE em seu dispositivo local, como Visual Studio Code Remote - SSH.

Configure um ambiente multiusuário por meio do espaço compartilhado Amazon FSx

Você pode usar o espaço compartilhado do Amazon FSx para gerenciar um ambiente multiusuário em um cluster do Slurm em. SageMaker HyperPod Se você configurou seu cluster Slurm com o Amazon FSx durante a criação do HyperPod cluster, essa é uma boa opção para configurar o espaço de trabalho para os usuários do seu cluster. Crie um novo usuário e configure o diretório inicial do usuário no sistema de arquivos compartilhados Amazon FSx.

dica

Para permitir que os usuários acessem seu cluster por meio de seus nomes de usuário e diretórios dedicados, você também deve associá-los às funções ou usuários do IAM, marcando-os conforme orientado na Opção 2 da etapa 5 do procedimento Para ativar o suporte Run As para nós gerenciados do Linux e macOS fornecido em Ativar o suporte Run As para Linux e nós gerenciados do macOS no Guia do usuário. AWS Systems Manager Consulte também Configuração AWS Systems Manager e Run As para controle de acesso do usuário do cluster.

Para configurar um ambiente multiusuário ao criar um cluster Slurm no SageMaker HyperPod

A equipe SageMaker HyperPod de serviço fornece um script add_users.shcomo parte dos exemplos básicos de scripts do ciclo de vida.

  1. Prepare um arquivo de texto chamado shared_users.txt que você precisa criar no formato a seguir. A primeira coluna é para nomes de usuário, a segunda coluna é para IDs de usuário exclusivos e a terceira coluna é para os diretórios de usuários no espaço compartilhado do Amazon FSx.

    username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...
  2. Certifique-se de carregar os add_users.sharquivos shared_users.txt e no bucket do S3 para scripts de HyperPod ciclo de vida. Enquanto a criação do cluster, a atualização do cluster ou a atualização do software do cluster estão em andamento, add_users.sheles lêem shared_users.txt e configuram os diretórios do usuário adequadamente.

Para criar novos usuários e adicionar a um cluster Slurm existente em execução no SageMaker HyperPod

  1. No nó principal, execute o comando a seguir para salvar um script que ajuda a criar um usuário. Certifique-se de executar isso com as permissões 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. Execute o script com o comando a seguir. Você será solicitado a adicionar o nome de um usuário e o número de nós de computação que você deseja permitir que o usuário acesse.

    $ bash create-user.sh
  3. Teste o usuário executando os seguintes comandos.

    $ sudo su - <user> && ssh $(srun hostname)
  4. Adicione as informações do usuário ao shared_users.txt arquivo para que o usuário seja criado em qualquer novo nó de computação ou em novos clusters.

Configure um ambiente multiusuário integrando HyperPod clusters com o Active Directory

Em casos de uso prático, os HyperPod clusters são normalmente usados por vários usuários: pesquisadores de aprendizado de máquina (ML), engenheiros de software, cientistas de dados e administradores de clusters. Eles editam seus próprios arquivos e executam seus próprios trabalhos sem afetar o trabalho uns dos outros. Para configurar um ambiente multiusuário, use o mecanismo de usuários e grupos do Linux para criar estaticamente vários usuários em cada instância por meio de scripts de ciclo de vida. No entanto, a desvantagem dessa abordagem é que você precisa duplicar as configurações de usuário e grupo em várias instâncias no cluster para manter uma configuração consistente em todas as instâncias ao fazer atualizações, como adicionar, editar e remover usuários.

Para resolver isso, você pode usar o Lightweight Directory Access Protocol (LDAP) e o LDAPover TLS/SSL (LDAPS) para se integrar a um serviço de diretório, como o Directory Service for Microsoft Active Directory.AWS Para saber mais sobre como configurar o Active Directory e um ambiente multiusuário em um HyperPod cluster, consulte a postagem do blog Integrar HyperPod clusters com o Active Directory para um login de vários usuários sem interrupções.