Direkt zum Inhalt

Wie behebe ich Timeout-Probleme mit der Amazon SageMaker AI-Notebook-Instance, wenn ich zusätzliche Bibliotheken installiere?

Lesedauer: 4 Minute
0

Wenn ich versuche, zusätzliche Bibliotheken in meiner Amazon SageMaker AI-Notebook-Instance zu installieren, erhalte ich einen Timeout-Fehler.

Lösung

Wenn ein Skript Lebenszyklusonfigurationen länger als 5 Minuten ausgeführt wird, schlägt das Skript fehl und SageMaker AI erstellt oder startet die Notebook-Instance nicht.

Verwende eine der folgenden Methoden, um das Problem zu lösen.

Den Befehl nohup ausführen

Für eine vorübergehende Lösung führe den Befehl nohup aus, um zu erzwingen, dass das Lebenszykluskonfigurationsskript weiterhin im Hintergrund ausgeführt wird, bis du die Pakete installierst.

Führe den folgenden Befehl mit nohup am Anfang und einem Und-Zeichen (&) am Ende aus:

#!/bin/bash
set -e
nohup pip install xgboost &

Nachdem du die Bibliotheken installierst, wird das Skript nicht mehr ausgeführt. SageMaker AI benachrichtigt dich nicht, wenn dies passiert, aber du kannst den Befehl ps ausführst, um den Status des Skripts zu überprüfen.

Hinweis: Du kannst den Befehl nohup auch für andere Skript-Timeout-Szenarien ausführen, z. B. wenn du große Amazon Simple Storage Service (Amazon S3)-Objekte herunterlädst.

Eine benutzerdefinierte persistente Conda-Installation auf dem Volume der Notebook-Instance erstellen

  1. Führe im Terminal einer vorhandenen Notebook-Instance den folgenden Befehl im bevorzugten Editor aus, um eine.sh-Datei zu erstellen:

    vim custom-script.sh
  2. Füge den Inhalt des On-Create-Skripts zur .sh-Datei hinzu. Um das Skript zu kopieren, siehe amazon-sagemaker-notebook-instance-lifecycle-config-samples auf der GitHub-Website. Das Skript erstellt eine neue Conda-Umgebung in einer benutzerdefinierten Conda-Installation. Das Skript installiert auch NumPy und Boto3 in der neuen Conda-Umgebung.
    Hinweis: Die Notebook-Instance muss über eine Internetverbindung verfügen, um das Miniconda-Installationsprogramm und den Ipykernel herunterzuladen.

  3. Führe den folgenden Befehl aus, um das Skript als ausführbar zu markieren und das Skript auszuführen:

    chmod +x custom-script.sh
    ./custom-script.sh
  4. Beende nach Abschluss der Installation die Notebook-Instance.

  5. Füge das On-Start-Skript zur .sh-Datei hinzu. Um das Skript zu kopieren, siehe amazon-sagemaker-notebook-instance-lifecycle-config-samples auf der GitHub-Website.

  6. Füge auf der beendeten Notebook-Instance das On-Start-Skript als Lebenszykluskonfiguration hinzu. Jedes Mal, wenn du die Notebook-Instance startest, stellt das Skript die benutzerdefinierte Umgebung als Kernel in Jupyter zur Verfügung.

  7. Starte die Notebook-Instance und installiere dann die benutzerdefinierten Bibliotheken in der benutzerdefinierten Umgebung.
    Um beispielsweise pyarrow zu installieren, führe den folgenden Befehl aus:

    import sys
    !conda install --yes --prefix {sys.prefix} -c conda-forge pyarrow

Wenn du die Notebook-Instance beendest und dann startest, sind die benutzerdefinierte Conda-Umgebung und Bibliotheken weiterhin verfügbar. Du musst sie nicht erneut installieren.

Wenn du eine Fehlermeldung erhältst, die besagt, dass du Conda aktualisieren musst, führe die folgenden Befehle aus:

!conda install -p "/home/ec2-user/anaconda3" "conda>=4.8" --yes
!conda install -p "/home/ec2-user/SageMaker/custom-miniconda/miniconda" "conda>=4.8" --yes

Installiere nach Abschluss der Conda-Installation die Bibliotheken.

Ein Neptune-Notebook erstellen und dessen Richtlinien und Verbindungen konfigurieren

Wenn du ein Notebook in Amazon Neptune erstellst, verwendet Neptune eine Standard-Lebenszykluskonfiguration, die auf ein S3-Objekt verweist, z. B. aws s3 cp s3://aws-neptune-notebook/graph_notebook.tar.gz /tmp/graph_notebook.tar.gz. Die Neptune AWS Identity and Access Management (IAM)-Rolle muss über eine Berechtigungsrichtlinie verfügen, die die Aktionen s3:getObject und s3:ListBucket für die Ressourcen arn:aws:s3:::aws-neptune-notebook und arn:aws:s3:::aws-neptune-notebook/ gewährt.

Die Neptune IAM-Rolle muss außerdem über eine Vertrauensrichtlinie verfügen, die SageMaker AI die AssumeRole-Aktion gewährt. Du hast beispielsweise die IAM-Datenbankauthentifizierung auf dem DB-Cluster aktiviert, den du dem Notebook zugeordnet hast. Die IAM-Rolle muss über eine Berechtigungsrichtlinie verfügen, die die Aktion neptune-db: für den zugehörigen DB-Cluster gewährt.

Wenn du eine Virtual Private Cloud (VPC) verwendest, um das Neptune-Notebook mit dem Internet zu verbinden, musst du ein NAT-Gateway an die VPC anschließen. Außerdem musst du die Sicherheitsgruppen so konfigurieren, dass sie den Internetzugriff auf Amazon S3 und den Python Package Index (PyPI) ermöglichen. Weitere Informationen zu PyPI findest du auf der Python-Paketindex-Website.

Hinweis: Verwende Amazon CloudWatch Logs, um Probleme mit Lebenszyklus-Konfigurationsskripten zu beheben. Du kannst die Protokolle an den folgenden Orten finden:

  • Protokollgruppe: /aws/SageMaker/NotebookInstances
  • Protokollstream: example_notebook_instance_name/LifecycleConfigOnStart

Ähnliche Informationen

Was ist Amazon SageMaker AI?

Debuggen der Lebenszykluskonfigurationen

AWS OFFICIALAktualisiert vor 9 Monaten