Quiero solucionar problemas con los scripts de configuración del ciclo de vida (LCC) en Amazon SageMaker AI.
Resolución
Se agota el tiempo de espera del script de la LCC
Cuando el script de la LCC tarda más en ejecutarse que el límite de 5 minutos, se agota el tiempo de espera del script.
Para reducir el tiempo de ejecución del script, lleva a cabo las siguientes acciones:
- Reduce el número de pasos necesarios. Por ejemplo, limita los entornos de conda en los que instalas paquetes grandes.
- Ejecuta tareas en procesos paralelos.
- Ejecuta el comando nohup en tu secuencia de comandos para ignorar las señales de interrupción de modo que la secuencia de comandos pueda completarse en 5 minutos.
Para ejecutar el comando nohup, inicializa el comando en la línea de código específica y, a continuación, finaliza la línea de código con un signo &.
Ejemplo de script:
===
#!/bin/bash
set -e
# OVERVIEW
# This script executes an existing Notebook file on the instance during start using nbconvert(https://github.com/jupyter/nbconvert)
# PARAMETERS
ENVIRONMENT=python3
NOTEBOOK_FILE=/home/ec2-user/SageMaker/test.ipynb
source /home/ec2-user/anaconda3/bin/activate "$ENVIRONMENT"
nohup jupyter nbconvert --to notebook --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 --execute "$NOTEBOOK_FILE" &
source /home/ec2-user/anaconda3/bin/deactivate
====
No puedes eliminar la LLC existente
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Al intentar eliminar un script de la LCC que ya está adjunto a un dominio de SageMaker Studio, es posible que recibas el siguiente mensaje de error:
"Loading of domain lifecycle failed. [400] ResourceNotFound: LifecycleConfig does not exist."
Para resolver este problema, primero debes desconectar el script de la LCC y, a continuación, eliminarlo.
O bien, puedes establecer el parámetro LifecycleConfigArns en la configuración de tu dominio en una lista vacía.
Para volver a configurar tu dominio, sigue estos pasos:
-
Ejecuta el siguiente comando describe-domain para ver la lista de scripts de la LCC asociados en el parámetro LifecycleConfigArns:
aws sagemaker describe-domain —domain-id d-xxxxxxxxx
-
Ejecuta el siguiente comando update-domain para establecer el parámetro en una lista vacía:
aws sagemaker update-domain --domain-id d-xxxxxxxxx \
--default-user-settings '{
"JupyterServerAppSettings": {
"DefaultResourceSpec": {
"InstanceType": "system"
},
"LifecycleConfigArns": []
}
}'
Cuando vuelvas a ejecutar el comando update-domain, el dominio ya no hace referencia al script de la LCC. A continuación, puedes adjuntar el nuevo script de la LCC al dominio.
El script de la LCC no puede instalar un paquete
Si la LCC no puede instalar paquetes en un dominio o instancia de cuaderno de SageMaker Studio, es posible que el script de la LCC no tenga acceso al dominio o la instancia. Para resolver este problema, debes conectar el dominio o la instancia de cuaderno de SageMaker Studio asociados a Amazon Virtual Private Cloud (VPC). La VPC también debe permitir el acceso a Internet.
Puedes asociar una VPC a la comunicación predeterminada a través de Internet en el modo PublicInternetOnly. O bien, puedes configurar la comunicación con Internet en el modo Solo VPC.
Si usas el modo Solo VPC, configura grupos de seguridad con reglas de entrada y salida que permitan el siguiente tráfico:
- Tráfico de NFS a través de TCP en el puerto 2049 entre el dominio y el volumen de Amazon Elastic File System (Amazon EFS).
- Tráfico TCP dentro del grupo de seguridad.
Nota: El tráfico TCP en el grupo de seguridad es necesario para conectar la aplicación Jupyter Server y las aplicaciones Kernel Gateway. Debes permitir el acceso al menos a los puertos del intervalo 8192–65535.
Para permitir el acceso a Internet, debes usar una puerta de enlace de NAT con acceso a Internet.
La instancia no puede encontrar el contenido del script de la LCC
Si la instancia de la aplicación no encuentra el contenido del script de la LCC, es posible que recibas el siguiente mensaje de error:
"stdbuf: failed to run command "/opt/ml/lifecycleconfig/lifecycle_script.sh": No such file or directory"
Este error puede producirse debido a la incompatibilidad entre los símbolos con formato de Windows y los símbolos con formato de Unix. Los caracteres de Windows usan terminaciones de línea CRLF (\r\n) y Unix usa terminaciones de línea LF (\n).
Las instancias de cuadernos de Amazon SageMaker AI se ejecutan en el sistema operativo (SO) Amazon Linux 2 (AL2). Un script bash de LCC que se descarga en un sistema operativo Windows y se adjunta directamente a la LLC no es válido para el sistema operativo Linux.
Para resolver este problema, sigue estos pasos:
- Abre el script bash en Notepad++.
- Selecciona Ver y, a continuación, selecciona Mostrar símbolo.
- Selecciona Mostrar todos los símbolos para ver los finales de línea de Windows (\r\n).
- Cambia CRLF a LF (\n) para que el script sea válido en Unix.
- Adjunta el script a la LCC.
Información relacionada
Debug lifecycle configurations (Depuración de configuraciones del ciclo de vida)
Connect Studio notebooks in a VPC to external resources (Conexión de los cuadernos de Studio en una VPC a recursos externos)