¿Cómo utilizo el modo local del SDK para Python de Amazon SageMaker con SageMaker Studio?
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.
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año