Zephyrnet-logo

Bruk AWS CDK til å distribuere livssykluskonfigurasjoner for Amazon SageMaker Studio | Amazon Web Services

Dato:

Amazon SageMaker Studio er det første fullt integrerte utviklingsmiljøet (IDE) for maskinlæring (ML). Studio tilbyr et enkelt nettbasert visuelt grensesnitt der du kan utføre alle ML-utviklingstrinn som kreves for å forberede data, samt bygge, trene og distribuere modeller. Livssykluskonfigurasjoner er shell-skript som utløses av Studio-livssyklushendelser, for eksempel å starte en ny Studio-notatbok. Du kan bruke livssykluskonfigurasjoner for å automatisere tilpasning for Studio-miljøet ditt. Denne tilpasningen inkluderer installasjon av tilpassede pakker, konfigurering av utvidelser for bærbare datamaskiner, forhåndsinnlasting av datasett og oppsett av kildekodelagre. Som administrator for et Studio-domene kan det for eksempel være lurt spar kostnader ved å la bærbare apper slås av automatisk etter lange perioder med inaktivitet.

De AWS skyutviklingssett (AWS CDK) er et rammeverk for å definere skyinfrastruktur gjennom kode og klargjøre den gjennom AWS skyformasjon stabler. En stabel er en samling av AWS-ressurser som kan oppdateres, flyttes eller slettes programmatisk. AWS CDK konstruerer er byggesteinene til AWS CDK-applikasjoner, som representerer planen for å definere skyarkitekturer.

I dette innlegget viser vi hvordan du bruker AWS CDK til å sette opp Studio, bruke Studio livssykluskonfigurasjoner og aktivere tilgangen for dataforskere og utviklere i organisasjonen din.

Løsningsoversikt

Modulariteten til livssykluskonfigurasjoner lar deg bruke dem på alle brukere i et domene eller på spesifikke brukere. På denne måten kan du sette opp livssykluskonfigurasjoner og referere til dem i Studio kjernegateway eller Jupyter-server raskt og konsekvent. Kjernen gateway er inngangspunktet for å samhandle med en notebook-forekomst, mens Jupyter-serveren representerer Studio-forekomsten. Dette gjør at du kan bruke DevOps beste praksis og møte standarder for sikkerhet, samsvar og konfigurasjon på tvers av alle AWS-kontoer og -regioner. For dette innlegget bruker vi Python som hovedspråk, men koden kan enkelt endres til andre AWS CDK-støttede språk. For mer informasjon, se Arbeider med AWS CDK.

Forutsetninger

For å komme i gang, sørg for at du har følgende forutsetninger:

Klon GitHub-depotet

Først klone de GitHub repository.

Når du kloner depotet, kan du observere at vi har et klassisk AWS CDK-prosjekt med katalogen studio-lifecycle-config-construct, som inneholder konstruksjonen og ressursene som kreves for å lage livssykluskonfigurasjoner.

AWS CDK konstruerer

Filen vi ønsker å inspisere er aws_sagemaker_lifecycle.py. Denne filen inneholder SageMakerStudioLifeCycleConfig konstruksjon vi bruker for å sette opp og lage livssykluskonfigurasjoner.

De SageMakerStudioLifeCycleConfig konstruksjon gir rammeverket for å bygge livssykluskonfigurasjoner ved hjelp av en tilpasset AWS Lambda funksjon og skallkode lest inn fra en fil. Konstruksjonen inneholder følgende parametere:

  • ID – Navnet på det aktuelle prosjektet.
  • studio_livssyklus_innhold - Det base64 kodet innhold.
  • studio_lifecycle_tags – Etiketter du tildeler for å organisere Amazon-ressurser. De legges inn som nøkkelverdi-par og er valgfrie for denne konfigurasjonen.
  • studio_lifecycle_config_app_type - JupyterServer er for den unike serveren selv, og KernelGateway app tilsvarer en kjørende SageMaker-bildebeholder.

For mer informasjon om Studio-notebook-arkitekturen, se Dykk dypt inn i Amazon SageMaker Studio Notebooks-arkitekturen.

Følgende er en kodebit av Studio-livssykluskonfigurasjonen (aws_sagemaker_lifecycle.py):

class SageMakerStudioLifeCycleConfig(Construct): def __init__( self, scope: Construct, id: str, studio_lifecycle_config_content: str, studio_lifecycle_config_app_type: str, studio_lifecycle_config_name: str, studio_lifecycle_config_arn: str, **kwargs, ): super().__init__(scope, id) self.studio_lifecycle_content = studio_lifecycle_content self.studio_lifecycle_config_name = studio_lifecycle_config_name self.studio_lifecycle_config_app_type = studio_lifecycle_config_app_type lifecycle_config_role = iam.Role( self, "SmStudioLifeCycleConfigRole", assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"), ) lifecycle_config_role.add_to_policy( iam.PolicyStatement( resources=[f"arn:aws:sagemaker:{scope.region}:{scope.account}:*"], actions=[ "sagemaker:CreateStudioLifecycleConfig", "sagemaker:ListUserProfiles", "sagemaker:UpdateUserProfile", "sagemaker:DeleteStudioLifecycleConfig", "sagemaker:AddTags", ], ) ) create_lifecycle_script_lambda = lambda_.Function( self, "CreateLifeCycleConfigLambda", runtime=lambda_.Runtime.PYTHON_3_8, timeout=Duration.minutes(3), code=lambda_.Code.from_asset( "../mlsl-cdk-constructs-lib/src/studiolifecycleconfigconstruct" ), handler="onEvent.handler", role=lifecycle_config_role, environment={ "studio_lifecycle_content": self.studio_lifecycle_content, "studio_lifecycle_config_name": self.studio_lifecycle_config_name, "studio_lifecycle_config_app_type": self.studio_lifecycle_config_app_type, }, ) config_custom_resource_provider = custom_resources.Provider( self, "ConfigCustomResourceProvider", on_event_handler=create_lifecycle_script_lambda, ) studio_lifecyle_config_custom_resource = CustomResource( self, "LifeCycleCustomResource", service_token=config_custom_resource_provider.service_token, ) self. studio_lifecycle_config_arn = studio_lifecycle_config_custom_resource.get_att("StudioLifecycleConfigArn")

Etter at du har importert og installert konstruksjonen, kan du bruke den. Følgende kodebit viser hvordan du oppretter en livssykluskonfigurasjon ved å bruke konstruksjonen i en stabel enten i app.py eller en annen konstruksjon:

my_studio_lifecycle_config = SageMakerStudioLifeCycleConfig( self, "MLSLBlogPost", studio_lifecycle_config_content="base64content", studio_lifecycle_config_name="BlogPostTest", studio_lifecycle_config_app_type="JupyterServer", )

Distribuer AWS CDK-konstruksjoner

For å distribuere din AWS CDK-stabel, kjør følgende kommandoer på stedet der du klonet depotet.

Kommandoen kan være python istedenfor python3 avhengig av banekonfigurasjonene dine.

  1. Lag et virtuelt miljø:
    1. For macOS/Linux, bruk python3 -m venv .cdk-venv.
    2. For Windows, bruk python3 -m venv .cdk-venv.
  2. Aktiver det virtuelle miljøet:
    1. For macOS/Linux, bruk source .cdk-venvbinactivate.
    2. For Windows, bruk .cdk-venv/Scripts/activate.bat.
    3. For PowerShell, bruk .cdk-venv/Scripts/activate.ps1.
  3. Installer de nødvendige avhengighetene:
    1. pip install -r requirements.txt
    2. pip install -r requirements-dev.txt
  4. På dette tidspunktet kan du valgfritt syntetisere CloudFormation-malen for denne koden:
  5. Distribuer løsningen med følgende kommandoer:
    1. aws configure
    2. cdk bootstrap
    3. cdk deploy

Når stabelen er vellykket distribuert, bør du kunne se stabelen på CloudFormation-konsollen.

Du vil også kunne se livssykluskonfigurasjonen på SageMaker-konsollen.

Velg livssykluskonfigurasjonen for å se skallkoden som kjører, samt eventuelle tagger du har tildelt.

Fest Studio-livssykluskonfigurasjonen

Det er flere måter å koble til en livssykluskonfigurasjon. I denne delen presenterer vi to metoder: bruk av AWS-administrasjonskonsoll, og programmatisk ved å bruke infrastrukturen som tilbys.

Fest livssykluskonfigurasjonen ved hjelp av konsollen

For å bruke konsollen, fullfør følgende trinn:

  1. Velg på SageMaker-konsollen Domener i navigasjonsruten.
  2. Velg domenenavnet du bruker og gjeldende brukerprofil, og velg deretter Rediger.
  3. Velg livssykluskonfigurasjonen du vil bruke og velg Fest.

Herfra kan du også angi det som standard.

Fest livssykluskonfigurasjonen programmatisk

Du kan også hente ARN-en til Studio-livssykluskonfigurasjonen opprettet av konstruksjonen og koble den til Studio-konstruksjonen programmatisk. Følgende kode viser livssykluskonfigurasjonen ARN som sendes til en Studio-konstruksjon:

default_user_settings=sagemaker.CfnDomain.UserSettingsProperty( execution_role=self.sagemaker_role.role_arn, jupyter_server_app_settings=sagemaker.CfnDomain.JupyterServerAppSettingsProperty( default_resource_spec=sagemaker.CfnDomain.ResourceSpecProperty( instance_type="system", lifecycle_config_arn = my_studio_lifecycle_config.studio_lifeycycle_config_arn ) )

Rydd opp

Fullfør trinnene i denne delen for å rydde opp i ressursene dine.

Slett Studio-livssykluskonfigurasjonen

For å slette livssykluskonfigurasjonen, fullfør følgende trinn:

  1. Velg på SageMaker-konsollen Konfigurasjoner av studiolivssyklus i navigasjonsruten.
  2. Velg livssykluskonfigurasjonen, og velg deretter Delete.

Slett AWS CDK-stabelen

Når du er ferdig med ressursene du opprettet, kan du ødelegge AWS CDK-stakken ved å kjøre følgende kommando på stedet der du klonet depotet:

cdk destroy

Når du blir bedt om å bekrefte slettingen av stabelen, skriv inn yes.

Du kan også slette stabelen på AWS CloudFormation-konsollen med følgende trinn:

  1. Velg på AWS CloudFormation-konsollen Stabler i navigasjonsruten.
  2. Velg stabelen du vil slette.
  3. Velg i stabeldetaljruten Delete.
  4. Velg Slett stabel når du blir bedt om det.

Hvis du får feil, kan det hende du må slette noen ressurser manuelt, avhengig av kontokonfigurasjonen.

konklusjonen

I dette innlegget diskuterte vi hvordan Studio fungerer som en IDE for ML-arbeidsbelastninger. Studio tilbyr livssykluskonfigurasjonsstøtte, som lar deg sette opp tilpassede shell-skript for å utføre automatiserte oppgaver, eller sette opp utviklingsmiljøer ved lansering. Vi brukte AWS CDK-konstruksjoner for å bygge infrastrukturen for den tilpassede ressurs- og livssykluskonfigurasjonen. Konstruksjoner syntetiseres til CloudFormation-stabler som deretter distribueres for å lage det egendefinerte ressurs- og livssyklusskriptet som brukes i Studio og notebookkjernen.

For mer informasjon, besøk Amazon SageMaker Studio.


Om forfatterne

Cory Hairston er programvareingeniør med Amazon ML Solutions Lab. Han jobber for tiden med å tilby gjenbrukbare programvareløsninger.

Alex Chirayath er senior maskinlæringsingeniør ved Amazon ML Solutions Lab. Han leder team av dataforskere og ingeniører for å bygge AI-applikasjoner for å møte forretningsbehov.

Gouri Pandeshwar er ingeniørsjef ved Amazon ML Solutions Lab. Han og teamet hans av ingeniører jobber med å bygge gjenbrukbare løsninger og rammeverk som hjelper til med å akselerere bruken av AWS AI/ML-tjenester for kunders forretningsbruk.

spot_img

Siste etterretning

spot_img