Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creazione di utenti su un cluster Slurm su SageMaker HyperPod
Esistono tre modi per creare utenti POSIX sui nodi di un cluster Slurm su. SageMaker HyperPod Differiscono nel momento in cui vengono creati gli utenti e nella quantità di configurazione del ciclo di vita da gestire. Scegli l'opzione più adatta al tuo cluster e al tuo flusso di lavoro, elencata qui dalla più semplice alla più avanzata.
| Opzione | Ideale per | È richiesta la configurazione del ciclo di vita | Quando vengono creati gli utenti | Comportamento in caso di scalabilità verticale o sostituzione dei nodi |
|---|---|---|---|---|
| Opzione A: Aggiungi utenti con lo script dell'utilità di creazione degli utenti | Aggiungere utenti a un cluster già esistente InService, senza toccare la configurazione del ciclo di vita | Nessuno | Su richiesta, ogni volta che si esegue lo script | Manuale. Gli utenti non vengono applicati automaticamente; riesegui lo script ogni volta che vengono aggiunti o sostituiti dei nodi (automaticamente o manualmente). |
| Opzione B: aggiungere utenti con lo script di estensione add-users | AMI-based cluster configurati durante il ciclo di vita che forniscono automaticamente gli utenti | Aggiungere script di estensione per gli utenti | Automaticamente durante il provisioning dei nodi: durante la creazione del cluster, l'aggiunta di nodi (scale-up), gli aggiornamenti dell'AMI, la sostituzione dei nodi. | Automatico. L'estensione viene eseguita su ogni nuovo nodo durante il provisioning, utilizzando il file utente nel bucket Amazon S3 degli script del ciclo di vita. |
| Opzione C: aggiungi utenti con gli script del ciclo di vita di base | Cluster che già utilizzano il set completo di script personalizzati per il ciclo di vita | Set completo di script per il ciclo di vita personalizzato | Automaticamente durante il provisioning dei nodi: durante la creazione del cluster, l'aggiunta di nodi (scale-up), gli aggiornamenti dell'AMI, la sostituzione dei nodi. | Automatico. Lo script del ciclo di vita di base viene eseguito su ogni nuovo nodo durante il provisioning, utilizzando il file utente nel bucket Amazon S3 degli script del ciclo di vita. |
Tutte e tre le opzioni utilizzano script forniti dal team di SageMaker HyperPod assistenza nel repository Awsome Distributed Training sul sito Web. https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod
Argomenti
Opzione A: Aggiungi utenti con lo script dell'utilità di creazione degli utenti
Questa è l'opzione più semplice e non richiede alcuna configurazione del ciclo di vita. Usalo quando il cluster è già presente InService e desideri aggiungere utenti in questo momento. Esegui lo script di utilità
-
Modalità riga di comando: si passano i nomi utente come argomenti e lo script assegna automaticamente gli UID. Questo è il modo più rapido per aggiungere utenti.
-
Modalità file: lo script legge le definizioni degli utenti da un file
shared_users.txt(CSV) oshared_users.yaml(YAML) nella directory corrente. -
Modalità interattiva: lo script richiede nomi utente e, facoltativamente, UID.
Importante
In ogni modalità, create_users.sh crea utenti solo sui nodi esistenti al momento dell'esecuzione. Ciò include la modalità file con un shared_users.txt o localeshared_users.yaml. Gli utenti non vengono ricreati automaticamente sui nodi aggiunti successivamente mediante scalabilità o sostituzione dei nodi. Si tratta di eventi di provisioning in cui il nuovo nodo viene avviato con un nuovo volume root privo di account POSIX. (Le home directory e le chiavi SSH sul file system condiviso sopravvivono, ma gli account utente stessi no). Re-run create_users.shdopo che i nuovi nodi sono stati aggiunti per allinearli.
Re-running lo script è sicuro. Eseguilo sul nodo controller; rileva gli altri nodi del cluster e applica gli utenti all'intero cluster in una sola esecuzione. È idempotente per nodo: crea un utente solo dove manca, lasciando invariati i nodi che hanno già l'utente, quindi una nuova esecuzione dopo l'aggiunta dei nodi ha effetto solo sui nuovi nodi.
Affinché i nuovi nodi ricevano automaticamente gli utenti, il file utente deve far parte della configurazione del ciclo di vita del cluster in modo che venga eseguito durante il provisioning: archivia un shared_users.yaml file shared_users.txt or nel bucket Amazon S3 degli script del ciclo di vita e utilizzalo con o the. Opzione B: aggiungere utenti con lo script di estensione add-users Opzione C: aggiungi utenti con gli script del ciclo di vita di base create_users.shaiuta aggiungendo ogni utente a cui viene creato shared_users.txt e offrendo la possibilità di caricarlo su Amazon S3, ma da solo, in qualsiasi modalità, non obbliga gli utenti a persistere durante gli eventi di provisioning.
Per ogni utente, lo script:
-
Crea un utente POSIX con un UID coerente su ogni nodo.
-
Crea una home directory sul file system condiviso (con rilevamento automatico di OpenZFS at
/homeo Amazon FSX for Lustre at)./fsx -
Genera una coppia di chiavi SSH sul file system condiviso per SSH tra nodi senza password.
-
Aggiunge l'utente al
dockergruppo (e, facoltativamente, concede l'accesso tramite sudo). -
Registra l'utente con l'account Slurm sul controller in modo che possa inviare lavori.
-
Aggiunge i nuovi utenti a un
shared_users.txtfile e facoltativamente lo carica su Amazon S3, in modo da poterlo riutilizzare con le altre opzioni.
Prerequisiti
Prima di iniziare, verifica che siano soddisfatti i seguenti requisiti.
-
Il cluster è InService ed è possibile connettersi al nodo del controller. Per informazioni, consulta Accesso ai nodi SageMaker HyperPod del cluster.
-
jqè installato nel nodo del controller. -
L'accesso SSH è disponibile dal nodo controller a tutti gli altri nodi (lo HyperPod configura per l'utente predefinito).
Per aggiungere utenti con lo script di utilità create_users.sh
Completa questa procedura:
-
Connettiti al nodo controller e scarica lo script. Assicurati di eseguirlo con i permessi 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 -
Esegui lo script usando una delle sue tre modalità, che seleziona in base alla priorità tra gli argomenti passati e i file nella directory corrente: prima gli argomenti della riga di comando, poi un file utente, poi i prompt interattivi. Ogni modalità esegue la stessa sequenza: crea gli utenti sul nodo corrente, configura coppie di chiavi SSH sul file system condiviso, crea gli utenti su tutti i nodi rimanenti (nodi di calcolo in parallelo), registrali con l'account Slurm sul controller, aggiungili e offri di caricare quel file su Amazon S3.
shared_users.txtLe tre modalità sono descritte negli esempi seguenti, ognuna delle quali aggiunge due utenti (e).
user1user2Modalità a riga di comando
Passa i nomi utente come argomenti. Lo script assegna automaticamente gli UID e chiede se i nuovi utenti devono essere sudoer. Questo è il modo più rapido per aggiungere utenti.
$sudo ./create_users.sh user1 user2Lo script convalida i nomi utente, quindi richiede l'accesso 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): nQuindi crea gli utenti sul nodo corrente, imposta le coppie di chiavi SSH, li crea sui nodi di calcolo, li registra con l'account Slurm sul controller e scrive
shared_users.txt, chiedendoti alla fine di caricare quel file su Amazon S3.Modalità file
Crea un file utente nella stessa directory dello script, quindi esegui lo script senza argomenti. Lo script legge le definizioni utente, le convalida (creando solo utenti che non esistono già e saltando i conflitti UID) e crea gli utenti in tutti i nodi. Lo script accetta due formati di file.
Per
shared_users.txt, usa un file CSV con un utente per riga nel formato:username,uid,home_directoryuser1,2001,/fsx/user1 user2,2002,/fsx/user2In alternativa, per
shared_users.yaml, usa un file YAML con un semplice elenco di utenti o utenti organizzati in gruppi. L'analisi di questo formato richiede PyYAML sul nodo. Di seguito è riportato il semplice formato dell'elenco:users: - username: user1 uid: 2001 - username: user2 uid: 2002Se sono presenti entrambi i file, ha la
shared_users.txtprecedenza. Esegui lo script senza argomenti:$sudo ./create_users.shLo script convalida le voci del file, conferma la creazione, richiede l'accesso tramite sudoer e offre la possibilità di aggiungere utenti che non sono presenti nel file. Quindi crea
user1euser2su tutti i nodi con gli UID del file (2001 e 2002), imposta le coppie di chiavi SSH, le registra con l'account Slurm e le aggiorna.shared_users.txtModalità interattiva
Esegue lo script senza argomenti e senza file utente presenti. Lo script richiede i nomi utente e, facoltativamente, gli UID da assegnare:
$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): nDopo aver risposto alle istruzioni, lo script crea
user1e,user2su tutti i nodi con gli UID inseriti, imposta le coppie di chiavi SSH, le registra con l'account Slurm e le aggiorna.shared_users.txt -
Metti alla prova un utente passando ad esso ed eseguendo un comando nel cluster.
$sudo su - user1 && ssh $(srun hostname)
Nota
Lo script è idempotente. Gli utenti già esistenti vengono ignorati e le chiavi SSH esistenti e le associazioni contabili di Slurm vengono lasciate al loro posto, quindi è possibile eseguirle nuovamente.
Opzione B: aggiungere utenti con lo script di estensione add-users
Usa questa opzione quando il cluster utilizza la AMI-based configurazione e desideri che il provisioning degli utenti venga eseguito automaticamente. Con l'opzione del ciclo di vita dell'estensione, SageMaker HyperPod esegue prima la AMI-based configurazione completa, quindi esegue lo script di estensione. Il team di assistenza fornisce un'estensione per
Per ulteriori informazioni sulla configurazione delle estensioni:
-
Per configurare le estensioni utilizzando la AWS console, vedi Configurazione del ciclo di vita - opzionale in Configurazione personalizzata.
-
Per configurare le estensioni utilizzando l'API, vedi Opzione B: Estendi la AMI-based configurazione con OnInitComplete in Crea il tuo cluster.
L'add-usersestensione crea utenti POSIX con UID coerenti, imposta le home directory sul file system condiviso, genera coppie di chiavi SSH per SSH tra nodi senza password e registra gli utenti con l'account Slurm sul controller. Accetta due formati di input:
-
shared_users.txt— lo stesso formato CSV utilizzato dagli script del ciclo di vita di base ().username,uid,/fsx/usernameTutti gli utenti vengono aggiunti all'account Slurm.root -
shared_users.yaml— un formato YAML che supporta inoltre l'organizzazione degli utenti in gruppi con account Slurm per gruppo e montaggi di file system. I gruppi sono solo organizzativi; non creano gruppi Linux.
Di seguito è riportato un esempio di shared_users.yaml utilizzo del formato dei gruppi:
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
Per aggiungere utenti con l'estensione add-users al momento della creazione del cluster
Completa questa procedura:
-
Copia il file di esempio appropriato nella
add-usersdirectory e modificalo con i tuoi utenti:$cp shared_users_sample.yaml shared_users.yaml -
Carica la
add-usersdirectory nel bucket Amazon S3 dei tuoi script del ciclo di vita (il percorso del bucket deve iniziare con):s3://sagemaker-$aws s3 cp add-users/ s3://DOC-EXAMPLE-BUCKET/add-users/ --recursive -
Specifica l'estensione nel
LifeCycleConfigblocco dellaCreateClusterrichiesta, utilizzando come script:add_users.shOnInitComplete"LifeCycleConfig": { "OnInitComplete": "add_users.sh", "SourceS3Uri": "s3://DOC-EXAMPLE-BUCKET/add-users/" }
Suggerimento
Se il cluster richiede più funzionalità oltre alla creazione degli utenti (ad esempio, l'osservabilità), carica l'intera cartella Extensions e utilizza l'run_extensions.shorchestrator come script di estensione. Fornisce semplici interruttori booleani, ad esempio per abilitare ciascuna funzionalità. ENABLE_ADD_USERS="true" Per informazioni dettagliate, vedi Guida introduttiva all'utilizzo di SageMaker HyperPod AWS CLI.
Per aggiungere utenti a un cluster esistente dopo la creazione
Poiché l'estensione viene eseguita solo durante il provisioning dei nodi, l'aggiunta di utenti ai nodi già in esecuzione richiede l'esecuzione manuale dell'estensione.
-
Aggiorna il file utente con i nuovi utenti (mantieni gli utenti esistenti nel file) e caricalo su Amazon S3:
$aws s3 cp add-users/shared_users.yaml s3://DOC-EXAMPLE-BUCKET/add-users/shared_users.yaml -
Connettiti al nodo controller e invia gli script al file system condiviso:
$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 -
Esegui l'estensione sul controller:
$sudo bash /fsx/cluster-scripts/add-users/add_users.sh -
Esegui l'estensione sui nodi di calcolo con
srun:$sudo srun --partition=partition-namebash /fsx/cluster-scripts/add-users/add_users.sh
Gli script ignorano gli utenti esistenti e ne creano solo di nuovi; sono idempotenti.
Opzione C: aggiungi utenti con gli script del ciclo di vita di base
Utilizzate questa opzione solo se il cluster utilizza già il set completo di script del ciclo di vita di base personalizzato, in cui gli script sono responsabili dell'intera sequenza di provisioning. Questa è l'opzione più avanzata perché gestisci l'intero set di script del ciclo di vita anziché una singola estensione. Il team di assistenza fornisce lo script lifecycle_script.py)add_users.sh, che legge un shared_users.txt file e crea gli utenti e le relative home directory.
In questa opzione, add_users.sh gestisce solo la creazione di utenti e home directory POSIX. Generazione di coppie di chiavi SSH per internodi senza password SSH è un modulo separato nel set di script del ciclo di vita di base (ad esempiogen-keypair-ubuntu.sh), che il lifecycle script runner richiama come parte del set completo. Assicurati che il modulo chiave SSH sia incluso nel set di script del ciclo di vita in modo che gli utenti ottengano coppie di chiavi nel file system condiviso.
Per ulteriori informazioni sulla configurazione del set completo di script personalizzati per il ciclo di vita:
-
Per configurare gli script del ciclo di vita utilizzando la AWS console, vedi Configurazione del ciclo di vita - opzionale in Configurazione personalizzata. https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-console.html#smcluster-getting-started-slurm-console-create-cluster-custom
-
Per configurare gli script del ciclo di vita utilizzando l'API, vedi Opzione C: controllo personalizzato completo con in Crea il tuo cluster. OnCreate https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-slurm-cli.html#smcluster-getting-started-slurm-cli-create-cluster
Per creare utenti durante la creazione del cluster Slurm
Completa questa procedura:
-
Scarica il set di script per il ciclo di
vita della configurazione di base dal sito Web. GitHub Con questa opzione, carichi l'intera cartella base-config come set di script del ciclo di vita, non solo. add_users.sh -
Nella cartella base-config, create o modificate un file di testo denominato nel seguente formato.
shared_users.txtLa prima colonna è il nome utente, la seconda colonna è l'ID utente univoco e la terza colonna è la directory utente nello spazio condiviso di Amazon FSx.username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...add_users.shviene lettoshared_users.txtdalla stessa cartella, quindi il file deve trovarsi all'interno di base-config insieme allo script. -
Carica l'intera cartella base-config nel bucket Amazon S3 per gli script del ciclo di vita. HyperPod Mentre è in corso la creazione del cluster, l'aggiornamento del cluster o l'aggiornamento del software del cluster, viene eseguito il lifecycle script runner
add_users.sh, che legge e configura gli utenti e le loro home directory.shared_users.txt
Nota
add_users.shrileva automaticamente il file system condiviso: se OpenZFS è montato, crea lì le home directory; altrimenti /home utilizza il percorso Amazon FSx for Lustre.