Logotipo de Zephyrnet

Utilice el CDK de AWS para implementar configuraciones de ciclo de vida de Amazon SageMaker Studio | Servicios web de Amazon

Fecha:

Estudio Amazon SageMaker es el primer entorno de desarrollo totalmente integrado (IDE) para el aprendizaje automático (ML). Studio proporciona una única interfaz visual basada en web en la que puede realizar todos los pasos de desarrollo de ML necesarios para preparar datos, así como crear, entrenar e implementar modelos. Configuraciones de ciclo de vida son scripts de shell activados por eventos del ciclo de vida de Studio, como iniciar un nuevo cuaderno de Studio. Puede usar configuraciones de 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 portátiles, 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 ahorre costos haciendo que las aplicaciones de la computadora portátil se cierren automáticamente después de largos períodos de inactividad.

La Kit de desarrollo en la nube de AWS (AWS CDK) es un marco para definir la infraestructura de la nube a través del código y aprovisionarlo a través de Formación en la nube de AWS pilas 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.

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

Resumen de la solución

La modularidad de las configuraciones del ciclo de vida le permite aplicarlas a todos los usuarios de un dominio oa usuarios específicos. De esta manera, puede establecer configuraciones de ciclo de vida y hacer referencia a ellas en Studio puerta de enlace del kernel o servidor Jupyter rápida y consistentemente. La puerta de enlace del kernel es el punto de entrada para interactuar con una instancia de notebook, 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. Para esta publicación, usamos Python como idioma principal, pero el código se puede cambiar fácilmente a otros idiomas compatibles con AWS CDK. Para obtener más información, consulte Trabajar con el CDK de AWS.

Requisitos previos

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

Clonar el repositorio de GitHub

En primer lugar, clonar las Repositorio GitHub.

A medida que clona el repositorio, puede observar que tenemos un proyecto clásico de AWS CDK con el directorio studio-lifecycle-config-construct, que contiene la construcción y los recursos necesarios para crear configuraciones de ciclo de vida.

Construcciones de AWS CDK

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

La SageMakerStudioLifeCycleConfig construct proporciona el marco para crear configuraciones de ciclo de vida utilizando un AWS Lambda Función y código de shell leídos desde un archivo. La construcción contiene los siguientes parámetros:

  • ID – El nombre del proyecto actual.
  • estudio_lifecycle_content - El base64 contenido codificado.
  • etiquetas_del_ciclo_de_vida_del_estudio – Etiquetas que asignas para organizar los recursos de Amazon. Se ingresan como pares clave-valor y son opcionales para esta configuración.
  • studio_lifecycle_config_app_typeJupyterServer es para el servidor único en sí mismo, y el KernelGateway app corresponde a un contenedor de imágenes de SageMaker en ejecución.

Para obtener más información sobre la arquitectura del portátil Studio, consulte Sumérjase en la arquitectura de los portátiles de Amazon SageMaker Studio.

El siguiente es un fragmento de código de la construcción de configuración del 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 la construcción, puede usarla. El siguiente fragmento de código muestra cómo crear una configuración de ciclo de vida utilizando la construcción en una pila en app.py u otra construcción:

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

Implementar construcciones de AWS CDK

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

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

  1. Crear un entorno virtual:
    1. Para macOS/Linux, utilice python3 -m venv .cdk-venv.
    2. Para Windows, utilice python3 -m venv .cdk-venv.
  2. Activar el entorno virtual:
    1. Para macOS/Linux, utilice source .cdk-venvbinactivate.
    2. Para Windows, utilice .cdk-venv/Scripts/activate.bat.
    3. Para PowerShell, use .cdk-venv/Scripts/activate.ps1.
  3. Instala las dependencias requeridas:
    1. pip install -r requirements.txt
    2. pip install -r requirements-dev.txt
  4. En este punto, puede sintetizar opcionalmente la plantilla de CloudFormation para este código:
  5. Implemente la solución con los siguientes comandos:
    1. aws configure
    2. cdk bootstrap
    3. cdk deploy

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

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

Elija la configuración del ciclo de vida para ver el código de shell que se ejecuta, así como las etiquetas que asignó.

Adjuntar la configuración del ciclo de vida de Studio

Hay varias formas de adjuntar una configuración de ciclo de vida. En esta sección, presentamos dos métodos: usando el Consola de administración de AWS, y programáticamente utilizando la infraestructura provista.

Adjuntar la configuración del ciclo de vida mediante la consola

Para usar 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 del ciclo de vida que desea usar y elija Adjuntar.

Desde aquí, también puede configurarlo como predeterminado.

Adjunte la configuración del ciclo de vida mediante programación

También puede recuperar el ARN de la configuración del ciclo de vida de Studio creada por la construcción y adjuntarlo a la construcción de Studio mediante programación. El siguiente código muestra el ARN de configuración del ciclo de vida que se pasa a una construcción 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 ) )

Limpiar

Complete los pasos de esta sección para limpiar sus recursos.

Eliminar la configuración del ciclo de vida de Studio

Para eliminar su configuración de ciclo de vida, complete los siguientes pasos:

  1. En la consola de SageMaker, elija Configuraciones del ciclo de vida de Studio en el panel de navegación.
  2. Seleccione la configuración del ciclo de vida, luego elija Borrar.

Eliminar la pila de CDK de AWS

Cuando haya terminado con los recursos que creó, puede destruir su pila de CDK de AWS ejecutando el siguiente comando en la ubicación donde clonó el repositorio:

cdk destroy

Cuando se le solicite que confirme la eliminación de la pila, ingrese yes.

También puede eliminar la pila en la consola de AWS CloudFormation con los siguientes pasos:

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

Si se encuentra con algún error, es posible que deba eliminar manualmente algunos recursos según la configuración de su cuenta.

Conclusión

En esta publicación, discutimos cómo Studio funciona como un IDE para cargas de trabajo de ML. Studio ofrece compatibilidad con la configuración del ciclo de vida, lo que le permite configurar scripts de shell personalizados para realizar tareas automatizadas o configurar entornos de desarrollo en el lanzamiento. Usamos construcciones de AWS CDK para crear la infraestructura para la configuración personalizada de recursos y ciclo de vida. Las construcciones se sintetizan en pilas de CloudFormation que luego se implementan para crear el recurso personalizado y el script de ciclo de vida que se usa en Studio y el kernel del cuaderno.

Para más información visite Estudio Amazon SageMaker.


Acerca de los autores

cory peloston es ingeniero de software en Amazon ML Solutions Lab. Actualmente trabaja en el suministro de soluciones de software reutilizables.

Alex Chirayath es ingeniero sénior de aprendizaje automático en Amazon ML Solutions Lab. Dirige equipos de científicos e ingenieros de datos para crear aplicaciones de inteligencia artificial para abordar las necesidades comerciales.

Gouri Pandeshwar es Gerente de ingeniería en Amazon ML Solutions Lab. Él y su equipo de ingenieros están trabajando para crear soluciones y marcos reutilizables que ayuden a acelerar la adopción de los servicios de IA/ML de AWS para los casos de uso empresarial de los clientes.

punto_img

AVC

VC académico

Información más reciente

punto_img