Amazon SageMaker HyperPod er specialbygget til at accelerere træning af foundationmodel (FM) og fjerne de udifferentierede tunge løft involveret i styring og optimering af en stor træningscomputerklynge. Med SageMaker HyperPod kan du træne FM'er i uger og måneder uden afbrydelser.
Typisk bruges HyperPod-klynger af flere brugere: maskinlæringsforskere (ML), softwareingeniører, dataforskere og klyngeadministratorer. De redigerer deres egne filer, kører deres egne job og vil gerne undgå at påvirke hinandens arbejde. For at opnå dette flerbrugermiljø kan du drage fordel af Linuxs bruger- og gruppemekanisme og statisk oprette flere brugere på hver instans gennem livscyklusscripts. Ulempen ved denne tilgang er imidlertid, at bruger- og gruppeindstillinger duplikeres på tværs af flere forekomster i klyngen, hvilket gør det vanskeligt at konfigurere dem konsekvent på alle forekomster, såsom når et nyt teammedlem tiltræder.
For at løse dette smertepunkt, kan vi bruge Lightweight Directory Access Protocol (LDAP) , LDAP over TLS/SSL (LDAPS) at integrere med en telefonbogstjeneste som f.eks AWS Directory Service til Microsoft Active Directory. Med bibliotekstjenesten kan du centralt vedligeholde brugere og grupper og deres tilladelser.
I dette indlæg introducerer vi en løsning til at integrere HyperPod-klynger med AWS Managed Microsoft AD og forklarer, hvordan man opnår et problemfrit flerbrugerloginmiljø med en centralt vedligeholdt mappe.
Løsningsoversigt
Løsningen bruger følgende AWS-tjenester og ressourcer:
Vi bruger også AWS CloudFormation at implementere en stak for at skabe forudsætningerne for HyperPod-klyngen: VPC, undernet, sikkerhedsgruppe og Amazon FSx til Luster bind.
Følgende diagram illustrerer løsningsarkitekturen på højt niveau.
I denne løsning bruger HyperPod-klyngeforekomster LDAPS-protokollen til at oprette forbindelse til AWS Managed Microsoft AD via en NLB. Vi bruger TLS opsigelse ved at installere et certifikat til NLB. For at konfigurere LDAPS i HyperPod-klyngeforekomster installeres og konfigureres livscyklusscriptet System Security Services Daemon (SSSD)-en open source-klientsoftware til LDAP/LDAPS.
Forudsætninger
Dette indlæg antager, at du allerede ved, hvordan du opretter en grundlæggende HyperPod-klynge uden SSSD. For flere detaljer om, hvordan du opretter HyperPod-klynger, se Kom godt i gang med SageMaker HyperPod og HyperPod workshop.
I opsætningstrinnene vil du også bruge en Linux-maskine til at generere et selvsigneret certifikat og få en sløret adgangskode til AD-læserbrugeren. Hvis du ikke har en Linux-maskine, kan du oprette en EC2 Linux-instans eller bruge AWS CloudShell.
Opret en VPC, undernet og en sikkerhedsgruppe
Følg instruktionerne i Egen regning afsnit af HyperPod-værkstedet. Du vil implementere en CloudFormation-stak og oprette nødvendige ressourcer såsom VPC, undernet, sikkerhedsgruppe og FSx for Luster-volumen. Du skal oprette både et primært undernet og et backupundernet, når du implementerer CloudFormation-stakken, fordi AWS Managed Microsoft AD kræver mindst to undernet med forskellige tilgængelighedszoner.
I dette indlæg bruger vi for nemheds skyld den samme VPC, undernet og sikkerhedsgruppe til både HyperPod-klyngen og katalogtjenesten. Hvis du skal bruge forskellige netværk mellem klynge- og katalogtjenesten, skal du sørge for, at sikkerhedsgrupper og rutetabeller er konfigureret, så de kan kommunikere med hinanden.
Opret AWS Managed Microsoft AD på Directory Service
Udfør følgende trin for at konfigurere din mappe:
- På Directory Service-konsol, vælg Directories i navigationsruden.
- Vælg Opsæt bibliotek.
- Til Katalogtype, Vælg AWS administrerede Microsoft AD.
- Vælg Næste.
- Til Edition, Vælg Standard Edition.
- Til Directory DNS-navn, indtast dit foretrukne katalog-DNS-navn (f.eks.
hyperpod.abc123.com
). - Til Admin adgangskode¸ indstil en adgangskode og gem den til senere brug.
- Vælg Næste.
- I netværk sektion, skal du angive den VPC og to private undernet, du har oprettet.
- Vælg Næste.
- Gennemgå konfigurationen og priserne, og vælg derefter Opret mappe.
Oprettelse af mappen starter. Vent, indtil status ændres fra Oprettelse af til Aktiv , hvilket kan tage 20-30 minutter. - Når status ændres til Aktiv , åbn katalogets detaljeside og noter DNS-adresserne til senere brug.
Opret en NLB foran Directory Service
For at oprette NLB skal du udføre følgende trin:
- På Amazon EC2 konsol, vælg Målgrupper i navigationsruden.
- Vælg Opret målgrupper.
- Opret en målgruppe med følgende parametre:
- Til Vælg en måltype, Vælg IP-adresser.
- Til Målgruppenavn, gå ind
LDAP
. - Til Protokol: Havn, vælg TCP og indtast
389
. - Til IP-adressetype, Vælg IPv4.
- Til VPC, vælg SageMaker HyperPod VPC (som du har oprettet med CloudFormation-skabelonen).
- Til Sundhedstjek protokol, vælg TCP.
- Vælg Næste.
- I Registrer mål sektion, skal du registrere katalogtjenestens DNS-adresser som målene.
- Til Havne, vælg Medtag som afventende nedenfor.Adresserne tilføjes i Gennemgå mål afsnit med Verserende status.
- Vælg Opret målgruppe.
- På Load Balancers konsol, vælg Opret load balancer.
- Under Network Load Balancer, vælg Opret.
- Konfigurer en NLB med følgende parametre:
- Til Load balancer navn, indtast et navn (f.eks.
nlb-ds
). - Til Scheme, Vælg Intern.
- Til IP-adressetype, Vælg IPv4.
- Til VPC, vælg SageMaker HyperPod VPC (som du har oprettet med CloudFormation-skabelonen).
- Under tilknytninger, vælg de to private undernet og deres CIDR-intervaller (som du oprettede med CloudFormation-skabelonen).
- Til Sikkerhedsgrupper, vælg
CfStackName-SecurityGroup-XYZXYZ
(som du har oprettet med CloudFormation-skabelonen).
- Til Load balancer navn, indtast et navn (f.eks.
- I Lyttere og routing afsnit, skal du angive følgende parametre:
- Til protokol, vælg TCP.
- Til port, gå ind
389
. - Til Standardhandling, vælg den navngivne målgruppe LDAP.
Her tilføjer vi en lytter til LDAP. Vi tilføjer LDAPS senere.
- Vælg Opret load balancer.Vent, indtil status ændres fra Provisioning til Aktiv, hvilket kan tage 3-5 minutter.
- Når status ændres til Aktiv
, åbn detaljesiden for den klargjorte NLB og noter DNS-navnet (
xyzxyz.elb.region-name.amazonaws.com
) til senere brug.
Opret et selvsigneret certifikat og importer det til Certificate Manager
For at oprette et selvsigneret certifikat skal du udføre følgende trin:
- Kør følgende på dit Linux-baserede miljø (lokal bærbar, EC2 Linux-instans eller CloudShell). OpenSSL kommandoer til at oprette et selvsigneret certifikat og privat nøgle:
- På Certificate Manager-konsol, vælg Importere.
- Indtast certifikatets krop og den private nøgle fra indholdet af
ldaps.crt
,ldaps.key
henholdsvis. - Vælg Næste.
- Tilføj eventuelle valgfri tags, og vælg derefter Næste.
- Gennemgå konfigurationen og vælg Importere.
Tilføj en LDAPS-lytter
Vi har allerede tilføjet en lytter til LDAP i NLB. Nu tilføjer vi en lytter til LDAPS med det importerede certifikat. Udfør følgende trin:
- På Load Balancers konsol, naviger til siden med NLB-detaljer.
- På lyttere fanebladet, vælg Tilføj lytter.
- Konfigurer lytteren med følgende parametre:
- Til protokol, vælg TLS.
- Til port, gå ind
636
. - Til Standardhandling, vælg LDAP.
- Til Certifikatkilde, Vælg Fra ACM.
- Til certifikat, indtast det du importerede i ACM.
- Vælg Tilføj.Nu lytter NLB til både LDAP og LDAPS. Det anbefales at slette LDAP-lytteren, fordi den transmitterer data uden kryptering, i modsætning til LDAPS.
Opret en EC2 Windows-instans til at administrere brugere og grupper i AD
For at oprette og vedligeholde brugere og grupper i AD skal du udføre følgende trin:
- På Amazon EC2-konsollen skal du vælge tilfælde i navigationsruden.
- Vælg Start forekomster.
- Til Navn, indtast et navn til din forekomst.
- Til Amazon-maskinebillede, vælg Microsoft Windows Server 2022 Base.
- Til Forekomsttype, vælg t2.micro.
- I Netværksindstillinger sektion, skal du angive følgende parametre:
- Til VPC, vælg SageMaker HyperPod VPC (som du har oprettet med CloudFormation-skabelonen).
- Til Subnet, vælg et af de to undernet, du har oprettet med CloudFormation-skabelonen.
- Til Fælles sikkerhedsgrupper, vælg
CfStackName-SecurityGroup-XYZXYZ
(som du har oprettet med CloudFormation-skabelonen).
- Til Konfigurer lager, indstil lagerplads til 30 GB gp2.
- I Avancerede detaljer afsnit, for Domænetilmeldingsmappe¸ vælg den AD, du har oprettet.
- Til IAM-instansprofil, vælg en AWS identitets- og adgangsstyring (IAM) rolle med mindst
AmazonSSMManagedEC2InstanceDefaultPolicy
politik. - Gennemgå oversigten og vælg Start forekomst.
Opret brugere og grupper i AD ved hjælp af EC2 Windows-instansen
Med Remote Desktop, skal du oprette forbindelse til den EC2 Windows-instans, du oprettede i det forrige trin. Det anbefales at bruge en RDP-klient frem for at bruge et browserbaseret fjernskrivebord, så du kan udveksle indholdet af udklipsholderen med din lokale maskine ved at bruge copy-paste-operationer. For flere detaljer om tilslutning til EC2 Windows-instanser, se Opret forbindelse til din Windows-instans.
Hvis du bliver bedt om et login-legitimationsoplysninger, skal du bruge hyperpodAdmin
(hvor hyperpod
er den første del af dit biblioteks DNS-navn) som brugernavn, og brug den admin-adgangskode, du har angivet til bibliotekstjenesten.
- Når Windows-skrivebordsskærmen åbnes, skal du vælge Server manager fra Starten menu.
- Vælg Lokal server i navigationsruden, og bekræft, at domænet er det, du har angivet til katalogtjenesten.
- På Administrer menu, vælg Tilføj roller og funktioner.
- Vælg Næste indtil du er ved Funktionalitet .
- Udvid funktionen Remote Server Administration Tools, udvide Rolleadministrationsværktøjer, og vælg AD DS og AD LDS værktøjer , Active Directory Rights Management Service.
- Vælg Næste , Installer.Funktionsinstallationen starter.
- Når installationen er færdig, skal du vælge Luk.
- Åbne Active Directory-brugere og -computere fra Starten menu.
- Under
hyperpod.abc123.com
, udvidehyperpod
. - Vælg (højreklik)
hyperpod
, vælg Ny, og vælg Organisationsenhed. - Opret en organisatorisk enhed kaldet
Groups
. - Vælg (højreklik) Grupper, vælg Ny, og vælg gruppe.
- Opret en gruppe kaldet
ClusterAdmin
. - Opret en anden gruppe kaldet
ClusterDev
. - Vælg (højreklik) Brugere, vælg Ny, og vælg Bruger.
- Opret en ny bruger.
- Vælg (højreklik) brugeren og vælg Tilføj til en gruppe.
- Tilføj dine brugere til grupperne
ClusterAdmin
orClusterDev
.Brugere tilføjet tilClusterAdmin
gruppen vil havesudo
privilegium på klyngen.
Opret en skrivebeskyttet bruger i AD
Opret en bruger kaldet ReadOnly
under Users
. Det ReadOnly
bruger bruges af klyngen til programmæssig adgang til brugere og grupper i AD.
Noter adgangskoden til senere brug.
(For SSH offentlig nøglegodkendelse) Tilføj SSH offentlige nøgler til brugere
Ved at gemme en offentlig SSH-nøgle til en bruger i AD, kan du logge ind uden at indtaste en adgangskode. Du kan bruge et eksisterende nøglepar, eller du kan oprette et nyt nøglepar med OpenSSH's ssh-keygen
kommando. For mere information om generering af et nøglepar, se Opret et nøglepar til din Amazon EC2-instans.
- In Active Directory-brugere og -computere, Om Specifikation menu, aktiver Avancerede funktioner.
- Åbne Ejendomme brugerens dialog.
- På Attributredaktør fanebladet, vælg
altSecurityIdentities
vælge Redigere. - Til Værdi at tilføje, vælg Tilføj.
- Til Værdier, tilføje en SSH offentlig nøgle.
- Vælg OK.Bekræft, at den offentlige SSH-nøgle vises som en attribut.
Få en sløret adgangskode til ReadOnly-brugeren
For at undgå at inkludere en almindelig tekstadgangskode i SSSD-konfigurationsfilen, slører du adgangskoden. Til dette trin har du brug for et Linux-miljø (lokal bærbar computer, EC2 Linux-instans eller CloudShell).
Installer sssd-tools
pakke på Linux-maskinen for at installere Python-modulet pysss
til sløring:
Kør følgende Python-script på én linje. Indtast adgangskoden til ReadOnly
bruger. Du får den slørede adgangskode.
Opret en HyperPod-klynge med et SSSD-aktiveret livscyklusscript
Dernæst opretter du en HyperPod-klynge med LDAPS/Active Directory-integration.
- Find konfigurationsfilen
config.py
i din livscyklusscript-mappe, åbn den med din teksteditor, og rediger egenskaberne iConfig
klasse ogSssdConfig
klasse:- sæt
True
forumenable_sssd
for at aktivere opsætning af SSSD. -
SssdConfig
klasse indeholder konfigurationsparametre for SSSD. - Sørg for at bruge den slørede adgangskode til
ldap_default_authtok
egenskab, ikke en almindelig tekstadgangskode.
- sæt
- Kopiér certifikatfilen
ldaps.crt
til den samme mappe (hvorconfig.py
findes). - Upload de ændrede livscyklusscriptfiler til din Amazon Simple Storage Service (Amazon S3) spand, og opret en HyperPod-klynge med den.
- Vent, indtil status ændres til I brug.
Verifikation
Lad os verificere løsningen ved at logge ind på klyngen med SSH. Fordi klyngen blev oprettet i et privat undernet, kan du ikke direkte SSH ind i klyngen fra dit lokale miljø. Du kan vælge mellem to muligheder for at oprette forbindelse til klyngen.
Mulighed 1: SSH-login via AWS Systems Manager
Du kan bruge AWS System Manager som proxy for SSH-forbindelsen. Tilføj en værtspost til SSH-konfigurationsfilen ~/.ssh/config
ved hjælp af følgende eksempel. For HostName
feltet skal du angive Systems Manager-målnavnet i formatet sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]
. For IdentityFile
feltet skal du angive filstien til brugerens private SSH-nøgle. Dette felt er ikke påkrævet, hvis du har valgt adgangskodegodkendelse.
Kør ssh
kommando ved hjælp af det værtsnavn, du har angivet. Bekræft, at du kan logge på instansen med den angivne bruger.
På dette tidspunkt kan brugere stadig bruge Systems Manager-standard shell-sessionen til at logge på klyngen som ssm-user
med administrative rettigheder. For at blokere standard Systems Manager shell-adgang og gennemtvinge SSH-adgang kan du konfigurere din IAM-politik ved at henvise til følgende eksempel:
For flere detaljer om, hvordan man håndhæver SSH-adgang, se Start en session med et dokument ved at angive sessionsdokumenterne i IAM-politikker.
Mulighed 2: SSH login gennem bastion vært
En anden mulighed for at få adgang til klyngen er at bruge en bastion vært som fuldmægtig. Du kan bruge denne mulighed, når brugeren ikke har tilladelse til at bruge Systems Manager-sessioner, eller til at foretage fejlfinding, når Systems Manager ikke fungerer.
- Opret en bastion-sikkerhedsgruppe, der tillader indgående SSH-adgang (TCP-port 22) fra dit lokale miljø.
- Opdater sikkerhedsgruppen for klyngen for at tillade indgående SSH-adgang fra bastion-sikkerhedsgruppen.
- Opret en EC2 Linux-instans.
- Til Amazon-maskinebillede, vælg Ubuntu Server 20.04LTS.
- Til Forekomsttype, vælg t3. lille.
- I Netværksindstillinger sektion, skal du angive følgende parametre:
- Til VPC, vælg SageMaker HyperPod VPC (som du har oprettet med CloudFormation-skabelonen).
- Til Subnet, vælg det offentlige undernet, du oprettede med CloudFormation-skabelonen.
- Til Fælles sikkerhedsgrupper, vælg den bastion-sikkerhedsgruppe, du har oprettet.
- Til Konfigurer lager, indstil lagerplads til 8 GB.
- Identificer bastionværtens offentlige IP-adresse og målinstansens private IP-adresse (f.eks. login-noden for klyngen), og tilføj to værtsindgange i SSH-konfigurationen ved at henvise til følgende eksempel:
- Kør
ssh
kommando ved hjælp af målværtsnavnet, du har angivet tidligere, og bekræft, at du kan logge på forekomsten med den angivne bruger:
Ryd op
Ryd op i ressourcerne i følgende rækkefølge:
- Slet HyperPod-klyngen.
- Slet Network Load Balancer.
- Slet belastningsbalanceringsmålgruppen.
- Slet det certifikat, der er importeret til Certificate Manager.
- Slet EC2 Windows-forekomsten.
- Slet EC2 Linux-instansen for bastion-værten.
- Slet den AWS-administrerede Microsoft AD.
- Slet CloudFormation-stakken for VPC, undernet, sikkerhedsgruppe og FSx for Luster-volumen.
Konklusion
Dette indlæg indeholdt trin til at oprette en HyperPod-klynge integreret med Active Directory. Denne løsning fjerner besværet med brugervedligeholdelse på store klynger og giver dig mulighed for at administrere brugere og grupper centralt ét sted.
For mere information om HyperPod, tjek HyperPod workshop og SageMaker HyperPod Developer Guide. Giv din feedback om denne løsning i kommentarfeltet.
Om forfatterne
Tomonori Shimomura er Senior Solutions Architect på Amazon SageMaker-teamet, hvor han yder dybdegående teknisk rådgivning til SageMaker-kunder og foreslår produktforbedringer til produktteamet. Før han kom til Amazon, arbejdede han med design og udvikling af indlejret software til videospilkonsoller, og nu udnytter han sine dybtgående færdigheder inden for Cloud-side-teknologi. I sin fritid nyder han at spille videospil, læse bøger og skrive software.
Giuseppe Angelo Porcelli er en Principal Machine Learning Specialist Solutions Architect for Amazon Web Services. Med flere års softwareudvikling og en ML-baggrund arbejder han med kunder af enhver størrelse for at forstå deres forretningsmæssige og tekniske behov og designe AI- og ML-løsninger, der gør den bedste brug af AWS Cloud og Amazon Machine Learning-stakken. Han har arbejdet på projekter inden for forskellige domæner, herunder MLOps, computervision og NLP, der involverer et bredt sæt af AWS-tjenester. I sin fritid nyder Giuseppe at spille fodbold.
Monidipa Chakraborty fungerer i øjeblikket som senior softwareudviklingsingeniør hos Amazon Web Services (AWS), specifikt inden for SageMaker HyperPod-teamet. Hun er forpligtet til at hjælpe kunder ved at designe og implementere robuste og skalerbare systemer, der demonstrerer operationel ekspertise. Med næsten ti års erfaring med softwareudvikling har Monidipa bidraget til forskellige sektorer inden for Amazon, herunder Video, Retail, Amazon Go og AWS SageMaker.
Satish Pasumarthi er softwareudvikler hos Amazon Web Services. Med flere års software engineering og en ML-baggrund elsker han at bygge bro mellem ML og systemer og brænder for at bygge systemer, der gør modeltræning i stor skala mulig. Han har arbejdet på projekter inden for en række forskellige domæner, herunder Machine Learning frameworks, modelbenchmarking, opbygning af hyperpod beta, der involverer et bredt sæt af AWS-tjenester. I sin fritid nyder Satish at spille badminton.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- PlatoHealth. Bioteknologiske og kliniske forsøgs intelligens. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/