Amazon SageMaker HyperPod è stato creato appositamente per accelerare la formazione del Foundation Model (FM), eliminando il lavoro pesante indifferenziato coinvolto nella gestione e nell'ottimizzazione di un grande cluster di calcolo di formazione. Con SageMaker HyperPod puoi addestrare gli FM per settimane e mesi senza interruzioni.
In genere, i cluster HyperPod vengono utilizzati da più utenti: ricercatori di machine learning (ML), ingegneri del software, data scientist e amministratori di cluster. Modificano i propri file, eseguono i propri lavori e vogliono evitare di influenzare il lavoro degli altri. Per ottenere questo ambiente multiutente, puoi sfruttare il meccanismo di utenti e gruppi di Linux e creare staticamente più utenti su ciascuna istanza tramite script del ciclo di vita. Lo svantaggio di questo approccio, tuttavia, è che le impostazioni di utenti e gruppi sono duplicate su più istanze nel cluster, rendendo difficile configurarle in modo coerente su tutte le istanze, ad esempio quando si unisce un nuovo membro al team.
Per risolvere questo punto dolente, possiamo usare Protocollo LDAP (Lightweight Directory Access Protocol) ed LDAP su TLS/SSL (LDAPS) per integrarsi con un servizio di directory come AWS Directory Service per Microsoft Active Directory. Con il servizio di directory è possibile gestire centralmente utenti e gruppi e le relative autorizzazioni.
In questo post presentiamo una soluzione per integrare i cluster HyperPod con AWS Managed Microsoft AD e spieghiamo come ottenere un ambiente di accesso multiutente senza interruzioni con una directory gestita centralmente.
Panoramica della soluzione
La soluzione utilizza i seguenti servizi e risorse AWS:
Usiamo anche AWS CloudFormazione per distribuire uno stack per creare i prerequisiti per il cluster HyperPod: VPC, sottoreti, gruppo di sicurezza e Amazon FSx per Lustre volume.
Il diagramma seguente illustra l'architettura della soluzione di alto livello.
In questa soluzione, le istanze del cluster HyperPod utilizzano il protocollo LDAPS per connettersi ad AWS Managed Microsoft AD tramite un NLB. Noi usiamo Terminazione TLS installando un certificato nell'NLB. Per configurare LDAPS nelle istanze del cluster HyperPod, lo script del ciclo di vita installa e configura Demone dei servizi di sicurezza del sistema (SSSD)—un software client open source per LDAP/LDAPS.
Prerequisiti
Questo post presuppone che tu sappia già come creare un cluster HyperPod di base senza SSSD. Per ulteriori dettagli su come creare cluster HyperPod, fare riferimento a Iniziare con SageMaker HyperPod e la Laboratorio HyperPod.
Inoltre, nei passaggi di configurazione, utilizzerai una macchina Linux per generare un certificato autofirmato e ottenere una password offuscata per l'utente del lettore AD. Se non disponi di una macchina Linux, puoi creare un'istanza EC2 Linux o utilizzare AWS CloudShell.
Crea un VPC, sottoreti e un gruppo di sicurezza
Segui le istruzioni in Conto proprio sezione del workshop HyperPod. Distribuirai uno stack CloudFormation e creerai risorse prerequisite come VPC, sottoreti, gruppo di sicurezza e volume FSx for Lustre. È necessario creare sia una sottorete primaria che una sottorete di backup quando si distribuisce lo stack CloudFormation, perché AWS Managed Microsoft AD richiede almeno due sottoreti con diverse zone di disponibilità.
In questo post, per semplicità, utilizziamo lo stesso VPC, sottoreti e gruppo di sicurezza sia per il cluster HyperPod che per il servizio directory. Se è necessario utilizzare reti diverse tra il cluster e il servizio directory, assicurarsi che i gruppi di sicurezza e le tabelle di routing siano configurati in modo che possano comunicare tra loro.
Crea AWS Managed Microsoft AD sul servizio Directory
Completa i seguenti passaggi per configurare la tua directory:
- Sulla Console del servizio di directoryscegli Directory nel pannello di navigazione.
- Scegli Configura la rubrica.
- Nel Tipo di directory, selezionare Microsoft AD gestito da AWS.
- Scegli Avanti.
- Nel Edizione, selezionare standard Edition.
- Nel Nome DNS della directory, inserisci il nome DNS della directory preferita (ad esempio,
hyperpod.abc123.com
). - Nel password dell'amministratore¸ impostare una password e salvarla per un uso successivo.
- Scegli Avanti.
- Nel Networking sezione, specifica il VPC e le due sottoreti private che hai creato.
- Scegli Avanti.
- Controlla la configurazione e i prezzi, quindi scegli Crea directory.
Viene avviata la creazione della directory. Attendi finché lo stato non cambia da Creazione a Attivo, che può richiedere 20-30 minuti. - Quando lo stato cambia in Attivo, aprire la pagina dei dettagli della directory e prendere nota degli indirizzi DNS per un utilizzo successivo.
Creare un NLB davanti al servizio di directory
Per creare l'NLB, completare i seguenti passaggi:
- Sulla Console Amazon EC2scegli Gruppi target nel pannello di navigazione.
- Scegli Creare gruppi target.
- Creare un gruppo target con i seguenti parametri:
- Nel Scegli un tipo di obiettivo, selezionare Gli indirizzi IP.
- Nel Nome del gruppo target, accedere
LDAP
. - Nel Protocollo: Portoscegli TCP ed entra
389
. - Nel Tipo di indirizzo IP, selezionare IPv4.
- Nel VPCscegli SageMaker HyperPod VPC (che hai creato con il modello CloudFormation).
- Nel Protocollo di controllo sanitarioscegli TCP.
- Scegli Avanti.
- Nel Registrare i target sezione, registrare gli indirizzi DNS del servizio directory come destinazioni.
- Nel portescegli Includere come in attesa di seguito.Gli indirizzi vengono aggiunti nel Rivedere gli obiettivi sezione con Attesa Pagamento stato.
- Scegli Creare un gruppo target.
- Sulla Console dei bilanciatori di caricoscegli Crea un bilanciatore del carico.
- Sotto Bilanciamento del carico di retescegli Creare.
- Configura un NLB con i seguenti parametri:
- Nel Nome del bilanciatore del carico, inserisci un nome (ad esempio,
nlb-ds
). - Nel schema, selezionare Interno.
- Nel Tipo di indirizzo IP, selezionare IPv4.
- Nel VPCscegli SageMaker HyperPod VPC (che hai creato con il modello CloudFormation).
- Sotto Mapping, seleziona le due sottoreti private e i relativi intervalli CIDR (che hai creato con il modello CloudFormation).
- Nel Gruppi di sicurezzascegli
CfStackName-SecurityGroup-XYZXYZ
(che hai creato con il modello CloudFormation).
- Nel Nome del bilanciatore del carico, inserisci un nome (ad esempio,
- Nel Ascoltatori e routing sezione, specificare i seguenti parametri:
- Nel Protocolloscegli TCP.
- Nel Porto, accedere
389
. - Nel Azione predefinita, scegli il gruppo target denominato LDAP.
Qui stiamo aggiungendo un ascoltatore per LDAP. Aggiungeremo LDAPS in seguito.
- Scegli Crea un bilanciatore del carico.Attendi finché lo stato non cambia da vettovagliamento su Attivo, che può richiedere 3-5 minuti.
- Quando lo stato cambia in Attivo, aprire la pagina dei dettagli dell'NLB sottoposto a provisioning e prendere nota del nome DNS (
xyzxyz.elb.region-name.amazonaws.com
) per un uso successivo.
Crea un certificato autofirmato e importalo in Gestione certificati
Per creare un certificato autofirmato, completare i seguenti passaggi:
- Sul tuo ambiente basato su Linux (laptop locale, istanza EC2 Linux o CloudShell), esegui quanto segue OpenSSL comandi per creare un certificato autofirmato e una chiave privata:
- Sulla Console di gestione certificatiscegli Importare.
- Immettere il corpo del certificato e la chiave privata, dal contenuto di
ldaps.crt
edldaps.key
rispettivamente. - Scegli Avanti.
- Aggiungi eventuali tag facoltativi, quindi scegli Avanti.
- Rivedi la configurazione e scegli Importare.
Aggiungi un ascoltatore LDAPS
Abbiamo già aggiunto un ascoltatore per LDAP nell'NLB. Ora aggiungiamo un ascoltatore per LDAPS con il certificato importato. Completa i seguenti passaggi:
- Sulla Console dei bilanciatori di carico, vai alla pagina dei dettagli NLB.
- Sulla Gli ascoltatori scheda, scegliere Aggiungi ascoltatore.
- Configura il listener con i seguenti parametri:
- Nel Protocolloscegli TLS.
- Nel Porto, accedere
636
. - Nel Azione predefinitascegli LDAP.
- Nel Origine del certificato, selezionare Dall'ACM.
- Nel Certificato, inserisci ciò che hai importato in ACM.
- Scegli Aggiungi.Ora l'NLB ascolta sia LDAP che LDAPS. Si consiglia di eliminare il listener LDAP perché trasmette i dati senza crittografia, a differenza di LDAPS.
Crea un'istanza Windows EC2 per amministrare utenti e gruppi in AD
Per creare e gestire utenti e gruppi in AD, completare i seguenti passaggi:
- Sulla console Amazon EC2, scegli Istanze nel pannello di navigazione.
- Scegli Avvia istanze.
- Nel Nome, inserisci un nome per la tua istanza.
- Nel Immagine della macchina Amazonscegli Base Microsoft Windows Server 2022.
- Nel Tipo di istanzascegli t2.micro.
- Nel Impostazioni di rete sezione, fornire i seguenti parametri:
- Nel VPCscegli SageMaker HyperPod VPC (che hai creato con il modello CloudFormation).
- Nel subnet, scegli una delle due sottoreti create con il modello CloudFormation.
- Nel Gruppi di sicurezza comuniscegli
CfStackName-SecurityGroup-XYZXYZ
(che hai creato con il modello CloudFormation).
- Nel Configura l'archiviazione, imposta lo spazio di archiviazione su 30 GB gp2.
- Nel Dettagli avanzati sezione, per Directory di unione al dominio¸ scegli l'AD che hai creato.
- Nel Profilo dell'istanza IAM, scegli un file Gestione dell'identità e dell'accesso di AWS (IAM) ruolo con almeno il
AmazonSSMManagedEC2InstanceDefaultPolicy
politica. - Rivedi il riepilogo e scegli Avvia istanza.
Crea utenti e gruppi in AD utilizzando l'istanza Windows EC2
Con Remote Desktop, connettiti all'istanza Windows EC2 creata nel passaggio precedente. Si consiglia l'utilizzo di un client RDP rispetto all'utilizzo di un desktop remoto basato su browser in modo da poter scambiare il contenuto degli appunti con il computer locale utilizzando le operazioni di copia-incolla. Per ulteriori dettagli sulla connessione alle istanze Windows EC2, fare riferimento a Connettiti alla tua istanza Windows.
Se ti viene richiesta una credenziale di accesso, utilizza hyperpodAdmin
(dove hyperpod
è la prima parte del nome DNS della directory) come nome utente e utilizza la password amministratore impostata per il servizio di directory.
- Quando si apre la schermata del desktop di Windows, scegli Server manager dal Inizio menu.
- Scegli Server locale nel riquadro di navigazione e conferma che il dominio è quello specificato nel servizio directory.
- Sulla gestire menù, scegliere Aggiungi ruoli e funzionalità.
- Scegli Avanti finché non sei al Caratteristiche .
- Espandi la funzionalità Strumenti di amministrazione remota del server, espandi Strumenti di amministrazione dei ruolie selezionare Strumenti di Servizi di dominio Active Directory e AD LDS ed Servizio di gestione dei diritti di Active Directory.
- Scegli Avanti ed Installazione.Viene avviata l'installazione delle funzionalità.
- Una volta completata l'installazione, scegli Chiudi.
- Apri Utenti e computer di Active Directory dal Inizio menu.
- Sotto
hyperpod.abc123.com
, espandihyperpod
. - Scegli (tasto destro)
hyperpod
scegli Newe scegli Unità organizzativa. - Crea un'unità organizzativa denominata
Groups
. - Scegli (tasto destro) ATTIVITA' E GRUPPIscegli Newe scegli Gruppo.
- Crea un gruppo chiamato
ClusterAdmin
. - Crea un secondo gruppo chiamato
ClusterDev
. - Scegli (tasto destro) Utentiscegli Newe scegli Utente.
- Crea un nuovo utente.
- Scegli (fai clic con il pulsante destro del mouse) l'utente e scegli Aggiungi a un gruppo.
- Aggiungi i tuoi utenti ai gruppi
ClusterAdmin
orClusterDev
.Utenti aggiunti aClusterAdmin
il gruppo avràsudo
privilegio sul cluster.
Crea un utente di sola lettura in AD
Crea un utente chiamato ReadOnly
per Users
. ReadOnly
l'utente viene utilizzato dal cluster per accedere a livello di programmazione a utenti e gruppi in AD.
Prendere nota della password per un utilizzo successivo.
(Per l'autenticazione con chiave pubblica SSH) Aggiungere chiavi pubbliche SSH agli utenti
Memorizzando una chiave pubblica SSH per un utente in AD, è possibile accedere senza inserire una password. Puoi utilizzare una coppia di chiavi esistente oppure puoi creare una nuova coppia di chiavi con OpenSSH ssh-keygen
comando. Per ulteriori informazioni sulla generazione di una coppia di chiavi, fare riferimento a Crea una coppia di chiavi per la tua istanza Amazon EC2.
- In Utenti e computer di Active Directory, Sulla Visualizza menu, abilita Funzioni avanzate.
- Aprire il Properties dialogo dell'utente.
- Sulla Editor attributi scheda, scegliere
altSecurityIdentities
scegliere Modifica. - Nel Valore da aggiungerescegli Aggiungi.
- Nel Valori, aggiungi una chiave pubblica SSH.
- Scegli OK.Confermare che la chiave pubblica SSH venga visualizzata come attributo.
Ottieni una password offuscata per l'utente ReadOnly
Per evitare di includere una password in testo semplice nel file di configurazione SSSD, offuscare la password. Per questo passaggio è necessario un ambiente Linux (laptop locale, istanza EC2 Linux o CloudShell).
installare il sssd-tools
pacchetto sulla macchina Linux per installare il modulo Python pysss
per offuscamento:
Esegui il seguente script Python di una riga. Inserisci la password del ReadOnly
utente. Otterrai la password offuscata.
Crea un cluster HyperPod con uno script del ciclo di vita abilitato per SSSD
Successivamente, creerai un cluster HyperPod con integrazione LDAPS/Active Directory.
- Trova il file di configurazione
config.py
nella directory dello script del ciclo di vita, aprilo con il tuo editor di testo e modifica le proprietà nel fileConfig
classe eSssdConfig
classe:- Impostato
True
perenable_sssd
per abilitare la configurazione SSSD. - I
SssdConfig
la classe contiene i parametri di configurazione per SSSD. - Assicurati di utilizzare la password offuscata per il file
ldap_default_authtok
proprietà, non una password in testo semplice.
- Impostato
- Copia il file del certificato
ldaps.crt
nella stessa directory (doveconfig.py
esiste). - Carica i file di script del ciclo di vita modificati sul tuo file Servizio di archiviazione semplice Amazon (Amazon S3) e creare un cluster HyperPod con esso.
- Attendere finché lo stato non cambia in In servizio.
Convalida
Verifichiamo la soluzione accedendo al cluster con SSH. Poiché il cluster è stato creato in una sottorete privata, non puoi accedere direttamente tramite SSH al cluster dal tuo ambiente locale. Puoi scegliere tra due opzioni per connetterti al cluster.
Opzione 1: accesso SSH tramite AWS Systems Manager
Puoi usare Gestore di sistemi AWS come proxy per la connessione SSH. Aggiungi una voce host al file di configurazione SSH ~/.ssh/config
utilizzando il seguente esempio. Per il HostName
campo, specificare il nome di destinazione di Systems Manager nel formato sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]
. Per l' IdentityFile
campo, specificare il percorso del file per la chiave privata SSH dell'utente. Questo campo non è obbligatorio se hai scelto l'autenticazione tramite password.
Corri il ssh
comando utilizzando il nome host specificato. Conferma di poter accedere all'istanza con l'utente specificato.
A questo punto, gli utenti possono ancora utilizzare la sessione della shell predefinita di Systems Manager per accedere al cluster come ssm-user
con privilegi amministrativi. Per bloccare l'accesso predefinito alla shell Systems Manager e applicare l'accesso SSH, puoi configurare la policy IAM facendo riferimento al seguente esempio:
Per ulteriori dettagli su come imporre l'accesso SSH, fare riferimento a Avvia una sessione con un documento specificando i documenti della sessione nelle policy IAM.
Opzione 2: accesso SSH tramite bastion host
Un'altra opzione per accedere al cluster è utilizzare a host bastione come procuratore. È possibile utilizzare questa opzione quando l'utente non dispone dell'autorizzazione per utilizzare le sessioni di Systems Manager o per risolvere i problemi quando Systems Manager non funziona.
- Crea un gruppo di sicurezza bastion che consenta l'accesso SSH in entrata (porta TCP 22) dal tuo ambiente locale.
- Aggiorna il gruppo di sicurezza per il cluster per consentire l'accesso SSH in entrata dal gruppo di sicurezza bastion.
- Crea un'istanza EC2 Linux.
- Nel Immagine della macchina Amazonscegli Server Ubuntu 20.04 LTS.
- Nel Tipo di istanzascegli t3.piccolo.
- Nel Impostazioni di rete sezione, fornire i seguenti parametri:
- Nel VPCscegli SageMaker HyperPod VPC (che hai creato con il modello CloudFormation).
- Nel subnet, scegli la sottorete pubblica creata con il modello CloudFormation.
- Nel Gruppi di sicurezza comuni, scegli il gruppo di sicurezza bastion che hai creato.
- Nel Configura l'archiviazione, imposta la memoria su 8 GB.
- Identificare l'indirizzo IP pubblico del bastion host e l'indirizzo IP privato dell'istanza di destinazione (ad esempio, il nodo di accesso del cluster) e aggiungere due voci host nella configurazione SSH, facendo riferimento al seguente esempio:
- Corri il
ssh
comando utilizzando il nome host di destinazione specificato in precedenza e conferma che puoi accedere all'istanza con l'utente specificato:
ripulire
Pulisci le risorse nel seguente ordine:
- Elimina il cluster HyperPod.
- Elimina il servizio di bilanciamento del carico di rete.
- Elimina il gruppo di destinazione del bilanciamento del carico.
- Elimina il certificato importato in Gestione certificati.
- Elimina l'istanza Windows EC2.
- Elimina l'istanza EC2 Linux per il bastion host.
- Elimina AWS Managed Microsoft AD.
- Elimina lo stack CloudFormation per il VPC, le sottoreti, il gruppo di sicurezza e il volume FSx for Lustre.
Conclusione
Questo post fornisce i passaggi per creare un cluster HyperPod integrato con Active Directory. Questa soluzione elimina il fastidio della manutenzione degli utenti su cluster su larga scala e consente di gestire utenti e gruppi centralmente in un unico posto.
Per ulteriori informazioni su HyperPod, consulta il Laboratorio HyperPod e la Guida per sviluppatori SageMaker HyperPod. Lascia il tuo feedback su questa soluzione nella sezione commenti.
Informazioni sugli autori
Tomonori Shimomura è un Senior Solutions Architect nel team Amazon SageMaker, dove fornisce consulenza tecnica approfondita ai clienti SageMaker e suggerisce miglioramenti del prodotto al team di prodotto. Prima di entrare in Amazon, ha lavorato alla progettazione e allo sviluppo di software embedded per console per videogiochi e ora sfrutta le sue competenze approfondite nella tecnologia lato cloud. Nel tempo libero gli piace giocare ai videogiochi, leggere libri e scrivere software.
Giuseppe Angelo Porcelli è Principal Machine Learning Specialist Solutions Architect per Amazon Web Services. Con diversi anni di ingegneria del software e un background di ML, lavora con clienti di qualsiasi dimensione per comprendere le loro esigenze aziendali e tecniche e progettare soluzioni di intelligenza artificiale e ML che sfruttano al meglio il cloud AWS e lo stack di Amazon Machine Learning. Ha lavorato a progetti in diversi domini, tra cui MLOps, visione artificiale e NLP, coinvolgendo un'ampia gamma di servizi AWS. Nel tempo libero, Giuseppe si diverte a giocare a calcio.
Monidipa Chakraborty attualmente ricopre il ruolo di Senior Software Development Engineer presso Amazon Web Services (AWS), in particolare all'interno del team SageMaker HyperPod. Si impegna ad assistere i clienti progettando e implementando sistemi robusti e scalabili che dimostrino l'eccellenza operativa. Con quasi un decennio di esperienza nello sviluppo di software, Monidipa ha contribuito a vari settori all'interno di Amazon, tra cui video, vendita al dettaglio, Amazon Go e AWS SageMaker.
Satish Pasumarthi è uno sviluppatore di software presso Amazon Web Services. Con diversi anni di ingegneria del software e un background in ML, ama colmare il divario tra ML e sistemi ed è appassionato di costruire sistemi che rendano possibile l'addestramento di modelli su larga scala. Ha lavorato a progetti in diversi ambiti, tra cui framework di machine learning, benchmarking di modelli e creazione di hyperpod beta che coinvolgono un'ampia gamma di servizi AWS. Nel tempo libero, Satish ama giocare a badminton.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/