Anpassung einer SageMaker-Notebook-Instance mithilfe eines LCC-Skripts - Amazon SageMaker AI

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 ein öffentliches Repository von Notebook-Lebenszykluskonfigurationskripts, die häufige Anwendungsfälle für die Anpassung von Notebook-Instances berücksichtigen.

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 nohup in 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/SageMaker vornimmt (z. B. Installieren eines Paket mit pip), verwenden Sie den Befehl sudo -u ec2-user zum Ausführen als ec2-user-Benutzer. Hierbei handelt es sich um denselben Benutzer, der Amazon SageMaker AI ausführt.

  • Notebook-Instances verwenden conda Umgebungen 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 der conda-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 # Replace myPackage with the name of the package you want to install. pip install myPackage # You can also perform "conda install" here as well. source deactivate EOF

    Wenn 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 # Replace myPackage with the name of the package you want to install. pip install --upgrade --quiet myPackage # 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.