Zephyrnet-logo

Ga aan de slag met de open-source Amazon SageMaker Distribution | Amazon-webservices

Datum:

Datawetenschappers hebben een consistente en reproduceerbare omgeving nodig voor machine learning (ML) en datawetenschapsworkloads die het beheer van afhankelijkheden mogelijk maakt en veilig is. AWS diepe leercontainers biedt al vooraf gebouwde Docker-images voor het trainen en bedienen van modellen in veelgebruikte frameworks zoals TensorFlow, PyTorch en MXNet. Om deze ervaring te verbeteren, hebben we op 2023 JupyterCon een openbare bèta aangekondigd van de open-sourcedistributie van SageMaker. Dit biedt een uniforme end-to-end ML-ervaring voor ML-ontwikkelaars met verschillende expertiseniveaus. Ontwikkelaars hoeven niet langer te schakelen tussen verschillende framework-containers om te experimenteren, of als ze overstappen van lokale JupyterLab-omgevingen en SageMaker-notebooks naar productietaken op SageMaker. De open-source SageMaker-distributie ondersteunt de meest voorkomende pakketten en bibliotheken voor datawetenschap, ML en visualisatie, zoals TensorFlow, PyTorch, Scikit-learn, Pandas en Matplotlib. U kunt de container gaan gebruiken vanaf de Amazon ECR openbare galerij vanaf vandaag.

In dit bericht laten we u zien hoe u de open-sourcedistributie van SageMaker kunt gebruiken om snel te experimenteren met uw lokale omgeving en deze eenvoudig te promoten voor banen op SageMaker.

Overzicht oplossingen

Voor ons voorbeeld demonstreren we het trainen van een afbeeldingsclassificatiemodel met behulp van PyTorch. Wij gebruiken de KMNIST dataset openbaar beschikbaar op PyTorch. We trainen een neuraal netwerkmodel, testen de prestaties van het model en printen uiteindelijk de training en het testverlies. Het volledige notitieboek voor dit voorbeeld is beschikbaar in de Repository met SageMaker Studio Lab-voorbeelden. We beginnen te experimenteren op een lokale laptop met behulp van de open-sourcedistributie, verplaatsen deze naar Amazon SageMaker Studio voor het gebruik van een groter exemplaar en plan vervolgens het notitieblok als een notitiebloktaak.

Voorwaarden

Je hebt de volgende voorwaarden nodig:

Stel uw lokale omgeving in

U kunt de open-sourcedistributie direct gebruiken op uw lokale laptop. Om JupyterLab te starten, voert u de volgende opdrachten uit op uw terminal:

export ECR_IMAGE_ID='public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu'
docker run -it -p 8888:8888 --user `id -u`:`id -g` -v `pwd`/sample-notebooks:/home/sagemaker-user/sample-notebooks $ECR_IMAGE_ID jupyter-lab --no-browser --ip=0.0.0.0

Je kunt ECR_IMAGE_ID met een van de afbeeldingstags die beschikbaar zijn in de Amazon ECR openbare galerij, of kies de latest-gpu tag als u een machine gebruikt die GPU ondersteunt.

Deze opdracht start JupyterLab en geeft een URL op de terminal, zoals http://127.0.0.1:8888/lab?token=<token>. Kopieer de link en voer deze in uw voorkeursbrowser in om JupyterLab te starten.

Studio opzetten

Studio is een end-to-end geïntegreerde ontwikkelomgeving (IDE) voor ML waarmee ontwikkelaars en datawetenschappers ML-modellen op schaal kunnen bouwen, trainen, implementeren en bewaken. Studio biedt een uitgebreide lijst van first-party images met veelgebruikte frameworks en pakketten, zoals Data Science, TensorFlow, PyTorch en Spark. Deze afbeeldingen maken het voor datawetenschappers eenvoudig om aan de slag te gaan met ML door simpelweg een framework en instantietype naar keuze te kiezen voor compute.

U kunt nu de open-sourcedistributie van SageMaker op Studio gebruiken met Studio's neem je eigen afbeelding mee functie. Voer de volgende stappen uit om de open-sourcedistributie aan uw SageMaker-domein toe te voegen:

  1. Voeg de open-sourcedistributie toe aan die van uw account Amazon Elastic Container-register (Amazon ECR) repository door de volgende opdrachten op uw terminal uit te voeren:
    # Use the latest-cpu or latest-gpu tag based on your requirements
    export ECR_GALLERY_IMAGE_ID='sagemaker-distribution:latest-cpu'
    export SAGEMAKER_IMAGE_NAME='sagemaker-runtime'
    export SAGEMAKER_STUDIO_DOMAIN_ID='d-xxxx'
    export SAGEMAKER_STUDIO_IAM_ROLE_ARN='<studio-default-execution-role-arn>' docker pull public.ecr.aws/sagemaker/$ECR_GALLERY_IMAGE_ID export ECR_PRIVATE_REPOSITORY_NAME='sm-distribution'
    export ECR_IMAGE_TAG='sagemaker-runtime-cpu'
    export AWS_ACCOUNT_ID='0123456789'
    export AWS_ECR_REPOSITORY_REGION='us-east-1' # create repository
    aws --region ${AWS_ECR_REPOSITORY_REGION} ecr create-repository --repository-name $ECR_PRIVATE_REPOSITORY_NAME
    aws --region ${AWS_ECR_REPOSITORY_REGION} ecr get-login-password | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_ECR_REPOSITORY_REGION}.amazonaws.com
    export ECR_IMAGE_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_ECR_REPOSITORY_REGION.amazonaws.com/$ECR_PRIVATE_REPOSITORY_NAME:$ECR_IMAGE_TAG # Tag
    docker tag public.ecr.aws/sagemaker/$ECR_GALLERY_IMAGE_ID $ECR_IMAGE_URI
    # Push the image to your private repository
    docker push $ECR_IMAGE_URI

  2. Maak een SageMaker-afbeelding en koppel de afbeelding aan het Studio-domein:
    # Create a SageMaker image
    aws sagemaker create-image --image-name $SAGEMAKER_IMAGE_NAME --role-arn $SAGEMAKER_STUDIO_IAM_ROLE_ARN
    # Create a SageMaker Image Version.
    aws sagemaker create-image-version --image-name $SAGEMAKER_IMAGE_NAME --base-image $ECR_IMAGE_URI # Optionally, describe the image version to ensure it's succesfully created
    aws sagemaker describe-image-version --image-name $SAGEMAKER_IMAGE_NAME --version-number 1 # Create the app image configuration file
    cat > /tmp/app-config.json << EOF
    { "AppImageConfigName": "app-image-config-$SAGEMAKER_IMAGE_NAME", "KernelGatewayImageConfig": { "FileSystemConfig": { "DefaultGid": 100, "DefaultUid": 1000, "MountPath": "/home/sagemaker-user" }, "KernelSpecs": [ { "DisplayName": "Python 3 (ipykernel)", "Name": "python3" } ] }
    }
    EOF # Create an Amazon SageMaker App Image Config.
    aws sagemaker create-app-image-config --cli-input-json file:///tmp/app-config.json # Create a default user settings file
    # Update the file with your existing settings if you have additional custom images
    cat > /tmp/default-user-settings.json << EOF
    { "DefaultUserSettings": { "KernelGatewayAppSettings": { "CustomImages": [ { "ImageName": "$SAGEMAKER_IMAGE_NAME", "AppImageConfigName": "app-image-config-$SAGEMAKER_IMAGE_NAME", "ImageVersionNumber": 1 } ] } }
    }
    EOF # Update Amazon SageMaker Domain with the new default User Settings.
    aws sagemaker update-domain --domain-id $SAGEMAKER_STUDIO_DOMAIN_ID --cli-input-json file:///tmp/default-user-settings.json
    

  3. Start Studio op de SageMaker-console door uw domein en bestaand gebruikersprofiel te kiezen.
  4. Herstart eventueel Studio door de stappen in Sluit SageMaker Studio af en werk het bij.

domein-details

Download het notitieboek

Download het voorbeeldnotitieblok lokaal van de GitHub repo.

Open de notebook in de IDE van uw keuze en voeg een cel toe aan het begin van de notebook om te installeren torchsummary. De torchsummary pakket maakt geen deel uit van de distributie en als u dit op de notebook installeert, zorgt u ervoor dat de notebook van begin tot eind werkt. We raden aan om te gebruiken conda or micromamba om omgevingen en afhankelijkheden te beheren. Voeg de volgende cel toe aan het notitieboek en sla het notitieboek op:

%pip install torchsummary

Experimenteer op het lokale notitieblok

Upload het notitieblok naar de JupyterLab-gebruikersinterface die u hebt gestart door het uploadpictogram te kiezen zoals weergegeven in de volgende schermafbeelding.

upload-bestand

Wanneer het is geüpload, start u het cv-kmnist.ipynb notitieboekje. U kunt onmiddellijk beginnen met het uitvoeren van de cellen, zonder afhankelijkheden zoals torch, matplotlib of ipywidgets te hoeven installeren.

Als je de voorgaande stappen hebt gevolgd, kun je zien dat je de distributie lokaal vanaf je laptop kunt gebruiken. In de volgende stap gebruiken we dezelfde distributie op Studio om te profiteren van de functies van Studio.

Verplaats het experiment naar Studio (optioneel)

Laten we optioneel de experimenten promoveren naar Studio. Een van de voordelen van Studio is dat de onderliggende rekenresources volledig elastisch zijn, zodat u de beschikbare resources eenvoudig omhoog of omlaag kunt schuiven en de wijzigingen automatisch op de achtergrond plaatsvinden zonder uw werk te onderbreken. Als u dezelfde notebook van eerder wilt uitvoeren op een grotere dataset en rekeninstantie, kunt u migreren naar Studio.

Navigeer naar de Studio-gebruikersinterface die u eerder hebt gestart en kies het uploadpictogram om het notitieblok te uploaden.

upload-bestand-studio

Nadat u de notebook hebt gestart, wordt u gevraagd om de afbeelding en het instantietype te kiezen. Kies in de kernel launcher sagemaker-runtime als de afbeelding en een ml.t3.medium bijvoorbeeld, kies dan kies.

kies-image-studio

U kunt de notebook nu end-to-end gebruiken zonder dat er wijzigingen aan de notebook nodig zijn van uw lokale ontwikkelomgeving naar Studio-notebooks!

Plan het notitieblok als een taak

Wanneer u klaar bent met uw experimenten, biedt SageMaker meerdere opties om uw notebook in productie te brengen, zoals trainingstaken en SageMaker-pijplijnen. Een van die opties is om de notebook zelf rechtstreeks uit te voeren als een niet-interactieve, geplande notebooktaak met behulp van SageMaker-notebooktaken. U wilt uw model bijvoorbeeld periodiek opnieuw trainen, of periodiek conclusies trekken over inkomende gegevens en rapporten genereren voor gebruik door uw belanghebbenden.

Kies vanuit Studio het pictogram voor de notitiebloktaak om de notitieboekjetaak te starten. Als je de notebook jobs extensie lokaal op je laptop hebt geïnstalleerd, kun je de notebook ook direct vanaf je laptop inplannen. Zien Installation Guide om de extensie voor notebooktaken lokaal in te stellen.

schema-notebook-job-icon

De notebooktaak gebruikt automatisch de ECR-afbeeldings-URI van de open-sourcedistributie, zodat u de notebooktaak direct kunt plannen.

kies-afbeelding-nb-job

Kies Loop volgens schema, kies een schema, bijvoorbeeld elke week op zaterdag, en kies Maken. U kunt ook kiezen Ren nu als u de resultaten direct wilt bekijken.

indienen-nb-taak

Wanneer de eerste notebooktaak is voltooid, kunt u de notebookuitvoer rechtstreeks vanuit de gebruikersinterface van Studio bekijken door te kiezen Notitieboek voor Uitvoerbestanden.

bekijk-job-output

Aanvullende overwegingen

Naast het rechtstreeks gebruiken van de openbaar beschikbare ECR-image voor ML-workloads, biedt de open-sourcedistributie de volgende voordelen:

  • De Dockerfile die is gebruikt om de afbeelding te bouwen, is openbaar beschikbaar voor ontwikkelaars om hun eigen afbeeldingen te verkennen en te bouwen. U kunt deze afbeelding ook overnemen als de basisafbeelding en uw aangepaste bibliotheken installeren om een ​​reproduceerbare omgeving te hebben.
  • Als u Docker niet gewend bent en liever Conda-omgevingen op uw JupyterLab-omgeving gebruikt, bieden we een env.out bestand voor elk van de gepubliceerde versies. U kunt de instructies in het bestand gebruiken om uw eigen Conda-omgeving te maken die dezelfde omgeving zal nabootsen. Zie bijvoorbeeld het CPU-omgevingsbestand cpu.env.uit.
  • U kunt de GPU-versies van de afbeelding gebruiken om GPU-compatibele workloads uit te voeren, zoals deep learning en afbeeldingsverwerking.

Opruimen

Voer de volgende stappen uit om uw bronnen op te schonen:

  1. Als u uw notebook hebt gepland om volgens een schema te werken, pauzeert of verwijdert u het schema op de Definities van notebooktaak tabblad om te voorkomen dat u voor toekomstige banen moet betalen.
    pauze-nb-job-schema
  2. Sluit alle Studio-apps af om te voorkomen dat u moet betalen voor ongebruikt computergebruik. Zien Sluit Studio-apps af en werk ze bij voor instructies.
  3. Verwijder optioneel het Studio-domein als u er een hebt gemaakt.

Conclusie

Het onderhouden van een reproduceerbare omgeving in verschillende stadia van de ML-levenscyclus is een van de grootste uitdagingen voor datawetenschappers en -ontwikkelaars. Met de open-sourcedistributie van SageMaker bieden we een afbeelding met onderling compatibele versies van de meest voorkomende ML-frameworks en -pakketten. De distributie is ook open source, waardoor ontwikkelaars transparantie krijgen in de pakketten en bouwprocessen, waardoor het gemakkelijker wordt om hun eigen distributie aan te passen.

In dit bericht hebben we je laten zien hoe je de distributie kunt gebruiken in je lokale omgeving, in Studio en als container voor je trainingstaken. Deze functie bevindt zich momenteel in de openbare bètaversie. We raden u aan dit uit te proberen en uw feedback en problemen met de openbare GitHub-repository!


Over de auteurs

Durga Sury is een ML Solutions Architect in het Amazon SageMaker Service SA-team. Ze is gepassioneerd om machine learning voor iedereen toegankelijk te maken. In haar 4 jaar bij AWS heeft ze geholpen bij het opzetten van AI/ML-platforms voor zakelijke klanten. Als ze niet aan het werk is, houdt ze van motorritten, mysterieromans en lange wandelingen met haar 5-jarige husky.

Ketan Vijayvargiya is een Senior Software Development Engineer bij Amazon Web Services (AWS). Zijn aandachtsgebieden zijn machine learning, gedistribueerde systemen en open source. Buiten zijn werk brengt hij zijn tijd graag door met zichzelf te hosten en te genieten van de natuur.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?