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.
- Un Asistente Robótico Vestible Que Está Por Todas Partes
- Un nuevo acelerador para startups centradas en la inteligencia artificial en Europa e Israel.
- AI Ahora en el Aire Conoce a Ashley, el Primer Bot de DJ del Mundo.
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_type –
JupyterServer
es para el propio servidor único, y la aplicaciónKernelGateway
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.
-
Cree un entorno virtual:
- Para macOS/Linux, use
python3 -m venv .cdk-venv
. - Para Windows, use
python3 -m venv .cdk-venv
.
- Para macOS/Linux, use
-
Active el entorno virtual:
- Para macOS/Linux, use
source .cdk-venv\bin\activate
. - Para Windows, use
.cdk-venv/Scripts/activate.bat
. - Para PowerShell, use
.cdk-venv/Scripts/activate.ps1
.
- Para macOS/Linux, use
-
Instale las dependencias requeridas:
pip install -r requirements.txt
pip install -r requirements-dev.txt
-
En este punto, opcionalmente puede sintetizar la plantilla de CloudFormation para este código:
cdk synth
-
Implemente la solución con los siguientes comandos:
aws configure
cdk bootstrap
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:
- En la consola de SageMaker, elija Dominios en el panel de navegación.
- Elija el nombre de dominio que está utilizando y el perfil de usuario actual, luego elija Editar.
- 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:
- En la consola de SageMaker, elige Configuraciones del ciclo de vida de Studio en el panel de navegación.
- 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:
- En la consola de AWS CloudFormation, elige Stacks en el panel de navegación.
- Selecciona el stack que deseas eliminar.
- En el panel de detalles del stack, elige Eliminar.
- 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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- ¡No más trampas! ¡Sapia.ai detecta respuestas generadas por inteligencia artificial en tiempo real!
- Manteniendo a los hackers fuera de la red eléctrica.
- ¡Descubre cómo ChatGPT regala Windows 11 gratis!
- El mercado oculto de China para las poderosas tarjetas Nvidia de inteligencia artificial
- A bordo de usuarios en Amazon SageMaker Studio con roles IAM específicos para grupos de Active Directory.
- Productores de alimentos se unen frente a amenazas cibernéticas.
- Cómo Google califica el contenido últimas actualizaciones