

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

# Acessando seus nós SageMaker HyperPod de cluster
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes"></a>

Você pode acessar seu **InService**cluster 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 de`sagemaker-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](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters) ou executando `describe-cluster` e `list-cluster-nodes` usando os [AWS CLI comandos para SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes). Por exemplo, se o ID do cluster for `aa11bbbbb222`, o nome do nó do cluster for `controller-group` e o ID do nó do cluster for `i-111222333444555aa`, o comando SSM `start-session` deverá ser o seguinte:

**nota**  
Conceder aos usuários acesso aos nós HyperPod do cluster permite que eles instalem e operem software gerenciado pelo usuário nos nós. Mantenha o princípio de permissões de privilégio mínimo para os usuários.  
Se você não tiver configurado AWS Systems Manager, siga as instruções fornecidas em[Configurando AWS Systems Manager e executando como para controle de acesso do usuário do 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#
```

Observe que isso inicialmente conecta você como usuário-raiz. Antes de executar os trabalhos, alterne para o usuário `ubuntu` executando o seguinte comando:

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

**Topics**
+ [Dicas adicionais para acessar seus nós SageMaker HyperPod de cluster](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips)
+ [Configure um ambiente multiusuário por meio do espaço FSx compartilhado da Amazon](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space)
+ [Configure um ambiente multiusuário integrando HyperPod clusters com o Active Directory](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory)

## Dicas adicionais para acessar seus nós SageMaker HyperPod de cluster
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips"></a>

**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 [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 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 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 for executado com êxito, você será conectado ao cluster como usuário-raiz. 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-raiz. Antes de executar os trabalhos, alterne para o usuário `ubuntu` executando o seguinte comando:

```
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 `easy-ssh.sh` ao arquivo`~/.ssh/config`. Verifique se você o copiou da saída gerada automaticamente do script `easy-ssh.sh` 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
   ```

1. 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 na sua máquina local.

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

      Ela retornará sua chave. Copie a saída desse comando. 

      (Opcional) Se você ainda não tem uma chave pública, crie uma executando o seguinte comando:

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

   1. 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 usuário `ubuntu`. Substitua `ubuntu` 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#
      ```

   1. Abra o arquivo `~/.ssh/authorized_keys` e adicione a chave pública ao final desse 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](https://code.visualstudio.com/docs/remote/ssh).

## Configure um ambiente multiusuário por meio do espaço FSx compartilhado da Amazon
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space"></a>

Você pode usar o espaço FSx compartilhado da Amazon para gerenciar um ambiente multiusuário em um cluster do Slurm em. SageMaker HyperPod Se você configurou seu cluster Slurm com a 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 FSx compartilhados da Amazon.

**dica**  
Para permitir que os usuários acessem o cluster por meio de seus nomes de usuário e diretórios dedicados, você também deve associá-los aos usuários ou perfis do IAM, marcando-os conforme orientado na **Opção 2** da etapa 5, no procedimento **Ative o suporte a Executar como para nós gerenciados do Linux no macOS** fornecido em [Ative o suporte a Executar como para nós gerenciados do Linux no macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html) no Manual do usuário do AWS Systems Manager . Consulte também [Configurando AWS Systems Manager e executando como para controle de acesso do usuário do cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

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

A equipe SageMaker HyperPod de serviço fornece um 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 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 usuário IDs único e a terceira coluna é para os diretórios de usuários no espaço FSx compartilhado da Amazon.

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

1. Certifique-se de carregar os [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)arquivos `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á em andamento, o [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) lê em `shared_users.txt`e configura os diretórios de usuário corretamente.

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

1. No nó principal, execute o seguinte comando para salvar um script que ajuda a criar um usuário: Não se esqueça 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
   ```

1. 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
   ```

1. Teste o usuário executando os comandos a seguir. 

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

1. Adicione as informações do usuário ao arquivo `shared_users.txt` 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
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory"></a>

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)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) e o [LDAP over TLS/SSL (LDAPS)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) para se integrar a um serviço de diretório, como o Directory [AWS Service for](https://aws.amazon.com/directoryservice/) Microsoft Active Directory. 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](https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/).