Come posso utilizzare la modalità locale dell'SDK Python di Amazon SageMaker con SageMaker Studio?

5 minuti di lettura
0

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.


AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa