Utilice AWS CDK para implementar configuraciones del ciclo de vida de Amazon SageMaker Studio.

Implemente el ciclo de vida de Amazon SageMaker Studio con AWS CDK.

Amazon SageMaker Studio es el primer entorno de desarrollo integrado (IDE) completamente integrado para el aprendizaje automático (ML). Studio proporciona una única interfaz visual basada en la web donde se pueden realizar todos los pasos de desarrollo de ML necesarios para preparar los datos, así como construir, entrenar y implementar modelos. Las configuraciones del ciclo de vida son scripts de shell que se activan mediante eventos del ciclo de vida de Studio, como iniciar un nuevo cuaderno de Studio. Puede utilizar las configuraciones del ciclo de vida para automatizar la personalización de su entorno de Studio. Esta personalización incluye la instalación de paquetes personalizados, la configuración de extensiones de cuaderno, la precarga de conjuntos de datos y la configuración de repositorios de código fuente. Por ejemplo, como administrador de un dominio de Studio, es posible que desee ahorrar costos haciendo que las aplicaciones de cuaderno se cierren automáticamente después de largos períodos de inactividad.

El AWS Cloud Development Kit (AWS CDK) es un marco para definir la infraestructura en la nube a través del código y aprovisionarlo a través de pilas de AWS CloudFormation. Una pila es una colección de recursos de AWS que se pueden actualizar, mover o eliminar programáticamente. Los constructos de AWS CDK son los bloques de construcción de las aplicaciones de AWS CDK, que representan el plano para definir arquitecturas en la nube.

En esta publicación, mostramos cómo utilizar AWS CDK para configurar Studio, utilizar las configuraciones del ciclo de vida de Studio y habilitar su acceso para científicos de datos y desarrolladores en su organización.

Descripción general de la solución

La modularidad de las configuraciones del ciclo de vida le permite aplicarlas a todos los usuarios en un dominio o a usuarios específicos. De esta manera, puede configurar las configuraciones del ciclo de vida y hacer referencia a ellas rápidamente y de manera consistente en la puerta de enlace del kernel Studio o en el servidor Jupyter. La puerta de enlace del kernel es el punto de entrada para interactuar con una instancia de cuaderno, mientras que el servidor Jupyter representa la instancia de Studio. Esto le permite aplicar las mejores prácticas de DevOps y cumplir con los estándares de seguridad, cumplimiento y configuración en todas las cuentas y regiones de AWS. En esta publicación, usamos Python como lenguaje principal, pero el código se puede cambiar fácilmente a otros lenguajes admitidos por AWS CDK. Para obtener más información, consulte Trabajar con AWS CDK.

Prerrequisitos

Para comenzar, asegúrese de tener los siguientes requisitos previos:

  • La interfaz de línea de comandos de AWS (AWS CLI) instalada.
  • El AWS CDK instalado. Para obtener más información, consulte Cómo empezar con AWS CDK y Trabajar con AWS CDK en Python.
  • Un perfil de AWS con permisos para crear roles de IAM de AWS Identity and Access Management (IAM), dominios de Studio y perfiles de usuario de Studio.
  • Python 3+.

Clonar el repositorio de GitHub

Primero, clone el repositorio de GitHub.

Al clonar el repositorio, puede observar que tenemos un proyecto clásico de AWS CDK con el directorio studio-lifecycle-config-construct, que contiene el constructo y los recursos necesarios para crear configuraciones del ciclo de vida.

Constructos de AWS CDK

El archivo que queremos inspeccionar es aws_sagemaker_lifecycle.py. Este archivo contiene el constructo SageMakerStudioLifeCycleConfig que usamos para configurar y crear configuraciones del ciclo de vida.

El constructo SageMakerStudioLifeCycleConfig proporciona el marco para construir configuraciones del ciclo de vida utilizando una función personalizada de AWS Lambda y código de shell que se lee desde un archivo. El constructo contiene los siguientes parámetros:

  • ID – El nombre del proyecto actual.
  • studio_lifecycle_content – El contenido codificado en base64.
  • studio_lifecycle_tags – Etiquetas que asigna para organizar los recursos de Amazon. Se ingresan como pares de clave-valor y son opcionales para esta configuración.
  • studio_lifecycle_config_app_typeJupyterServer es para el propio servidor único, y la aplicación KernelGateway corresponde a un contenedor de imagen SageMaker en ejecución.

Para obtener más información sobre la arquitectura del cuaderno de Studio, consulte Profundice en la arquitectura de los cuadernos de Amazon SageMaker Studio.

Lo siguiente es un fragmento de código del constructo de configuración de ciclo de vida de Studio (aws_sagemaker_lifecycle.py):

class SageMakerStudioLifeCycleConfig(Construct):
 def __init__(
 self,
 scope: Construct,
 id: str,
 studio_lifecycle_config_content: str,
 studio_lifecycle_config_app_type: str,
 studio_lifecycle_config_name: str,
 studio_lifecycle_config_arn: str,
 **kwargs,
 ):
 super().__init__(scope, id)
 self.studio_lifecycle_content = studio_lifecycle_content
 self.studio_lifecycle_config_name = studio_lifecycle_config_name
 self.studio_lifecycle_config_app_type = studio_lifecycle_config_app_type

 lifecycle_config_role = iam.Role(
 self,
 "SmStudioLifeCycleConfigRole",
 assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"),
 )

 lifecycle_config_role.add_to_policy(
 iam.PolicyStatement(
 resources=[f"arn:aws:sagemaker:{scope.region}:{scope.account}:*"],
 actions=[
 "sagemaker:CreateStudioLifecycleConfig",
 "sagemaker:ListUserProfiles",
 "sagemaker:UpdateUserProfile",
 "sagemaker:DeleteStudioLifecycleConfig",
 "sagemaker:AddTags",
 ],
 )
 )

 create_lifecycle_script_lambda = lambda_.Function(
 self,
 "CreateLifeCycleConfigLambda",
 runtime=lambda_.Runtime.PYTHON_3_8,
 timeout=Duration.minutes(3),
 code=lambda_.Code.from_asset(
 "../mlsl-cdk-constructs-lib/src/studiolifecycleconfigconstruct"
 ),
 handler="onEvent.handler",
 role=lifecycle_config_role,
 environment={
 "studio_lifecycle_content": self.studio_lifecycle_content,
 "studio_lifecycle_config_name": self.studio_lifecycle_config_name,
 "studio_lifecycle_config_app_type": self.studio_lifecycle_config_app_type,
 },
 )

 config_custom_resource_provider = custom_resources.Provider(
 self,
 "ConfigCustomResourceProvider",
 on_event_handler=create_lifecycle_script_lambda,
 )

 studio_lifecyle_config_custom_resource = CustomResource(
 self,
 "LifeCycleCustomResource",
 service_token=config_custom_resource_provider.service_token,
 )
 self. studio_lifecycle_config_arn = studio_lifecycle_config_custom_resource.get_att("StudioLifecycleConfigArn")

Después de importar e instalar el construir, puede utilizarlo. El siguiente fragmento de código muestra cómo crear una configuración de ciclo de vida utilizando el construct en una pila ya sea en app.py o en otro constructo:

my_studio_lifecycle_config = SageMakerStudioLifeCycleConfig(
 self,
 "MLSLBlogPost",
 studio_lifecycle_config_content="contenido_base64",
 studio_lifecycle_config_name="BlogPostTest",
 studio_lifecycle_config_app_type="JupyterServer",
 
 )

Implementar los constructos de AWS CDK

Para implementar su pila de AWS CDK, ejecute los siguientes comandos en la ubicación donde clonó el repositorio.

El comando puede ser python en lugar de python3 dependiendo de sus configuraciones de ruta.

  1. Cree un entorno virtual:

    1. Para macOS/Linux, use python3 -m venv .cdk-venv.
    2. Para Windows, use python3 -m venv .cdk-venv.
  2. Active el entorno virtual:

    1. Para macOS/Linux, use source .cdk-venv\bin\activate.
    2. Para Windows, use .cdk-venv/Scripts/activate.bat.
    3. Para PowerShell, use .cdk-venv/Scripts/activate.ps1.
  3. Instale las dependencias requeridas:

    1. pip install -r requirements.txt
    2. pip install -r requirements-dev.txt
  4. En este punto, opcionalmente puede sintetizar la plantilla de CloudFormation para este código:

    cdk synth
  5. Implemente la solución con los siguientes comandos:

    1. aws configure
    2. cdk bootstrap
    3. cdk deploy

Cuando la pila se implemente correctamente, debería poder ver la pila en la consola de CloudFormation.

También podrá ver la configuración de ciclo de vida en la consola SageMaker.

Elija la configuración de ciclo de vida para ver el código de shell que se ejecuta, así como cualquier etiqueta que haya asignado.

Adjuntar la configuración de ciclo de vida de Studio

Existen múltiples formas de adjuntar una configuración de ciclo de vida. En esta sección, presentamos dos métodos: utilizando la Consola de administración de AWS y programáticamente utilizando la infraestructura proporcionada.

Adjuntar la configuración de ciclo de vida utilizando la consola

Para utilizar la consola, complete los siguientes pasos:

  1. En la consola de SageMaker, elija Dominios en el panel de navegación.
  2. Elija el nombre de dominio que está utilizando y el perfil de usuario actual, luego elija Editar.
  3. Seleccione la configuración de ciclo de vida que desea utilizar y elija Adjuntar.

A partir de aquí, también puede establecerlo como predeterminado.

Adjuntar la configuración del ciclo de vida programáticamente

También puedes obtener el ARN de la configuración del ciclo de vida de Studio creada por el constructo y adjuntarla al constructo de Studio programáticamente. El siguiente código muestra el ARN de la configuración del ciclo de vida que se pasa a un constructo de Studio:

default_user_settings=sagemaker.CfnDomain.UserSettingsProperty(
                execution_role=self.sagemaker_role.role_arn,
                jupyter_server_app_settings=sagemaker.CfnDomain.JupyterServerAppSettingsProperty(
                    default_resource_spec=sagemaker.CfnDomain.ResourceSpecProperty(
                        instance_type="system",
                        lifecycle_config_arn = my_studio_lifecycle_config.studio_lifeycycle_config_arn

                    )
                )

Limpieza

Realiza los siguientes pasos para limpiar tus recursos.

Elimina la configuración del ciclo de vida de Studio

Para eliminar tu configuración del ciclo de vida, sigue los siguientes pasos:

  1. En la consola de SageMaker, elige Configuraciones del ciclo de vida de Studio en el panel de navegación.
  2. Selecciona la configuración del ciclo de vida y luego elige Eliminar.

Elimina el stack de AWS CDK

Cuando hayas terminado con los recursos que creaste, puedes destruir tu stack de AWS CDK ejecutando el siguiente comando en la ubicación donde clonaste el repositorio:

cdk destroy

Cuando se te solicite confirmar la eliminación del stack, ingresa yes.

También puedes eliminar el stack en la consola de AWS CloudFormation con los siguientes pasos:

  1. En la consola de AWS CloudFormation, elige Stacks en el panel de navegación.
  2. Selecciona el stack que deseas eliminar.
  3. En el panel de detalles del stack, elige Eliminar.
  4. Elige Eliminar stack cuando se te solicite.

Si tienes algún error, es posible que tengas que eliminar algunos recursos manualmente según la configuración de tu cuenta.

Conclusión

En esta publicación, hablamos sobre cómo Studio sirve como un IDE para cargas de trabajo de ML. Studio ofrece soporte para la configuración del ciclo de vida, lo que te permite configurar scripts de shell personalizados para realizar tareas automatizadas o configurar entornos de desarrollo al lanzamiento. Utilizamos los constructos de AWS CDK para construir la infraestructura para el recurso personalizado y la configuración del ciclo de vida. Los constructos se sintetizan en stacks de CloudFormation que luego se implementan para crear el recurso personalizado y el script del ciclo de vida que se utiliza en Studio y el kernel del notebook.

Para obtener más información, visita Amazon SageMaker Studio.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Principales herramientas de IA generativa en generación de código/codificación (2023)

Los avances rápidos en tecnologías de IA generativa han llevado a un aumento en el interés y el progreso en aplicacio...

Noticias de Inteligencia Artificial

AI Ahora en el Aire Conoce a Ashley, el Primer Bot de DJ del Mundo.

Live 95.5, una popular estación de radio con sede en Portland, Oregón, ha dado un paso audaz hacia el futuro al prese...

Inteligencia Artificial

Desbloqueando el poder del contexto con Google IA una competencia entre prefixLM y causalLM en el aprendizaje en contexto

La Guerra de Troya es famosa, donde Aquiles grabó su nombre en la historia para siempre al derrotar al príncipe Hécto...