

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

# Criação de usuários em um cluster Slurm no SageMaker HyperPod
<a name="sagemaker-hyperpod-slurm-user-management-create-users"></a>

Há três maneiras de criar usuários POSIX nos nós de um cluster Slurm em. SageMaker HyperPod Eles diferem no * momento em que * os usuários são criados e na * quantidade de configuração * do ciclo de vida que você precisa gerenciar. Escolha a opção que corresponda ao seu cluster e fluxo de trabalho, listada aqui da mais fácil à mais avançada.


| Opção | Melhor para | Configuração do ciclo de vida necessária | Quando os usuários são criados | Comportamento na expansão ou substituição de nós | 
| --- | --- | --- | --- | --- | 
| [Opção A: Adicionar usuários com o script do utilitário de criação de usuários](#sagemaker-hyperpod-multi-user-method-1-create-users) | Adicionar usuários a um cluster que já existe  InService, sem mexer na configuração do ciclo de vida | Nenhum | Sob demanda, sempre que você executar o script | Manual. Os usuários não são aplicados automaticamente; execute novamente o script sempre que os nós forem adicionados ou substituídos (automática ou manualmente). | 
| [Opção B: adicionar usuários com o script de `extensão` add-users](#sagemaker-hyperpod-multi-user-method-2-add-users-extension) | AMI-based clusters configurados por ciclo de vida que provisionam usuários automaticamente | Adicionar scripts de extensão de usuários | Automaticamente durante o provisionamento de nós — durante a criação do cluster, adição de nós (aumento de escala), atualizações de AMI e substituições de nós. | Automático. A extensão é executada em cada novo nó durante o provisionamento, usando o arquivo do usuário no bucket do Amazon S3 de scripts de ciclo de vida. | 
| [Opção C: adicionar usuários com os scripts básicos do ciclo de vida](#sagemaker-hyperpod-multi-user-method-3-base-lcs) | Clusters que já usam o conjunto de scripts de ciclo de vida base personalizado completo | Conjunto completo de scripts de ciclo de vida personalizados | Automaticamente durante o provisionamento de nós — durante a criação do cluster, adição de nós (aumento de escala), atualizações de AMI e substituições de nós. | Automático. O script básico do ciclo de vida é executado em cada novo nó durante o provisionamento, usando o arquivo do usuário no bucket do Amazon S3 de scripts de ciclo de vida. | 

Todas as três opções usam scripts que a equipe SageMaker HyperPod de serviço fornece no [ repositório ](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod) Awsome Distributed Training no GitHub site.

**Topics**
+ [Opção A: Adicionar usuários com o script do utilitário de criação de usuários](#sagemaker-hyperpod-multi-user-method-1-create-users)
+ [Opção B: adicionar usuários com o script de `extensão` add-users](#sagemaker-hyperpod-multi-user-method-2-add-users-extension)
+ [Opção C: adicionar usuários com os scripts básicos do ciclo de vida](#sagemaker-hyperpod-multi-user-method-3-base-lcs)

## Opção A: Adicionar usuários com o script do utilitário de criação de usuários
<a name="sagemaker-hyperpod-multi-user-method-1-create-users"></a>

Essa é a opção mais simples e não requer configuração de ciclo de vida. Use-o quando seu cluster já estiver ** InService ** disponível e você quiser adicionar usuários agora mesmo. Execute o script do [ utilitário ](https://github.com/awslabs/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils/create_users.sh) create\_users.sh no GitHub site no nó do controlador para criar usuários em cada nó em uma única execução. O script detecta automaticamente os outros nós a partir dos arquivos de configuração do cluster, cria os usuários via SSH e configura os nós de computação em paralelo para escalar para clusters grandes. O script suporta três modos para especificar usuários, selecionados pelos argumentos que você passa e pelos arquivos presentes no diretório atual, na seguinte ordem de prioridade:
+ **Modo de linha de comando ** — você passa nomes de usuário como argumentos e o script atribui automaticamente UIDs. Essa é a maneira mais rápida de adicionar usuários.
+ **Modo de arquivo ** — o script lê as definições do usuário de um arquivo `shared_users.txt` (CSV) ou `shared_users.yaml` (YAML) no diretório atual.
+ **Modo interativo ** — o script solicita nomes de usuário e, opcionalmente, UIDs.

**Importante**  
Em cada modo, `create_users.sh` cria usuários somente nos nós que existem quando você o executa. Isso inclui o modo de arquivo com um local `shared_users.txt` ou`shared_users.yaml`. Os usuários ** não são recriados ** automaticamente em nós adicionados posteriormente por meio de aumento de escala ou substituição de nós. Esses são eventos de provisionamento nos quais o novo nó é inicializado com um novo volume raiz que não tem contas POSIX. (Os diretórios pessoais e as chaves SSH no sistema de arquivos compartilhado sobrevivem, mas as próprias contas de usuário não.) Re-run `create_users.sh`depois que os novos nós forem adicionados para alinhá-los.  
Re-running o script está seguro. Execute-o no nó do controlador; ele descobre os outros nós do cluster e aplica usuários em todo o cluster em uma única execução. É idempotente por nó: ele cria um usuário somente quando está ausente, deixando os nós que já têm o usuário inalterados. Portanto, a nova execução após a adição de nós afeta somente os novos nós.  
Para que novos nós recebam usuários automaticamente, o arquivo do usuário deve fazer parte da configuração do ciclo de vida do cluster para que seja executado durante o provisionamento: armazene um `shared_users.yaml` arquivo `shared_users.txt` or em seu bucket Amazon S3 de scripts de ciclo de vida e use-o com o ou o. [Opção B: adicionar usuários com o script de `extensão` add-users](#sagemaker-hyperpod-multi-user-method-2-add-users-extension) [Opção C: adicionar usuários com os scripts básicos do ciclo de vida](#sagemaker-hyperpod-multi-user-method-3-base-lcs) `create_users.sh`ajuda anexando cada usuário criado `shared_users.txt` e oferecendo o upload para o Amazon S3, mas por si só — em qualquer modo — ele não faz com que os usuários persistam em eventos de provisionamento.

Para cada usuário, o script:
+ Cria um usuário POSIX com um UID consistente em cada nó.
+ Cria um diretório inicial no sistema de arquivos compartilhado (detectando automaticamente o OpenZFS em `/home` ou o Amazon FSx for Lustre em). `/fsx`
+ Gera um par de chaves SSH no sistema de arquivos compartilhado para SSH entre nós sem senha.
+ Adiciona o usuário ao `docker` grupo (e, opcionalmente, concede acesso ao sudo).
+ Registra o usuário com a contabilidade Slurm no controlador para que ele possa enviar trabalhos.
+ Anexa os novos usuários a um `shared_users.txt` arquivo e, opcionalmente, faz o upload para o Amazon S3, para que você possa reutilizá-lo com as outras opções.

**Pré-requisitos**  
Antes de começar, verifique se os seguintes requisitos foram atendidos.
+ O cluster é ** InService ** e você pode se conectar ao nó do controlador. Consulte [Acessando seus nós SageMaker HyperPod de cluster](sagemaker-hyperpod-run-jobs-slurm-access-nodes.md).
+ `jq`está instalado no nó do controlador.
+ O acesso SSH está disponível do nó do controlador para todos os outros nós (HyperPod configura isso para o usuário padrão).

**Para adicionar usuários com o script do `utilitário` create\_users.sh**  
Execute as etapas a seguir.

1. Conecte-se ao nó do controlador e baixe o script. Certifique-se de executá-lo com permissões sudo.

   ```
   $ curl -O https://raw.githubusercontent.com/awslabs/awsome-distributed-training/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils/create_users.sh
   chmod +x create_users.sh
   ```

1. Execute o script usando um de seus três modos, que ele seleciona por prioridade a partir dos argumentos que você passa e dos arquivos no diretório atual: primeiro os argumentos da linha de comando, depois um arquivo do usuário e, em seguida, os prompts interativos. Cada modo executa a mesma sequência: crie os usuários no nó atual, configure pares de chaves SSH no sistema de arquivos compartilhados, crie os usuários em todos os nós restantes (nós de computação em paralelo), registre-os na contabilidade do Slurm no controlador, anexe-os e ofereça o upload desse arquivo para o `shared_users.txt` Amazon S3.

   Os três modos são descritos nos exemplos a seguir, cada um adicionando dois usuários (`user1`e`user2`).

**Modo de linha de comando**  
Passe os nomes de usuário como argumentos. O script atribui automaticamente UIDs e pergunta se os novos usuários devem ser sudoers. Essa é a maneira mais rápida de adicionar usuários.

   ```
   $ sudo ./create_users.sh user1 user2
   ```

   O script valida os nomes de usuário e solicita o acesso sudoer:

   ```
   ========================================
    Step 1: User Configuration
   ========================================
     Users from CLI args: user1 user2
       ✓ user1 — will be created (auto-assign UID)
       ✓ user2 — will be created (auto-assign UID)
     Make these user(s) sudoer(s)? (y/N): n
   ```

   Em seguida, ele cria os usuários no nó atual, configura pares de chaves SSH, os cria nos nós de computação, os registra com a contabilidade Slurm no controlador e grava, solicitando que você, no final`shared_users.txt`, faça o upload desse arquivo para o Amazon S3.

**Modo de arquivo**  
Crie um arquivo de usuário no mesmo diretório do script e, em seguida, execute o script sem argumentos. O script lê as definições do usuário, as valida (criando somente usuários que ainda não existem e ignorando conflitos de UID) e cria os usuários em todos os nós. O script aceita dois formatos de arquivo.

   Para`shared_users.txt`, use um arquivo CSV com um usuário por linha no formato`username,uid,home_directory`:

   ```
   user1,2001,/fsx/user1
   user2,2002,/fsx/user2
   ```

   Como alternativa`shared_users.yaml`, use um arquivo YAML com uma lista simples de usuários ou usuários organizados em grupos. A análise desse formato requer PyYAML no nó. O seguinte é o formato de lista simples:

   ```
   users:
     - username: user1
       uid: 2001
     - username: user2
       uid: 2002
   ```

   Se os dois arquivos estiverem presentes, terá `shared_users.txt` precedência. Execute o script sem argumentos:

   ```
   $ sudo ./create_users.sh
   ```

   O script valida as entradas do arquivo, confirma a criação, solicita o acesso ao sudoer e oferece a adição de usuários que não estão no arquivo. Em seguida, ele cria `user1` e `user2` ativa todos os nós com os UIDs do arquivo (2001 e 2002), configura pares de chaves SSH, os registra na contabilidade do Slurm e os atualiza. `shared_users.txt`

**Modo interativo**  
Execute o script sem argumentos e sem nenhum arquivo de usuário presente. O script solicita os nomes de usuário e, opcionalmente, os UIDs a serem atribuídos:

   ```
   $ sudo ./create_users.sh
   ```

   ```
   ========================================
    Step 1: User Configuration
   ========================================
     No shared_users.txt or shared_users.yaml found.
     Entering interactive mode...
   
     Enter username(s), comma-separated (e.g. 'sean' or 'sean,alice,bob'): user1,user2
     Specify UIDs? (Enter for auto-assign, or comma-separated UIDs): 2001,2002
     Make these user(s) sudoer(s)? (y/N): n
   ```

   Depois de responder às solicitações, o script cria `user1` e, `user2` em todos os nós com os UIDs que você inseriu, configura pares de chaves SSH, os registra na contabilidade do Slurm e os atualiza. `shared_users.txt`

1. Teste um usuário alternando para ele e executando um comando no cluster.

   ```
   $ sudo su - user1 && ssh $(srun hostname)
   ```

**nota**  
O roteiro é idempotente. Os usuários que já existem são ignorados e as chaves SSH existentes e as associações contábeis do Slurm permanecem intactas, portanto, é seguro executá-las novamente.

## Opção B: adicionar usuários com o script de `extensão` add-users
<a name="sagemaker-hyperpod-multi-user-method-2-add-users-extension"></a>

Use essa opção quando seu cluster usar a ** AMI-based configuração ** e você quiser que os usuários sejam provisionados automaticamente. Com a opção de ciclo de vida da extensão, SageMaker HyperPod executa primeiro a AMI-based configuração completa e depois executa o script da extensão. A equipe de serviço fornece uma [ extensão ](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/Extensions/add-users) add-users pronta para uso na pasta Extensões do repositório Awsome Distributed Training no site. GitHub Como a extensão é executada durante o provisionamento do nó, os usuários são criados automaticamente quando o cluster é criado e novamente em quaisquer novos nós adicionados durante a expansão.

Para obter mais informações sobre como configurar extensões:
+ Para configurar extensões usando o AWS console, consulte Configuração do ** ciclo de vida - opcional ** em Configuração [ personalizada. ](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom)
+ Para configurar extensões usando a API, consulte a ** Opção B: Estender a AMI-based configuração com OnInitComplete ** em [ Criar seu cluster](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html#smcluster-getting-started-slurm-cli-create-cluster).

A `add-users` extensão cria usuários POSIX com UIDs consistentes, configura diretórios iniciais no sistema de arquivos compartilhado, gera pares de chaves SSH para SSH entre nós sem senha e registra usuários com contabilidade Slurm no controlador. Ele aceita dois formatos de entrada:
+ `shared_users.txt`— o mesmo formato CSV usado pelos scripts básicos do ciclo de vida (). `username,uid,/fsx/username` Todos os usuários são adicionados à conta do `root` Slurm.
+ `shared_users.yaml`— um formato YAML que também suporta a organização de usuários em grupos com contas Slurm por grupo e montagens de sistema de arquivos. Os grupos são apenas organizacionais; eles não criam grupos Linux.

Veja a seguir um exemplo `shared_users.yaml` usando o formato de grupos:

```
groups:
  - name: research
    slurm_account: research
    users:
      - username: user1
        uid: 2001
      - username: user2
        uid: 2002
  - name: platform
    slurm_account: platform
    users:
      - username: user3
        uid: 3001
```

**Para adicionar usuários com a `extensão` add-users na criação do cluster**  
Execute as etapas a seguir.

1. Copie o arquivo de amostra apropriado no `add-users` diretório e edite-o com seus usuários:

   ```
   $ cp shared_users_sample.yaml shared_users.yaml
   ```

1. Faça o upload do `add-users` diretório para seu bucket Amazon S3 de scripts de ciclo de vida (o caminho do bucket deve começar com): `s3://sagemaker-`

   ```
   $ aws s3 cp add-users/ s3://DOC-EXAMPLE-BUCKET/add-users/ --recursive
   ```

1. Especifique a extensão no `LifeCycleConfig` bloco da sua `CreateCluster` solicitação, usando `add_users.sh` como `OnInitComplete` script:

   ```
   "LifeCycleConfig": {
       "OnInitComplete": "add_users.sh",
       "SourceS3Uri": "s3://DOC-EXAMPLE-BUCKET/add-users/"
   }
   ```

**dica**  
Se seu cluster precisar de vários recursos além da criação do usuário (por exemplo, observabilidade), faça o upload da pasta Extensions inteira e use o `run_extensions.sh` orquestrador como seu script de extensão. Ele fornece alternâncias booleanas simples, como `ENABLE_ADD_USERS="true"` habilitar cada recurso. Para obter detalhes, consulte [Começando a SageMaker HyperPod usar o AWS CLI](smcluster-getting-started-slurm-cli.md).

**Para adicionar usuários a um cluster existente após a criação**  
Como a extensão é executada somente durante o provisionamento do nó, adicionar usuários aos nós que já estão em execução exige que você execute a extensão manualmente.

1. Atualize seu arquivo de usuário com os novos usuários (mantenha os usuários existentes no arquivo) e faça o upload para o Amazon S3:

   ```
   $ aws s3 cp add-users/shared_users.yaml s3://DOC-EXAMPLE-BUCKET/add-users/shared_users.yaml
   ```

1. Conecte-se ao nó do controlador e transfira os scripts para o sistema de arquivos compartilhado:

   ```
   $ sudo mkdir -p /fsx/cluster-scripts/add-users
   sudo aws s3 cp s3://DOC-EXAMPLE-BUCKET/add-users/ /fsx/cluster-scripts/add-users/ --recursive
   sudo chmod +x /fsx/cluster-scripts/add-users/*.sh
   ```

1. Execute a extensão no controlador:

   ```
   $ sudo bash /fsx/cluster-scripts/add-users/add_users.sh
   ```

1. Execute a extensão nos nós de computação com`srun`:

   ```
   $ sudo srun --partition={{partition-name}} bash /fsx/cluster-scripts/add-users/add_users.sh
   ```

Os scripts ignoram os usuários existentes e criam somente novos; eles são idempotentes.

## Opção C: adicionar usuários com os scripts básicos do ciclo de vida
<a name="sagemaker-hyperpod-multi-user-method-3-base-lcs"></a>

Use essa opção somente se seu cluster já usa o conjunto de scripts de ciclo de vida base personalizado completo, em que seus scripts possuem toda a sequência de provisionamento. Essa é a opção mais avançada porque você gerencia o conjunto completo de scripts do ciclo de vida em vez de uma única extensão. A equipe de serviço fornece o [ script ](https://github.com/awslabs/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh) add\_users.sh no GitHub site como um script dentro do conjunto de scripts do ciclo de vida base-config. Durante a criação do cluster, atualização do cluster ou atualização do software do cluster, é executado o lifecycle script runner (`lifecycle_script.py`)`add_users.sh`, que lê um `shared_users.txt` arquivo e cria os usuários e seus diretórios iniciais.

Nesta opção, `add_users.sh` manipula somente a criação do usuário POSIX e do diretório inicial. A geração de pares de chaves SSH para SSH entre nós sem senha é um módulo separado no conjunto básico de scripts de ciclo de vida (por exemplo,`gen-keypair-ubuntu.sh`), que o executor de scripts de ciclo de vida invoca como parte do conjunto completo. Certifique-se de que o módulo de chave SSH esteja incluído em seu conjunto de scripts de ciclo de vida para que os usuários obtenham pares de chaves no sistema de arquivos compartilhado.

Para obter mais informações sobre como configurar o conjunto completo de scripts de ciclo de vida personalizados:
+ Para configurar scripts de ciclo de vida usando o AWS console, consulte Configuração do ** ciclo de vida - opcional ** em Configuração personalizada. [https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom)
+ Para configurar scripts de ciclo de vida usando a API, consulte a ** Opção C: Controle personalizado total OnCreate ** em [ Criar seu cluster. ](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html#smcluster-getting-started-slurm-cli-create-cluster)

**Para criar usuários durante a criação do cluster Slurm**  
Execute as etapas a seguir.

1. Baixe o conjunto de scripts de [ ciclo de vida ](https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config) base-config do site. GitHub Com essa opção, você carrega toda a pasta base-config como seu conjunto de scripts de ciclo de vida, não apenas. `add_users.sh`

1. Na pasta base-config, crie ou edite um arquivo de texto com o nome `shared_users.txt` no formato a seguir. A primeira coluna é o nome do usuário, a segunda coluna é o ID exclusivo do usuário e a terceira coluna é o diretório do usuário no espaço compartilhado do Amazon FSx.

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

   `add_users.sh`lê `shared_users.txt` da mesma pasta, portanto, o arquivo deve estar dentro de base-config junto com o script.

1. Faça upload de toda a pasta base-config para o bucket do Amazon S3 para seus scripts de ciclo de vida. HyperPod Enquanto a criação do cluster, a atualização do cluster ou a atualização do software do cluster estão em andamento, o executor de scripts do ciclo de vida é executado`add_users.sh`, lendo `shared_users.txt` e configurando os usuários e seus diretórios iniciais.

**nota**  
`add_users.sh`detecta automaticamente o sistema de arquivos compartilhado: se o OpenZFS estiver montado `/home` nele, ele cria diretórios iniciais; caso contrário, ele usa o caminho Amazon FSx for Lustre.