
MLOps: ¿solo DevOps para el aprendizaje automático?
El siguiente artículo trata de resumir qué es exactamente ML Ops e intenta dar algunas pautas para cualquiera que intente sumergirse en él (o evaluar si necesita sumergirse en él). Permítanme empezar diciendo que los MLOps no son más que la nueva moda de la IA. Comenzó como un conjunto de buenas prácticas en este campo, que, dada la enorme demanda y las enormes oportunidades que ofrece, ahora se están transformando en una nueva disciplina. Si necesitas resumirlo para alguien que no esté muy familiarizado con el aprendizaje automático, podrías decir que MLOps es simplemente ML + DevOps, pero es mucho más que eso, y trataré de explicar por qué a continuación. ¿Por qué hablo de esto? Probablemente sea bueno dar un poco de información sobre mí. Trabajo ayudando a varias empresas a poner el aprendizaje automático en la producción. Mi trabajo suele consistir en ayudarlas a definir la definición del problema, recopilar y etiquetar los datos, diseñar y entrenar los modelos, implementarlos en la producción y su posterior mantenimiento. Una de las ventajas de mi trabajo es que puedo trabajar con empresas de todos los tamaños, desde empresas de la lista Fortune 50 hasta empresas emergentes, y en una amplia gama de sectores (salud, comercio minorista, industria pesada, etc.) en los diferentes campos del aprendizaje automático: visión artificial, procesamiento del lenguaje natural y análisis predictivo. Esto me ha permitido conocer sus procesos y mejores prácticas, utilizando una amplia gama de herramientas durante todo este proceso. Al abordar estos diversos problemas, he:
- Creé mis propias herramientas para diferentes partes del proceso e incluso me inscribí en un programa de 500 empresas emergentes para ello (www.oktopus.ai)
- Ayudó a otras empresas a diseñar e implementar sus herramientas para esto
- Evalué y usé muchas de las diferentes herramientas disponibles, agregándolas desde cero a nuevos oleoductos y mejorando los existentes
¿Qué es exactamente MLOps? MLOps es el proceso de implementación de un modelo de aprendizaje automático en la producción. Algunas personas incluyen la fase de diseño en él. Personalmente, me gusta verlo como la gestión del ciclo de vida del aprendizaje automático. Se trata de un conjunto de prácticas recomendadas cuyo objetivo es reducir la fricción, los puntos de fallo y el trabajo manual que implica la implementación de un primer modelo en producción y, a continuación, de todos los modelos que se han vuelto a entrenar posteriormente. El ciclo de vida del aprendizaje automático suele incluir los siguientes pasos:
- Recopilación, limpieza y etiquetado de datos
- Exploración, preprocesamiento y aumento de datos
- Ingeniería de características (incluye selección, clasificación y eliminación de características)
- Modelado y seguimiento de experimentos
- Diseño del modelo
- Entrenamiento
- Evaluación
- Afinación fina
- Despliegue
- Sirviendo
- Monitorización
- Recopilación de datos de producción
- Reentrenamiento (la iteración comienza aquí)
Lo ideal es que estos pasos sean lo más automatizados posible, lo que reduce la posibilidad de errores humanos y minimiza el trabajo manual (como el seguimiento de los experimentos en una hoja de cálculo...). Estas medidas también deben tener en cuenta los requisitos reglamentarios (como la privacidad de los datos).

El diagrama más simple que representa lo que es MLOps es el siguiente:

¿Qué es lo que lo diferencia de DevOps? Las principales diferencias se derivan del papel clave que desempeñan los datos en los algoritmos. A diferencia del software tradicional, en el que las reglas se programaban en función de las observaciones del desarrollador a partir de los datos, ahora el algoritmo de inferencia se define por el uso de los datos por parte del algoritmo de entrenamiento, y cuantos más datos tenga, mejor. Las consecuencias de esto incluyen:
- Siempre que desee mejorar un algoritmo, es probable que desee incluir nuevos datos si están disponibles.
- Los datos deben etiquetarse y validarse o, de lo contrario, puede obstaculizar el rendimiento de su algoritmo.
- Los datos reales se desvían, por lo que es necesario actualizar el algoritmo de vez en cuando
- Los datos están sujetos a una gran cantidad de regulaciones y se deben tomar medidas de seguridad adicionales.
- Los datos requieren grandes cantidades de almacenamiento y la transferencia puede resultar costosa. Nunca subestimes esto.
Además, una de las principales ventajas del aprendizaje automático es que puede aprender relaciones complejas con características que de otro modo no serían triviales y utilizar esto para predecir el comportamiento variable de un objetivo o hacer algún tipo de clasificación. La desventaja es que, por lo general, esto requiere un uso intensivo de la computación, ya que «aprender relaciones complejas» consiste básicamente en realizar muchas operaciones matriciales. Las GPU, que suelen ser muy buenas y rápidas para realizar operaciones matriciales, también suelen ser mucho más caras que las CPU. Esto nos obliga a tener mucho cuidado con los recursos de hardware tanto para el entrenamiento como para la inferencia. Las buenas prácticas de software tradicionales en muchas empresas están fuera de discusión debido a las grandes limitaciones de los recursos disponibles. Esto puede incluir el escalado automático y las implementaciones sin tiempo de inactividad (ya que estos modelos pueden tardar incluso unos minutos en cargarse en la memoria y es posible que una sola instancia no pueda cargar dos modelos a la vez porque simplemente no tiene suficiente memoria). ¿Cuál es el valor agregado de los MLOps? Si se hace correctamente, puede permitir a su organización mejorar el rendimiento de su modelo a un costo muy bajo. Puede mejorar significativamente su velocidad de desarrollo si:
- implementas correctamente un proceso que te permite usar los datos de producción para volver a entrenar tu modelo
- reproducir experimentos es fácil de hacer. Esto implica:
- poner en marcha el hardware necesario (ya que es probable que hayas desactivado tu instancia de entrenamiento para ahorrar unos cuantos dólares)
- obtener la versión exacta del conjunto de datos que utilizaste para entrenar originalmente
- sabes exactamente qué parámetros utilizaste en el entrenamiento original
- experimentar no es una tarea que lleve mucho tiempo porque pudo automatizar la búsqueda de hiperparámetros, volver a experimentos anteriores, etc.
Además, puede evitar problemas como la deriva de los datos: los datos cambian lentamente en la producción con respecto a los datos con los que se entrenó su modelo. ¿Qué habilidades necesita su equipo para hacer MLOP? No es demasiado extraño encontrar una empresa que tenga un equipo de ciencia de datos o aprendizaje automático y un equipo de DevOps. Entonces, ¿cómo se llega desde allí a MLOps? MLOps requiere hacerse cargo de todo el flujo de datos, desde el primer conjunto de datos utilizado para entrenar el primer modelo hasta los datos de producción para los que el modelo hace las predicciones. Hay muchos pequeños detalles que marcan la diferencia a la hora de modelar y capacitar, por lo que es mejor que quien esté a cargo de los MLOps en su organización esté bien informado al respecto. Además, gestionar grandes volúmenes de datos y dimensionar correctamente el hardware no es una tarea fácil, por lo que se necesita a alguien que realmente sepa de infraestructura y que pueda aprovechar los servicios de computación en la nube como Databricks, SageMaker, etc. De lo contrario, podría terminar pagando grandes facturas de nube causadas por transferencias o almacenamiento de datos innecesarios, instancias inactivas, etc. Docker tampoco funciona muy bien con las GPU (por ejemplo, docker-compose no admite las GPU en este momento) y necesito a alguien que pueda solucionar los problemas de compatibilidad de bibliotecas de bajo nivel (cuDNN, CUDA, etc.). Contar con la persona o el equipo adecuados a cargo de los MLOP puede tener un gran impacto en las métricas empresariales. Te permite concentrarte en lo que realmente importa cuando intentas mejorar el rendimiento. En esta línea, recomiendo esto Conferencia de Andrew Ng en la que básicamente recomienda mejorar los datos en lugar de la arquitectura o los parámetros de un modelo cuando se trata de mejorar el rendimiento. Pongámonos manos a la obra La buena noticia sobre los MLOps es que hay muchas herramientas en auge en este momento que se encargan de tareas realmente específicas, así como de todo el proceso. La desventaja es que el mercado aún no está maduro y no hay líderes de mercado claros para la mayoría de las cuestiones. Tenga en cuenta que esto dificulta hacer una recomendación, ya que tengo entendido que no existe una receta ni una solución perfecta. Esto también debería revisarse con frecuencia, dada la alta velocidad de cambio de estas (y nuevas) herramientas. Recomiendo para casos de uso específicos herramientas como dvc para el control de versiones de conjuntos de datos, Flujo de aire para la orquestación del flujo de trabajo, Kubernetes y Kubeflow para la orquestación de la implementación, MLFlow para el seguimiento de experimentos (aunque está pensado para algo más que eso), Pesos y sesgos también para el seguimiento de experimentos y Chispa (y Pyspark) para el procesamiento de datos. En este eslabón puedes encontrar una lista más exhaustiva de las diferentes herramientas que existen.
