Anpassung einer SageMaker-Notebook-Instance mithilfe eines LCC-Skripts
Wichtig
Benutzerdefinierte IAM-Richtlinien, die es Amazon SageMaker Studio oder Amazon SageMaker Studio Classic ermöglichen, Amazon-SageMaker-Ressourcen zu erstellen, müssen auch Berechtigungen zum Hinzufügen von Tags zu diesen Ressourcen gewähren. Die Berechtigung zum Hinzufügen von Tags zu Ressourcen ist erforderlich, da Studio und Studio Classic automatisch alle von ihnen erstellten Ressourcen taggen. Wenn eine IAM-Richtlinie Studio und Studio Classic das Erstellen von Ressourcen, aber kein Tagging erlaubt, können bei dem Versuch, Ressourcen zu erstellen, „AccessDenied“-Fehler auftreten. Weitere Informationen finden Sie unter Bereitstellen von Berechtigungen für das Markieren von SageMaker-AI-Ressourcen.
Verwaltete AWS-Richtlinien für Amazon SageMaker AI, die Berechtigungen zum Erstellen von SageMaker-Ressourcen gewähren, enthalten bereits Berechtigungen zum Hinzufügen von Tags während der Erstellung dieser Ressourcen.
Eine Lebenszykluskonfiguration (LCC) enthält Shell-Skripte, die nur beim Erstellen oder Starten einer Notebook-Instance ausgeführt werden. Wenn Sie eine Notebook-Instance erstellen, können Sie eine neue LCC erstellen oder eine LCC anfügen, die Sie bereits haben. Skripte für die Lebenszykluskonfiguration sind für die folgenden Anwendungsfälle nützlich:
-
Installation von Paketen oder Beispiel-Notebooks auf einer Notebook-Instance
-
Konfiguration von Netzwerk und Sicherheit für eine Notebook-Instance
-
Verwenden eines Shell-Skripts zum Anpassen einer Notebook-Instance
Sie können auch ein Lifecycle-Konfigurationsskript verwenden, um von Ihrem Notebook aus auf AWS Services zuzugreifen. Sie können beispielsweise ein Skript erstellen, mit dem Sie mithilfe Ihres Notebook andere AWS Ressourcen steuern können, z. B. eine Amazon EMR-Instance.
Wir unterhalten unter https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples
Anmerkung
Jedes Skript hat ein Limit von 16384 Zeichen.
Der Wert der Umgebungsvariable $PATH, die für beide Skripts verfügbar ist, lautet /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin. Das Arbeitsverzeichnis. Dabei handelt es sich um den Wert der $PWD Umgebungsvariable: /.
Sehen Sie sich in CloudWatch Logs die Lebenszykluskonfigurationen für Notebook-Instances in der Protokollgruppe /aws/sagemaker/NotebookInstances im Protokoll-Stream [notebook-instance-name]/[LifecycleConfigHook] an.
Skripts können nicht länger als fünf Minuten ausgeführt werden. Bei einem länger laufenden Skript treten Fehler auf und die Notebook-Instance wird nicht erstellt oder gestartet. Gehen Sie zum Reduzieren der Laufzeit von Skripten wie folgt vor:
-
Beschränken Sie sich auf notwendige Schritte. Schränken Sie beispielsweise ein, in welchen Conda-Umgebungen große Pakete installiert werden.
-
Führen Sie Aufgaben in parallelen Prozessen aus.
-
Verwenden Sie den befehl
nohupin Ihrem Skript.
Eine Liste der Lebenszykluskonfigurationen, die Sie bereits für Notebook-Instances erstellt haben, können Sie in der SageMaker-AI-Konsole über die Option Lebenszykluskonfiguration aufrufen. Die LLC für Notebook-Instances sind auch verfügbar, wenn Sie eine neue Notebook-Instance erstellen. Weitere Informationen zum Erstellen einer Notebook-Instance finden Sie unter Erstellen einer Notebook-Instance für Amazon SageMaker.
Bewährte Methoden für die Lebenszykluskonfiguration
Es folgen die bewährten Methoden für die Verwendung von Lebenszykluskonfigurationen:
Wichtig
Es wird nicht empfohlen, vertrauliche Informationen in Ihrem Lifecycle-Konfigurationsskript zu speichern.
-
Lebenszykluskonfigurationen werden als
root-Benutzer ausgeführt. Wenn Ihr Skript Änderungen innerhalb des Verzeichnisses/home/ec2-user/SageMakervornimmt (z. B. Installieren eines Paket mitpip), verwenden Sie den Befehlsudo -u ec2-userzum Ausführen alsec2-user-Benutzer. Hierbei handelt es sich um denselben Benutzer, der Amazon SageMaker AI ausführt. -
Notebook-Instances verwenden
condaUmgebungen zur Implementierung verschiedener Kernel für Jupyter Notebooks. Wenn Sie Pakete installieren möchten, die für einen oder mehrere Notebook-Kernels verfügbar sind, schließen Sie die Befehle zum Installieren der Pakete in die Befehle derconda-Umgebung ein, die die conda-Umgebung aktivieren, welche den zu installierenden Kernel enthält.Beispiel: Wenn Sie ein Paket nur für die
python3-Umgebung installieren möchten, verwenden Sie den folgenden Code:#!/bin/bash sudo -u ec2-user -i <<EOF # This will affect only the Jupyter kernel called "conda_python3". source activate python3 # ReplacemyPackagewith the name of the package you want to install. pip installmyPackage# You can also perform "conda install" here as well. source deactivate EOFWenn Sie ein Paket in allen Conda-Umgebungen in der Notebook-Instance installieren möchten, verwenden Sie den folgenden Code:
#!/bin/bash sudo -u ec2-user -i <<EOF # Note that "base" is special environment name, include it there as well. for env in base /home/ec2-user/anaconda3/envs/*; do source /home/ec2-user/anaconda3/bin/activate $(basename "$env") # Installing packages in the Jupyter system environment can affect stability of your SageMaker # Notebook Instance. You can remove this check if you'd like to install Jupyter extensions, etc. if [ $env = 'JupyterSystemEnv' ]; then continue fi # ReplacemyPackagewith the name of the package you want to install. pip install --upgrade --quietmyPackage# You can also perform "conda install" here as well. source /home/ec2-user/anaconda3/bin/deactivate done EOF -
Sie müssen alle conda-Umgebungen im Standardumgebungsordner (/home/user/anaconda3/envs) speichern.
Wichtig
Wenn Sie ein Skript erstellen oder ändern, empfiehlt es sich, einen Texteditor zu verwenden, der Zeilenumbrüche im Unix-Format bereitstellt, z. B. den Texteditor, der beim Erstellen eines Notebook in der Konsole verfügbar ist. Das Kopieren von Text aus einem Nicht-Linux-Betriebssystem kann zu inkompatiblen Zeilenumbrüchen und zu einem unerwarteten Fehler führen.