Optimización de Machine Learning: Implementación de Pipelines de Amazon SageMaker Usando AWS Controllers para Kubernetes

Kubernetes se ha posicionado como una plataforma esencial para la gestión de contenedores, ideal para manejar las demandas variables de las aplicaciones de machine learning (ML). Gracias a sus capacidades de escalabilidad y balanceo de carga, es una herramienta frecuente en manos de los ingenieros de DevOps. Sin embargo, antes de que un modelo de ML esté listo para su implementación, debe ser entrenado y evaluado. Solo si el modelo cumple con los estándares de calidad establecidos, se almacena en un registro de modelos.

Amazon SageMaker ofrece una solución que simplifica la construcción y despliegue de modelos de ML. SageMaker se encarga de aspectos como la gestión de dependencias, imágenes de contenedores, escalado automático y monitoreo. Amazon SageMaker Pipelines automatiza aún más al gestionar la infraestructura y recursos necesarios para procesos como el tratamiento de datos y el entrenamiento y evaluación de modelos.

Para los ingenieros de DevOps, gestionar el despliegue utilizando Kubernetes puede sumar un nivel adicional de complejidad, especialmente cuando se necesitan herramientas distintas como el SDK de AWS o AWS CloudFormation para gestionar la construcción del modelo. Un enfoque eficiente consiste en utilizar AWS Controllers for Kubernetes (ACK), que permite simplificar este proceso manejando y desplegando una canalización de entrenamiento de SageMaker sin necesidad de definir recursos fuera del clúster de Kubernetes.

En un caso de uso típico, un ingeniero de ML puede configurar una canalización de construcción de modelos en SageMaker mediante un cuaderno de Jupyter. Esta configuración se representa como un Grafo Acíclico Dirigido (DAG) en una definición de canalización en formato JSON, la cual puede almacenarse y versionarse en un bucket de Amazon S3. Si se requiere seguridad, se puede implementar cifrado utilizando una clave gestionada por AWS Key Management Service (KMS). Luego, un ingeniero de DevOps con los permisos adecuados puede recuperar esta definición JSON, cargarla en un controlador de servicio ACK para SageMaker y ejecutar la canalización en un clúster de Amazon Elastic Kubernetes Service (EKS).

Para implementar este enfoque, se deben cumplir ciertos requisitos previos, como contar con un clúster de EKS, tener acceso a un rol de IAM adecuado y disponer de herramientas de línea de comandos instaladas en el entorno de desarrollo.

El controlador de servicio ACK de SageMaker facilita usar Kubernetes para crear y gestionar canalizaciones de ML. Su instalación en el clúster EKS requiere configurar permisos de IAM, instalar el controlador mediante un Helm Chart de SageMaker y seguir un tutorial paso a paso.

El desarrollo de una canalización de ML en Amazon SageMaker inicia con la generación de una definición en JSON, que los ingenieros de ML pueden crear usando el SDK de Python. Esta definición se recupera posteriormente para desplegar la infraestructura necesaria.

Para la ejecución en Kubernetes, los ingenieros de DevOps crean y envían una especificación de canalización en formato YAML. Esto se hace mediante la modificación y preparación de archivos YAML adecuados y su aplicación en el clúster de Kubernetes.

La capacidad de supervisar y solucionar problemas de la canalización es crucial. Los ingenieros pueden listar y revisar las canalizaciones creadas y sus ejecuciones a través de comandos específicos de kubectl.

En resumen, al integrar herramientas y conocimientos de DevOps y ML, las organizaciones pueden manejar eficientemente todo el ciclo de vida del ML usando una infraestructura común. Esto no solo facilita la colaboración, sino que también agiliza la innovación y mejora la eficiencia operativa.

Cayetano Andaluz
Cayetano Andaluz
Periodista y redactor de noticias de actualidad sobre Andalucía y sus provincias. También información en general.

Compartir artículo:

Más popular

Más artículos como este
Relacionados