¿Cómo utilizo el modo local del SDK para Python de Amazon SageMaker con SageMaker Studio?

6 minutos de lectura
0

Quiero usar el modo local del SDK para Python de Amazon SageMaker con SageMaker Studio.

Descripción breve

Instale la CLI de Docker de SageMaker Studio y las extensiones de la interfaz de usuario de Docker de SageMaker Studio (opcionales) para agregar el modo local y la funcionalidad de Docker a SageMaker Studio.

Resolución

Requisitos previos

Antes de empezar, asegúrese de completar lo siguiente:

  • La configuración del dominio de SageMaker Studio está en modo VpcOnly (tenga en cuenta que no se admite el modo PublicInternetOnly).
  • Su dominio está conectado a Amazon VPC con las opciones de nombre de host DNS y resolución de DNS activadas.
  • Su rol de ejecución del perfil de usuario de SageMaker Studio tiene los siguientes permisos:
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
  • Instaló la extensión de la CLI de Docker. (Tenga en cuenta que se requiere la CLI de Docker para usar la extensión de interfaz de usuario).
  • Instaló Docker Compose.
  • Instaló PpYAML, 5.4.1.

Creación de scripts de configuración del ciclo de vida de SageMaker Studio

1.    Cree un script de configuración del ciclo de vida de Studio para la aplicación JupyterServer a fin de instalar las extensiones de dos maneras:

Instale las extensiones de la CLI y UI

#!/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 &

Instalar solo la extensión de la 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.    Cree un script de configuración del ciclo de vida de SageMaker Studio para la aplicación 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.    Desde un terminal, codifique el contenido de ambos scripts mediante la codificación 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.    Cree configuraciones del ciclo de vida de Studio a partir de las variables de entorno LCC_JS_CONTENT y LCC_KG_CONTENT mediante estos comandos de la interfaz de línea de comandos de 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: Si se producen errores al ejecutar los comandos de la CLI, asegúrese de utilizar la versión más reciente de la AWS CLI. Consulte Solución de problemas de la AWS CLI: Interfaz de línea de comandos de AWS.

Actualizar el dominio de Studio (opcional)

Actualice el dominio de Studio para agregar LCC a la configuración de usuario predeterminada:

$ 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"}}}'

Actualizar el perfil de usuario de Studio

Actualice la configuración de su perfil de uso de Studio de la siguiente manera:

$ 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"]}}'

Iniciar la nueva aplicación JuypterServer

Elimine cualquier instancia en ejecución de la aplicación JupyterServer para completar la configuración. A continuación, inicie la nueva aplicación JupyterServer. Cuando termine, la nueva aplicación mostrará el estado InService.

Si utiliza la extensión de interfaz de usuario, espere a que se instale. Esto demora unos 10 minutos después de lanzar la nueva aplicación JupyterServer. Cuando termine, actualice el navegador para ver la extensión.

(Opcional) Algunos núcleos de Studio vienen con PyYAML>=6.0 y no tienen paquetes de Python pgrep ni procps. El modo local requiere PyYAML==5.4.1 ya que las versiones superiores rompen esta funcionalidad. Además, necesita pgrep para eliminar un punto de conexión local. Si es necesario, utilice los siguientes comandos para instalar estos requisitos desde su cuaderno de Studio. Reinicie el núcleo una vez finalizada la instalación.

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

Crear un host de Docker

Ahora, cree un host de Docker con la extensión de la CLI que instaló anteriormente. Utilice cualquier tipo de instancia de Amazon Elastic Compute Cloud (EC2) (por ejemplo, c5.xlarge) de la siguiente manera:

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

El resultado debe ser similar al siguiente:

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 "

Si ha instalado la extensión de interfaz de usuario, seleccione el tipo de instancia en la interfaz de usuario y, a continuación, pulse el botón Start host (Iniciar host). El nuevo host aparece en la lista de Docker Hosts (Hosts de Docker) junto a un círculo verde.

Ejecutar en modo local

Utilice el SDK para Python de SageMaker en modo local.

Importante: Para evitar cargos adicionales, cierre cualquier host de Docker que haya lanzado cuando haya terminado con el modo local y ya no necesite usar Docker. Para cerrar un host de Docker mediante la extensión de la CLI, introduzca:

!sdocker terminate-current-host

O bien, en la extensión de la interfaz de usuario, en Docker Hosts (Hosts de Docker), seleccione el ícono de Power (Activar) situado junto a cada host de Docker. Esta acción cierra el host de Docker y lo elimina de la lista de Docker Hosts (Hosts de Docker).

Nota: A fin de obtener más información sobre cómo utilizar la extensión de la CLI, consulte Extensión de la CLI de SageMaker para Docker: integración de Docker para SageMaker Studio en el sitio web de GitHub.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año