Zephyrnet-Logo

Führen Sie Notebooks als Batch-Jobs in Amazon SageMaker Studio Lab aus

Datum:

Vor kurzem hat die Amazon SageMaker-Studio hat eine einfache Möglichkeit eingeführt, Notebooks als Batch-Jobs auszuführen, die nach einem wiederkehrenden Zeitplan ausgeführt werden können. Amazon SageMaker Studio Lab unterstützt diese Funktion ebenfalls, sodass Sie in SageMaker Studio Lab entwickelte Notebooks in Ihrem AWS-Konto ausführen können. Auf diese Weise können Sie Ihre Machine Learning (ML)-Experimente schnell mit größeren Datensätzen und leistungsfähigeren Instanzen skalieren, ohne etwas Neues lernen oder eine Codezeile ändern zu müssen.

In diesem Beitrag führen wir Sie durch die einmalige Voraussetzung, um Ihre Studio Lab-Umgebung mit einem AWS-Konto zu verbinden. Danach führen wir Sie durch die Schritte zum Ausführen von Notebooks als Batch-Job von Studio Lab.

Lösungsüberblick

Studio Lab hat dieselbe Erweiterung wie Studio integriert, das auf der Jupyter-Open-Source-Erweiterung für basiert geplante Notizbücher. Diese Erweiterung verfügt über zusätzliche AWS-spezifische Parameter wie den Berechnungstyp. In Studio Lab wird ein geplantes Notebook zunächst in ein kopiert Amazon Simple Storage-Service (Amazon S3)-Bucket in Ihrem AWS-Konto und führen Sie sie dann zur geplanten Zeit mit dem ausgewählten Rechentyp aus. Wenn der Job abgeschlossen ist, wird die Ausgabe in einen S3-Bucket geschrieben und die AWS-Datenverarbeitung wird vollständig angehalten, wodurch laufende Kosten vermieden werden.

Voraussetzungen:

Um Studio Lab-Notebook-Jobs verwenden zu können, benötigen Sie Administratorzugriff auf das AWS-Konto, mit dem Sie eine Verbindung herstellen möchten (oder Unterstützung von jemandem mit diesem Zugriff). Im Rest dieses Beitrags gehen wir davon aus, dass Sie der AWS-Administrator sind. Wenn dies nicht der Fall ist, bitten Sie Ihren Administrator oder Kontoinhaber, diese Schritte mit Ihnen durchzugehen.

Erstellen Sie eine SageMaker-Ausführungsrolle

Wir müssen sicherstellen, dass das AWS-Konto über eine verfügt AWS Identity and Access Management and (IAM) SageMaker-Ausführungsrolle. Diese Rolle wird von SageMaker-Ressourcen innerhalb des Kontos verwendet und bietet Zugriff von SageMaker auf andere Ressourcen im AWS-Konto. In unserem Fall werden unsere Notebook-Jobs mit diesen Berechtigungen ausgeführt. Wenn SageMaker zuvor in diesem Konto verwendet wurde, ist möglicherweise bereits eine Rolle vorhanden, die jedoch möglicherweise nicht über alle erforderlichen Berechtigungen verfügt. Also lass uns weitermachen und einen neuen machen.

Die folgenden Schritte müssen nur einmal durchgeführt werden, unabhängig davon, wie viele SageMaker Studio Lab-Umgebungen auf dieses AWS-Konto zugreifen.

  1. Wählen Sie in der IAM-Konsole Rollen im Navigationsbereich.
  2. Auswählen Rolle erstellen.
  3. Aussichten für Vertrauenswürdiger EntitätstypWählen AWS-Service.
  4. Aussichten für Anwendungsfälle für andere AWS-Services, wählen SageMaker.
  5. Auswählen SageMaker – Ausführung.
  6. Auswählen Weiter.
  7. Überprüfen Sie die Berechtigungen und wählen Sie dann aus Weiter.
  8. Aussichten für Rollenname, geben Sie einen Namen ein (für diesen Beitrag verwenden wir sagemaker-execution-role-notebook-jobs).
  9. Auswählen Rolle erstellen.
  10. Notieren Sie sich den Rollen-ARN.

Der Rollen-ARN hat das Format arn:aws:iam::[account-number]:role/service-role/[role-name] und ist im Studio Lab-Setup erforderlich.

Erstellen Sie einen IAM-Benutzer

Damit eine Studio Lab-Umgebung auf AWS zugreifen kann, müssen wir einen IAM-Benutzer in AWS erstellen und ihm die erforderlichen Berechtigungen erteilen. Wir müssen dann einen Satz von Zugriffsschlüsseln für diesen Benutzer erstellen und sie der Studio Lab-Umgebung bereitstellen.

Dieser Schritt sollte für jede SageMaker Studio Lab-Umgebung wiederholt werden, die auf dieses AWS-Konto zugreift.

Beachten Sie, dass Administratoren und Inhaber von AWS-Konten sicherstellen sollten, dass im größtmöglichen Umfang gut durchdachte Sicherheitspraktiken befolgt werden. Benutzerberechtigungen sollten beispielsweise immer eingeschränkt werden, und Zugriffsschlüssel sollten regelmäßig rotiert werden, um die Auswirkungen einer Kompromittierung von Anmeldeinformationen zu minimieren.

In diesem Blog zeigen wir, wie man die verwendet AmazonSageMakerFullAccess verwaltete Richtlinie. Diese Richtlinie bietet breiten Zugriff auf Amazon SageMaker, der über das Erforderliche hinausgehen kann. Einzelheiten zu AmazonSageMakerFullAccess gefunden werden kann hier.

Obwohl Studio Lab Unternehmenssicherheit verwendet, sollte beachtet werden, dass Studio Lab-Benutzeranmeldeinformationen nicht Teil Ihres AWS-Kontos sind und daher beispielsweise nicht Ihrem AWS-Passwort oder Ihren MFA-Richtlinien unterliegen.

Um Berechtigungen so weit wie möglich einzuschränken, erstellen wir ein Benutzerprofil speziell für diesen Zugriff.

  1. Wählen Sie in der IAM-Konsole Nutzer im Navigationsbereich.
  2. Auswählen Benutzer hinzufügen.
  3. Aussichten für Benutzername, geben Sie einen Namen ein. Es empfiehlt sich, einen Namen zu verwenden, der mit einer einzelnen Person verknüpft ist, die dieses Konto verwenden wird; Dies hilft beim Überprüfen von Überwachungsprotokollen.
  4. Aussichten für Wählen Sie den AWS-ZugriffstypWählen Zugriffsschlüssel – Programmatischer Zugriff.
  5. Auswählen Weiter: Berechtigungen.
  6. Auswählen Fügen Sie vorhandene Richtlinien direkt hinzu.
  7. Suchen und auswählen AmazonSageMakerFullAccess.
  8. Suchen und auswählen AmazonEventBridgeFullAccess.
  9. Auswählen Weiter: Tags.
  10. Auswählen Weiter: Überprüfen.
  11. Bestätigen Sie Ihre Richtlinien und wählen Sie dann aus Benutzer erstellen.Die letzte Seite des Benutzererstellungsprozesses sollte Ihnen die Zugriffsschlüssel des Benutzers zeigen. Lassen Sie diese Registerkarte geöffnet, da wir hier nicht zurücknavigieren können und wir diese Details benötigen.
  12. Öffnen Sie in Studio Lab einen neuen Browser-Tab.
  13. Auf dem Reichen Sie das Menü, wählen Sie Neuer Launcher, Dann wählen Terminal.
  14. Geben Sie in der Befehlszeile den folgenden Code ein:
    aws configure

  15. Geben Sie den folgenden Code ein:
    1. Geben Sie die Werte von der IAM-Konsolenseite für Ihre Zugriffsschlüssel-ID und Ihren geheimen Zugriffsschlüssel ein.
    2. Aussichten für Default region name, eingeben us-west-2.
    3. Verlassen 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:~$

Herzlichen Glückwunsch, Ihre Studio Lab-Umgebung sollte jetzt für den Zugriff auf das AWS-Konto konfiguriert sein. Um die Verbindung zu testen, geben Sie den folgenden Befehl ein:

aws sts get-caller-identity

Dieser Befehl sollte Details über den IAM-Benutzer zurückgeben, den Sie für die Verwendung konfiguriert haben.

Erstellen Sie einen Notebook-Job

Notebook-Jobs werden mithilfe von Jupyter-Notebooks in Studio Lab erstellt. Wenn Ihr Notebook in Studio Lab ausgeführt wird, kann es als Notebook-Job ausgeführt werden (mit mehr Ressourcen und Zugriff auf AWS-Services). Es gibt jedoch ein paar Dinge zu beachten.

Wenn Sie Pakete installiert haben, um Ihr Notebook zum Laufen zu bringen, fügen Sie Befehle zum Laden dieser Pakete in eine Zelle oben in Ihrem Notebook ein. Durch die Verwendung eines &-Symbols am Anfang jeder Zeile wird der Code zur Ausführung an die Befehlszeile gesendet. Im folgenden Beispiel verwendet die erste Zelle pip, um PyTorch-Bibliotheken zu installieren:

%%capture
%pip install torch
%pip install torchvision

Unser Notebook generiert ein trainiertes PyTorch-Modell. Mit unserem regulären Code speichern wir das Modell im Dateisystem in Studio Labs.

Wenn wir dies als Notebook-Job ausführen, müssen wir das Modell irgendwo speichern, wo wir später darauf zugreifen können. Der einfachste Weg, dies zu tun, besteht darin, das Modell in Amazon S3 zu speichern. Wir haben einen S3-Bucket erstellt, um unsere Modelle zu speichern, und verwenden eine andere Befehlszeilenzelle, um das Objekt in den Bucket zu kopieren.

Wir nutzen die AWS-Befehlszeilenschnittstelle (AWS CLI) hierher, um das Objekt zu kopieren. Das könnten wir auch gebrauchen AWS SDK für Python (Boto3) wenn wir eine ausgefeiltere oder automatisiertere Kontrolle des Dateinamens haben wollten. Im Moment stellen wir sicher, dass wir den Dateinamen jedes Mal ändern, wenn wir das Notebook ausführen, damit die Modelle nicht überschrieben werden.

Jetzt können wir den Notebook-Job erstellen.

  1. Wählen Sie (Rechtsklick) den Notebook-Namen und wählen Sie dann Notebook-Auftrag erstellen.
    Wenn diese Menüoption fehlt, müssen Sie möglicherweise Ihre Studio Lab-Umgebung aktualisieren. Öffnen Sie dazu Terminal vom Launcher und führen Sie den folgenden Code aus:
    conda deactivate && conda env remove —name studiolab

  2. Starten Sie als Nächstes Ihre JupyterLab-Instanz neu, indem Sie auswählen Amazon SageMaker Studio Lab aus dem oberen Menü und wählen Sie dann Starten Sie JupyterLab neu.Alternativ gehen Sie auf die Projektseite und beenden und starten Sie die Laufzeitumgebung neu.
  3. Auf dem Job erstellen Seite, für Compute-Typ, wählen Sie den Rechentyp aus, der zu Ihrem Job passt.

    Weitere Informationen zu den verschiedenen Arten von Rechenkapazität, einschließlich der Kosten, finden Sie unter Amazon SageMaker Preise (wählen On-Demand-Preise und navigiere zu Schulung Tab. Möglicherweise müssen Sie auch die Kontingentverfügbarkeit des Rechentyps in Ihrem AWS-Konto überprüfen. Weitere Informationen zu Dienstkontingenten finden Sie unter: AWS-Servicekontingente.Für dieses Beispiel haben wir eine ml.p3.2xlarge-Instanz ausgewählt, die 8 vCPU, 61 GB Speicher und eine Tesla V100-GPU bietet.

    Wenn auf dieser Seite keine Warnungen angezeigt werden, sollten Sie bereit sein. Wenn Warnungen angezeigt werden, überprüfen Sie, ob der richtige Rollen-ARN angegeben ist Dieses Formular beschänkt sich auf einige wesentliche Grundfunktionen. Diese Rolle sollte mit dem ARN der SageMaker-Ausführungsrolle übereinstimmen, die wir zuvor erstellt haben. Der ARN liegt im Format vor arn:aws:iam::[account-number]:role/service-role/[role-name].

    Es gibt andere Optionen, die innerhalb verfügbar sind Dieses Formular beschänkt sich auf einige wesentliche Grundfunktionen; Beispielsweise können Sie ein bestimmtes Image und einen bestimmten Kernel auswählen, die möglicherweise bereits über die benötigte Konfiguration verfügen, ohne dass zusätzliche Bibliotheken installiert werden müssen.

  4. Wenn Sie dieses Notizbuch nach einem Zeitplan ausführen möchten, wählen Sie aus Nach einem Zeitplan ausführen und geben Sie an, wie oft der Job ausgeführt werden soll.Wir möchten, dass dieses Notebook einmal ausgeführt wird, also wählen wir aus Lauf jetzt.
  5. Auswählen Erstellen.

Notebook-Auftragsliste

Das Notebook-Jobs listet alle Jobs auf, die derzeit ausgeführt werden, und diejenigen, die in der Vergangenheit ausgeführt wurden. Sie finden diese Liste im Launcher (wählen Sie Reichen Sie das, Neuer Launcher), dann wähle Notebook-Jobs der Andere .

Wenn der Notebook-Auftrag abgeschlossen ist, ändert sich der Status zu Completed (benutze den Neu laden Option bei Bedarf). Sie können dann das Download-Symbol auswählen, um auf die Ausgabedateien zuzugreifen.

Wenn die Dateien heruntergeladen wurden, können Sie das Notebook zusammen mit der Codeausgabe und dem Ausgabeprotokoll überprüfen. Da wir in unserem Fall Code hinzugefügt haben, um die Ausführung der Trainingszelle zu timen, können wir sehen, wie lange der Trainingsjob gedauert hat – 16 Minuten und 21 Sekunden, was viel schneller ist, als wenn der Code innerhalb von Studio Lab ausgeführt worden wäre (1 Stunde , 38 Minuten, 55 Sekunden). Tatsächlich lief das gesamte Notebook in 1,231 Sekunden (etwas mehr als 20 Minuten) zu einem Preis von weniger als 1.30 $ (USD).

W kann nun die Anzahl der Epochen erhöhen und die Hyperparameter anpassen, um den Verlustwert des Modells zu verbessern, und einen weiteren Notebook-Job übermitteln.

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie Sie Studio Lab-Notebook-Jobs verwenden, um den in Studio Lab entwickelten Code zu skalieren und mit mehr Ressourcen in einem AWS-Konto auszuführen.

Durch das Hinzufügen von AWS-Anmeldeinformationen zu unserer Studio Lab-Umgebung können wir nicht nur auf Notebook-Jobs zugreifen, sondern auch auf andere Ressourcen eines AWS-Kontos direkt aus unseren Studio Lab-Notebooks. Werfen Sie einen Blick auf das AWS SDK für Python.

Diese zusätzliche Funktion von Studio Lab hebt die Grenzen der Arten und Größen von Projekten auf, die Sie realisieren können. Teilen Sie uns mit, was Sie mit dieser neuen Funktion erstellen!


Über die Autoren

Mike Kammern ist Developer Advocate für KI und ML bei AWS. Er hat die letzten 7 Jahre damit verbracht, Bauherren beim Erlernen von Cloud, Sicherheit und ML zu helfen. Mike stammt ursprünglich aus Großbritannien und ist ein leidenschaftlicher Teetrinker und Legobauer.

Michele Monclova ist Hauptproduktmanager bei AWS im SageMaker-Team. Sie ist eine gebürtige New Yorkerin und Silicon Valley-Veteranin. Ihre Leidenschaft gilt Innovationen, die unsere Lebensqualität verbessern.

spot_img

Neueste Intelligenz

spot_img

Chat mit uns

Hallo! Wie kann ich dir helfen?