Come posso utilizzare la modalità locale dell'SDK Python di Amazon SageMaker con SageMaker Studio?
Desidero utilizzare la modalità locale dell'SDK Python di Amazon SageMaker con SageMaker Studio.
Breve descrizione
Installa la CLI Docker di SageMaker Studio e le estensioni (facoltative) dell'interfaccia utente Docker di SageMaker Studio per aggiungere la modalità locale e la funzionalità Docker a SageMaker Studio.
Risoluzione
Prerequisiti
Prima di iniziare, assicurati di completare le seguenti fasi:
- La configurazione del dominio SageMaker Studio è in modalità VpcOnly (nota: la modalità PublicInternetOnly non è supportata).
- Il dominio è connesso ad Amazon VPC con le opzioni hostname DNS e risoluzione DNS attivate.
- Il ruolo di esecuzione del profilo utente di SageMaker Studio dispone delle seguenti autorizzazioni:
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
- Hai installato l'estensione CLI Docker. (Nota che CLI Docker è necessaria per utilizzare l'estensione dell'interfaccia utente.)
- Hai installato Docker Compose.
- Hai installato PpYAML, 5.4.1.
Creazione di script di configurazione del ciclo di vita di SageMaker Studio
1. Crea uno script di configurazione del ciclo di vita di Studio per l'app JupyterServer per installare le estensioni in uno dei due modi:
Installa sia l'estensione CLI che quella dell'interfaccia utente
#!/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 &
Installa solo l'estensione CLI
#!/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. Crea uno script di configurazione del ciclo di vita di SageMaker Studio per l'app KernelGateway:
#!/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. Da un terminale, codifica entrambi i contenuti dello script utilizzando la codifica base64:
$ 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. Crea configurazioni del ciclo di vita di Studio a partire dalle variabili di ambiente LCC_JS_CONTENT e LCC_KG_CONTENT utilizzando questi comandi dell'Interfaccia della linea di comando AWS (AWS 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
Nota: se riscontri errori nell'esecuzione dei comandi della CLI, assicurati di utilizzare la versione più recente di AWS CLI. Consulta Troubleshooting AWS CLI errors - AWS Command Line Interface (Risoluzione degli errori di AWS CLI - Interfaccia della linea di comando AWS).
Aggiornamento del dominio di Studio (facoltativo)
Aggiorna il dominio di Studio per aggiungere LCC alle impostazioni utente predefinite:
$ 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"}}}'
Aggiornamento del profilo utente di Studio
Aggiorna le impostazioni del tuo profilo utente di Studio come segue:
$ 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"]}}'
Avvia la nuova app JupyterServer
Elimina qualsiasi istanza in esecuzione dell'app JupyterServer per completare la configurazione. Quindi, avvia la nuova app JupyterServer. Al termine, la nuova app mostrerà lo stato InService.
Se stai utilizzando l'estensione dell'interfaccia utente, attendi che venga installata. Questa operazione richiede circa 10 minuti dopo l'avvio della nuova app JupyterServer. Al termine, aggiorna il browser per visualizzare l'estensione.
(Facoltativo) Alcuni kernel di Studio sono dotati di PyYAML>=6.0 e non hanno pacchetti Python pgrep o procps. La modalità locale richiede PyYAML==5.4.1, perché le versioni successive interrompono tale funzionalità. Inoltre, è necessario pgrep per eliminare un endpoint locale. Se richiesto, utilizza i seguenti comandi per installare questi requisiti dal tuo notebook Studio. Riavvia il kernel al termine dell'installazione.
!conda update --force -y conda !conda install -y pyyaml==5.4.1 !apt-get install -y procps
Creazione di un host Docker
Ora, crea un host Docker utilizzando l'estensione CLI che hai installato in precedenza. Utilizza qualsiasi tipo di istanza Amazon Elastic Compute Cloud (EC2) (ad esempio c5.xlarge) come segue:
!sdocker create-host --instance-type c5.xlarge
L'output deve essere simile al seguente:
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 "
Se hai installato l'estensione dell'interfaccia utente, seleziona il tipo di istanza dall'interfaccia utente e quindi il pulsante Start Host (Avvia host). Il nuovo host viene visualizzato nell'elenco Docker Hosts (Host Docker), accanto a un cerchio verde.
Esecuzione in modalità locale
Utilizza l'SDK Python di SageMaker in modalità locale.
Importante: per evitare costi aggiuntivi, quando la modalità locale e Docker non ti servono più, chiudi qualsiasi host Docker avviato. Per chiudere un host Docker utilizzando l'estensione CLI, inserisci:
!sdocker terminate-current-host
In alternativa, nell'estensione dell'interfaccia utente, in Docker Hosts (Host Docker), seleziona l'icona di "alimentazione" accanto a ciascun host Docker. Questa azione spegne l'host Docker e lo rimuove dall'elenco Docker Hosts (Host Docker).
Nota: per ulteriori informazioni su come utilizzare l'estensione CLI, consulta l'estensioneSageMaker Docker CLI extension - Docker integration for SageMaker Studio (Estensione CLI Docker di SageMaker - Integrazione di Docker per SageMaker Studio) sul sito Web di GitHub.

Contenuto pertinente
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata 2 mesi fa
- AWS UFFICIALEAggiornata 5 mesi fa