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
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 | 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 | 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 | 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
Tópicos
Opção A: Adicionar usuários com o script do utilitário de criação de usuários
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
-
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) oushared_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 oushared_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.shdepois 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 Opção C: adicionar usuários com os scripts básicos do ciclo de vida create_users.shajuda 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
/homeou 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
dockergrupo (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.txtarquivo 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.
-
jqestá 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.
-
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 -
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.txtAmazon S3.Os três modos são descritos nos exemplos a seguir, cada um adicionando dois usuários (
user1euser2).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 user2O 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): nEm 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 formatousername,uid,home_directory:user1,2001,/fsx/user1 user2,2002,/fsx/user2Como 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: 2002Se os dois arquivos estiverem presentes, terá
shared_users.txtprecedência. Execute o script sem argumentos:$sudo ./create_users.shO 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
user1euser2ativa 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.txtModo 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): nDepois de responder às solicitações, o script cria
user1e,user2em 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 -
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
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
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.
-
Para configurar extensões usando a API, consulte a Opção B: Estender a AMI-based configuração com OnInitComplete em Criar seu 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/usernameTodos os usuários são adicionados à conta dorootSlurm. -
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.
-
Copie o arquivo de amostra apropriado no
add-usersdiretório e edite-o com seus usuários:$cp shared_users_sample.yaml shared_users.yaml -
Faça o upload do
add-usersdiretó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 -
Especifique a extensão no
LifeCycleConfigbloco da suaCreateClustersolicitação, usandoadd_users.shcomoOnInitCompletescript:"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.
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.
-
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 -
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 -
Execute a extensão no controlador:
$sudo bash /fsx/cluster-scripts/add-users/add_users.sh -
Execute a extensão nos nós de computação com
srun:$sudo srun --partition=partition-namebash /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
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 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
-
Para configurar scripts de ciclo de vida usando a API, consulte a Opção C: Controle personalizado total OnCreate em Criar seu cluster.
Para criar usuários durante a criação do cluster Slurm
Execute as etapas a seguir.
-
Baixe o conjunto de scripts de ciclo de vida
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 -
Na pasta base-config, crie ou edite um arquivo de texto com o nome
shared_users.txtno 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.shlêshared_users.txtda mesma pasta, portanto, o arquivo deve estar dentro de base-config junto com o script. -
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, lendoshared_users.txte configurando os usuários e seus diretórios iniciais.
nota
add_users.shdetecta 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.