Blog de Amazon Web Services (AWS)

Optimización de los costos de Machine Learning en Amazon SageMaker

Por Rafael Almeida, arquiteto de soluções en AWS 
 

Intro

La irrupción y la popularización de la nube en los últimos años ha permitido que los modelos de machine learning e inteligencia artificial avancen a pasos agigantados, ganando cada vez más espacio dentro de las organizaciones. Con el objetivo de facilitar la vida diaria de los científicos de datos, Amazon SageMaker se  presenta como un servicio integral de machine learning, con herramientas capaces de ayudar a construir y mantener los modelos desde su concepción hasta su monitorización.

Dado que se trata de una serie con varias etapas, el ciclo de vida de construcción del modelo de AI/ML puede tener varias oportunidades para la optimización de costos. Teniendo esto en cuenta, este blog pretende enumerar algunas de estas opciones para cada una de las fases de la implementación de machine learning con Amazon SageMaker.

Estructuración de métricas empresariales

Utilice servicios administrados de inteligencia artificial

Gracias a sus funcionalidades, Amazon SageMaker es adecuado para equipos que cuentan con conocimientos en ciencia de datos o experiencia en el procesamiento de datos, el entrenamiento y el suministro de modelos para la inferencia. Sin embargo, AWS ofrece una serie de servicios que simplifican la creación de aplicaciones con inteligencia artificial. Estos servicios suelen tener modelos preentrenados para diversos casos de uso, como los chatbots, la extracción y clasificación de texto, el reconocimiento de imágenes, además de otros servicios dirigidos a áreas comerciales específicas, como áreas industrial y de salud. Usar estas herramientas es sencillo, ya que es posible integrarlas en su aplicación a través de llamadas a la API. En la imagen siguiente, puede ver el conjunto de servicios de machine learning e inteligencia artificial de AWS. Si quiere conocerlos mejo, puede visitar este enlace.

 

El uso de servicios administrados puede ser una excelente opción para reducir costos, ya que pueden ser aplicados por equipos de desarrolladores que no necesariamente tengan un conocimiento profundo de la ciencia de datos. Además, incluso en aquellas organizaciones que cuentan con personas especializadas en esta área, los servicios administrados de IA se pueden utilizar para el desarrollo de aplicaciones de forma ágil, con una comercialización más rápida.

Utilice las funciones administradas por Amazon SageMaker

Amazon SageMaker, junto con SageMaker Studio, hacen que la administración de las diferentes etapas de creación de modelos de machine learning sea mucho más común, lo que se traduce en costos más bajos en la mayoría de los casos. El costo total de propiedad (TCO) es una de las métricas clave para comparar los costos de implementación entre diferentes soluciones. En general, el TCO de SageMaker durante un período de tres años tiende a ser un 54% más bajo que otras opciones basadas en la nube, como el uso directo de instancias de EC2 autoadministrables y clústeres de EKS.

Una de las principales razones es el hecho de que Amazon SageMaker es un servicio administrado que simplifica los procesos de construcción, administración y mantenimiento. Amazon SageMaker puede ejecutar modelos en clústeres con el escalado automático activado y distribuidos en varias zonas de disponibilidad, con el objetivo de lograr una alta disponibilidad. También tiene sus propias funciones de seguridad y gobierno. Por otro lado, la administración de las instancias de Amazon EC2 requiere que las realice el usuario, así como el escalado, la recuperación ante desastres, las actualizaciones y otros detalles. EKS, por otro lado, a pesar de tener una administración e implementación más sencillas que las instancias EC2, requiere un costo adicional para administrar el clúster, ajustar el rendimiento en función de las configuraciones de memoria, red y procesamiento, además de requerir que los elementos de seguridad estén configurados correctamente. Se pueden obtener más detalles de este análisis en este enlace.

Elaboración del problema de machine learning

Mantenga los recursos de cómputo y almacenamiento cerca

Las instancias de SageMaker están disponibles en varias ubicaciones del planeta.  Cuando utilice recursos informáticos para ejecutar cargas de trabajo de machine learning, priorice siempre eligiendo opciones cercanas a la ubicación de los datos, a fin de evitar costos adicionales de transferencia de datos entre regiones. Por ejemplo, si sus datos están almacenados en un bucket de Amazon S3 en la región de São Paulo (sa-east-1), ejecute los clústeres en esa misma región.

Utilice los algoritmos integrados de Amazon SageMaker

AWS ofrece una serie de algoritmos prediseñados y modelos preentrenados que ayudan a los científicos de datos a crear sus modelos de forma más rápida y eficiente. Amazon SageMaker JumpStart proporciona estos y otros recursos, como plantillas de soluciones desarrolladas previamente para diferentes casos de uso y cuadernos que se pueden reutilizar en innumerables situaciones.

Además, Amazon SageMaker proporciona algunos de los principales frameworks de machine learning más utilizados en el mercado de forma optimizada mediante instancias de EC2, como TensorFlow, PyTorch, MXNet, Keras y Theano. De esta forma, es posible utilizar estos frameworks y tener las imágenes listas para usar.

Procesamiento de datos

Utilice Amazon SageMaker Ground Truth para etiquetar datos

La preparación de los datos es uno de los pasos más laboriosos del ciclo de desarrollo del modelo de machine learning, ya que cada conjunto de datos debe analizarse de forma individual para aplicar las transformaciones necesarias respetando sus particularidades. Además, es crucial que esta fase se ejecute con sumo cuidado, ya que el conjunto de datos que se utilizará en el entrenamiento y la validación de los modelos puede determinar la calidad del modelo que se obtendrá.

En este sentido, Amazon SageMaker Ground Truth automatiza el proceso de etiquetado de datos, que pueden realizar personas especializadas en esta tarea a través de Amazon Mechanical Turk, empresas de terceros o incluso empleados internos de una organización. Esta capacidad va aún más lejos con Amazon SageMaker Ground Truth Plus, ya que con ella no es necesario crear aplicaciones de etiquetado o gestión de la fuerza laboral para utilizarlas por cuenta propia. Con Amazon SageMaker Ground Truth Plus es posible reducir los costos de etiquetado hasta un 40%.

Utilice el gestor de datos de Amazon SageMaker para procesar datos

A preparação de dados é uma das etapas mais trabalhosas no ciclo de desenvolvimento de modelos de ML, uma vez que cada dataset precisa ser analisado individualmente para que as transformações necessárias sejam aplicadas respeitando suas particularidades. Além disso, é crucial que esta fase seja executada com muito cuidado, uma vez que o dataset a ser utilizado no treinamento e validação de modelos poderá determinar a qualidade do modelo que será obtido.

Por lo tanto, Amazon SageMaker Data Wrangler facilita a los científicos de datos importar, preparar, transformar y analizar datos desde la interfaz gráfica de la consola de Amazon SageMaker Studio. El servicio permite una mayor agilidad gracias a la capacidad de aplicar varias transformaciones rápidamente, además de poder utilizar scripts de transformación de Python que se pueden replicar en otros casos de uso. También permite la reutilización de las transformaciones creadas con Amazon SageMaker Data Wrangler en un proceso de machine learning.

Desarrollo de los modelos

Utilice instancias spot para el entrenamiento

Las instancias spot son capacidades de instancias EC2 inactivas que AWS ofrece a un precio inferior al modelo bajo demanda, con descuentos que pueden llegar hasta el 90% en algunos casos. Las instancias spot se ofrecen en este modelo siempre que las instancias elegidas estén disponibles en este formato, y pueden interrumpirse si la demanda aumenta o si su oferta disminuye, con un aviso de interrupción de dos minutos al cliente. Por lo tanto, se recomienda para cargas de trabajo no críticas que sean flexibles en función de la familia utilizada y de cuándo se puedan iniciar y cerrar. Para obtener más información, se sugiere leer la documentación oficial.

Amazon SageMaker permite utilizar instancias de Spot para entrenar y ajustar modelos de machine learning con hiperparámetros.  Es posible configurar puntos de control para los trabajos de entrenamiento copiando los datos locales a Amazon S3. En caso de interrupción, SageMaker copia los datos almacenados en S3 a nuevas instancias, lo que permite que el trabajo continúe desde el último punto de control en lugar de reiniciarlo.

Utilice el plan de ahorros de SageMaker

El Plan de ahorro es un modelo de precios flexible para los recursos informáticos de AWS, en el que se ofrecen descuentos en el uso de estos servicios por encima del precio de ejecución bajo demanda.

El plan de ahorro se puede utilizar en las instancias de SageMaker que cumplan los requisitos, independientemente de su familia (por ejemplo, ml.m5, ml.c5, etc.), tamaño (por ejemplo, ml.c5.large, ml.c5.xlarge, etc.), región (por ejemplo, us-east-1, us-east-2, etc.) y componente (por ejemplo, notebooks, entrenamiento, etc.). Encontrará más detalles sobre su solicitud y otros requisitos en la documentación del plan de ahorros.

Obtenga recomendaciones con el recomendador de inferencias de Amazon SageMaker

El Recomendador de inferencias de Amazon SageMaker es una función que facilita el proceso de dimensionar correctamente las instancias para realizar inferencias en tiempo real, optimizando el rendimiento y el costo de ejecutar sus respectivos puntos de conexión. El recomendador de inferencias ayuda a seleccionar los tipos de instancias y otros parámetros, como el número de instancias, los parámetros del contenedor, las optimizaciones del modelo y otros factores. Para usarlo, es necesario registrar el modelo en model registry de SageMaker junto con su contenedor y sus artefactos. También es necesario utilizar el SDK de AWS para Python (Boto3) para analizar información como los datos de rendimiento, la utilización de los recursos, las configuraciones de los terminales, recopilar métricas de uso y otras acciones.

Opte por el entrenamiento local para pequeños experimentos

Amazon SageMaker permite entrenar modelos mediante la reutilización de las mismas instancias utilizadas para ejecutar los cuadernos en modo local.  Esto permite entrenar modelos con conjuntos de datos pequeños sin asignar un clúster administrado solo para esta tarea. Esto puede ser factible tanto en términos financieros, ya que se utilizarán menos recursos en la nube, como en términos de tiempo, ya que no es necesario esperar a que haya un clúster disponible para cada experimento.

Cierre automáticamente los recursos que no estén en uso

Otra forma de reducir los costos con Amazon SageMaker es desactivar los recursos que no estén en uso. Esto se puede hacer desde scripts de configuración del ciclo de vida, que permiten cerrar los notebooks automáticamente desde una extensión de Amazon SageMaker Studio, y también es posible validar si otros usuarios mantienen la extensión instalada o no.

Las configuraciones del ciclo de vida son scripts de shell que Amazon Sagemaker ejecuta durante ciertos eventos, como la creación y el lanzamiento de cuadernos. Esta funcionalidad se puede utilizar para apagar los recursos después de un tiempo de inactividad preestablecido. Esto se hace mediante la instalación de una extensión de Amazon SageMaker Studio a través del script. Se puede acceder al script desde este repositorio de GitHub. Durante la instalación, el límite de tiempo de inactividad se establece por línea de comandos.

Este otro repositorio detalla cómo proporcionar los recursos necesarios para comprobar si otros usuarios mantienen instalada o no la extensión de apagado automático. En general, una función de Lambda se activa periódicamente mediante una regla de eventos de CloudWatch que comprueba el cumplimiento de la instalación por parte de los usuarios de un dominio de Amazon SageMaker. A continuación, los perfiles de usuario se redirigen a un tema de Amazon SNS para que los administradores y otras personas reciban una notificación. Esta entrada de blog detalla cómo se puede hacer esto.

Disponibilidad de los modelos

Adopte endpoints multimodelo

A medida que los proyectos de machine learning ganen escala, se pueden crear más modelos que se adapten a cada caso de uso específico de una empresa. Sin embargo, esto puede hacer que la administración sea más compleja y generar costos adicionales para ejecutar cada uno de estos modelos, y es posible que muchos de ellos no se usen con frecuencia, pero aun así necesiten estar disponibles de forma continua, si se solicita.

Para estos casos, una alternativa es utilizar Amazon SageMaker Multi-Model Endpoints.  Permite que diferentes modelos, que utilizan recursos similares, compartan la misma instancia y el mismo punto de conexión. Esto facilita la gestión de los modelos a escala y reduce los costos de la infraestructura que requieren, ya que no todos estos modelos tendrán que permanecer siempre en la memoria en todo momento. Esta entrada de blog ejemplifica cómo configurar puntos de conexión multimodelo y analiza situaciones en las que los costos de implementación de modelos se pueden reducir en más de un 90%.

Adopte endpoints con múltiples contenedores

Los endpoints multicontenedor son los más adecuados para casos de uso en los que es necesario proporcionar diferentes modelos y frameworks en un único punto de enlace de Amazon SageMaker. En total, se pueden mantener hasta 15 contenedores diferentes en el mismo endpoint. Los contenedores se pueden ejecutar de forma secuencial o individual. Esta es una opción muy adecuada para algunas situaciones, tales como:

  • Disponibilidad de modelos con diferentes frameworks que no tienen suficiente tráfico para aprovechar toda la capacidad de la instancia;
  • Disponibilidad de modelos del mismo framework, pero que utilizan diferentes algoritmos de machine learning;
  • Comparación entre soluciones similares que utilizan diferentes versiones de marcos para pruebas A/B

En ciertos casos, el uso de terminales con varios contenedores puede lograr ahorros de hasta un 90%, como se detalla en esta entrada de blog.

Monitoreo

Utilice etiquetas para supervisar el costo de los recursos de Amazon SageMaker

Al igual que con otros servicios de AWS, puede asignar etiquetas a los recursos de Amazon SageMaker y utilizarlas para facilitar su administración, organización y supervisión. Las etiquetas se pueden usar para identificar qué elementos utilizan las diferentes áreas comerciales de una organización y los entornos de implementación (como el desarrollo, la aprobación y la producción, por ejemplo). Además, se pueden utilizar etiquetas de asignación de costos para monitorear los costos con mayor profundidad. Una vez etiquetados, los detalles del consumo de estos recursos se pueden ver en la consola de facturación de AWS.

Conclusión

Como puede ver, AWS ofrece varias formas de optimizar los costos durante todo el ciclo de vida de los modelos de machine learning que utilizan Amazon SageMaker. Esto es importante porque, independientemente de si está empezando a utilizar el servicio o si ya es un usuario desde hace mucho tiempo, lo más probable es que haya una forma de optimizar sus recursos.

La optimización de costos es uno de los pilares del well-architected framework. En él se enumeran algunas buenas prácticas que se pueden aplicar para mejorar el uso de los servicios en AWS. Paralelamente, AWS también publica un conjunto de sugerencias dirigidas a cargas de trabajo específicas de machine learning. Si desea obtener más información para mejorar su uso en cada uno de los pilares, acceda a la documentación oficial del Framework Well-Architected Framework: Machine Learning Lens.

 

Este artículo fue traducido del Blog de AWS en Portugués


Sobre o autor

Rafael Almeida es arquitecto de soluciones en AWS y trabaja en el segmento de pequeñas y medianas empresas (SMB), donde apoya a diversos clientes en sus viajes a AWS en la construcción de sus entornos con el objetivo de lograr el rendimiento, la seguridad, la confiabilidad, la excelencia operativa y la optimización de los costos. Sus principales áreas de interés son la AI/ML y el IoT.