We zijn verheugd om twee nieuwe mogelijkheden aan te kondigen in Amazon SageMaker Studio dat de iteratieve ontwikkeling voor machine learning (ML)-beoefenaars zal versnellen: ondersteuning voor lokale modus en Docker. Bij de ontwikkeling van ML-modellen zijn vaak langzame iteratiecycli nodig, omdat ontwikkelaars schakelen tussen codering, training en implementatie. Bij elke stap moet u wachten tot externe computerbronnen zijn opgestart, waardoor het valideren van implementaties en het krijgen van feedback over wijzigingen wordt vertraagd.
Met de lokale modus kunnen ontwikkelaars nu modellen trainen en testen, code debuggen en end-to-end pipelines valideren, rechtstreeks op hun SageMaker Studio-notebookinstantie, zonder dat ze externe computerbronnen hoeven aan te zetten. Dit verkort de iteratiecyclus van minuten tot seconden, waardoor de productiviteit van ontwikkelaars wordt verhoogd. Docker-ondersteuning in SageMaker Studio-notebooks stelt ontwikkelaars in staat moeiteloos Docker-containers te bouwen en toegang te krijgen tot vooraf gebouwde containers, waardoor een consistente ontwikkelomgeving voor het hele team wordt geboden en tijdrovend installatie- en afhankelijkheidsbeheer wordt vermeden.
Lokale modus en Docker-ondersteuning bieden een gestroomlijnde workflow voor het valideren van codewijzigingen en het maken van prototypes met behulp van lokale containers die op een SageMaker Studio-notebook draaien
voorbeeld. In dit bericht begeleiden we u bij het instellen van de lokale modus in SageMaker Studio, het uitvoeren van een voorbeeldtrainingstaak en het implementeren van het model op een Amazon Sage Maker eindpunt van een SageMaker Studio-notebook.
SageMaker Studio lokale modus
SageMaker Studio introduceert de lokale modus, waardoor u SageMaker-trainings-, inferentie-, batchtransformatie- en verwerkingstaken rechtstreeks op uw JupyterLab-, Code Editor- of SageMaker Studio Classic-notebookinstanties kunt uitvoeren zonder dat u externe computerbronnen nodig heeft. Voordelen van het gebruik van de lokale modus zijn onder meer:
- Directe validatie en testen van workflows binnen geïntegreerde ontwikkelomgevingen (IDE's)
- Snellere iteratie door lokale runs voor kleinschaligere taken om de output te inspecteren en problemen vroegtijdig te identificeren
- Verbeterde ontwikkelings- en foutopsporingsefficiëntie door het wachten op trainingstaken op afstand te elimineren
- Onmiddellijke feedback over codewijzigingen voordat volledige taken in de cloud worden uitgevoerd
De volgende afbeelding illustreert de workflow met behulp van de lokale modus op SageMaker.
Om de lokale modus te gebruiken, stelt u in instance_type='local'
bij het uitvoeren van SageMaker Python SDK-taken zoals training en gevolgtrekking. Hierdoor worden ze uitgevoerd op de instanties die worden gebruikt door uw SageMaker Studio IDE's in plaats van dat er cloudbronnen worden ingericht.
Hoewel bepaalde mogelijkheden, zoals gedistribueerde training, alleen beschikbaar zijn in de cloud, elimineert de Lokale modus de noodzaak om van context te wisselen voor snelle iteraties. Wanneer u klaar bent om te profiteren van de volledige kracht en schaal van SageMaker, kunt u uw workflow naadloos in de cloud uitvoeren.
Docker-ondersteuning in SageMaker Studio
SageMaker Studio maakt het nu ook mogelijk Docker-containers lokaal te bouwen en uit te voeren op uw SageMaker Studio-notebookinstantie. Met deze nieuwe functie kunt u Docker-images in SageMaker Studio bouwen en valideren voordat u ze gebruikt voor SageMaker-training en -inferentie.
Het volgende diagram illustreert de Docker-orkestratiearchitectuur op hoog niveau binnen SageMaker Studio.
Met Docker-ondersteuning in SageMaker Studio kunt u:
- Bouw Docker-containers met geïntegreerde modellen en afhankelijkheden rechtstreeks binnen SageMaker Studio
- Elimineer de noodzaak voor externe Docker-bouwprocessen om het maken van afbeeldingen te vereenvoudigen
- Voer containers lokaal uit om de functionaliteit te valideren voordat u modellen in productie implementeert
- Hergebruik lokale containers bij implementatie in SageMaker voor training en hosting
Hoewel sommige geavanceerde Docker-mogelijkheden, zoals multi-container- en aangepaste netwerken, op het moment van schrijven niet worden ondersteund, is de kernfunctionaliteit voor bouwen en uitvoeren beschikbaar om het ontwikkelen van containers voor BYOC-workflows (Bring Your Own Container) te versnellen.
Voorwaarden
Om de lokale modus in SageMaker Studio-toepassingen te gebruiken, moet u aan de volgende vereisten voldoen:
- Voor het ophalen van afbeeldingen uit Amazon Elastic Container-register (Amazon ECR), moet het account dat de ECR-afbeelding host, toegangsrechten verlenen aan die van de gebruiker Identity en Access Management (IAM) rol. De rol van het domein moet ook Amazon ECR-toegang toestaan.
- Om de lokale modus en Docker-mogelijkheden in te schakelen, moet u de
EnableDockerAccess
parameter op true voor het domeinDockerSettings
met de AWS-opdrachtregelinterface (AWS CLI). Hierdoor kunnen gebruikers in het domein de functies van de lokale modus en Docker gebruiken. Standaard zijn de lokale modus en Docker uitgeschakeld in SageMaker Studio. Alle bestaande SageMaker Studio-apps moeten opnieuw worden opgestart om de Docker-service-update van kracht te laten worden. Het volgende is een voorbeeld van een AWS CLI-opdracht voor het bijwerken van een SageMaker Studio-domein:
- Om dit te kunnen doen, moet u de IAM-rol van SageMaker bijwerken push Docker-afbeeldingen naar Amazon ECR:
Voer Python-bestanden uit in SageMaker Studio-ruimtes met behulp van de lokale modus
SageMaker Studio JupyterLab en Code Editor (gebaseerd op Code-OSS, Visual Studio-code – Open Source), breidt SageMaker Studio uit, zodat u uw analyse- en ML-code kunt schrijven, testen, debuggen en uitvoeren met behulp van de populaire lichtgewicht IDE. Voor meer details over hoe u aan de slag kunt gaan met SageMaker Studio IDE's, raadpleegt u Verhoog de productiviteit op Amazon SageMaker Studio: maak kennis met JupyterLab Spaces en generatieve AI-tools en Nieuw – Code-editor, gebaseerd op Code-OSS VS Code Open Source, nu beschikbaar in Amazon SageMaker Studio. Voer de volgende stappen uit:
- Maak een nieuwe terminal.
- Installeer de Docker CLI en Docker Compose-plug-in volgens de onderstaande instructies GitHub repo. Als gekoppelde opdrachten mislukken, voert u de opdrachten één voor één uit.
U moet de SageMaker SDK bijwerken naar de nieuwste versie.
- lopen
pip install sagemaker -Uq
in de terminal.
Alleen voor Code Editor moet u de Python-omgeving zo instellen dat deze in de huidige terminal wordt uitgevoerd.
- In de Code-editor, op de menu bestandKiezen voorkeuren en Instellingen.
- Zoek en selecteer Terminal: uitvoeren in bestandsmap.
- Open in Code Editor of JupyterLab het
scikit_learn_script_mode_local_training_and_serving
map en voer descikit_learn_script_mode_local_training_and_serving.py
bestand.
U kunt het script uitvoeren door te kiezen lopen in Code Editor of met behulp van de CLI in een JupyterLab-terminal. U kunt zien hoe het model lokaal wordt getraind. Vervolgens implementeert u het model lokaal op een SageMaker-eindpunt en berekent u de root mean square error (RMSE
).
Simuleer training en gevolgtrekking in SageMaker Studio Classic met behulp van de lokale modus
U kunt ook een notebook in SageMaker Studio Classic gebruiken om een kleinschalige trainingstaak uit te voeren CIFAR10
gebruik de lokale modus, implementeer het model lokaal en voer gevolgtrekkingen uit.
Stel je notitieboekje in
Voer de volgende stappen uit om het notebook in te stellen:
- Open SageMaker Studio Classic en kloon het volgende GitHub repo.
- Open de
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- Voor Beeld, kiezen
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
Controleer of uw notebook de juiste exemplaar- en kernelselectie weergeeft.
- Open een terminal door te kiezen Terminal starten in de huidige SageMaker-afbeelding.
- Installeer de Docker CLI en Docker Compose-plug-in volgens de onderstaande instructies GitHub repo.
Omdat u Docker van SageMaker Studio Classic gebruikt, moet u sudo verwijderen bij het uitvoeren van opdrachten, omdat de terminal al onder superuser draait. Voor SageMaker Studio Classic zijn de installatieopdrachten afhankelijk van het besturingssysteem van de SageMaker Studio-app. Op DLC gebaseerde framework-images zijn bijvoorbeeld gebaseerd op Ubuntu, waarbij de volgende instructies zouden werken. Voor een op Debian gebaseerd image zoals DataScience Images moet u echter de onderstaande instructies volgen GitHub repo. Als gekoppelde opdrachten mislukken, voert u de opdrachten één voor één uit. U zou de Docker-versie moeten zien verschijnen.
- Laat het terminalvenster open, ga terug naar de notebook en voer het cel voor cel uit.
Zorg ervoor dat u de cel gebruikt pip install -U sagemaker
dus u gebruikt de nieuwste versie van de SageMaker Python SDK.
Lokale training
Wanneer u de lokale SageMaker-trainingstaak start, ziet u de volgende logregels:
Dit geeft aan dat de training lokaal werd uitgevoerd met Docker.
Wees geduldig terwijl de pytorch-training:2.1-cpu-py310
Docker-image wordt opgehaald. Vanwege het grote formaat (5.2 GB) kan dit enkele minuten duren.
Docker-images worden opgeslagen in het hoofdvolume van de SageMaker Studio-app-instantie, dat niet toegankelijk is voor eindgebruikers. De enige manier om toegang te krijgen tot en te communiceren met Docker-images is via de blootgestelde Docker API-bewerkingen.
Vanuit het oogpunt van de vertrouwelijkheid van gebruikers heeft het SageMaker Studio-platform nooit toegang tot gebruikersspecifieke afbeeldingen en slaat deze ook nooit op.
Wanneer de training is voltooid, kunt u de volgende regels in het succeslogboek zien:
Lokale gevolgtrekking
Voer de volgende stappen uit:
- Implementeer het SageMaker-eindpunt met behulp van de lokale modus van SageMaker.
Wees geduldig terwijl de pytorch-inference:2.1-cpu-py310
Docker-image wordt opgehaald. Vanwege het grote formaat (4.32 GB) kan dit enkele minuten duren.
- Roep het SageMaker-eindpunt aan dat lokaal is geïmplementeerd met behulp van de testimages.
Je kunt de voorspelde klassen zien: kikker, schip, auto en vliegtuig:
- Omdat het SageMaker Local-eindpunt nog steeds actief is, navigeert u terug naar het geopende terminalvenster en vermeldt u de actieve containers:
docker ps
Je zult het rennen kunnen zien pytorch-inference:2.1-cpu-py310
container die het SageMaker-eindpunt ondersteunt.
- Om het lokale SageMaker-eindpunt af te sluiten en de actieve container te stoppen, omdat u slechts één lokaal eindpunt tegelijk kunt uitvoeren, voert u de opschooncode uit.
- Om er zeker van te zijn dat de Docker-container niet beschikbaar is, kunt u naar het geopende terminalvenster navigeren, docker ps uitvoeren en controleren of er geen actieve containers zijn.
- Als je een container ziet draaien, ren dan weg
docker stop <CONTAINER_ID>
om het te stoppen.
Tips voor het gebruik van de lokale modus van SageMaker
Als u SageMaker voor de eerste keer gebruikt, raadpleegt u Machine learning-modellen trainen. Voor meer informatie over het implementeren van modellen voor inferentie met SageMaker raadpleegt u Implementeer modellen voor gevolgtrekking.
Houd rekening met de volgende aanbevelingen:
- Druk invoer- en uitvoerbestanden en -mappen af om inzicht te krijgen in het laden van gegevenssets en modellen
- Gebruik 1-2 tijdperken en kleine datasets voor snelle tests
- Installeer afhankelijkheden vooraf in een Dockerfile om de omgevingsinstellingen te optimaliseren
- Isoleer serialisatiecode in eindpunten voor foutopsporing
Configureer de Docker-installatie als een levenscyclusconfiguratie
U kunt het Docker-installatieproces definiëren als een Lifecycle Configuration (LCC)-script om de installatie te vereenvoudigen telkens wanneer een nieuwe SageMaker Studio-ruimte wordt gestart. LCC's zijn scripts die SageMaker uitvoert tijdens evenementen zoals het creëren van ruimte. Verwijs naar de jupyter lab, Code-editorof SageMaker Studio Klassiek LCC-installatie (met behulp van docker installeer cli als referentie) voor meer informatie.
Bouw en test aangepaste Docker-images in SageMaker Studio-ruimtes
In deze stap installeert u Docker in de appruimte JupyterLab (of Code Editor) en gebruikt u Docker om aangepaste Docker-images te bouwen, testen en publiceren met SageMaker Studio-ruimtes. Spaties worden gebruikt om de opslag- en resourcebehoeften van sommige SageMaker Studio-applicaties te beheren. Elke ruimte heeft een 1:1-relatie met een exemplaar van een applicatie. Elke ondersteunde applicatie die wordt gemaakt, krijgt een eigen ruimte. Voor meer informatie over SageMaker-ruimten raadpleegt u Verhoog de productiviteit op Amazon SageMaker Studio: maak kennis met JupyterLab Spaces en generatieve AI-tools. Zorg ervoor dat u een nieuwe ruimte inricht met minimaal 30 GB opslagruimte, zodat er voldoende opslagruimte is voor Docker-images en -artefacten.
Installeer Docker in een ruimte
Om de Docker CLI- en Docker Compose-plug-in in een JupyterLab-ruimte te installeren, voert u de volgende opdrachten uit: GitHub repo. SageMaker Studio ondersteunt alleen Docker-versie 20.10.X.
Bouw Docker-installatiekopieën
Voer de volgende code uit om te bevestigen dat Docker is geïnstalleerd en werkt in uw JupyterLab-ruimte:
Voer de volgende stappen uit om een aangepaste Docker-installatiekopie in een JupyterLab-ruimte (of Code Editor-ruimte) te bouwen:
- Maak een leeg Dockerbestand:
touch Dockerfile
- Bewerk het Docker-bestand met de volgende opdrachten, waarmee een eenvoudige flask-webserverafbeelding wordt gemaakt op basis van de basispython: 3.10.13-bullseye-afbeelding die wordt gehost op Docker-hub:
De volgende code toont de inhoud van een voorbeeld van een flask-toepassingsbestand app.py
:
Bovendien kunt u de Dockerfile-referentieopdrachten bijwerken met pakketten en artefacten van uw keuze.
- Bouw een Docker-installatiekopie met behulp van de referentie Dockerfile:
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
omvatten --network
sagemaker in uw docker build-opdracht, anders mislukt de build. Containers kunnen niet worden uitgevoerd in de standaard Docker-bridge of aangepaste Docker-netwerken. Containers worden in hetzelfde netwerk uitgevoerd als de SageMaker Studio-applicatiecontainer. Gebruikers kunnen alleen sagemaker gebruiken als netwerknaam.
- Wanneer uw build voltooid is, valideert u of de afbeelding bestaat. Tag de build opnieuw als een ECR-afbeelding en druk erop. Als u problemen met de toestemming tegenkomt, voert u de opdracht aws ecr get-login-password… uit en probeert u de Docker push/pull opnieuw uit te voeren:
Docker-images testen
Als Docker is geïnstalleerd in een JupyterLab (of Code Editor) SageMaker Studio-ruimte, kunt u vooraf gebouwde of aangepaste Docker-images testen als containers (of container-applicaties). In deze sectie gebruiken we de opdracht docker run om Docker-containers in een SageMaker Studio-ruimte in te richten om gecontaineriseerde werklasten zoals REST-webservices en Python-scripts te testen. Voer de volgende stappen uit:
- Als de testimage niet bestaat, voert u docker pull uit om de image naar uw lokale machine te halen:
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- Als u authenticatieproblemen ondervindt, voert u de volgende opdrachten uit:
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Maak een container om uw werklast te testen:
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
Hierdoor wordt een nieuwe containerinstantie gestart en wordt de applicatie uitgevoerd die is gedefinieerd met behulp van Docker's ENTRYPOINT:
- Om te testen of uw webeindpunt actief is, navigeert u naar de URL
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
U zou een JSON-antwoord moeten zien dat lijkt op de volgende schermafbeelding.
Opruimen
Om te voorkomen dat er onnodige kosten in rekening worden gebracht, verwijdert u de bronnen die u hebt gemaakt tijdens het uitvoeren van de voorbeelden in dit bericht:
- Kies in uw SageMaker Studio-domein Studio Klassiek in het navigatievenster en kies vervolgens stop.
- Kies in uw SageMaker Studio-domein jupyter lab or Code-editor Kies in het navigatiedeelvenster uw app en kies vervolgens stop.
Conclusie
SageMaker Studio Lokale modus en Docker-ondersteuning stellen ontwikkelaars in staat om ML-implementaties sneller te bouwen, testen en herhalen zonder hun werkruimte te verlaten. Door directe toegang te bieden tot testomgevingen en resultaten, optimaliseren deze mogelijkheden de workflows en verbeteren ze de productiviteit. Probeer SageMaker Studio Local Model en Docker-ondersteuning met behulp van onze snelle onboard-functie, waarmee u binnen enkele minuten een nieuw domein voor individuele gebruikers kunt opzetten. Deel uw mening in de commentarensectie!
Over de auteurs
Shweta Singh is Senior Product Manager in het Amazon SageMaker Machine Learning (ML) platformteam bij AWS en leidt de SageMaker Python SDK. Ze heeft ruim vijf jaar in verschillende productrollen bij Amazon gewerkt. Ze heeft een Bachelor of Science in Computer Engineering en een Master of Science in Financial Engineering, beide behaald aan de New York University
Eitan Sela is een Genative AI en Machine Learning Specialist Solutions Architect voor AWS. Hij werkt samen met AWS-klanten om begeleiding en technische assistentie te bieden en hen te helpen bij het bouwen en exploiteren van generatieve AI- en Machine Learning-oplossingen op AWS. In zijn vrije tijd houdt Eitan van joggen en het lezen van de nieuwste artikelen over machine learning.
Pranav Murthy is een AI/ML Specialist Solutions Architect bij AWS. Hij richt zich op het helpen van klanten bij het bouwen, trainen, implementeren en migreren van machine learning (ML)-workloads naar SageMaker. Hij werkte eerder in de halfgeleiderindustrie en ontwikkelde grote computer vision (CV) en natuurlijke taalverwerkingsmodellen (NLP) om halfgeleiderprocessen te verbeteren met behulp van de modernste ML-technieken. In zijn vrije tijd houdt hij van schaken en reizen. Je kunt Pranav vinden op LinkedIn.
Mufaddal Rohawala is een software-ingenieur bij AWS. Hij werkt aan de SageMaker Python SDK-bibliotheek voor Amazon SageMaker. In zijn vrije tijd houdt hij van reizen, buitenactiviteiten en is hij een voetbalfan.
- 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/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/