Anpassung einer SageMaker Notebook-Instanz mithilfe eines LCC-Skripts - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anpassung einer SageMaker Notebook-Instanz mithilfe eines LCC-Skripts

Wichtig

Benutzerdefinierte IAM-Richtlinien, die es Amazon SageMaker Studio oder Amazon SageMaker Studio Classic ermöglichen, SageMaker Amazon-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 "AccessDenied" Fehler auftreten, wenn versucht wird, Ressourcen zu erstellen. Weitere Informationen finden Sie unter Stellen Sie Berechtigungen für das Taggen von KI-Ressourcen SageMaker bereit.

AWS verwaltete Richtlinien für Amazon SageMaker AIdie Berechtigungen zum Erstellen von SageMaker Ressourcen gewähren, beinhalten bereits Berechtigungen zum Hinzufügen von Tags beim Erstellen dieser Ressourcen.

Eine Lebenszykluskonfiguration (LCC) stellt Shell-Skripts bereit, die nur ausgeführt werden, wenn Sie die Notebook-Instanz erstellen oder wann immer Sie eine starten. Wenn Sie eine Notebook-Instanz erstellen, können Sie eine neue LCC erstellen oder eine LCC anhängen, die Sie bereits haben. Lebenszyklus-Konfigurationsskripten sind für die folgenden Anwendungsfälle nützlich:

  • Installation von Paketen oder Beispiel-Notebooks auf einer Notebook-Instanz

  • Konfiguration von Netzwerk und Sicherheit für eine Notebook-Instanz

  • Verwenden eines Shell-Skripts zum Anpassen einer Notebook-Instanz

Sie können auch ein Lifecycle-Konfigurationsskript verwenden, um von Ihrem Notebook aus auf AWS Dienste zuzugreifen. Sie können beispielsweise ein Skript erstellen, mit dem Sie Ihr Notizbuch verwenden können, um andere AWS Ressourcen zu steuern, z. B. eine Amazon EMR-Instance.

Wir unterhalten unter - ein öffentliches Repository mit Konfigurationsskripten für den Lebenszyklus von Notebooks, die sich mit gängigen Anwendungsfällen für die Anpassung von Notebook-Instances befassen 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: /.

CloudWatch Protokolle für Lebenszykluskonfigurationen von Notebook-Instanzen in der Protokollgruppe /aws/sagemaker/NotebookInstances im Protokollstream [notebook-instance-name]/[LifecycleConfigHook] anzeigen.

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 Skripts 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.

Sie können eine Liste der Lebenszykluskonfigurationen für Notebook-Instanzen einsehen, die Sie zuvor erstellt haben, indem Sie in der SageMaker AI-Konsole die Option Lifecycle-Konfiguration auswählen. Sie können eine Notebook-Instanz LCC anhängen, wenn Sie eine neue Notebook-Instanz erstellen. Weitere Informationen zum Erstellen einer Notebook-Instance finden Sie unter Erstellen Sie eine SageMaker Amazon-Notebook-Instance.

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. Dies ist derselbe Benutzer, unter dem Amazon SageMaker AI läuft.

  • SageMaker KI-Notebook-Instances verwenden conda Umgebungen, um verschiedene Kernel für Jupyter-Notebooks zu implementieren. 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 (/) speichern. home/user/anaconda3/envs

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.