Automatización de Flujo de Trabajo en Machine Learning: Integración de AWS Controllers con Kubernetes para Pipelines en Amazon SageMaker

Kubernetes es una plataforma de orquestación de contenedores ampliamente utilizada en el manejo de cargas de trabajo variables, comunes en aplicaciones de machine learning (ML), gracias a sus capacidades de escalabilidad y balanceo de carga. Los ingenieros de DevOps recurren a Kubernetes para gestionar y escalar aplicaciones de ML. Sin embargo, antes de que un modelo de ML esté disponible, es necesario entrenarlo y evaluarlo. Si el modelo cumple con los criterios de calidad, se registra en un modelo predefinido.

Amazon SageMaker simplifica la construcción y el despliegue de modelos de ML, eliminando gran parte del trabajo pesado. SageMaker facilita la gestión de dependencias, imágenes de contenedores, escalado automático y monitoreo. En particular, Amazon SageMaker Pipelines automatiza la etapa de construcción de modelos, encargándose de la infraestructura y los recursos necesarios para procesar datos, entrenar modelos y ejecutar pruebas de evaluación.

Uno de los desafíos que enfrentan los ingenieros de DevOps es la complejidad adicional que implica usar Kubernetes para gestionar la etapa de despliegue, mientras se utilizan otras herramientas, como el SDK de AWS o AWS CloudFormation, para manejar la canalización de construcción de modelos. Una alternativa para simplificar este proceso es utilizar AWS Controllers for Kubernetes (ACK) para gestionar y desplegar una canalización de entrenamiento de SageMaker. ACK permite gestionar las canalizaciones de construcción de modelos sin necesidad de definir recursos fuera del clúster de Kubernetes.

A continuación, se presenta un ejemplo que ayuda a los ingenieros de DevOps a manejar todo el ciclo de vida de ML, incluyendo entrenamiento e inferencia, utilizando una única herramienta.

### Descripción de la Solución

Consideremos el caso donde un ingeniero de ML configura una canalización de construcción de modelos en SageMaker utilizando un cuaderno de Jupyter. Esta configuración adopta la forma de un Grafo Acíclico Dirigido (DAG) representado como una definición de canalización en JSON. El documento JSON puede almacenarse y versionarse en un bucket de Amazon Simple Storage Service (Amazon S3). Si es necesario, se puede implementar cifrado utilizando una clave gestionada por AWS Key Management Service (AWS KMS) para Amazon S3. Un ingeniero de DevOps puede recuperar este archivo de definición desde Amazon S3 y cargarlo en un controlador de servicio ACK para SageMaker, que se ejecuta como parte de un clúster de Amazon Elastic Kubernetes Service (Amazon EKS). El ingeniero de DevOps puede entonces utilizar las APIs de Kubernetes proporcionadas por ACK para enviar la definición de la canalización e iniciar una o más ejecuciones de la canalización en SageMaker.

### Instalación del Controlador de Servicio ACK de SageMaker

El controlador de servicio ACK de SageMaker facilita a los ingenieros de DevOps usar Kubernetes como su plano de control para crear y gestionar canalizaciones de ML. Para instalar el controlador en el clúster de EKS, se deben configurar los permisos de IAM, instalar el controlador mediante un Helm Chart de SageMaker y seguir un tutorial paso a paso.

### Generación de una Definición de Canalización en JSON

Los ingenieros de ML suelen ser responsables de crear la canalización de ML en sus organizaciones, trabajando en conjunto con los ingenieros de DevOps para operarlas. En SageMaker, los ingenieros de ML pueden usar el SDK de Python de SageMaker para generar una definición de canalización en formato JSON, siguiendo un esquema predefinido. Este documento se utiliza para desplegar y mantener la infraestructura necesaria para la canalización.

### Creación y Envío de una Especificación de Canalización en YAML

En el contexto de Kubernetes, los objetos son entidades persistentes utilizadas para representar el estado del clúster. Al crear un objeto en Kubernetes, es necesario proporcionar una especificación que describa su estado deseado en un archivo de manifiesto en formato YAML (o JSON) para comunicarse con la API de Kubernetes.

Para presentar una especificación de canalización en YAML y su ejecución, los ingenieros de DevOps deben modificar y preparar los archivos YAML adecuados y aplicarlos en el clúster de Kubernetes utilizando herramientas de línea de comandos.

### Revisión y Solución de Problemas de la Ejecución de la Canalización

Los ingenieros pueden listar todas las canalizaciones creadas y sus ejecuciones, así como revisar detalles sobre la canalización y solucionar problemas empleando comandos específicos de kubectl.

### Conclusión

Hemos presentado un ejemplo de cómo los ingenieros de ML pueden colaborar eficientemente con los ingenieros de DevOps para diseñar y mantener una canalización de ML utilizando Kubernetes y SageMaker. Esto permite a los ingenieros de DevOps gestionar todos los pasos del ciclo de vida de ML con el mismo conjunto de herramientas y entorno, lo que resulta en una mayor innovación y eficiencia organizacional.

Silvia Pastor
Silvia Pastor
Silvia Pastor es una destacada periodista de Noticias.Madrid, especializada en periodismo de investigación. Su labor diaria incluye la cobertura de eventos importantes en la capital, la redacción de artículos de actualidad y la producción de segmentos audiovisuales. Silvia realiza entrevistas a figuras clave, proporciona análisis expertos y mantiene una presencia activa en redes sociales, compartiendo sus artículos y ofreciendo actualizaciones en tiempo real. Su enfoque profesional, centrado en la veracidad, objetividad y ética periodística, la convierte en una fuente confiable de información para su audiencia.

Más popular

Más artículos como este
Relacionados

El Papa Muestra Señales de Recuperación y Reanuda Actividades desde el Hospital

El papa Francisco ha mostrado una "leve mejoría" tras...

Policía Municipal Descubre Banquete Ilegal de Embutidos al Detener Furgoneta sin ITV

En un sorprendente hallazgo en el corazón de Madrid,...