Vi er glade for å kunngjøre to nye funksjoner i Amazon SageMaker Studio som vil akselerere iterativ utvikling for maskinlæringsutøvere (ML): Local Mode og Docker-støtte. ML-modellutvikling involverer ofte langsomme iterasjonssykluser når utviklere bytter mellom koding, opplæring og distribusjon. Hvert trinn krever å vente på at eksterne databehandlingsressurser starter opp, noe som forsinker validering av implementeringer og tilbakemelding på endringer.
Med lokal modus kan utviklere nå trene og teste modeller, feilsøke kode og validere ende-til-ende-rørledninger direkte på SageMaker Studio-notebook-forekomsten uten behov for å spinne opp eksterne dataressurser. Dette reduserer iterasjonssyklusen fra minutter ned til sekunder, og øker utviklerproduktiviteten. Docker-støtte i SageMaker Studio-notebooks gjør det mulig for utviklere å enkelt bygge Docker-containere og få tilgang til forhåndsbygde containere, noe som gir et konsistent utviklingsmiljø på tvers av teamet og unngår tidkrevende oppsett og avhengighetsadministrasjon.
Lokal modus og Docker-støtte tilbyr en strømlinjeformet arbeidsflyt for validering av kodeendringer og prototyping av modeller ved å bruke lokale beholdere som kjører på en SageMaker Studio-notisbok
forekomst. I dette innlegget veileder vi deg gjennom å sette opp lokal modus i SageMaker Studio, kjøre en prøveopplæringsjobb og distribuere modellen på en Amazon SageMaker endepunkt fra en SageMaker Studio-notisbok.
SageMaker Studio lokal modus
SageMaker Studio introduserer lokal modus, som lar deg kjøre SageMaker-trenings-, inferens-, batchtransformerings- og prosesseringsjobber direkte på JupyterLab, Code Editor eller SageMaker Studio Classic bærbare instanser uten å kreve eksterne dataressurser. Fordeler med å bruke lokal modus inkluderer:
- Øyeblikkelig validering og testing av arbeidsflyter rett innenfor integrerte utviklingsmiljøer (IDE)
- Raskere iterasjon gjennom lokale kjøringer for mindre skalajobber for å inspisere utdata og identifisere problemer tidlig
- Forbedret utvikling og feilsøkingseffektivitet ved å eliminere ventetiden på fjernopplæringsjobber
- Umiddelbar tilbakemelding på kodeendringer før du kjører hele jobber i skyen
Følgende figur illustrerer arbeidsflyten ved å bruke lokal modus på SageMaker.
For å bruke lokal modus, still inn instance_type='local'
når du kjører SageMaker Python SDK-jobber som trening og inferens. Dette vil kjøre dem på forekomstene som brukes av SageMaker Studio IDE-ene i stedet for å klargjøre skyressurser.
Selv om visse funksjoner som distribuert opplæring bare er tilgjengelig i skyen, fjerner lokal modus behovet for å bytte kontekst for raske iterasjoner. Når du er klar til å dra nytte av den fulle kraften og skalaen til SageMaker, kan du sømløst kjøre arbeidsflyten din i skyen.
Docker-støtte i SageMaker Studio
SageMaker Studio gjør det nå også mulig å bygge og kjøre Docker-beholdere lokalt på SageMaker Studio-notebook-forekomsten. Denne nye funksjonen lar deg bygge og validere Docker-bilder i SageMaker Studio før du bruker dem til SageMaker-trening og slutninger.
Følgende diagram illustrerer Docker-orkestreringsarkitekturen på høyt nivå i SageMaker Studio.
Med Docker-støtte i SageMaker Studio kan du:
- Bygg Docker-containere med integrerte modeller og avhengigheter direkte i SageMaker Studio
- Eliminer behovet for eksterne Docker byggeprosesser for å forenkle bildeoppretting
- Kjør containere lokalt for å validere funksjonalitet før du distribuerer modeller til produksjon
- Gjenbruk lokale containere når du distribuerer til SageMaker for opplæring og hosting
Selv om noen avanserte Docker-funksjoner som multi-container og tilpassede nettverk ikke støttes når dette skrives, er kjernebyggings- og kjørefunksjonaliteten tilgjengelig for å akselerere utvikling av containere for arbeidsflyter med din egen container (BYOC).
Forutsetninger
For å bruke lokal modus i SageMaker Studio-applikasjoner, må du fullføre følgende forutsetninger:
- For å hente bilder fra Amazon Elastic Container Registry (Amazon ECR), kontoen som er vert for ECR-bildet må gi tilgangstillatelse til brukerens Identitets- og tilgangsstyring (IAM) rolle. Domenets rolle må også tillate Amazon ECR-tilgang.
- For å aktivere lokal modus og docker-funksjoner, må du angi
EnableDockerAccess
parameteren til sann for domenetsDockerSettings
bruker AWS kommandolinjegrensesnitt (AWS CLI). Dette lar brukere i domenet bruke lokal modus og Docker-funksjoner. Som standard er Local Mode og Docker deaktivert i SageMaker Studio. Eventuelle eksisterende SageMaker Studio-apper må startes på nytt for at Docker-tjenesteoppdateringen skal tre i kraft. Følgende er et eksempel på AWS CLI-kommando for å oppdatere et SageMaker Studio-domene:
- Du må oppdatere SageMaker IAM-rollen for å kunne push Docker-bilder til Amazon ECR:
Kjør Python-filer i SageMaker Studio-rom med lokal modus
SageMaker Studio JupyterLab og Code Editor (basert på Code-OSS, Visual Studio Code – åpen kildekode), utvider SageMaker Studio slik at du kan skrive, teste, feilsøke og kjøre analyse- og ML-koden ved hjelp av den populære lette IDE. For mer informasjon om hvordan du kommer i gang med SageMaker Studio IDE-er, se Øk produktiviteten på Amazon SageMaker Studio: Vi introduserer JupyterLab Spaces og generative AI-verktøy og Ny – Code Editor, basert på Code-OSS VS Code Open Source nå tilgjengelig i Amazon SageMaker Studio. Fullfør følgende trinn:
- Opprett en ny terminal.
- Installer Plugin-modulen Docker CLI og Docker Compose ved å følge instruksjonene nedenfor GitHub repo. Hvis kjedede kommandoer mislykkes, kjør kommandoene én om gangen.
Du må oppdatere SageMaker SDK til den nyeste versjonen.
- Kjør
pip install sagemaker -Uq
i terminalen.
Bare for koderedigering må du sette Python-miljøet til å kjøre i gjeldende terminal.
- I Code Editor, på Fil-menyen¸ velg Preferanser og innstillinger.
- Søk etter og velg Terminal: Kjør i File Dir.
- I Code Editor eller JupyterLab åpner du
scikit_learn_script_mode_local_training_and_serving
mappen og kjørscikit_learn_script_mode_local_training_and_serving.py
filen.
Du kan kjøre skriptet ved å velge Kjør i Code Editor eller ved å bruke CLI i en JupyterLab-terminal. Du vil kunne se hvordan modellen trenes lokalt. Deretter distribuerer du modellen til et SageMaker-endepunkt lokalt, og beregner rotmiddelkvadratfeilen (RMSE
).
Simuler trening og slutninger i SageMaker Studio Classic ved å bruke lokal modus
Du kan også bruke en notatbok i SageMaker Studio Classic til å kjøre en treningsjobb i liten skala CIFAR10
ved å bruke lokal modus, distribuer modellen lokalt og utfør inferens.
Sett opp notatboken
For å konfigurere den bærbare datamaskinen, fullfør følgende trinn:
- Åpne SageMaker Studio Classic og klon følgende GitHub repo.
- Åpne
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- Til Bilde, velg
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
Bekreft at notatboken viser riktig forekomst og kjernevalg.
- Åpne en terminal ved å velge Start Terminal i det gjeldende SageMaker-bildet.
- Installer Plugin-modulen Docker CLI og Docker Compose ved å følge instruksjonene nedenfor GitHub repo.
Fordi du bruker Docker fra SageMaker Studio Classic, fjern sudo når du kjører kommandoer fordi terminalen allerede kjører under superbruker. For SageMaker Studio Classic avhenger installasjonskommandoene av SageMaker Studio-appbilde-operativsystemet. For eksempel er DLC-baserte rammeverksbilder Ubuntu-baserte, der følgende instruksjoner vil fungere. For et Debian-basert bilde som DataScience Images, må du imidlertid følge instruksjonene nedenfor GitHub repo. Hvis kjedede kommandoer mislykkes, kjør kommandoene én om gangen. Du bør se Docker-versjonen vises.
- La terminalvinduet være åpent, gå tilbake til notatboken og begynn å kjøre den celle for celle.
Sørg for å kjøre cellen med pip install -U sagemaker
så du bruker den nyeste versjonen av SageMaker Python SDK.
Lokal trening
Når du begynner å kjøre den lokale SageMaker-treningsjobben, vil du se følgende logglinjer:
Dette indikerer at treningen kjørte lokalt ved hjelp av Docker.
Vær tålmodig mens pytorch-training:2.1-cpu-py310
Docker-bilde er trukket. På grunn av den store størrelsen (5.2 GB), kan det ta noen minutter.
Docker-bilder vil bli lagret i SageMaker Studio-appens rotvolum, som ikke er tilgjengelig for sluttbrukere. Den eneste måten å få tilgang til og samhandle med Docker-bilder er via de eksponerte Docker API-operasjonene.
Fra et brukerkonfidensialitetssynspunkt har SageMaker Studio-plattformen aldri tilgang til eller lagrer brukerspesifikke bilder.
Når opplæringen er fullført, vil du kunne se følgende suksesslogglinjer:
Lokal slutning
Fullfør følgende trinn:
- Distribuer SageMaker-endepunktet ved å bruke SageMaker Local Mode.
Vær tålmodig mens pytorch-inference:2.1-cpu-py310
Docker-bilde er trukket. På grunn av den store størrelsen (4.32 GB), kan det ta noen minutter.
- Påkall SageMaker-endepunktet som er distribuert lokalt ved å bruke testbildene.
Du vil kunne se de forutsagte klassene: frosk, skip, bil og fly:
- Fordi SageMaker Local-endepunktet fortsatt er oppe, naviger tilbake til det åpne terminalvinduet og lister opp de kjørende beholderne:
docker ps
Du vil kunne se løpingen pytorch-inference:2.1-cpu-py310
beholder som støtter SageMaker-endepunktet.
- For å slå av SageMaker lokale endepunkt og stoppe den kjørende beholderen, fordi du bare kan kjøre ett lokalt endepunkt om gangen, kjør oppryddingskoden.
- For å være sikker på at Docker-beholderen er nede, kan du navigere til det åpnede terminalvinduet, kjøre docker ps og sørge for at det ikke er noen kjørende beholdere.
- Hvis du ser en container kjører, løp
docker stop <CONTAINER_ID>
å stoppe det.
Tips for bruk av SageMaker Local Mode
Hvis du bruker SageMaker for første gang, se Trene maskinlæringsmodeller. For å lære mer om distribusjon av modeller for slutning med SageMaker, se Distribuer modeller for slutninger.
Husk følgende anbefalinger:
- Skriv ut inn- og utdatafiler og mapper for å forstå datasett og modelllasting
- Bruk 1–2 epoker og små datasett for rask testing
- Forhåndsinstaller avhengigheter i en Dockerfile for å optimalisere miljøoppsettet
- Isoler serialiseringskode i endepunkter for feilsøking
Konfigurer Docker-installasjon som en livssykluskonfigurasjon
Du kan definere Docker-installasjonsprosessen som et Lifecycle Configuration (LCC)-skript for å forenkle oppsettet hver gang en ny SageMaker Studio-plass starter. LCC-er er skript som SageMaker kjører under hendelser som romskaping. Referere til jupyter lab, Kodeditoreller SageMaker Studio Classic LCC-oppsett (ved hjelp av docker install cli som referanse) for å lære mer.
Bygg og test tilpassede Docker-bilder i SageMaker Studio-rom
I dette trinnet installerer du Docker inne i JupyterLab (eller Code Editor) appplass og bruker Docker til å bygge, teste og publisere tilpassede Docker-bilder med SageMaker Studio-rom. Plasser brukes til å administrere lagrings- og ressursbehovet til enkelte SageMaker Studio-applikasjoner. Hver plass har et 1:1 forhold til en forekomst av en applikasjon. Hver støttet applikasjon som opprettes får sin egen plass. For å lære mer om SageMaker-rom, se Øk produktiviteten på Amazon SageMaker Studio: Vi introduserer JupyterLab Spaces og generative AI-verktøy. Sørg for at du sørger for en ny plass med minst 30 GB lagringsplass for å tillate tilstrekkelig lagringsplass for Docker-bilder og artefakter.
Installer Docker inne i et mellomrom
For å installere pluginene Docker CLI og Docker Compose i et JupyterLab-rom, kjør kommandoene i følgende GitHub repo. SageMaker Studio støtter kun Docker versjon 20.10.X.
Bygg Docker-bilder
For å bekrefte at Docker er installert og fungerer inne i JupyterLab-plassen din, kjør følgende kode:
For å bygge et tilpasset Docker-bilde i et JupyterLab (eller Code Editor)-rom, fullfør følgende trinn:
- Opprett en tom dockerfil:
touch Dockerfile
- Rediger Dockerfilen med følgende kommandoer, som lager et enkelt flaskenettserverbilde fra basepython:3.10.13-bullseye-bildet som er vert på Docker hub:
Følgende kode viser innholdet i et eksempel på en flaskeapplikasjonsfil app.py
:
I tillegg kan du oppdatere referanse Dockerfile-kommandoene til å inkludere pakker og artefakter etter eget valg.
- Bygg et Docker-bilde ved å bruke referansen Dockerfile:
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
inkluderer --network
sagemaker i docker build-kommandoen din, ellers vil byggingen mislykkes. Beholdere kan ikke kjøres i Docker-standardbroen eller tilpassede Docker-nettverk. Beholdere kjøres i samme nettverk som SageMaker Studio-applikasjonsbeholderen. Brukere kan bare bruke sagemaker for nettverksnavnet.
- Når bygget er fullført, valider om bildet eksisterer. Merk bygget på nytt som et ECR-bilde og trykk. Hvis du får tillatelsesproblemer, kjør kommandoen aws ecr get-login-password... og prøv å kjøre Docker push/pull på nytt:
Test Docker-bilder
Å ha Docker installert inne i en JupyterLab (eller Code Editor) SageMaker Studio-plass lar deg teste forhåndsbygde eller tilpassede Docker-bilder som containere (eller containeriserte applikasjoner). I denne delen bruker vi docker run-kommandoen til å klargjøre Docker-beholdere inne i et SageMaker Studio-rom for å teste containeriserte arbeidsbelastninger som REST-webtjenester og Python-skript. Fullfør følgende trinn:
- Hvis testbildet ikke eksisterer, kjør docker pull for å trekke bildet inn på din lokale maskin:
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- Hvis du støter på autentiseringsproblemer, kjør følgende kommandoer:
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Opprett en beholder for å teste arbeidsmengden din:
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
Dette spinner opp en ny containerforekomst og kjører applikasjonen som er definert ved hjelp av Dockers ENTRYPOINT:
- For å teste om nettendepunktet er aktivt, naviger til URL-en
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
Du bør se et JSON-svar som ligner på følgende skjermbilde.
Rydd opp
For å unngå unødvendige kostnader, slett ressursene du opprettet mens du kjørte eksemplene i dette innlegget:
- I ditt SageMaker Studio-domene velger du Ettromsleilighet Classic i navigasjonsruten, og velg deretter Stopp.
- I ditt SageMaker Studio-domene velger du jupyter lab or Kodeditor i navigasjonsruten, velg appen din, og velg deretter Stopp.
konklusjonen
SageMaker Studio Local Mode og Docker-støtte gir utviklere mulighet til å bygge, teste og iterere på ML-implementeringer raskere uten å forlate arbeidsområdet. Ved å gi umiddelbar tilgang til testmiljøer og utdata, optimerer disse egenskapene arbeidsflyter og forbedrer produktiviteten. Prøv SageMaker Studio Local Model og Docker-støtte ved å bruke vår rask funksjon ombord, som lar deg spinne opp et nytt domene for enkeltbrukere i løpet av minutter. Del dine tanker i kommentarfeltet!
Om forfatterne
Shweta Singh er senior produktsjef i Amazon SageMaker Machine Learning (ML)-plattformteamet hos AWS, og leder SageMaker Python SDK. Hun har jobbet i flere produktroller i Amazon i over 5 år. Hun har en bachelorgrad i datateknikk og mastergrad i finansteknikk, begge fra New York University
Eitan Sela er en generativ AI og maskinlæringsspesialistløsningsarkitekt for AWS. Han jobber med AWS-kunder for å gi veiledning og teknisk assistanse, og hjelpe dem med å bygge og drifte Generative AI og Machine Learning-løsninger på AWS. På fritiden liker Eitan å jogge og lese de siste maskinlæringsartiklene.
Pranav Murthy er AI/ML Specialist Solutions Architect hos AWS. Han fokuserer på å hjelpe kunder med å bygge, trene, distribuere og migrere maskinlæring (ML) arbeidsbelastninger til SageMaker. Han har tidligere jobbet i halvlederindustrien med å utvikle modeller for store datasyn (CV) og naturlig språkbehandling (NLP) for å forbedre halvlederprosesser ved å bruke avanserte ML-teknikker. På fritiden liker han å spille sjakk og reise. Du kan finne Pranav på Linkedin.
Mufaddal Rohawala er programvareingeniør ved AWS. Han jobber på SageMaker Python SDK-biblioteket for Amazon SageMaker. På fritiden liker han å reise, utendørsaktiviteter og er en fotballfan.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk deg selv. Tilgang her.
- PlatoAiStream. Web3 Intelligence. Kunnskap forsterket. Tilgang her.
- PlatoESG. Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- PlatoHelse. Bioteknologisk og klinisk etterretning. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/