Wie verwende ich den lokalen Modus des Amazon SageMaker Python SDK mit SageMaker Studio?
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.

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 4 Monaten
- AWS OFFICIALAktualisiert vor 6 Monaten
- AWS OFFICIALAktualisiert vor 7 Monaten