Wie behebe ich Probleme mit Lebenszyklus-Konfigurationsskripten in Amazon SageMaker AI?
Ich möchte Probleme mit Lebenszyklus-Konfigurationsskripten (LCC) in Amazon SageMaker AI beheben.
Lösung
Das LCC-Skript läuft ab
Wenn die Ausführung des LCC-Skripts länger als das 5-Minuten-Kontingent dauert, läuft das Skript ab.
Gehe wie folgt vor, um die Laufzeit des Skripts zu verringern:
- Reduziere die Anzahl der erforderlichen Schritte. Beschränke beispielsweise die Conda-Umgebungen, in denen du große Pakete installierst.
- Führe Aufgaben in parallelen Prozessen aus.
- Führe den Befehl nohup im Skript aus, um Hangup-Signale zu ignorieren, sodass das Skript innerhalb von 5 Minuten abgeschlossen werden kann.
Um den Befehl nohup auszuführen, initialisiere den Befehl in der jeweiligen Code-Zeile und beende die Code-Zeile dann mit einem Und-Zeichen.
Beispielskript:
=== #!/bin/bash set -e # OVERVIEW # This script executes an existing Notebook file on the instance during start using nbconvert(https://github.com/jupyter/nbconvert) # PARAMETERS ENVIRONMENT=python3 NOTEBOOK_FILE=/home/ec2-user/SageMaker/test.ipynb source /home/ec2-user/anaconda3/bin/activate "$ENVIRONMENT" nohup jupyter nbconvert --to notebook --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 --execute "$NOTEBOOK_FILE" & source /home/ec2-user/anaconda3/bin/deactivate ====
Bestehende LLC können nicht gelöscht werden
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Wenn du versuchst, ein LCC-Skript zu löschen, das bereits an eine SageMaker Studio-Domain angehängt ist, erhältst du möglicherweise die folgende Fehlermeldung:
"Loading of domain lifecycle failed. [400] ResourceNotFound: LifecycleConfig does not exist."
Um dieses Problem zu beheben, musst du zuerst das LCC-Skript trennen und es dann löschen.
Oder du kannst den Parameter LifecycleConfigArns in der Domainkonfiguration auf eine leere Liste setzen.
Gehe wie folgt vor, um die Domain neu zu konfigurieren:
-
Führe den folgenden Befehl describe-domain aus, um die Liste der zugehörigen LCC-Skripts im Parameter LifecycleConfigArns anzuzeigen:
aws sagemaker describe-domain —domain-id d-xxxxxxxxx -
Führe den folgenden Befehl update-domain aus, um den Parameter auf eine leere Liste zu setzen:
aws sagemaker update-domain --domain-id d-xxxxxxxxx \ --default-user-settings '{ "JupyterServerAppSettings": { "DefaultResourceSpec": { "InstanceType": "system" }, "LifecycleConfigArns": [] } }'
Wenn du den Befehl update-domain erneut ausführst, verweist die Domain nicht mehr auf das LCC-Skript. Anschließend kannst du das neue LCC-Skript an die Domain anhängen.
Das LCC-Skript kann kein Paket installieren
Wenn der LCC keine Pakete in einer SageMaker Studio-Domain oder Notebook-Instance installieren kann, hat das LCC-Skript möglicherweise keinen Zugriff auf die Domain oder Instance. Um dieses Problem zu lösen, musst du die zugehörige SageMaker Studio-Domain oder Notebook-Instance mit Amazon Virtual Private Cloud (VPC) verbinden. Die VPC muss auch den Internetzugang zulassen.
Du kannst entweder eine VPC der Standardkommunikation über das Internet im PublicInternetOnly-Modus zuordnen. Oder du kannst die Kommunikation mit dem Internet nur im VPC-Modus einrichten.
Wenn du den Modus Nur VPC verwendest, richtest du Sicherheitsgruppen mit eingehenden und ausgehenden Regeln ein, die den folgenden Datenverkehr zulassen:
- NFS-Datenverkehr über TCP auf Port 2049 zwischen der Domain und dem Amazon Elastic File System (Amazon EFS)-Volume.
- TCP-Datenverkehr innerhalb der Sicherheitsgruppe.
Hinweis: TCP-Datenverkehr in der Sicherheitsgruppe ist erforderlich, um die Jupyter Server-Anwendung und die Kernel Gateway-Anwendungen zu verbinden. Du musst den Zugriff auf mindestens Ports im Bereich 8192–65535 zulassen.
Um den Internetzugang zu ermöglichen, musst du ein NAT-Gateway mit Internetzugang verwenden.
Die Instance kann den Inhalt des LCC-Skripts nicht finden
Wenn die Anwendungs-Instance den Inhalt des LCC-Skripts nicht finden kann, wird möglicherweise die folgende Fehlermeldung angezeigt:
"stdbuf: failed to run command "/opt/ml/lifecycleconfig/lifecycle_script.sh": No such file or directory"
Dieser Fehler kann aufgrund der Inkompatibilität zwischen Windows-Symbolen und Unix-formatierten Symbolen auftreten. Zeichen in Windows verwenden CRLF-Zeilenenden (\r\n), und Unix verwendet LF-Zeilenenden (\n).
Amazon SageMaker AI-Notebook-Instances werden auf dem Amazon Linux 2 (AL2)-Betriebssystem (OS) ausgeführt. Ein LCC-Bash-Skript, das du auf ein Windows-Betriebssystem herunterlädst und direkt an die LLC anhängst, ist für das Linux-Betriebssystem nicht gültig.
Gehe wie folgt vor, um dieses Problem zu beheben:
- Öffne das Bash-Skript in Notepad++.
- Wähle Ansicht und dann Symbol anzeigen.
- Wähle Alle Symbole anzeigen, um die Windows-Zeilenenden (\r\n) anzuzeigen.
- Ändere CRLF in LF (\n), um das Skript in Unix gültig zu machen.
- Hänge das Skript an das LCC an.
Ähnliche Informationen
Debuggen der Lebenszykluskonfigurationen
Connect Studio-Notebooks in einer VPC mit externen Ressourcen verbinden
- Tags
- Amazon SageMaker
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 6 Monaten
AWS OFFICIALAktualisiert vor einem Jahr