Vi er glade for at kunne annoncere to nye funktioner i Amazon SageMaker Studio der vil fremskynde iterativ udvikling for maskinlæringsudøvere (ML): Local Mode og Docker-understøttelse. ML-modeludvikling involverer ofte langsomme iterationscyklusser, da udviklere skifter mellem kodning, træning og implementering. Hvert trin kræver, at man venter på, at fjernberegningsressourcer starter op, hvilket forsinker validering af implementeringer og får feedback på ændringer.
Med Local Mode kan udviklere nu træne og teste modeller, fejlfinde kode og validere ende-til-ende-pipelines direkte på deres SageMaker Studio-notebook-instans uden behov for at opbygge eksterne computerressourcer. Dette reducerer iterationscyklussen fra minutter ned til sekunder, hvilket øger udviklerproduktiviteten. Docker-understøttelse i SageMaker Studio-notebooks gør det muligt for udviklere uden besvær at bygge Docker-containere og få adgang til forudbyggede containere, hvilket giver et ensartet udviklingsmiljø på tværs af teamet og undgår tidskrævende opsætning og afhængighedsstyring.
Local Mode og Docker support tilbyder en strømlinet arbejdsgang til validering af kodeændringer og prototypemodeller ved hjælp af lokale containere, der kører på en SageMaker Studio notesbog
eksempel. I dette indlæg guider vi dig gennem opsætning af lokal tilstand i SageMaker Studio, kørsel af et prøvetræningsjob og implementering af modellen på en Amazon SageMaker endepunkt fra en SageMaker Studio notesbog.
SageMaker Studio lokal tilstand
SageMaker Studio introducerer Local Mode, der gør det muligt for dig at køre SageMaker træning, inferens, batch transformation og behandlingsjob direkte på din JupyterLab, Code Editor eller SageMaker Studio Classic notebook-instanser uden at kræve fjernberegningsressourcer. Fordelene ved at bruge lokal tilstand omfatter:
- Øjeblikkelig validering og test af arbejdsgange direkte i integrerede udviklingsmiljøer (IDE'er)
- Hurtigere iteration gennem lokale kørsler for mindre opgaver for at inspicere output og identificere problemer tidligt
- Forbedret udvikling og fejlfindingseffektivitet ved at eliminere ventetiden på fjerntræningsjob
- Øjeblikkelig feedback på kodeændringer, før du kører hele opgaver i skyen
Følgende figur illustrerer arbejdsgangen ved hjælp af lokal tilstand på SageMaker.
Indstil for at bruge lokal tilstand instance_type='local'
når du kører SageMaker Python SDK-job såsom træning og inferens. Dette vil køre dem på de forekomster, der bruges af dine SageMaker Studio IDE'er i stedet for at klargøre cloud-ressourcer.
Selvom visse funktioner såsom distribueret træning kun er tilgængelige i skyen, fjerner Local Mode behovet for at skifte kontekst for hurtige iterationer. Når du er klar til at drage fordel af SageMakers fulde kraft og skala, kan du problemfrit køre dit workflow i skyen.
Docker-understøttelse i SageMaker Studio
SageMaker Studio gør det nu også muligt at bygge og køre Docker-containere lokalt på din SageMaker Studio-notebook-instans. Denne nye funktion giver dig mulighed for at bygge og validere Docker-billeder i SageMaker Studio, før du bruger dem til SageMaker-træning og konklusioner.
Følgende diagram illustrerer Docker-orkestreringsarkitekturen på højt niveau i SageMaker Studio.
Med Docker-understøttelse i SageMaker Studio kan du:
- Byg Docker-containere med integrerede modeller og afhængigheder direkte i SageMaker Studio
- Eliminer behovet for eksterne Docker-byggeprocesser for at forenkle billedoprettelse
- Kør containere lokalt for at validere funktionalitet, før du implementerer modeller til produktion
- Genbrug lokale containere, når de implementeres til SageMaker til træning og hosting
Selvom nogle avancerede Docker-funktioner som multi-container og brugerdefinerede netværk ikke understøttes i skrivende stund, er kerneopbygnings- og kørselsfunktionaliteten tilgængelig for at accelerere udviklingen af containere til workflows med bring your own container (BYOC).
Forudsætninger
For at bruge lokal tilstand i SageMaker Studio-applikationer skal du opfylde følgende forudsætninger:
- Til at trække billeder fra Amazon Elastic Container Registry (Amazon ECR), den konto, der er vært for ECR-billedet, skal give adgangstilladelse til brugerens Identitets- og adgangsstyring (IAM) rolle. Domænets rolle skal også tillade Amazon ECR-adgang.
- For at aktivere lokal tilstand og docker-funktioner skal du indstille
EnableDockerAccess
parameter til sand for domænetsDockerSettings
ved hjælp af AWS kommandolinjegrænseflade (AWS CLI). Dette giver brugere i domænet mulighed for at bruge lokal tilstand og Docker-funktioner. Som standard er Local Mode og Docker deaktiveret i SageMaker Studio. Alle eksisterende SageMaker Studio-apps skal genstartes for at Docker-tjenesteopdateringen kan træde i kraft. Følgende er et eksempel på AWS CLI-kommando til opdatering af et SageMaker Studio-domæne:
- Du skal opdatere SageMaker IAM-rollen for at kunne push Docker-billeder til Amazon ECR:
Kør Python-filer i SageMaker Studio-rum ved hjælp af lokal tilstand
SageMaker Studio JupyterLab og Code Editor (baseret på Code-OSS, Visual Studio Code – Open Source), udvider SageMaker Studio, så du kan skrive, teste, fejlsøge og køre din analyse- og ML-kode ved hjælp af den populære letvægts-IDE. For flere detaljer om, hvordan du kommer i gang med SageMaker Studio IDE'er, se Boost produktiviteten på Amazon SageMaker Studio: Introduktion af JupyterLab Spaces og generative AI-værktøjer , Ny – Code Editor, baseret på Code-OSS VS Code Open Source nu tilgængelig i Amazon SageMaker Studio. Udfør følgende trin:
- Opret en ny terminal.
- Installer Docker CLI og Docker Compose plugin ved at følge instruktionerne i det følgende GitHub repo. Hvis kædede kommandoer mislykkes, skal du køre kommandoerne én ad gangen.
Du skal opdatere SageMaker SDK til den nyeste version.
- Kør
pip install sagemaker -Uq
i terminalen.
Kun for Code Editor skal du indstille Python-miljøet til at køre i den aktuelle terminal.
- I Code Editor, på File-menuen¸ vælg Indstillinger , Indstillinger.
- Søg efter og vælg Terminal: Udfør i Fil Dir.
- I Code Editor eller JupyterLab skal du åbne
scikit_learn_script_mode_local_training_and_serving
mappe og kørscikit_learn_script_mode_local_training_and_serving.py
fil.
Du kan køre scriptet ved at vælge Kør i Code Editor eller ved at bruge CLI i en JupyterLab-terminal. Du vil kunne se, hvordan modellen trænes lokalt. Derefter implementerer du modellen til et SageMaker-slutpunkt lokalt og beregner den gennemsnitlige kvadratiske fejl (RMSE
).
Simuler træning og inferens i SageMaker Studio Classic ved hjælp af lokal tilstand
Du kan også bruge en notesbog i SageMaker Studio Classic til at køre et mindre træningsjob på CIFAR10
ved hjælp af lokal tilstand, implementer modellen lokalt og udfør inferens.
Konfigurer din notesbog
For at konfigurere notesbogen skal du udføre følgende trin:
- Åbn SageMaker Studio Classic og klon følgende GitHub repo.
- Åbne
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- Til Billede, vælg
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
Bekræft, at din notesbog viser den korrekte forekomst og kernevalg.
- Åbn en terminal ved at vælge Start Terminal i det aktuelle SageMaker-billede.
- Installer Docker CLI og Docker Compose plugin ved at følge instruktionerne i det følgende GitHub repo.
Fordi du bruger Docker fra SageMaker Studio Classic, skal du fjerne sudo, når du kører kommandoer, fordi terminalen allerede kører under superbruger. For SageMaker Studio Classic afhænger installationskommandoerne af SageMaker Studio app image OS. For eksempel er DLC-baserede rammebilleder Ubuntu-baserede, hvor følgende instruktioner ville fungere. For et Debian-baseret billede som DataScience Images skal du dog følge instruktionerne i det følgende GitHub repo. Hvis kædede kommandoer mislykkes, skal du køre kommandoerne én ad gangen. Du bør se Docker-versionen vist.
- Lad terminalvinduet være åbent, gå tilbage til notesbogen, og start med at køre det celle for celle.
Sørg for at køre cellen med pip install -U sagemaker
så du bruger den seneste version af SageMaker Python SDK.
Lokal træning
Når du begynder at køre det lokale SageMaker træningsjob, vil du se følgende loglinjer:
Dette indikerer, at træningen kørte lokalt ved hjælp af Docker.
Vær tålmodig, mens pytorch-training:2.1-cpu-py310
Docker-billede er trukket. På grund af dens store størrelse (5.2 GB), kan det tage et par minutter.
Docker-billeder vil blive gemt i SageMaker Studio app-instansens rodvolumen, som ikke er tilgængelig for slutbrugere. Den eneste måde at få adgang til og interagere med Docker-billeder er via de eksponerede Docker API-operationer.
Fra et brugerfortrolighedssynspunkt får SageMaker Studio-platformen aldrig adgang til eller gemmer brugerspecifikke billeder.
Når træningen er afsluttet, vil du kunne se følgende succesloglinjer:
Lokal slutning
Udfør følgende trin:
- Implementer SageMaker-slutpunktet ved hjælp af SageMaker Local Mode.
Vær tålmodig, mens pytorch-inference:2.1-cpu-py310
Docker-billede er trukket. På grund af dens store størrelse (4.32 GB), kan det tage et par minutter.
- Kald SageMaker-slutpunktet udplaceret lokalt ved hjælp af testbillederne.
Du vil være i stand til at se de forudsagte klasser: frø, skib, bil og fly:
- Fordi SageMaker Local-slutpunktet stadig er oppe, skal du navigere tilbage til det åbne terminalvindue og liste de kørende containere:
docker ps
Du vil kunne se løbene pytorch-inference:2.1-cpu-py310
container, der understøtter SageMaker-endepunktet.
- For at lukke SageMaker lokale slutpunkt og stoppe den kørende container, fordi du kun kan køre ét lokalt slutpunkt ad gangen, skal du køre oprydningskoden.
- For at sikre dig, at Docker-containeren er nede, kan du navigere til det åbnede terminalvindue, køre docker ps og sørge for, at der ikke er nogen kørende containere.
- Hvis du ser en container køre, så løb
docker stop <CONTAINER_ID>
at stoppe det.
Tips til brug af SageMaker Local Mode
Hvis du bruger SageMaker for første gang, se Træn maskinlæringsmodeller. For at lære mere om implementering af modeller til slutning med SageMaker, se Implementer modeller til slutninger.
Husk følgende anbefalinger:
- Udskriv input- og outputfiler og -mapper for at forstå datasæt og modelindlæsning
- Brug 1-2 epoker og små datasæt til hurtig test
- Forinstaller afhængigheder i en Dockerfile for at optimere miljøopsætningen
- Isoler serialiseringskode i slutpunkter til fejlretning
Konfigurer Docker-installation som en livscykluskonfiguration
Du kan definere Docker-installationsprocessen som et Lifecycle Configuration (LCC) script for at forenkle opsætningen, hver gang et nyt SageMaker Studio-rum starter. LCC'er er scripts, som SageMaker kører under begivenheder som rumskabelse. Der henvises til jupyter lab, Kode Editor eller SageMaker Studio Classic LCC-opsætning (ved hjælp af docker installere cli som reference) for at lære mere.
Byg og test brugerdefinerede Docker-billeder i SageMaker Studio-rum
I dette trin installerer du Docker inde i JupyterLab (eller Code Editor) app-rummet og bruger Docker til at bygge, teste og udgive brugerdefinerede Docker-billeder med SageMaker Studio-rum. Rum bruges til at administrere lager- og ressourcebehovet for nogle SageMaker Studio-applikationer. Hvert mellemrum har et 1:1 forhold til en forekomst af en applikation. Hver understøttet applikation, der oprettes, får sin egen plads. For at lære mere om SageMaker-rum, se Boost produktiviteten på Amazon SageMaker Studio: Introduktion af JupyterLab Spaces og generative AI-værktøjer. Sørg for at sørge for en ny plads med mindst 30 GB lagerplads for at tillade tilstrækkelig lagerplads til Docker-billeder og artefakter.
Installer Docker i et rum
For at installere Docker CLI og Docker Compose plugin inde i et JupyterLab-rum skal du køre kommandoerne i følgende GitHub repo. SageMaker Studio understøtter kun Docker version 20.10.X.
Byg Docker-billeder
For at bekræfte, at Docker er installeret og fungerer i dit JupyterLab-rum, skal du køre følgende kode:
For at bygge et brugerdefineret Docker-billede inde i et JupyterLab (eller Code Editor)-rum skal du udføre følgende trin:
- Opret en tom Dockerfile:
touch Dockerfile
- Rediger Dockerfilen med følgende kommandoer, som opretter et simpelt flask-webserverbillede fra basispython:3.10.13-bullseye-billedet hostet på Docker-hub:
Den følgende kode viser indholdet af et eksempel på en kolbeapplikationsfil app.py
:
Derudover kan du opdatere reference Dockerfile-kommandoer til at inkludere pakker og artefakter efter eget valg.
- Byg et Docker-billede ved hjælp af referencen Dockerfile:
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
Medtag --network
sagemaker i din docker build-kommando, ellers vil bygningen mislykkes. Containere kan ikke køres i Docker-standardbroen eller tilpassede Docker-netværk. Containere køres i samme netværk som SageMaker Studio-applikationscontaineren. Brugere kan kun bruge sagemaker til netværksnavnet.
- Når din build er færdig, skal du validere, om billedet eksisterer. Tag bygningen igen som et ECR-billede og tryk. Hvis du støder på tilladelsesproblemer, skal du køre kommandoen aws ecr get-login-password... og prøve at køre Docker push/pull igen:
Test Docker-billeder
At have Docker installeret inde i et JupyterLab (eller Code Editor) SageMaker Studio-rum giver dig mulighed for at teste forudbyggede eller brugerdefinerede Docker-billeder som containere (eller containeriserede applikationer). I dette afsnit bruger vi docker run-kommandoen til at klargøre Docker-containere i et SageMaker Studio-rum til at teste containeriserede arbejdsbelastninger som REST-webtjenester og Python-scripts. Udfør følgende trin:
- Hvis testbilledet ikke findes, skal du køre docker pull for at trække billedet ind på din lokale maskine:
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- Hvis du støder på godkendelsesproblemer, skal du køre følgende kommandoer:
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Opret en container for at teste din arbejdsbyrde:
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
Dette opretter en ny containerinstans og kører applikationen defineret ved hjælp af Dockers ENTRYPOINT:
- For at teste, om dit webendepunkt er aktivt, skal du navigere til URL'en
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
Du bør se et JSON-svar svarende til følgende skærmbillede.
Ryd op
For at undgå at pådrage sig unødvendige gebyrer skal du slette de ressourcer, du oprettede, mens du kørte eksemplerne i dette indlæg:
- I dit SageMaker Studio-domæne skal du vælge Studio Classic i navigationsruden, og vælg derefter Stands.
- I dit SageMaker Studio-domæne skal du vælge jupyter lab or Kode Editor i navigationsruden, vælg din app, og vælg derefter Stands.
Konklusion
SageMaker Studio Local Mode og Docker-understøttelse giver udviklere mulighed for at bygge, teste og iterere på ML-implementeringer hurtigere uden at forlade deres arbejdsområde. Ved at give øjeblikkelig adgang til testmiljøer og -output optimerer disse funktioner arbejdsgange og forbedrer produktiviteten. Prøv SageMaker Studio Local Model og Docker-support ved hjælp af vores hurtig ombord funktion, som giver dig mulighed for at oprette et nyt domæne for enkeltbrugere inden for få minutter. Del dine tanker i kommentarfeltet!
Om forfatterne
Shweta Singh er Senior Product Manager i Amazon SageMaker Machine Learning (ML) platformteamet hos AWS, der leder SageMaker Python SDK. Hun har arbejdet i flere produktroller i Amazon i over 5 år. Hun har en Bachelor of Science grad i Computer Engineering og Masters of Science i Financial Engineering, begge fra New York University
Eitan Sela er en generativ AI og Machine Learning Specialist Solutions Architect fra AWS. Han arbejder med AWS-kunder for at yde vejledning og teknisk assistance, og hjælper dem med at bygge og drive Generative AI og Machine Learning-løsninger på AWS. I sin fritid nyder Eitan at jogge og læse de seneste maskinlæringsartikler.
Pranav Murthy er AI/ML Specialist Solutions Architect hos AWS. Han fokuserer på at hjælpe kunder med at opbygge, træne, implementere og migrere maskinlæring (ML) arbejdsbelastninger til SageMaker. Han har tidligere arbejdet i halvlederindustrien med at udvikle modeller for store computervision (CV) og naturlig sprogbehandling (NLP) for at forbedre halvlederprocesser ved hjælp af avancerede ML-teknikker. I sin fritid nyder han at spille skak og rejse. Du kan finde Pranav på LinkedIn.
Mufaddal Rohawala er softwareingeniør hos AWS. Han arbejder på SageMaker Python SDK-biblioteket for Amazon SageMaker. I sin fritid holder han af at rejse, udendørs aktiviteter og er fodboldfan.
- 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/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/