Wie verwende ich den lokalen Modus des Amazon SageMaker Python SDK mit SageMaker Studio?

Lesedauer: 5 Minute
0

Ich möchte den lokalen Modus des Amazon SageMaker Python SDK mit SageMaker Studio verwenden.

Kurzbeschreibung

Installieren Sie die SageMaker Studio Docker CLI und (optional) die SageMaker-Studio-Docker-UI-Erweiterungen, um SageMaker Studio den lokalen Modus und Docker-Funktionen hinzuzufügen.

Lösung

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Schritte abgeschlossen haben:

  • Ihre SageMaker-Studio-Domäneneinrichtung befindet sich im **VpcOnly-**Modus (beachten Sie, dass der **PublicInternetOnly-**Modus nicht unterstützt wird).
  • Ihre Domäne ist mit Amazon VPC verbunden, wobei die Optionen für DNS-Hostname und DNS-Auflösung aktiviert sind.
  • Ihre Ausführungsrolle für das SageMaker-Studio-Benutzerprofil hat die folgenden Berechtigungen:
sagemaker:DescribeDomain
sagemaker:DescribeUserProfile
sagemaker:ListTags
elasticfilesystem:DescribeMountTargets
elasticfilesystem:DescribeMountTargetSecurityGroups
elasticfilesystem:ModifyMountTargetSecurityGroups
ec2:RunInstances
ec2:TerminateInstances
ec2:DescribeInstances
ec2:DescribeInstanceTypes
ec2:DescribeImages
ec2:DescribeSecurityGroups
ec2:DescribeNetworkInterfaces
ec2:DescribeNetworkInterfaceAttribute
ec2:CreateSecurityGroup
ec2:AuthorizeSecurityGroupIngress
ec2:ModifyNetworkInterfaceAttribute
ec2:CreateTags
  • Sie haben die Docker-CLI-Erweiterung installiert. (Beachten Sie, dass Docker CLI für die Verwendung der UI-Erweiterung erforderlich ist.)
  • Sie haben Docker Compose installiert.
  • Sie haben PpYAML, 5.4.1 installiert.

SageMaker-Studio-Lifecycle-Konfigurationsskripte erstellen

1.    Erstellen Sie ein Studio-Lifecycle-Konfigurationsskript für die **JupyterServer-**App, um die Erweiterungen auf eine von zwei Arten zu installieren:

Installieren Sie sowohl die CLI- als auch die UI-Erweiterung

#!/bin/bash

set -ex
cd ~
if cd sagemaker-studio-docker-cli-extension
then
  git reset --hard
  git pull
else
  git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git
  cd sagemaker-studio-docker-cli-extension
fi
nohup ./setup.sh > docker_setup.out 2>&1 &
if cd ~/sagemaker-studio-docker-ui-extension
then
  git reset --hard
  git pull
  cd
else
  cd
  git clone https://github.com/aws-samples/sagemaker-studio-docker-ui-extension.git
fi

nohup ~/sagemaker-studio-docker-ui-extension/setup.sh > docker_setup.out 2>&1 &

Installieren Si nur die CLI-Erweiterung

#!/bin/bash

set -ex
cd ~
if cd sagemaker-studio-docker-cli-extension
then
 git reset --hard
 git pull
else
 git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git
 cd sagemaker-studio-docker-cli-extension
fi
nohup ./setup.sh > docker_setup.out 2>&1 &

2.    Erstellen Sie ein SageMaker-Studio-Lifecycle-Konfigurationsskript für die **KernelGateway-**App:

#!/bin/bash

set -eux
STATUS=$(python3 -c "import sagemaker_dataprep";echo $?)
if [ "$STATUS" -eq 0 ]
then
 echo 'Instance is of Type Data Wrangler'
else
 echo 'Instance is not of Type Data Wrangler'
 cd ~
 if cd sagemaker-studio-docker-cli-extension
 then
  git reset --hard
  git pull
 else
  git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git
  cd sagemaker-studio-docker-cli-extension
 fi
 nohup ./setup.sh > docker_setup.out 2>&1 &
fi

3.    Codieren Sie von einem Terminal aus beide Skriptinhalte mit der **base64-**Codierung:

$ LCC_JS_CONTENT=`openssl base64 -A -in <LifeCycle script file for JupyterServer>`
$ LCC_KG_CONTENT=`openssl base64 -A -in <LifeCycle script file for KernelGateway>`

4.    Erstellen Sie Studio-Lifecycle-Konfigurationen aus den Umgebungsvariablen LCC_JS_CONTENT und LCC_KG_CONTENT mithilfe der folgenden AWS-Command-Line-Interface-Befehle (CLI):

$ aws sagemaker create-studio-lifecycle-config --studio-lifecycle-config-name sdocker-js --studio-lifecycle-config-content $LCC_JS_CONTENT --studio-lifecycle-config-app-type JupyterServer
$ aws sagemaker create-studio-lifecycle-config --studio-lifecycle-config-name sdocker-kg --studio-lifecycle-config-content $LCC_KG_CONTENT --studio-lifecycle-config-app-type KernelGateway

Hinweis: Wenn beim Ausführen der CLI-Befehle Fehler auftreten, stellen Sie sicher, dass Sie die neueste Version von AWS CLI verwenden. Siehe Behebung von AWS-CLI-Fehlern – AWS Command Line Interface.

Studio-Domäne aktualisieren (optional)

Aktualisieren Sie die Studio-Domäne, um LCC zu den Standardbenutzereinstellungen hinzuzufügen:

$ aws sagemaker update-domain --domain-id <domain-id> --default-user-settings '{"JupyterServerAppSettings": {"DefaultResourceSpec": {"InstanceType": "system", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"}}, "KernelGatewayAppSettings": {"DefaultResourceSpec": {"InstanceType": "<default instance type>", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"}}}'

Studio-Benutzerprofil aktualisieren

Aktualisieren Sie Ihre Studio-Nutzungsprofileinstellungen wie folgt:

$ aws sagemaker update-user-profile --domain-id <domain-id> --user-profile-name <user profile> --user-settings '{"JupyterServerAppSettings ": {"DefaultResourceSpec": {"InstanceType": "system", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"}, "LifecycleConfigArns": ["arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"]}, "KernelGatewayAppSettings": {"DefaultResourceSpec": {"InstanceType": "<default instance type>", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"}, "LifecycleConfigArns": ["arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"]}}'

Neue JuypterServer-App starten

Löschen Sie alle laufenden Instances der **JupyterServer-**App, um die Konfiguration abzuschließen. Starten Sie dann die neue **JupyterServer-**App. Wenn Sie fertig sind, zeigt die neue App einen **InService-**Status an.

Wenn Sie die UI-Erweiterung verwenden, warten Sie, bis sie installiert ist. Dies dauert etwa 10 Minuten, nachdem Sie die neue **JupyterServer-**App gestartet haben. Wenn Sie fertig sind, aktualisieren Sie Ihren Browser, um die Erweiterung zu sehen.

(Optional) Einige Studio-Kernel werden mit PyYAML>=6.0 geliefert und haben keine Python-Pakete pgrep oder procps. Der lokale Modus erfordert PyYAML==5.4.1, da höhere Versionen diese Funktionalität beeinträchtigen. Außerdem benötigen Sie pgrep, um einen lokalen Endpunkt zu löschen. Verwenden Sie bei Bedarf die folgenden Befehle, um diese Anforderungen von Ihrem Studio-Notebook aus zu installieren. Starten Sie Ihren Kernel neu, nachdem die Installation abgeschlossen ist.

!conda update --force -y conda
!conda install -y pyyaml==5.4.1
!apt-get install -y procps

Docker-Host erstellen

Erstellen Sie nun einen Docker-Host mit der zuvor installierten CLI-Erweiterung. Verwenden Sie einen beliebigen Amazon-Elastic-Compute-Cloud-Instancetyp (EC2) (z. B. c5.xlarge) wie folgt:

!sdocker create-host --instance-type c5.xlarge

Die Ausgabe muss etwa wie folgt aussehen:

Successfully launched DockerHost on instance i-xxxxxxxxxxxxxxxxx with private DNS ip-xxx-xxx-xxx-xxx.ec2.internal
Waiting on docker host to be ready
Docker host is ready!
ip-xxx-xxx-xxx-xxx.ec2.internal
Successfully created context "ip-xxx-xxx-xxx-xxx.ec2.internal "
ip-xxx-xxx-xxx-xxx.ec2.internal
Current context is now "ip-xxx-xxx-xxx-xxx.ec2.internal "

Wenn Sie die UI-Erweiterung installiert haben, wählen Sie den Instancetyp in der Benutzeroberfläche aus und klicken Sie dann auf die Schaltfläche Host starten. Der neue Host wird in der Docker-Hosts-Liste neben einem grünen Kreis angezeigt.

Im lokalen Modus ausführen

Verwenden Sie das SageMaker Python SDK im lokalen Modus.

Wichtig: Um zusätzliche Kosten zu vermeiden, schließen Sie jeden Docker-Host, den Sie gestartet haben, nachdem Sie mit dem lokalen Modus fertig sind und Docker nicht mehr verwenden müssen. Um einen Docker-Host mit der CLI-Erweiterung zu schließen, geben Sie Folgendes ein:

!sdocker terminate-current-host

Oder wählen Sie in der UI-Erweiterung unter Docker Hosts das Power-Symbol neben jedem Docker-Host. Diese Aktion fährt den Docker-Host herunter und entfernt ihn aus der Docker-Hosts-Liste.

Hinweis: Weitere Informationen zur Verwendung der CLI-Erweiterung finden Sie unter SageMaker-Docker-CLI-Erweiterung – Docker-Integration für SageMaker Studio auf der GitHub-Website.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr