Logotipo de Zephyrnet

Configure Amazon SageMaker Studio con Jupyter Lab 3 mediante el CDK de AWS

Fecha:

Estudio Amazon SageMaker es un entorno de desarrollo totalmente integrado (IDE) para el aprendizaje automático (ML) basado en parte en Jupyter Lab 3. Studio proporciona una interfaz basada en web para realizar de forma interactiva las tareas de desarrollo de ML necesarias para preparar datos y crear, entrenar e implementar modelos de ML. En Studio, puede cargar datos, ajustar modelos ML, moverse entre pasos para ajustar experimentos, comparar resultados e implementar modelos ML para inferencia.

La Kit de desarrollo en la nube de AWS (AWS CDK) es un marco de desarrollo de software de código abierto para crear Formación en la nube de AWS pilas a través de automático Plantilla de formación en la nube generación. Una pila es una colección de recursos de AWS que se pueden actualizar, mover o eliminar mediante programación. CDK de AWS construcciones son los componentes básicos de las aplicaciones de AWS CDK y representan el modelo para definir arquitecturas en la nube.

La configuración de Studio con AWS CDK se ha convertido en un proceso simplificado. AWS CDK le permite usar construcciones nativas para definir e implementar Studio usando infraestructura como código (IaC), que incluye Gestión de identidades y accesos de AWS (AWS IAM) y las configuraciones deseadas de recursos en la nube, todo en un solo lugar. Este enfoque de desarrollo se puede usar en combinación con otras mejores prácticas comunes de ingeniería de software, como implementaciones de código automatizadas, pruebas y Tuberías de CI / CD. AWS CDK reduce el tiempo necesario para realizar las tareas típicas de implementación de la infraestructura y reduce el área de superficie para el error humano a través de la automatización.

Esta publicación lo guía a través de los pasos para comenzar a configurar e implementar Studio para estandarizar el desarrollo de modelos de ML y la colaboración con otros ingenieros y científicos de ML. Todos los ejemplos en la publicación están escritos en el lenguaje de programación Python. Sin embargo, AWS CDK ofrece soporte integrado para múltiples otros lenguajes de programación como JavaScript, Java y C#.

Requisitos previos

Para comenzar, se aplican los siguientes requisitos previos:

Clonar el repositorio de GitHub

Primero, vamos a clonar las Repositorio GitHub.

Cuando el repositorio se extrae con éxito, puede inspeccionar el directorio cdk que contiene los siguientes recursos:

  • CDK – Contiene los principales recursos de cdk
  • aplicación.py – Donde se define la pila de CDK de AWS
  • cdk.json – Contiene metadatos y banderas de características

Scripts de CDK de AWS

Los dos archivos principales que queremos ver en el cdk subdirectorio son sagemaker_studio_construct.py y sagemaker_studio_stack.py. Veamos cada archivo con más detalle.

Archivo de construcción de Studio

La construcción de Studio se define en el sagemaker_studio_construct.py archivo.

La construcción de Studio toma en cuenta nube privada virtual (VPC), los usuarios enumerados, la región de AWS y el tipo de instancia predeterminado subyacente como parámetros. Esta construcción de AWS CDK cumple las siguientes funciones:

  • Crea el dominio de Studio (SageMakerStudioDomain)
  • Establece el rol de IAM sagemaker_studio_execution_role AmazonSageMakerFullAccess permisos necesarios para crear recursos. Los permisos deben reducirse aún más para seguir el principio de privilegios mínimos para mejorar la seguridad.
  • Establece la configuración de la aplicación del servidor Jupyter: acepta JUPYTER_SERVER_APP_IMAGE_NAME, definiendo la imagen del contenedor jupyter-server-3 que se usará.
  • Establece la configuración de la aplicación de puerta de enlace del kernel: toma  KERNEL_GATEWAY_APP_IMAGE_NAME, definiendo la imagen del contenedor datascience-2.0 que se utilizará.
  • Crea un perfil de usuario para cada usuario de la lista

El siguiente fragmento de código muestra los recursos relevantes de AWS CloudFormation del dominio de Studio definidos en AWS CDK:

sagemaker_studio_domain = sagemaker.CfnDomain(
self, "SageMakerStudioDomain",
auth_mode="IAM",
default_user_settings=sagemaker.CfnDomain.UserSettingsProperty(
execution_role=self.sagemaker_studio_execution_role.role_arn,
jupyter_server_app_settings=sagemaker.CfnDomain.JupyterServerAppSettingsProperty(
default_resource_spec=sagemaker.CfnDomain.ResourceSpecProperty(
instance_type="system",
sage_maker_image_arn=get_sagemaker_image_arn(
JUPYTER_SERVER_APP_IMAGE_NAME, aws_region
),
)
),
kernel_gateway_app_settings=sagemaker.CfnDomain.KernelGatewayAppSettingsProperty(
default_resource_spec=sagemaker.CfnDomain.ResourceSpecProperty(
instance_type=default_instance_type,
sage_maker_image_arn=get_sagemaker_image_arn(
KERNEL_GATEWAY_APP_IMAGE_NAME, aws_region
),
),
),
security_groups=[vpc.vpc_default_security_group],
sharing_settings=sagemaker.CfnDomain.SharingSettingsProperty(
notebook_output_option="Disabled"
),
),
domain_name="SageMakerStudioDomain",
subnet_ids=private_subnets,
vpc_id=vpc.vpc_id,
app_network_access_type="VpcOnly",
)

El siguiente fragmento de código muestra los perfiles de usuario creados a partir de los recursos de AWS CloudFormation:

for user_name in user_names: sagemaker.CfnUserProfile( self, "SageMakerStudioUserProfile_" + user_name, domain_id=sagemaker_studio_domain.attr_domain_id, user_profile_name=user_name, )

archivo de pila de estudio

class SagemakerStudioStack(Stack): def __init__( self, scope: Construct, construct_id: str, **kwargs, ) -> None: super().__init__(scope, construct_id, **kwargs) vpc = ec2.Vpc(self, "SageMakerStudioVpc") SageMakerStudio(self, "SageMakerStudio", vpc=vpc, aws_region=self.region)

Una vez definida la construcción, puede agregarla creando una instancia de la clase y pasando los argumentos necesarios dentro de la pila. La pila crea los recursos de AWS CloudFormation como parte de una implementación coherente. Esto significa que si al menos un recurso en la nube no se crea, la pila de CloudFormation revierte los cambios realizados. El siguiente fragmento de código de la construcción de Studio crea una instancia dentro de la pila de Studio:

Implemente la pila de CDK de AWS

Para implementar su pila de AWS CDK, ejecute los siguientes comandos desde el directorio raíz del proyecto dentro de su ventana de terminal:

aws configure
pip3 install -r requirements.txt
cdk bootstrap --app "python3 -m cdk.app"
cdk deploy --app "python3 -m cdk.app"

Revise los recursos que crea el CDK de AWS en su cuenta de AWS y seleccione sí cuando se le solicite implementar la pila. Espere a que finalice la implementación de su pila. Esto suele tardar menos de 5 minutos; sin embargo, agregar más recursos prolongará el tiempo de implementación. También puede verificar el estado de implementación en el Consola de AWS CloudFormation.

Creación de pilas en CloudFormation

Cuando la pila se haya implementado correctamente, verifique su información yendo al Panel de control de Studio. Debería ver el perfil de usuario de SageMaker Studio que creó.

Perfil de usuario predeterminado enumerado

Si vuelve a implementar la pila, buscará cambios y solo realizará las actualizaciones de recursos en la nube necesarias. Por ejemplo, esto se puede usar para agregar usuarios o cambiar los permisos de esos usuarios sin tener que volver a crear todos los recursos de nube definidos.

Limpiar

Para eliminar una pila, complete los siguientes pasos:

  1. En la consola de AWS CloudFormation, elija Stacks en el panel de navegación.
  2. Abra la pila que desea eliminar.
  3. En el panel de detalles de la pila, elija Borrar.
  4. Elige Eliminar pila cuando se le indique.

AWS CloudFormation eliminará los recursos creados cuando se implementó la pila. Esto puede llevar algún tiempo dependiendo de la cantidad de recursos creados.

Si encuentra algún problema al realizar estos pasos de limpieza, es posible que deba eliminar manualmente el dominio de Studio primero antes de repetir los pasos de esta sección.

Conclusión

En esta publicación, mostramos cómo usar los recursos de IaC nativos de la nube de AWS para crear una plantilla fácilmente reutilizable para las implementaciones de Studio. SageMaker Studio es un IDE basado en web completamente integrado que proporciona una interfaz visual para tareas de desarrollo de ML basadas en JupyterLab3. Con las pilas de CDK de AWS, pudimos definir construcciones para crear componentes en la nube que se pueden modificar, editar o eliminar fácilmente al realizar cambios en la pila de CloudFormation subyacente.

Para obtener más información acerca de Amazon Studio, consulte Estudio Amazon SageMaker.


Acerca de los autores

cory peloston es ingeniero de software en Amazon ML Solutions Lab. Le apasiona aprender nuevas tecnologías y aprovechar esa información para crear soluciones de software reutilizables. Es un ávido levantador de pesas y pasa su tiempo libre haciendo arte digital.

marcelo aberle es un ingeniero de ML en la organización de IA de AWS. Dirige los esfuerzos de MLOps en Amazon ML Solutions Lab, ayudando a los clientes a diseñar e implementar sistemas de ML escalables. Su misión es guiar a los clientes en su viaje empresarial de ML y acelerar su ruta de ML hacia la producción.

Yash Shah es Gerente de Ciencias en el Laboratorio de soluciones de Amazon ML. Él y su equipo de científicos aplicados e ingenieros de aprendizaje automático trabajan en una variedad de casos de uso de aprendizaje automático de la salud, los deportes, la automoción y la fabricación.

punto_img

El VC descalzo

vidacienciav

Información más reciente

punto_img