Amazon SageMaker HyperPod is speciaal gebouwd om de training van het Foundation Model (FM) te versnellen, waardoor het ongedifferentieerde zware werk dat gepaard gaat met het beheren en optimaliseren van een groot trainingscomputercluster wordt geëlimineerd. Met SageMaker HyperPod kun je FM's weken en maanden zonder onderbreking trainen.
Normaal gesproken worden HyperPod-clusters door meerdere gebruikers gebruikt: machine learning-onderzoekers (ML), software-ingenieurs, datawetenschappers en clusterbeheerders. Ze bewerken hun eigen bestanden, voeren hun eigen taken uit en willen voorkomen dat ze elkaars werk beïnvloeden. Om deze omgeving voor meerdere gebruikers te realiseren, kunt u profiteren van het gebruikers- en groepsmechanisme van Linux en statisch meerdere gebruikers op elke instantie aanmaken via levenscyclusscripts. Het nadeel van deze aanpak is echter dat gebruikers- en groepsinstellingen worden gedupliceerd over meerdere exemplaren in het cluster, waardoor het moeilijk wordt om ze consistent te configureren voor alle exemplaren, bijvoorbeeld wanneer een nieuw teamlid lid wordt.
Om dit pijnpunt op te lossen, kunnen we gebruiken Lichtgewicht Directory Access Protocol (LDAP) en LDAP via TLS/SSL (LDAPS) om te integreren met een directoryservice zoals AWS-adreslijstservice voor Microsoft Active Directory. Met de directoryservice kunt u gebruikers en groepen en hun rechten centraal beheren.
In dit bericht introduceren we een oplossing om HyperPod-clusters te integreren met AWS Managed Microsoft AD, en leggen we uit hoe u een naadloze inlogomgeving voor meerdere gebruikers kunt realiseren met een centraal onderhouden directory.
Overzicht oplossingen
De oplossing maakt gebruik van de volgende AWS-services en -bronnen:
We gebruiken ook AWS CloudFormatie om een stapel te implementeren om de vereisten voor het HyperPod-cluster te creëren: VPC, subnetten, beveiligingsgroep en Amazon FSx voor Luster volume.
Het volgende diagram illustreert de oplossingsarchitectuur op hoog niveau.
In deze oplossing gebruiken HyperPod-clusterinstanties het LDAPS-protocol om via een NLB verbinding te maken met de AWS Managed Microsoft AD. We gebruiken TLS-beëindiging door een certificaat op de NLB te installeren. Om LDAPS in HyperPod-clusterinstanties te configureren, wordt het levenscyclusscript geïnstalleerd en geconfigureerd Daemon voor systeembeveiligingsservices (SSSD)—een open source clientsoftware voor LDAP/LDAPS.
Voorwaarden
In dit bericht wordt ervan uitgegaan dat je al weet hoe je een standaard HyperPod-cluster zonder SSSD kunt maken. Raadpleeg voor meer informatie over het maken van HyperPod-clusters Aan de slag met SageMaker HyperPod en HyperPod-workshop.
Bovendien gebruikt u tijdens de installatiestappen een Linux-machine om een zelfondertekend certificaat te genereren en een onduidelijk wachtwoord voor de AD-lezergebruiker te verkrijgen. Als u geen Linux-machine heeft, kunt u een EC2 Linux-instantie maken of gebruiken AWS-cloudshell.
Maak een VPC, subnetten en een beveiligingsgroep
Volg de instructies in het Eigen account sectie van de HyperPod-workshop. Je implementeert een CloudFormation-stack en creëert vereiste bronnen zoals VPC, subnetten, beveiligingsgroep en FSx voor het Lustre-volume. U moet zowel een primair subnet als een back-upsubnet maken wanneer u de CloudFormation-stack implementeert, omdat AWS Managed Microsoft AD vereist minimaal twee subnetten met verschillende beschikbaarheidszones.
In dit bericht gebruiken we, voor de eenvoud, dezelfde VPC, subnetten en beveiligingsgroep voor zowel het HyperPod-cluster als de directoryservice. Als u verschillende netwerken tussen het cluster en de directoryservice moet gebruiken, zorg er dan voor dat beveiligingsgroepen en routetabellen zo zijn geconfigureerd dat ze met elkaar kunnen communiceren.
Maak AWS Managed Microsoft AD op Directory Service
Voer de volgende stappen uit om uw directory in te stellen:
- Op de Directory Service-console, kiezen Directories in het navigatievenster.
- Kies Directory instellen.
- Voor Directorytypeselecteer AWS beheerde Microsoft AD.
- Kies Volgende.
- Voor editieselecteer Standard Edition.
- Voor DNS-naam van directory, voer de DNS-naam van uw voorkeursdirectory in (bijvoorbeeld
hyperpod.abc123.com
). - Voor administrator wachtwoord¸ stel een wachtwoord in en bewaar het voor later gebruik.
- Kies Volgende.
- In het Netwerken sectie, specificeer de VPC en twee privé-subnetten die u hebt gemaakt.
- Kies Volgende.
- Bekijk de configuratie en prijzen en kies vervolgens Map maken.
Het maken van de directory begint. Wacht tot de status verandert van Wij creëren naar Actief, wat 20-30 minuten kan duren. - Wanneer de status verandert in Actief, open de detailpagina van de directory en noteer de DNS-adressen voor later gebruik.
Maak een Netwerktaakverdeling vóór Directory Service
Voer de volgende stappen uit om de NLB te maken:
- Op de Amazon EC2-console, kiezen Doelgroepen in het navigatievenster.
- Kies Doelgroepen creëren.
- Creëer een doelgroep met de volgende parameters:
- Voor Kies een doeltypeselecteer IP adressen.
- Voor Naam doelgroep, ga naar binnen
LDAP
. - Voor Protocol: Haven, kiezen TCP en ga naar binnen
389
. - Voor Type IP-adresselecteer IPv4.
- Voor VPC, kiezen SageMaker HyperPod VPC (die u hebt gemaakt met de CloudFormation-sjabloon).
- Voor Gezondheidscontroleprotocol, kiezen TCP.
- Kies Volgende.
- In het Registreer doelen sectie, registreer de DNS-adressen van de directoryservice als de doelen.
- Voor poorten, kiezen Opnemen zoals hieronder in behandeling.De adressen worden toegevoegd in de Beoordeel doelstellingen sectie met In behandeling statuut.
- Kies Doelgroep creëren.
- Op de Load Balancers-console, kiezen Maak een load-balancer.
- Onder Netwerk Load Balancer, kiezen creëren.
- Configureer een netwerktaakverdeling met de volgende parameters:
- Voor Naam van load balancer, voer een naam in (bijvoorbeeld
nlb-ds
). - Voor schemaselecteer Intern.
- Voor Type IP-adresselecteer IPv4.
- Voor VPC, kiezen SageMaker HyperPod VPC (die u hebt gemaakt met de CloudFormation-sjabloon).
- Onder mappings, selecteert u de twee privé-subnetten en hun CIDR-bereiken (die u hebt gemaakt met de CloudFormation-sjabloon).
- Voor Beveiligingsgroepen, kiezen
CfStackName-SecurityGroup-XYZXYZ
(die u hebt gemaakt met de CloudFormation-sjabloon).
- Voor Naam van load balancer, voer een naam in (bijvoorbeeld
- In het Luisteraars en routing sectie, specificeer de volgende parameters:
- Voor Protocol, kiezen TCP.
- Voor Haven, ga naar binnen
389
. - Voor Standaard actie, kies de genoemde doelgroep LDAP.
Hier voegen we een luisteraar voor LDAP toe. We zullen LDAPS later toevoegen.
- Kies Maak een load-balancer.Wacht tot de status verandert van Provisioning naar Actief, wat 3 tot 5 minuten kan duren.
- Wanneer de status verandert in Actief, open de detailpagina van de ingerichte netwerktaakverdeling en noteer de DNS-naam (
xyzxyz.elb.region-name.amazonaws.com
) voor later gebruik.
Maak een zelfondertekend certificaat en importeer dit in Certificaatbeheer
Voer de volgende stappen uit om een zelfondertekend certificaat te maken:
- Voer het volgende uit op uw Linux-gebaseerde omgeving (lokale laptop, EC2 Linux-instantie of CloudShell). OpenSSL opdrachten om een zelfondertekend certificaat en privésleutel te maken:
- Op de Certificaatbeheerconsole, kiezen import.
- Voer de certificaatinstantie en de privésleutel in, uit de inhoud van
ldaps.crt
enldaps.key
respectievelijk. - Kies Volgende.
- Voeg eventuele optionele tags toe en kies vervolgens Volgende.
- Bekijk de configuratie en kies import.
Voeg een LDAPS-listener toe
We hebben al een luisteraar voor LDAP toegevoegd aan de NLB. Nu voegen we een luisteraar voor LDAPS toe met het geïmporteerde certificaat. Voer de volgende stappen uit:
- Op de Load Balancers-console, navigeer naar de pagina NLB-details.
- Op de luisteraars tabblad, kies Luisteraar toevoegen.
- Configureer de luisteraar met de volgende parameters:
- Voor Protocol, kiezen TLS.
- Voor Haven, ga naar binnen
636
. - Voor Standaard actie, kiezen LDAP.
- Voor Certificaatbronselecteer Van ACM.
- Voor Certificaat, voer in wat u in ACM heeft geïmporteerd.
- Kies Toevoegen.Nu luistert de NLB naar zowel LDAP als LDAPS. Het wordt aanbevolen om de LDAP-listener te verwijderen, omdat deze gegevens verzendt zonder codering, in tegenstelling tot LDAPS.
Maak een EC2 Windows-instantie om gebruikers en groepen in de AD te beheren
Voer de volgende stappen uit om gebruikers en groepen in de AD aan te maken en te onderhouden:
- Kies op de Amazon EC2-console: Gevallen in het navigatievenster.
- Kies Instanties starten.
- Voor Naam, voer een naam in voor uw instantie.
- Voor Afbeelding Amazon-machine, kiezen Microsoft Windows Server 2022 Basis.
- Voor Instantietype, kiezen t2.micro.
- In het Netwerkinstellingen sectie, geef de volgende parameters op:
- Voor VPC, kiezen SageMaker HyperPod VPC (die u hebt gemaakt met de CloudFormation-sjabloon).
- Voor subnet, kies een van de twee subnetten die u hebt gemaakt met de CloudFormation-sjabloon.
- Voor Gemeenschappelijke beveiligingsgroepen, kiezen
CfStackName-SecurityGroup-XYZXYZ
(die u hebt gemaakt met de CloudFormation-sjabloon).
- Voor Opslag configureren, stel de opslag in op 30 GB gp2.
- In het Geavanceerde details sectie, voor Directory voor domeindeelname¸ kies de advertentie die u heeft gemaakt.
- Voor IAM-instantieprofiel, kies een AWS Identiteits- en toegangsbeheer (IAM) rol met minimaal de
AmazonSSMManagedEC2InstanceDefaultPolicy
beleid. - Bekijk de samenvatting en kies Start instantie.
Maak gebruikers en groepen in AD met behulp van de EC2 Windows-instantie
met Remote Desktop, maak verbinding met de EC2 Windows-instantie die u in de vorige stap hebt gemaakt. Het gebruik van een RDP-client wordt aanbevolen boven het gebruik van een browsergebaseerd extern bureaublad, zodat u de inhoud van het klembord met uw lokale machine kunt uitwisselen met behulp van kopieer- en plakbewerkingen. Voor meer details over het verbinden met EC2 Windows-instanties raadpleegt u Maak verbinding met uw Windows-exemplaar.
Als u om een inloggegevens wordt gevraagd, gebruikt u hyperpodAdmin
(waar hyperpod
is het eerste deel van de DNS-naam van uw directory) als gebruikersnaam en gebruik het beheerderswachtwoord dat u voor de directoryservice hebt ingesteld.
- Wanneer het Windows-bureaubladscherm wordt geopend, kiest u server Manager van het Start menu.
- Kies Lokale server in het navigatievenster en bevestig dat het domein het domein is dat u bij de directoryservice hebt opgegeven.
- Op de Beheren menu, kies Rollen en functies toevoegen.
- Kies Volgende totdat je bij de Voordelen pagina.
- Vouw de functie uit Remote Server Administration Tools, uitbreiden Hulpprogramma's voor rolbeheerEn Select AD DS- en AD LDS-hulpprogramma's en Active Directory Rights Management-service.
- Kies Volgende en Install.De installatie van de functies begint.
- Wanneer de installatie is voltooid, kiest u Sluiten.
- Openen Active Directory-gebruikers en computers van het Start menu.
- Onder
hyperpod.abc123.com
, uitbreidenhyperpod
. - Kies (klik met de rechtermuisknop)
hyperpod
, kiezen Newen kies Organisatorische eenheid. - Maak een organisatie-eenheid met de naam
Groups
. - Kies (klik met de rechtermuisknop) Groepen, kiezen Newen kies Groep.
- Maak een groep genaamd
ClusterAdmin
. - Creëer een tweede groep genaamd
ClusterDev
. - Kies (klik met de rechtermuisknop) Gebruikers, kiezen Newen kies Gebruiker.
- Maak een nieuwe gebruiker aan.
- Kies (klik met de rechtermuisknop) de gebruiker en kies Toevoegen aan een groep.
- Voeg uw gebruikers toe aan de groepen
ClusterAdmin
orClusterDev
.Gebruikers toegevoegd aan deClusterAdmin
groep zal hebbensudo
privilege op het cluster.
Maak een ReadOnly-gebruiker in AD
Maak een gebruiker aan met de naam ReadOnly
voor Users
. De ReadOnly
user wordt door het cluster gebruikt om programmatisch toegang te krijgen tot gebruikers en groepen in AD.
Noteer het wachtwoord voor later gebruik.
(Voor authenticatie met openbare SSH-sleutel) Voeg openbare SSH-sleutels toe aan gebruikers
Door een openbare SSH-sleutel op te slaan voor een gebruiker in AD, kunt u inloggen zonder een wachtwoord in te voeren. U kunt een bestaand sleutelpaar gebruiken, of u kunt een nieuw sleutelpaar maken met OpenSSH's ssh-keygen
commando. Voor meer informatie over het genereren van een sleutelpaar raadpleegt u Maak een sleutelpaar voor uw Amazon EC2-instantie.
- In Active Directory-gebruikers en computersOp Bekijk menu, inschakelen Geavanceerde functies.
- Open de Properties dialoogvenster van de gebruiker.
- Op de Kenmerkeditor tabblad, kies
altSecurityIdentities
kiezen Edit. - Voor Waarde om toe te voegen, kiezen Toevoegen.
- Voor Values, voeg een openbare SSH-sleutel toe.
- Kies OK.Controleer of de openbare SSH-sleutel als attribuut wordt weergegeven.
Zorg voor een onduidelijk wachtwoord voor de ReadOnly-gebruiker
Om te voorkomen dat er een wachtwoord in platte tekst in het SSSD-configuratiebestand wordt opgenomen, maakt u het wachtwoord onduidelijk. Voor deze stap heb je een Linux-omgeving nodig (lokale laptop, EC2 Linux-instantie of CloudShell).
Installeer de sssd-tools
pakket op de Linux-machine om de Python-module te installeren pysss
voor verduistering:
Voer het volgende Python-script van één regel uit. Voer het wachtwoord van de ReadOnly
gebruiker. U krijgt het versluierde wachtwoord.
Maak een HyperPod-cluster met een levenscyclusscript dat geschikt is voor SSSD
Vervolgens maakt u een HyperPod-cluster met LDAPS/Active Directory-integratie.
- Zoek het configuratiebestand
config.py
in uw levenscyclusscriptmap, open deze met uw teksteditor en bewerk de eigenschappen in deConfig
klasse enSssdConfig
klasse:- Zet de
True
Forenable_sssd
om het instellen van SSSD mogelijk te maken. - De
SssdConfig
klasse bevat configuratieparameters voor SSSD. - Zorg ervoor dat u het verborgen wachtwoord voor de
ldap_default_authtok
eigenschap, geen wachtwoord in platte tekst.
- Zet de
- Kopieer het certificaatbestand
ldaps.crt
naar dezelfde map (waarconfig.py
bestaat). - Upload de gewijzigde levenscyclusscriptbestanden naar uw Amazon eenvoudige opslagservice (Amazon S3) bucket en maak er een HyperPod-cluster mee.
- Wacht tot de status verandert in In dienst.
Verificatie
Laten we de oplossing verifiëren door u aan te melden bij het cluster met SSH. Omdat het cluster in een privé-subnet is gemaakt, kunt u vanuit uw lokale omgeving niet rechtstreeks SSH naar het cluster sturen. U kunt kiezen uit twee opties om verbinding te maken met het cluster.
Optie 1: SSH-aanmelding via AWS Systems Manager
Je kunt gebruiken AWS-systeembeheerder als proxy voor de SSH-verbinding. Voeg een hostvermelding toe aan het SSH-configuratiebestand ~/.ssh/config
met behulp van het volgende voorbeeld. Voor de HostName
veld, specificeer de doelnaam van Systems Manager in de notatie van sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]
. Voor de IdentityFile
veld, specificeer het bestandspad naar de persoonlijke SSH-sleutel van de gebruiker. Dit veld is niet vereist als u voor wachtwoordverificatie kiest.
Voer de ... uit ssh
commando met behulp van de hostnaam die u hebt opgegeven. Bevestig dat u zich met de opgegeven gebruiker bij het exemplaar kunt aanmelden.
Op dit moment kunnen gebruikers nog steeds de standaard shell-sessie van Systems Manager gebruiken om in te loggen op het cluster als ssm-user
met beheerdersrechten. Om de standaard Systems Manager-shell-toegang te blokkeren en SSH-toegang af te dwingen, kunt u uw IAM-beleid configureren aan de hand van het volgende voorbeeld:
Voor meer informatie over het afdwingen van SSH-toegang raadpleegt u Start een sessie met een document door de sessiedocumenten op te geven in IAM-beleid.
Optie 2: SSH-login via bastionhost
Een andere optie om toegang te krijgen tot het cluster is het gebruik van een bastion gastheer als proxy. U kunt deze optie gebruiken als de gebruiker geen toestemming heeft om Systeembeheersessies te gebruiken, of om problemen op te lossen wanneer Systeembeheer niet werkt.
- Maak een bastionbeveiligingsgroep die inkomende SSH-toegang (TCP-poort 22) vanuit uw lokale omgeving toestaat.
- Werk de beveiligingsgroep voor het cluster bij om inkomende SSH-toegang vanuit de bastionbeveiligingsgroep toe te staan.
- Maak een EC2 Linux-instantie.
- Voor Afbeelding Amazon-machine, kiezen Ubuntu-server 20.04 LTS.
- Voor Instantietype, kiezen t3. klein.
- In het Netwerkinstellingen sectie, geef de volgende parameters op:
- Voor VPC, kiezen SageMaker HyperPod VPC (die u hebt gemaakt met de CloudFormation-sjabloon).
- Voor subnet, kies het openbare subnet dat u hebt gemaakt met de CloudFormation-sjabloon.
- Voor Gemeenschappelijke beveiligingsgroepen, kies de bastionbeveiligingsgroep die u heeft gemaakt.
- Voor Opslag configureren, stel de opslag in op 8 GB.
- Identificeer het openbare IP-adres van de bastionhost en het privé-IP-adres van de doelinstantie (bijvoorbeeld het inlogknooppunt van het cluster) en voeg twee hostvermeldingen toe in de SSH-configuratie, door te verwijzen naar het volgende voorbeeld:
- Voer de ... uit
ssh
opdracht met behulp van de doelhostnaam die u eerder hebt opgegeven, en bevestig dat u zich met de opgegeven gebruiker bij het exemplaar kunt aanmelden:
Opruimen
Ruim de bronnen op in de volgende volgorde:
- Verwijder het HyperPod-cluster.
- Verwijder de netwerkload balancer.
- Verwijder de taakverdelingsdoelgroep.
- Verwijder het certificaat dat is geïmporteerd in Certificaatbeheer.
- Verwijder het EC2 Windows-exemplaar.
- Verwijder de EC2 Linux-instantie voor de bastionhost.
- Verwijder de door AWS beheerde Microsoft AD.
- Verwijder de CloudFormation-stack voor de VPC, subnetten, beveiligingsgroep en FSx voor Lustre-volume.
Conclusie
Dit bericht bevatte stappen om een HyperPod-cluster te maken dat is geïntegreerd met Active Directory. Deze oplossing elimineert het gedoe van gebruikersonderhoud op grootschalige clusters en stelt u in staat gebruikers en groepen centraal op één plek te beheren.
Voor meer informatie over HyperPod, bekijk de HyperPod-workshop en SageMaker HyperPod-ontwikkelaarshandleiding. Laat uw feedback over deze oplossing achter in het opmerkingengedeelte.
Over de auteurs
Tomonori Shimomura is een Senior Solutions Architect in het Amazon SageMaker-team, waar hij diepgaand technisch advies geeft aan SageMaker-klanten en productverbeteringen voorstelt aan het productteam. Voordat hij bij Amazon kwam, werkte hij aan het ontwerp en de ontwikkeling van embedded software voor videogameconsoles, en nu maakt hij gebruik van zijn diepgaande vaardigheden op het gebied van cloud-side-technologie. In zijn vrije tijd speelt hij graag videogames, leest hij boeken en schrijft hij software.
Giuseppe Angelo Porcelli is een Principal Machine Learning Specialist Solutions Architect voor Amazon Web Services. Met meerdere jaren software engineering en een ML-achtergrond werkt hij met klanten van elke omvang om hun zakelijke en technische behoeften te begrijpen en AI- en ML-oplossingen te ontwerpen die optimaal gebruik maken van de AWS Cloud en de Amazon Machine Learning-stack. Hij heeft gewerkt aan projecten in verschillende domeinen, waaronder MLOps, computervisie en NLP, waarbij een breed scala aan AWS-services betrokken was. In zijn vrije tijd speelt Giuseppe graag voetbal.
Monidipa Chakraborty is momenteel werkzaam als Senior Software Development Engineer bij Amazon Web Services (AWS), specifiek binnen het SageMaker HyperPod-team. Ze zet zich in om klanten te helpen bij het ontwerpen en implementeren van robuuste en schaalbare systemen die operationele uitmuntendheid demonstreren. Met bijna tien jaar ervaring op het gebied van softwareontwikkeling heeft Monidipa bijgedragen aan verschillende sectoren binnen Amazon, waaronder Video, Retail, Amazon Go en AWS SageMaker.
Satish Pasumarthi is een softwareontwikkelaar bij Amazon Web Services. Met een aantal jaren software-engineering en een ML-achtergrond houdt hij ervan om de kloof tussen ML en systemen te overbruggen en is hij gepassioneerd om systemen te bouwen die grootschalige modeltraining mogelijk maken. Hij heeft aan projecten in verschillende domeinen gewerkt, waaronder Machine Learning-frameworks, modelbenchmarking en het bouwen van hyperpod-bèta met een breed scala aan AWS-services. In zijn vrije tijd speelt Satish graag badminton.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- Plato Gezondheid. Intelligentie op het gebied van biotech en klinische proeven. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/