Los principales proveedores de servicios en la nube, como Amazon Web Services (AWS), Google Cloud Platform (GCP) y MS Azure, ofrecen una amplia gama de servicios gestionados escalables y altamente eficientes, que abarcan almacenamiento, informática, bases de datos y más. Estas plataformas no exigen una gran experiencia en gestión de infraestructura, pero si se utilizan de forma imprudente, pueden aumentar considerablemente los gastos.
A continuación se presentan algunas pautas valiosas para mitigar el riesgo de que sus cargas de trabajo de aprendizaje automático (ML) provoquen una presión indebida en sus gastos de nube.
Preparación: Establecer las bases para la evaluación financiera
El viejo adagio dice sabiamente: “No se puede optimizar lo que no se mide”. Por lo tanto, el primer paso en el camino hacia la optimización de costos es comprender en profundidad su panorama financiero actual. Esto implica un análisis meticuloso de sus gastos y sus complejidades subyacentes.
La mayoría de las plataformas en la nube ofrecen funciones básicas de seguimiento de costos, que le permiten desglosar los gastos por servicio o región geográfica. Participe en un diálogo productivo con su administrador de nube designado para obtener acceso a estos informes financieros y analizarlos en profundidad.
Para comprender mejor sus gastos, es recomendable implementar un seguimiento integral a nivel de base de datos. Esto implica examinar minuciosamente las implicaciones financieras de varios modelos de aprendizaje automático, equipos y conjuntos de datos.
Utilizar consultas SQL
Comience este recorrido aprovechando las consultas SQL en sus bases de datos de metadatos. Este enfoque le permite descubrir información valiosa, como identificar qué trabajos de capacitación requieren una mayor cantidad de recursos, evaluar la duración de cada trabajo y determinar la frecuencia de fallas en los trabajos.
Fortalecer los mecanismos de seguimiento
Establecer mecanismos de seguimiento robustos dentro de su plataforma de aprendizaje automático Asegúrese de antemano de tener la infraestructura necesaria para capturar y almacenar datos financieros pertinentes.
Automatización y eficiencia
Para optimizar el proceso de análisis de datos y generación de informes, considere la posibilidad de automatizar estas consultas. Esto se puede lograr aprovechando las capacidades de herramientas de análisis ampliamente reconocidas, como Tableau o Looker, lo que hace que el proceso de evaluación financiera sea más eficiente y manejable.
En los casos en los que se depende de una plataforma de aprendizaje automático supervisada por un equipo dedicado, es conveniente colaborar con ellos para implementar un seguimiento a nivel de aplicación. Esta iniciativa facilita la generación automática de tablas de clasificación de costos en varias dimensiones, que abarcan usuarios, equipos, proyectos, modelos e intervalos de tiempo designados. Además, se pueden imponer cuotas de recursos bien definidas para gestionar los gastos de manera más granular, lo que infunde prudencia fiscal en todo el marco organizacional.
Optimización gratuita de costos en la nube y gestión mejorada de recursos de ML/AI para toda la vida
Puestos de control
Parada preventiva
Posponer el análisis de los resultados de un trabajo de capacitación hasta el último momento, para luego descubrir que los resultados son decepcionantes, equivale a un gran desperdicio de recursos. Lo ideal sería que pudiera evaluar el rendimiento de su modelo a medida que se desarrolla el proceso de capacitación, lo que le permitiría decidir si debe abandonarlo antes de tiempo.
Este enfoque perspicaz se puede implementar mediante evaluaciones periódicas del rendimiento del modelo utilizando sus puntos de control. Supongamos que su plataforma de aprendizaje automático le permite monitorear métricas vitales en curso (como la pérdida o la precisión de la muestra de validación) o extraer dichos datos de los puntos de control. En ese caso, le proporciona la astucia necesaria para reducir los esfuerzos que consumen muchos recursos antes de que consuman sus activos sin resultados.
Reinicios con un toque cálido
En los procesos de formación prolongados, el espectro de un trabajo que no cumple con su objetivo final se cierne sobre nosotros. Estos contratiempos pueden manifestarse por muchas razones: errores de codificación, problemas transitorios (como fallas de red), limitaciones de memoria, etc. ¿Quién de nosotros no ha experimentado la angustia de un trabajo de formación que se tambalea al borde de la finalización después de invertir horas o incluso días?
Para sortear este terreno precario, la solución del “reinicio en caliente” es la solución ideal. El quid de esta estrategia consiste en no reiniciar la formación desde cero, sino retomarla desde donde quedó el último trabajo. Este enfoque se basa en dos pilares fundamentales:
Puestos de control en espera: Guarde los puntos de control de su modelo con diligencia en un medio de almacenamiento resistente, ya sea un repositorio basado en la nube o una ubicación robusta similar, a intervalos regulares (quizás después de cada época). Por ejemplo, PyTorch proporciona convenientemente API para crear y almacenar puntos de control de modelo. Es fundamental garantizar que estos puntos de control se alojen en una configuración regional que no se vea afectada por la naturaleza efímera del almacenamiento, como el disco de corta duración de un pod de Kubernetes.
Listo para reiniciar: Modifique su código de entrenamiento para facilitar la carga de un punto de control anterior al inicio. Esto se puede materializar a través de un argumento de entrada opcional que dirija el código a un punto de control existente.
La fusión de puntos de control y reintentos automáticos otorga a sus cargas de trabajo el poder de recuperarse de la adversidad y reanudar las operaciones desde el punto de interrupción.
Almacenamiento en caché
Caché computacional
En el desarrollo de modelos de aprendizaje automático, se espera que se ejecute la misma carga de trabajo repetidamente con distintas entradas y configuraciones a medida que se ajusta el modelo. Se experimenta con diferentes hiperparámetros, arquitecturas de modelos y más. Sin embargo, es esencial reconocer que algunos segmentos del código de entrenamiento permanecen relativamente estáticos o completamente inalterados en ejecuciones sucesivas.
Por ejemplo, considere un escenario en el que su canal de entrenamiento implica tareas de preprocesamiento de datos que preparan los datos de entrada para el entrenamiento. Suponga que actualmente está concentrado en ajustar la arquitectura de su modelo. En tales casos, es prudente implementar una estrategia para almacenar en caché el conjunto de datos de entrenamiento, evitando que se regenere durante cada iteración. Esto no solo conserva los costos de transferencia de datos, sino que también optimiza el tiempo.
Para implementar el almacenamiento en caché de manera efectiva, siga estos pasos:
Transformación modular: Asegúrese de que las etapas de transformación sucesivas en su código sean modulares y bien definidas, encapsuladas como unidades distintas, como funciones, cada una con contratos de datos claros.
Salida persistente: Guarde el trabajo de cada etapa de transformación utilizando una clave de almacenamiento, que puede ser designada explícitamente por el usuario (una cadena especificada por el usuario) o generada implícitamente a partir de argumentos de entrada.
Recuperación eficiente: Configure su código para que reconozca cuándo se proporciona la misma clave. En lugar de volver a ejecutar la carga de trabajo de transformación, debería recuperar y utilizar el valor almacenado en caché, lo que aumenta la eficiencia.
Caché de datos para un acceso rápido
Incluso si modifica las configuraciones de entrada con cada ejecución de su código de entrenamiento y no puede almacenar en caché las tareas, accederá repetidamente a los mismos datos. Según dónde se alojen sus cargas de trabajo, almacenar en caché estos datos en los recursos informáticos o cerca de ellos puede ser factible.
Por ejemplo, si su carga de trabajo opera dentro de un entorno de máquina virtual (VM) en la nube, como una instancia EC2 en AWS, es posible que pueda almacenar algunos de sus datos de entrenamiento directamente en la VM para un acceso significativamente más rápido y rentable. Por supuesto, es improbable que todo el conjunto de datos quepa en el disco, lo que requiere la implementación de un sistema de recolección de basura de uso menos reciente (LRU). Las soluciones comerciales permiten montar un caché S3 local directamente en sus VM, lo que ofrece una accesibilidad eficiente a los datos.
Optimización del uso de la GPU para lograr una mayor rentabilidad
Los recursos de GPU se encuentran entre los más costosos en el panorama de la computación en la nube. Cuando su máquina virtual de GPU está ocupada sin hacer nada en tareas como descargar datos, procesar la CPU o cargar datos en la memoria, permanece infrautilizada, lo que se traduce en un gasto desperdiciado.
Bibliotecas y marcos optimizados para GPU
Aproveche las bibliotecas y los marcos optimizados para GPU para el aprendizaje automático, como CUDA, cuDNN y TensorRT. Estas herramientas están diseñadas para aprovechar todo el potencial de las GPU y ofrecer implementaciones eficientes de operaciones conjuntas, lo que en última instancia aumenta el uso de la GPU.
Gestión eficiente de la memoria
Maximizar el uso de la memoria de la GPU es fundamental. Minimice las transferencias de datos innecesarias entre la CPU y la GPU conservando los datos en la GPU siempre que sea posible. Si las limitaciones de memoria plantean desafíos, explore técnicas de optimización de memoria como la compresión de datos o el uso de tipos de datos más pequeños para reducir el uso de la memoria.
Perfilado y optimización
Cree perfiles de uso de la GPU con herramientas especializadas proporcionadas por el proveedor de la GPU o los marcos de trabajo pertinentes. Estos perfiles le permiten identificar posibles cuellos de botella o áreas en las que los recursos de la GPU se utilizan de forma insuficiente. Con esta información, optimice su código, su flujo de datos y su arquitectura de modelos para mejorar el uso de la GPU en estas áreas identificadas, lo que garantiza una asignación eficiente de los recursos.
Carga de datos optimizada
Optimice el proceso de carga de datos para garantizar un flujo continuo de datos a la GPU. Reduzca la sobrecarga de transferencia de datos mediante el preprocesamiento y la precarga de datos en la GPU con anticipación, lo que facilita los cálculos de la GPU sin interrupciones. Esta práctica es fundamental para un uso rentable de la GPU.
Operaciones asincrónicas
Aproveche al máximo las operaciones asincrónicas siempre que sea posible para mantener activa la GPU. Las transferencias de datos asincrónicas, los lanzamientos de kernel y los cálculos pueden superponerse, lo que permite que la GPU realice múltiples tareas y, de ese modo, mejore la utilización general.
El uso eficiente de la GPU reduce los costos y acelera la ejecución de tareas de aprendizaje automático, lo que en última instancia mejora la productividad de sus recursos de GPU basados en la nube.
Estrategias de infraestructura rentables
Instancias puntuales y máquinas virtuales preemptibles
Algunos proveedores de servicios en la nube ofrecen instancias puntuales o máquinas virtuales preferentes a precios significativamente reducidos en comparación con las instancias bajo demanda. El proveedor puede recuperar estas instancias en cualquier momento, pero si su carga de trabajo es flexible y tolerante a fallas, utilizar estas opciones de menor costo puede generar ahorros sustanciales.
Optimizar los tipos de instancias
Los proveedores de servicios en la nube ofrecen una variedad de tipos de instancias con diferentes características de rendimiento y costos. Analice los requisitos de su carga de trabajo y elija el tipo de instancia que proporcione potencia computacional sin aprovisionamiento excesivo. Considere opciones como instancias con capacidad de expansión o con GPU si se alinean con su carga de trabajo.
Elija el proveedor de nube y el modelo de precios adecuados
Los proveedores de servicios de nube ofrecen distintas estructuras de precios para los servicios de aprendizaje automático. Compare los modelos de precios, los tipos de instancias y las opciones disponibles para seleccionar la solución más rentable. Algunos proveedores también ofrecen precios con descuento para compromisos a largo plazo o instancias puntuales, lo que puede reducir significativamente los costos.
Aproveche el escalamiento automático
Aproveche las capacidades de escalado automático que ofrecen los proveedores de la nube para ajustar la cantidad de instancias automáticamente según la demanda. Aumente o reduzca sus recursos de manera dinámica para que coincidan con la carga de trabajo y asegúrese de pagar solo por lo que necesita.
Optimizar la ubicación de los datos y los cálculos
Las transferencias de datos en la nube tienen un precio y las configuraciones incorrectas pueden resultar muy costosas. Por ejemplo, trasladar datos entre regiones de AWS es considerablemente más costoso que mantenerlos dentro de la misma región y exportar datos de S3 fuera del ecosistema de AWS implica un aumento sustancial de los costos.
Por lo tanto, es fundamental garantizar que sus cargas de trabajo operen dentro de la misma zona de disponibilidad que su almacenamiento de datos. No ubicar los datos y los recursos informáticos en el mismo lugar también puede aumentar sus gastos computacionales, ya que sus máquinas virtuales permanecen inactivas mientras transfieren datos en lugar de aprovechar sus recursos de CPU/GPU de manera eficiente.
Mejorar la rentabilidad del aprendizaje automático más allá de la infraestructura de la nube
Las transferencias de datos en la nube tienen un precio y las configuraciones incorrectas pueden resultar muy costosas. Por ejemplo, trasladar datos entre regiones de AWS es considerablemente más costoso que mantenerlos dentro de la misma región y exportar datos de S3 fuera del ecosistema de AWS implica un aumento sustancial de los costos.
Por lo tanto, es fundamental garantizar que sus cargas de trabajo operen dentro de la misma zona de disponibilidad que su almacenamiento de datos. No ubicar los datos y los recursos informáticos en el mismo lugar también puede aumentar sus gastos computacionales, ya que sus máquinas virtuales permanecen inactivas mientras transfieren datos en lugar de aprovechar sus recursos de CPU/GPU de manera eficiente.
Gestión de costes de ingeniería
En el aprendizaje automático (ML), los ingenieros de ML representan activos valiosos pero costosos. Para maximizar sus recursos, debe asegurarse de que cada ingeniero de ML esté equipado y capacitado para contribuir a un trabajo de alto impacto de manera constante. Este objetivo se puede lograr a través de varias estrategias vitales. Revisar y perfeccionar periódicamente las hojas de ruta del proyecto es fundamental para despriorizar las iniciativas de bajo impacto y concentrar los recursos en las tareas más valiosas. También es importante seleccionar cuidadosamente las herramientas que maximizan la productividad y la eficiencia. Considere delegar tareas específicas a equipos especializados, como aprovechar los equipos de plataforma e infraestructura para el trabajo relacionado con el sistema. Por último, establezca procesos sólidos de intercambio de conocimientos para facilitar el crecimiento de los ingenieros menos experimentados, fomentando una cultura de colaboración y aprendizaje continuo.
Control de costes de etiquetado
El etiquetado de datos es un paso fundamental en el proceso de ML, que a menudo depende de esfuerzos humanos y genera costos sustanciales. Varias estrategias entran en juego para optimizar y economizar este aspecto del ML. En primer lugar, es esencial garantizar que solo los datos de alto apalancamiento se sometan al etiquetado manual. Esto significa centrarse en eventos poco frecuentes que están subrepresentados en su conjunto de datos de entrenamiento, lo que puede provocar fallas de producción significativas. Etiquetar de manera redundante los datos en los que su modelo ya funciona bien es innecesario y costoso. En segundo lugar, aprovechar las técnicas de etiquetado automático puede ser un cambio radical. métodos automatizados Aunque no proporcionen etiquetas de la misma calidad que los etiquetadores humanos, son muy eficaces para tipos de datos específicos. El uso de modelos más simples, heurísticas algorítmicas o técnicas de minería de datos puede reducir sustancialmente el volumen de datos que requieren etiquetado manual. Estas estrategias no solo reducen los costos, sino que también mejoran la eficiencia del proceso de etiquetado en ML.
Conclusión
Las cargas de trabajo de ML son costosas debido a que dependen de grandes conjuntos de datos y recursos informáticos robustos. Las grandes empresas de ML asignan equipos enteros para monitorear y optimizar los costos meticulosamente.
Sin embargo, esto no implica que el control de costos esté fuera del alcance de las operaciones de menor escala. Mediante una planificación meticulosa, una deliberación cuidadosa y una optimización diligente, se puede lograr una reducción significativa de los costos y, al mismo tiempo, avanzar en el desarrollo y el rendimiento de su modelo.
✔️ ¿Quieres que tus operaciones en la nube y ML/IA estén bajo control y que tus gastos cumplan con tus expectativas? Evalúa las capacidades y el potencial de una plataforma de código abierto como OptScale → https://hystax.com/introducing-optscale-public-release-an-open-source-powerhouse-for-finops-and-mlops/
Hystax OptScale ofrece una plataforma MLOps y FinOps para entusiastas de la nube y ML/AI que está completamente disponible bajo Apache 2.0 en GitHub → https://github.com/hystax/optscale