Supervise las canalizaciones de Amazon SageMaker entre cuentas con paneles personalizados de Amazon CloudWatch

Con Amazon SageMaker Pipelines, las organizaciones pueden automatizar sus cargas de trabajo de aprendizaje automático (ML) y distribuirlas entre muchas cuentas de AWS y regiones de AWS como parte de su estrategia de operaciones de aprendizaje automático (MLOps).

Sin embargo, monitorear las canalizaciones de SageMaker puede volverse compleja cuando se distribuyen en muchos entornos de AWS. Los desarrolladores y los ingenieros de operaciones deben cambiar manualmente entre varias cuentas y regiones para inspeccionar las ejecuciones de SageMaker Pipeline, lo que genera una sobrecarga operativa.

Amazon SageMaker Studio proporciona monitoreo para SageMaker Pipelines dentro de una sola cuenta y región. Las organizaciones pueden utilizar servicios como Amazon CloudWatch, AWS Lambda, Amazon DynamoDB y Amazon EventBridge para crear paneles que realicen un seguimiento de las ejecuciones de SageMaker Pipelines en múltiples entornos de AWS, adaptados a sus requisitos de observabilidad.

En esta publicación, presentamos una solución diseñada para centralizar el monitoreo de SageMaker Pipelines en todas las cuentas y regiones de AWS mediante paneles personalizados de Amazon CloudWatch. El repositorio de GitHub adjunto proporciona un ejemplo personalizable del kit de desarrollo en la nube de AWS (AWS CDK) de la infraestructura requerida.

La solución está diseñada para proporcionar visibilidad detallada y casi en tiempo real desde una única interfaz de las ejecuciones de SageMaker Pipelines que se ejecutan en muchas regiones y muchas cuentas para ayudar a optimizar las operaciones diarias. En la siguiente sección, examinamos en detalle la arquitectura de la solución.

Descripción general de la solución

La solución implementa un panel interactivo de CloudWatch diseñado para brindar visibilidad unificada de SageMaker Pipelines que se ejecutan en múltiples cuentas y regiones de AWS.

Elegimos una arquitectura sin servidor basada en eventos que responde a los eventos de SageMaker Pipeline en tiempo real, evitando la sobrecarga de sistemas de monitoreo o mecanismos de sondeo siempre activos. El uso de servicios administrados o sin servidor e integraciones de servicios nativos también puede ayudar a reducir los costos iniciales y el esfuerzo de mantenimiento.

La implementación sigue un modelo de centro y radio, que reduce la complejidad al centralizar el monitoreo en la cuenta principal y la región, mientras que los componentes livianos en cada cuenta secundaria o región rastrean los datos de SageMaker Pipelines y los reenvían al centro de monitoreo. El diagrama ilustra esta arquitectura.

La solución descrita en el diagrama proporciona componentes modulares que comprenden dos pilas principales de AWS CloudFormation: la pila del panel y la pila del reenviador.

La pila del panel contiene el panel de CloudWatch, las tablas de almacenamiento de Amazon DynamoDB y las funciones de AWS Lambda necesarias para el procesamiento y la visualización de datos. Se implementa solo en la cuenta principal y en la región que actúa como centro de monitoreo.

La pila de reenviador se implementa en las cuentas monitoreadas que son la fuente de los datos de SageMaker Pipeline. Estas pilas livianas utilizan Amazon EventBridge para enviar datos enriquecidos al centro de monitoreo.

Combinadas, las dos pilas recopilan, procesan y muestran información agregada a los usuarios a través del siguiente flujo de trabajo:

Cuando un paso de una canalización de SageMaker cambia de estado, Amazon SageMaker AI genera eventos de origen. Estos eventos incluyen metadatos como la hora del evento, el nombre de recurso de Amazon (ARN) de la canalización y de la ejecución de la canalización, el estado del paso y otros. Las reglas de Amazon EventBridge capturan dichos eventos en tiempo real y los envían a las funciones de AWS Lambda para su procesamiento. Las funciones Lambda procesan los datos del evento, los enriquecen con metadatos adicionales como el estado o el nombre para mostrar de la ejecución de SageMaker Pipeline y los envían al bus EventBridge local. Las reglas personalizadas de EventBridge capturan los datos enriquecidos y los reenvían a la cuenta del centro de monitoreo. Los roles y las políticas de recursos de AWS Identity and Access Management (IAM) protegen la transmisión de eventos entre cuentas. Otra regla de EventBridge en la cuenta de monitoreo activa una función Lambda que ingiere los datos sobre cada ejecución de SageMaker Pipeline y los almacena en tablas de DynamoDB. Los datos almacenados incluyen, por ejemplo, región, ID de cuenta, creación, horas de inicio y finalización, nombre para mostrar y estado de cada ejecución de SageMaker Pipeline y sus pasos individuales. Las funciones Lambda impulsan el backend del panel, leen tablas de DynamoDB y devuelven HTML formateado. Un panel de Amazon CloudWatch con widgets personalizados actúa como una interfaz orientada al usuario sin salir de la Consola de administración de AWS. Muestra las ejecuciones de SageMaker Pipeline con los respectivos ID de cuenta, regiones, horas de creación y estado actual. Los usuarios pueden utilizar elementos interactivos para filtrar datos por nombre de canalización y acceder a información detallada sobre los pasos de una única ejecución. Esta información incluye el nombre del paso, el tipo, las horas de inicio y finalización y el estado. CloudWatch activa una alarma en caso de actividad anómala por parte de los usuarios del panel. Luego, Amazon Simple Notification Service (Amazon SNS) envía una alerta a los suscriptores de un tema de SNS, que se cifra mediante una clave de AWS Key Management Service (AWS KMS) administrada por el cliente. Las alarmas se activan cuando las llamadas del widget a las funciones Lambda respectivas exceden los umbrales definidos en la pila del Panel.

Esta solución tiene como objetivo proporcionar un panel de control de panel único para la observabilidad entre cuentas y regiones de SageMaker Pipelines utilizando una arquitectura hub-and-spoke sin servidor y basada en eventos.

Los datos se originan a partir de eventos de IA de SageMaker y llamadas API, que se transforman para proporcionar una vista integral del estado de ejecución del proceso. Estos datos se almacenan en tablas centralizadas de DynamoDB y luego se muestran en un panel personalizado de CloudWatch. Puede ampliar el panel utilizando funciones Lambda para leer y procesar información adicional antes de almacenarla en las tablas de DynamoDB.

En la siguiente sección, mostramos cómo implementar la solución.

Requisitos previos

Debes tener los siguientes requisitos previos:

Una cuenta de AWS con dos regiones iniciadas para AWS CDK. Una región albergará el panel de seguimiento. La otra región generará eventos de SageMaker Pipelines entre regiones que se mostrarán en el panel. Una segunda cuenta de AWS con al menos una región iniciada para generar eventos entre cuentas que se mostrarán en el panel. Credenciales de AWS como variables de entorno de shell con permisos suficientes para implementar la solución. Python (versión 3.14 o posterior). El AWS CDK instalado (versión 2.1100.1 o posterior). La interfaz de línea de comandos de AWS (AWS CLI) instalada (versión 2.32.12 o posterior). Docker, necesario para el empaquetado de la función Lambda. Al menos un SageMaker Pipeline en cada combinación de cuenta y región. Si no tiene canalizaciones de SageMaker existentes, puede crearlas utilizando proyectos de IA de SageMaker desde SageMaker Studio en un dominio de IA de Amazon SageMaker.

Implementar la solución

Una vez que haya cumplido los requisitos previos, complete los siguientes pasos para implementar la solución.

Clona el repositorio de GitHub. Siga las instrucciones de implementación detalladas en el archivo README para implementar las pilas mediante AWS CDK y AWS CLI. Navegue a la consola de AWS CloudFormation en cada cuenta y región. Elija la pila DashboardStack o ForwarderStack para obtener más información sobre las implementaciones y los recursos creados.

Con la solución implementada, ahora puede probar su funcionalidad. En la siguiente sección, explicamos cómo verificar sus capacidades.

Prueba la solución

Después de implementar la solución, complete los siguientes pasos para probar las funcionalidades del panel. Puede crear SageMaker Pipelines e iniciar ejecuciones desde SageMaker Studio.

En la consola de Amazon CloudWatch, elija Paneles en el panel de navegación. Elija el panel PipelineMonitoringDashboard. Cuando se le solicite, permita que se ejecute la función Lambda. Asegúrese de que contenga customWidget en su nombre, según las mejores prácticas. El panel debería actualizarse para parecerse a la siguiente imagen. Si no hay ejecuciones recientes de SageMaker Pipeline, inicie nuevas ejecuciones en las cuentas y regiones monitoreadas comenzando, para simplificar, con la misma cuenta y región del panel de monitoreo. Regrese al panel y vuelva a cargar los resultados usando el botón de actualización en la esquina superior derecha del widget. Debería ver nuevas actualizaciones del estado de ejecución de SageMaker Pipeline. Asegúrese de elegir un rango de tiempo que contenga ejecuciones de SageMaker Pipeline usando la barra en la parte superior del panel.

Panel de CloudWatch que enumera las ejecuciones de SageMaker Pipeline con sus ID de cuenta, regiones, tiempos de creación y estado.

Elija el botón Detalles de los pasos. Permita que la función Lambda del widget personalizado se ejecute como se describe en el paso anterior. La ventana emergente mostrará información detallada sobre los pasos individuales de SageMaker Pipeline, como se ilustra en la siguiente imagen.

Ventana emergente de detalles de pasos que muestra los nombres, tipos, horas de inicio y finalización y el estado de los pasos individuales de SageMaker Pipeline

Utilice el rango de fechas en la parte superior del panel para filtrar las ejecuciones de SageMaker Pipeline en rangos de fechas personalizados. Debería ver ejecuciones solo para ejecuciones dentro del rango de tiempo elegido. Utilice el filtro Nombre de canalización en la esquina superior izquierda del widget. Ingrese el nombre de una canalización de SageMaker y luego actualice el widget. Debería ver ejecuciones solo para SageMaker Pipelines que coincidan con el nombre buscado.

Mejores prácticas y consideraciones

Al implementar una solución de monitoreo de este tipo, considere las siguientes recomendaciones para mejorar la confiabilidad, la seguridad y la eficiencia operativa o personalizarla según las necesidades de su organización.

Flexibilidad y personalización: puede enriquecer aún más el panel personalizado al incluir nuevos datos en las funciones de Lambda que completan las tablas de DynamoDB y al agregar lógica de visualización. También puede agregar más filtros, métricas, ventanas emergentes interactivas o widgets de CloudWatch integrados para consolidar y ampliar el monitoreo de sus cargas de trabajo de ML. Además, puede ampliar la solución para monitorear las ejecuciones de máquinas de estado de AWS Step Functions, trabajos en AWS Batch o AWS Glue, o clústeres de Amazon EMR que admiten sus cargas de trabajo de aprendizaje automático. En tal situación, considere la posibilidad de crear un bus de eventos EventBridge dedicado para aislar el tráfico de monitoreo de otros eventos. Métricas y alarmas: supervise su SageMaker Pipeline a través de múltiples capas: use reglas de EventBridge para eventos de servicio, detección de anomalías de registros de CloudWatch para registros de ejecución de trabajos de aprendizaje automático y métricas de CloudWatch para la utilización de recursos. Configure alarmas adicionales en registros y métricas, o notificaciones directas de eventos, para enviar alertas de Amazon SNS a su equipo. Accesibilidad y personalización del panel: considere diferentes métodos para compartir paneles de CloudWatch para una accesibilidad más rápida y sin pasar por la Consola de administración de AWS. Además, considere utilizar Grafana administrado por Amazon como alternativa para la visualización de datos. Redes privadas: para organizaciones con estrictos requisitos de seguridad, considere implementar la solución dentro de una nube privada virtual (VPC) de Amazon para un mayor aislamiento. Puede conectar VPC entre regiones y cuentas mediante conexiones de intercambio de tráfico de VPC o AWS Transit Gateway. Integre con integración y entrega continuas (CI/CD): para mayor confiabilidad, implemente la solución con canalizaciones (CI/CD) en todos los entornos que ejecutan sus flujos de trabajo de aprendizaje automático. Por ejemplo, AWS Organizations y AWS Deployment Framework (ADF) lo ayudan a implementar de manera consistente y repetible en sus entornos.

Limpiar

Para limpiar sus recursos, para cada una de las cuentas y combinaciones de regiones en las que ha implementado, vaya a la consola del servicio CloudFormation y elimine las instancias de DashboardStack o ForwarderStack.

Como alternativa, puede repetir los mismos comandos de AWS CDK que ejecutó antes con las mismas credenciales de AWS y argumentos de CLI, respectivamente, pero sustituyendo cdk desplegar por cdk destruir.

Recuerde también eliminar los proyectos, recursos e instancias de SageMaker AI del dominio de SageMaker en cada cuenta y región si los creó solo para probar la solución.

Conclusión

Demostramos cómo configurar una solución que ayuda a monitorear los canales de SageMaker en todas las cuentas y regiones de AWS mediante un panel interactivo de CloudWatch para mejorar la eficiencia operativa. Está diseñado para ofrecer actualizaciones en tiempo real, se integra directamente con la Consola de administración de AWS y utiliza una arquitectura totalmente sin servidor y basada en eventos para una mayor escalabilidad.

Para adaptar aún más esta solución para cumplir con los estándares de su organización, descubra cómo acelerar su viaje a la nube con el soporte de los servicios profesionales de AWS.

Consulte los siguientes recursos para obtener más información sobre las mejores prácticas de MLOps:

Eche también un vistazo a más ejemplos de widgets personalizados en los paneles de CloudWatch para fortalecer aún más la observabilidad de sus entornos.

Sobre el autor

Giorgio Pessot

Giorgio es ingeniero de aprendizaje automático en AWS Professional Services. Con experiencia en física computacional, se especializa en la arquitectura de sistemas de inteligencia artificial de nivel empresarial en la confluencia de la teoría matemática, DevOps y las tecnologías de la nube. Cuando no está preparando soluciones en la nube, encontrarás a Giorgio diseñando creaciones culinarias en su cocina.