Zephyrnet-logo

Voer notebooks uit als batchtaken in Amazon SageMaker Studio Lab

Datum:

Onlangs heeft de Amazon SageMaker Studio lanceerde een eenvoudige manier om notebooks uit te voeren als batchtaken die volgens een terugkerend schema kunnen worden uitgevoerd. Amazon SageMaker Studiolab ondersteunt ook deze functie, waardoor u notebooks die u ontwikkelt in SageMaker Studio Lab kunt uitvoeren in uw AWS-account. Hierdoor kunt u uw machine learning-experimenten (ML) snel schalen met grotere datasets en krachtigere instanties, zonder dat u iets nieuws hoeft te leren of één regel code hoeft te wijzigen.

In dit bericht laten we u de eenmalige vereiste zien om uw Studio Lab-omgeving aan een AWS-account te koppelen. Daarna leiden we u door de stappen om notebooks uit te voeren als een batchtaak vanuit Studio Lab.

Overzicht oplossingen

Studio Lab heeft dezelfde extensie opgenomen als Studio, die is gebaseerd op de Jupyter open-source extensie voor geplande notitieboekjes. Deze extensie heeft aanvullende AWS-specifieke parameters, zoals het rekentype. In Studio Lab wordt een gepland notitieblok eerst gekopieerd naar een Amazon eenvoudige opslagservice (Amazon S3)-bucket in uw AWS-account en voer het vervolgens uit op het geplande tijdstip met het geselecteerde rekentype. Wanneer de taak is voltooid, wordt de uitvoer naar een S3-bucket geschreven en wordt de AWS-computing volledig stopgezet, waardoor lopende kosten worden voorkomen.

Voorwaarden

Om Studio Lab-notebooktaken te gebruiken, hebt u beheerderstoegang nodig tot het AWS-account waarmee u verbinding gaat maken (of hulp van iemand met deze toegang). In de rest van dit bericht gaan we ervan uit dat u de AWS-beheerder bent. Als dat niet het geval is, vraag dan uw beheerder of accounteigenaar om deze stappen met u door te nemen.

Maak een SageMaker-uitvoeringsrol

We moeten ervoor zorgen dat het AWS-account een AWS Identiteits- en toegangsbeheer (IAM) SageMaker-uitvoeringsrol. Deze rol wordt gebruikt door SageMaker-bronnen binnen het account en biedt toegang van SageMaker tot andere bronnen in het AWS-account. In ons geval worden onze notebooktaken met deze machtigingen uitgevoerd. Als SageMaker eerder in dit account is gebruikt, bestaat er mogelijk al een rol, maar heeft deze mogelijk niet alle vereiste machtigingen. Dus laten we doorgaan en een nieuwe maken.

De volgende stappen hoeven maar één keer te worden uitgevoerd, ongeacht hoeveel SageMaker Studio Lab-omgevingen toegang hebben tot dit AWS-account.

  1. Kies op de IAM-console rollen in het navigatievenster.
  2. Kies Rol creëren.
  3. Voor Vertrouwd entiteitstypeselecteer AWS-service.
  4. Voor Gebruik cases voor andere AWS-services, kiezen SageMaker.
  5. kies SageMaker - Uitvoering.
  6. Kies Volgende.
  7. Controleer de machtigingen en kies vervolgens Volgende.
  8. Voor Rol naam, voer een naam in (voor dit bericht gebruiken we sagemaker-execution-role-notebook-jobs).
  9. Kies Rol creëren.
  10. Noteer de rol ARN.

De rol ARN zal de vorm hebben van arn:aws:iam::[account-number]:role/service-role/[role-name] en is vereist in de Studio Lab-configuratie.

Maak een IAM-gebruiker

Om een ​​Studio Lab-omgeving toegang te geven tot AWS, moeten we een IAM-gebruiker binnen AWS maken en deze de nodige machtigingen verlenen. We moeten dan een set toegangssleutels voor die gebruiker maken en deze aan de Studio Lab-omgeving verstrekken.

Deze stap moet worden herhaald voor elke SageMaker Studio Lab-omgeving die toegang heeft tot dit AWS-account.

Houd er rekening mee dat beheerders en eigenaren van AWS-accounts ervoor moeten zorgen dat goed ontworpen beveiligingspraktijken zoveel mogelijk worden gevolgd. Gebruikersmachtigingen moeten bijvoorbeeld altijd worden beperkt en toegangssleutels moeten regelmatig worden gerouleerd om de impact van inloggegevens te minimaliseren.

In deze blog laten we zien hoe je de AmazonSageMakerFullAccess beheerd beleid. Dit beleid biedt brede toegang tot Amazon SageMaker die mogelijk verder gaat dan vereist is. Details over AmazonSageMakerFullAccess is te vinden hier.

Hoewel Studio Lab bedrijfsbeveiliging gebruikt, moet worden opgemerkt dat de gebruikersreferenties van Studio Lab geen deel uitmaken van uw AWS-account en daarom bijvoorbeeld niet onderworpen zijn aan uw AWS-wachtwoord of MFA-beleid.

Om machtigingen zoveel mogelijk te beperken, maken we speciaal voor deze toegang een gebruikersprofiel aan.

  1. Kies op de IAM-console Gebruikers in het navigatievenster.
  2. Kies Voeg gebruikers toe.
  3. Voor gebruikersnaam, voer een naam in. Het is een goede gewoonte om een ​​naam te gebruiken die is gekoppeld aan een individuele persoon die dit account gaat gebruiken; dit helpt bij het bekijken van auditlogboeken.
  4. Voor Selecteer toegangstype AWSselecteer Toegangssleutel – Programmatische toegang.
  5. Kies Volgende: Machtigingen.
  6. Kies Voeg direct bestaand beleid toe.
  7. Zoek en selecteer AmazonSageMakerFullAccess.
  8. Zoek en selecteer AmazonEventBridgeFullAccess.
  9. Kies Volgende: Tags.
  10. Kies Volgende: Review.
  11. Bevestig uw beleid en kies vervolgens Gebruiker maken.De laatste pagina van het gebruikersaanmaakproces zou u de toegangssleutels van de gebruiker moeten tonen. Laat dit tabblad open, want we kunnen hier niet terug navigeren en we hebben deze gegevens nodig.
  12. Open een nieuw browsertabblad in Studio Lab.
  13. Op de Dien in menu, kies Nieuwe Launcher, kies dan terminal.
  14. Voer op de opdrachtregel de volgende code in:
    aws configure

  15. Voer de volgende code in:
    1. Voer de waarden van de IAM-consolepagina in voor uw toegangssleutel-ID en geheime toegangssleutel.
    2. Voor Default region name, ga naar binnen us-west-2.
    3. Verlof Default output format as text.
      (studiolab) studio-lab-user@default:~$ aws configure AWS Access Key ID []: 01234567890
      AWS Secret Access Key []: ABCDEFG1234567890ABCDEFG
      Default region name []: us-west-2
      Default output format [text]: (studiolab) studio-lab-user@default:~$

Gefeliciteerd, uw Studio Lab-omgeving zou nu moeten zijn geconfigureerd voor toegang tot het AWS-account. Voer de volgende opdracht uit om de verbinding te testen:

aws sts get-caller-identity

Deze opdracht moet details retourneren over de IAM-gebruiker die u hebt geconfigureerd om te gebruiken.

Maak een notitieboektaak

Notebook-taken worden gemaakt met behulp van Jupyter-notebooks binnen Studio Lab. Als uw notebook in Studio Lab wordt uitgevoerd, kan deze worden uitgevoerd als een notebooktaak (met meer bronnen en toegang tot AWS-services). Er zijn echter een aantal dingen waar u op moet letten.

Als u pakketten hebt geïnstalleerd om uw notebook aan de praat te krijgen, voegt u opdrachten toe om deze pakketten in een cel bovenaan uw notebook te laden. Door een &-symbool aan het begin van elke regel te gebruiken, wordt de code naar de opdrachtregel gestuurd om te worden uitgevoerd. In het volgende voorbeeld gebruikt de eerste cel pip om PyTorch-bibliotheken te installeren:

%%capture
%pip install torch
%pip install torchvision

Onze notebook genereert een getraind PyTorch-model. Met onze reguliere code slaan we het model op in het bestandssysteem in Studio Labs.

Wanneer we dit uitvoeren als een notebooktaak, moeten we het model ergens opslaan waar we er later toegang toe hebben. De gemakkelijkste manier om dit te doen, is door het model op te slaan in Amazon S3. We hebben een S3-bucket gemaakt om onze modellen op te slaan en gebruiken een andere opdrachtregelcel om het object naar de bucket te kopiëren.

We maken gebruik van de AWS-opdrachtregelinterface (AWS CLI) hier om het object te kopiëren. We zouden ook de AWS SDK voor Python (Boto3) als we een meer geavanceerde of geautomatiseerde controle van de bestandsnaam wilden hebben. Voor nu zorgen we ervoor dat we de bestandsnaam wijzigen telkens wanneer we de notebook gebruiken, zodat de modellen niet worden overschreven.

Nu zijn we klaar om de notebooktaak te maken.

  1. Kies (klik met de rechtermuisknop) de naam van het notitieblok en kies vervolgens Notitiebloktaak maken.
    Als deze menu-optie ontbreekt, moet u mogelijk uw Studio Lab-omgeving vernieuwen. Open hiervoor Terminal vanuit het opstartprogramma en voer de volgende code uit:
    conda deactivate && conda env remove —name studiolab

  2. Start vervolgens uw JupyterLab-instantie opnieuw door te kiezen Amazon SageMaker Studiolab uit het hoofdmenu en kies vervolgens Start JupyterLab opnieuw.U kunt ook naar de projectpagina gaan en de runtime afsluiten en opnieuw starten.
  3. Op de Baan creëren pagina, voor Bereken type, kies het rekentype dat bij uw taak past.

    Voor meer informatie over de verschillende soorten rekencapaciteit, inclusief de kosten, zie Amazon SageMaker-prijzen (Kiezen Prijzen op aanvraag en navigeer naar de Trainingen tabblad. Mogelijk moet u ook de quotumbeschikbaarheid van het rekentype in uw AWS-account controleren. Zie voor meer informatie over servicequota: AWS-servicequota.Voor dit voorbeeld hebben we een ml.p3.2xlarge-instantie geselecteerd, die 8 vCPU, 61 GB geheugen en een Tesla V100 GPU biedt.

    Als er geen waarschuwingen op deze pagina staan, zou u klaar moeten zijn om te gaan. Als er waarschuwingen zijn, controleer dan of de juiste rol ARN is opgegeven Extra opties. Deze rol moet overeenkomen met de ARN van de SageMaker-uitvoeringsrol die we eerder hebben gemaakt. De ARN is in de indeling arn:aws:iam::[account-number]:role/service-role/[role-name].

    Er zijn andere opties beschikbaar binnen Extra opties; u kunt bijvoorbeeld een bepaalde afbeelding en kernel selecteren die mogelijk al de configuratie hebben die u nodig hebt, zonder dat u extra bibliotheken hoeft te installeren.

  4. Als u dit notebook volgens een schema wilt uitvoeren, selecteert u Loop volgens een schema en geef op hoe vaak u de taak wilt uitvoeren.We willen dat dit notebook één keer wordt uitgevoerd, dus we selecteren Ren nu.
  5. Kies creëren.

Lijst met notebooktaken

De Notebook-banen pagina geeft een overzicht van alle taken die momenteel worden uitgevoerd en taken die in het verleden zijn uitgevoerd. U vindt deze lijst in de Launcher (kies, Dien in, Nieuwe Launcher), kies dan Notebook-banen in de Overige pagina.

Wanneer de notebooktaak is voltooid, ziet u de status veranderen in Completed (gebruik de Reload optie indien gewenst). U kunt vervolgens het downloadpictogram kiezen om toegang te krijgen tot de uitvoerbestanden.

Wanneer de bestanden zijn gedownload, kunt u het notitieblok bekijken samen met de code-uitvoer en het uitvoerlogboek. In ons geval kunnen we, omdat we code hebben toegevoegd om de run van de trainingscel te timen, zien hoe lang de trainingstaak duurde: 16 minuten en 21 seconden, wat veel sneller is dan wanneer de code in Studio Lab was uitgevoerd (1 uur , 38 minuten, 55 seconden). In feite liep de hele notebook in 1,231 seconden (iets meer dan 20 minuten) voor minder dan $ 1.30 (USD).

W kan nu het aantal tijdperken verhogen en de hyperparameters aanpassen om de verlieswaarde van het model te verbeteren, en een andere notebooktaak indienen.

Conclusie

In dit bericht hebben we laten zien hoe we Studio Lab-notebooktaken kunnen gebruiken om de code die we in Studio Lab hebben ontwikkeld uit te schalen en uit te voeren met meer bronnen in een AWS-account.

Door AWS-referenties toe te voegen aan onze Studio Lab-omgeving, hebben we niet alleen toegang tot notebooktaken, maar hebben we ook toegang tot andere bronnen vanaf een AWS-account, rechtstreeks vanuit onze Studio Lab-notebooks. Bekijk de AWS SDK voor Python.

Deze extra mogelijkheid van Studio Lab verlegt de grenzen van de soorten en maten projecten die u kunt realiseren. Laat ons weten wat u bouwt met deze nieuwe mogelijkheid!


Over de auteurs

Mike Kamers is een Developer Advocate voor AI en ML bij AWS. Hij heeft de afgelopen 7 jaar bouwers geholpen om cloud, beveiliging en ML te leren. Mike komt oorspronkelijk uit het Verenigd Koninkrijk en is een gepassioneerde theedrinker en legobouwer.

Michel Monclova is hoofdproductmanager bij AWS in het SageMaker-team. Ze is een geboren New Yorker en veteraan uit Silicon Valley. Ze is gepassioneerd door innovaties die onze kwaliteit van leven verbeteren.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?