En el emocionante ámbito del Machine Learning, enfrentamos un desafío que merece nuestra atención: el rastreo de datos. Incluso si no estás muy familiarizado con el tema, seguramente has oído hablar de la importancia que la inteligencia artificial tiene en los datos. Por ejemplo así como existe control de versiones para el código, también es necesario tener versiones para los datos. Es aquí donde entra en juego MLOps.
Ahora, cuando hablamos de MLOps, nos adentramos en un territorio que, sí, puede parecer más intrincado que el desarrollo convencional, pero no te asustes. En realidad, se trata de aplicar principios similares, solo que con herramientas especializadas y estableciendo nuevas prácticas.
En este artículo te contaré como en nuestra sesión de Expert Talks, David de la Iglesia Castro nos hizo un recorrido a través sus conocimientos y experiencias únicas en el universo de MLOps.
Primero repasaremos algunos conceptos clave de MLOps y, después te contaré algunas de las preguntas frecuentes de mucho nivel técnico que respondió David.
¿Qué es MLOps?
MLOps o Machine Learning Operations, es una extensión de la metodología DevOps que busca incluir los procesos de aprendizaje automático y ciencia de datos en la cadena de desarrollo y operaciones para hacer que el desarrollo del ML sea más confiable y productivo.
El objetivo de MLOps es desarrollar, entrenar y desplegar modelos de ML con procedimientos automatizados que involucren a los equipos de Data, desarrolladores, seguridad e infraestructura.
Flujo de trabajo de un investigador MLOps
#1 Entrenamiento de modelos: niveles y estrategias
En el ámbito del entrenamiento de modelos, se describen tres niveles:
- Primer nivel: En este primer escalón, una persona realiza el entrenamiento en su propio ordenador con una GPU, pero puede resultar difícil replicar el entorno de entrenamiento y gestionar eficientemente los recursos.
- Nivel intermedio: En este nivel el código es portable y puede ejecutarse tanto en máquinas locales con GPUs, servidores dedicados o instancias en la nube.
- Nivel más avanzado: El pináculo se alcanza al externalizar el entrenamiento a una empresa que gestiona GPUs. Esta estrategia optimiza los recursos de manera eficiente.
#2 Evaluación del modelo: un enfoque estratégico
En esta fase de operaciones MLOps, surge la necesidad de correlacionar las métricas evaluadas con el impacto en producción y en el negocio. Aquí es donde nos preguntamos ¿Cómo hacemos para elegir las métricas adecuadas? La solución toma un enfoque estratégico algo así como las pruebas en desarrollo de software. La idea es crear «tests de datos» asegurando la calidad del modelo.
#3 Despliegue de modelos
Existen varias estrategias ofrecidas por proveedores de la nube. Algunos de ellos disponen de equipos especializados en el despliegue en Kubernetes, mientras que otros prefieren implementar distintas versiones del modelo para subconjuntos específicos de clientes, evaluándolos por separado para determinar la mejor opción. Aunque la implementación de sistemas de despliegue complejos puede ser la única alternativa en proyectos particulares, en la mayoría de los casos, según nuestras conversaciones con empresas, no se considera necesaria.
Un aspecto crucial es que cada componente de estos procesos se traduce en código, ya sea en Python, en un notebook, en un script o en un archivo YAML de configuración. Por lo tanto, se destaca la importancia de aplicar los mismos criterios utilizados en productos y desarrollo de software a los proyectos de machine learning.
Los pasos para realizar un buen despliegue de modelos son los siguientes:
- Destacar la importancia de optimizar los modelos para la producción
- Mencionar los niveles de complejidad en el proceso, desde compartir el modelo por canales informales hasta integrar la generación de imágenes Docker en un flujo de integración continua.
- Finalmente, subrayar la necesidad de llevar las prácticas de exploración de datos a cabo manualmente y de adaptar las métricas al proyecto específico, alineándolas con los objetivos del negocio.
Plataformas y técnicas que ofrecen soluciones
Hay una amplia gama de herramientas disponibles para cada fase de la implementación de MLOps. Un error común es pasar por alto estas opciones y optar por implementar soluciones directamente en notebooks o scripts sin explorar alternativas.
Es esencial estar al tanto de las opciones de código abierto, fomentar la colaboración, reportar errores y elegir cuidadosamente las herramientas que mejor se ajusten a tus requisitos. Aunque hay plataformas que proporcionan soluciones integrales, se recomienda encontrar un equilibrio, optando por herramientas que se adapten con tus necesidades y utilizando componentes de plataformas solo cuando sea necesario.
DVC: Data Version Control
Es una herramientat de código abierto que se utilizada en MLOps para gestionar y versionar datos de manera eficiente. Se integra con Git y sigue flujos de trabajo similares a los de desarrollo de software facilitando su implementación. DVC resuelve problemas de archivos grandes en Git al almacenar punteros y gestionar los archivos reales en ubicaciones más adecuadas, como el almacenamiento en la nube
Ahora, DVC incorporó pipelines que conectan diferentes etapas del proceso con entradas y salidas. En su más reciente actualización, se incorporó la versión de experimentos, basada en Git pero sin ocupar espacio en tu repositorio.
En resumen, DVC actúa como un puente entre tu repositorio Git y el almacenamiento externo, permitiendo versionar y gestionar datos voluminosos sin sobrecargar el repositorio. Sin embargo, es muy posible que puedan surgir las siguientes preguntas: ¿Qué factores se deben considerar? ¿Existe alguna clave o consideración general para la empresa? ¿Cómo garantizar que si un compañero clona el repositorio GIT, pueda descargar esos datos con DVC?
La flexibilidad de DVC es una maravilla pero también se puede volver complicada. Por ejemplo, si empleas S3, existen diversas opciones de autenticación. Puedes otorgar autorización a usuarios específicos en tu bucket de S3 o aprovechar las opciones de autenticación proporcionadas por Amazon, como una identidad de acceso. DVC no aborda directamente este aspecto, pero se integra con las APIs de diversas plataformas en la nube para gestionar la autenticación a tu manera.
Mutation Testing
Mutation testing es una técnica que evalúa diversas combinaciones de entradas y salidas con el objetivo de identificar posibles casos que puedan afectar el código.
Es una propuesta interesante, aplicable al ámbito del software, cuenta con una destacada utilidad en el procesamiento de imágenes. Imagina un modelo diseñado para detectar hamburguesas en fotos aún cuando estas se presentan en blanco y negro. La idea es que, sin importar los cambios en el formato, la entrada debería comportarse de manera consciente. Pero,¡ojo! Si algo sale mal , podria deberse a que la imagen esté en blanco y negro, mostrando todo en negro. O quizás, la falla radica en que el modelo simplemente no está funcionando como debería. En este caso, es esencial entender cómo el código puede romperse y aprender a gestionarlo de manera controlada.
Algunos cambios en el mundo del Machine Learning
En relación a la evolución en machine learning, hemos transitado de crear modelos desde cero a adoptar frameworks como TensorFlow y PyTorch de manera orgánica. La clave es entender que se debe dejar de invertir tiempo en la implementación manual y en su lugar aprovechar los avances producidos por grandes empresas en el estado del arte de arquitecturas.
Ahora, invertimos más tiempo en lo fundamental: los datos y la evaluación. Aprovechemos el trabajo de la comunidad en código abierto y centrémonos en aspectos más relevantes.
En cuanto a las tendencias a corto plazo en machine learning, se podría afirmar que lo más prioritario reside en la combinación de modelos permitiéndoles interactuar para lograr resultados más eficientes A largo plazo, se vislumbra la necesidad de contar con el respaldo de ordenadores cuánticos y sistemas más potentes. No obstante, en la actualidad, prever cambios radicales en los próximos 10 o 15 años resulta desafiante.
Preguntas frecuentes
En nuestra charla con David, abordamos las preguntas más comunes de MLOps y hoy te las vamos a compartir
Si tu empresa está considerando MLOps, ¿aprecias la comprensión del diseño estadístico en la creación de modelos?
En muchos casos, existe una brecha evidente entre profesionales técnicos, enfocados en detalles estadísticos, y roles ejecutivos que priorizan resultados tangibles sin profundizar en lo técnico. Esta desconexión se refleja en áreas como negocios, DevOps e infraestructura, generando quejas sobre la falta de conformidad con los procedimientos en data science y una percepción de falta de atención a necesidades específicas.
¿Sería beneficioso contar con un comunicador que sirva de puente entre el ámbito empresarial y la esfera técnica para facilitar la colaboración?
Numerosas empresas optan por contratar servicios externos para abordar estos desafíos. No obstante, idealmente, la resolución de estos problemas debería originarse internamente en la empresa. Lamentablemente, en muchos casos esto no ocurre, lo que conduce a la necesidad de recurrir a servicios externos.
¿Cómo garantizar al cliente que la métrica seleccionada será suficiente, por ejemplo, una precisión del 95%?
El cliente debe definir de manera clara las expectativas y la precisión requerida para el modelo; de lo contrario, resultará completamente incierto para el investigador ofrecer garantías.
¿DVC es un catálogo de datos o de metadatos?
DVC transforma tu repositorio en un catálogo de datos al almacenar metadatos en el repositorio Git. Podemos compararlo a una biblioteca donde el repositorio es el catálogo y DVC asume el rol del bibliotecario. Su función principal es facilitar la conexión entre tu repositorio y el almacenamiento externo, asegurándote de traer los datos y metadatos adecuados a tu máquina actual.
¿Cuál es el procedimiento de DVC cuando se trata de archivos grandes que prefieres no incluir en Git?
La explicación es que DVC crea un pequeño archivo de metadatos que se guarda en Git, y el archivo grande se almacena externamente, por ejemplo, en S3. Si modificas los datos locales, DVC actualiza solo lo que ha cambiado, manteniendo una referencia en tu repositorio de Git.
¿Qué se debe tener en cuenta si se desea comenzar en el mundo del open source?
Empieza contribuyendo a herramientas que ya utilizas. Reportar errores o buscar ayuda en el repositorio es un buen inicio. Con el tiempo, podrías sentirte cómodo contribuyendo al código o la documentación del proyecto. ¡Anímate!
¿Es buena estrategia llevar a cabo la creación de arquitecturas desde cero en Cairo?
Así es, es un enfoque más eficiente y permite concentrarse en tareas más valiosas.
¿Se podría considerar que el machine learning está en periodo de estancación?
El aprendizaje automático no está estancado, sino en constante evolución. La visión futura destaca la colaboración de modelos, como GPT-4 Vision, que transforma la detección de objetos. A nivel práctico, los ingenieros simplifican sistemas, centrándose en datos y evaluación. Aunque el desarrollo de nuevos modelos puede cesar, hay un vasto potencial para innovar y crear con las herramientas actuales.
¿MLflow se puede considerar una buena alternativa?
La interfaz flexible de MLflow es de código abierto y puede alojarse en cualquier lugar, pero se percibe una desconexión con el código generado en los experimentos. Por esta razón, se sugiere DVC, que establece una conexión más clara con Git en términos de experimentación.
¿Cómo se aborda la optimización en los modelos en el contexto de MLOps?
La primera optimización comúnmente aplicada implica el cambio de TensorFlow a un entorno como OpenBino, Nx o TensorRT. No obstante, existen otras técnicas de optimización que pueden acelerar el rendimiento del modelo incluso más allá de lo que ofrece TensorRT al realizar inferencia en tiempo real.
Además de la conversión de modelos, ¿cuáles otras técnicas y librerías se pueden utilizar?
Nunca hemos sentido la necesidad de ir más allá de la optimización dentro del formato PyTorch, el cual ha demostrado ser sorprendentemente ineficiente. En lugar de eso, nos hemos enfocado en optimizar otras partes del proceso de inferencia del modelo, como el procesamiento de vídeo. Para esto, hemos utilizado Pipestream, una librería de componentes de NVIDIA.
La valía en esta librería no radica solo en la optimización extrema del modelo para alcanzar la máxima eficiencia durante la inferencia, sino más bien en la optimización del flujo de datos.
Reflexión: mejores prácticas
Es innegable que MLOps ha emergido como un pilar fundamental, conectando las ambiciosas aspiraciones de la inteligencia artificial con la realidad operativa de las empresas. Considera esto: la integración entre equipos técnicos y líderes empresariales se convierte en el núcleo que impulsa la innovación y la eficiencia.
Imagina la capacidad de transformar modelos abstractos en soluciones tangibles de manera ágil y confiable. Desde la automatización inteligente hasta la gestión eficiente de datos MLOps es el camino para que el machine learning florezca ¿Qué significa esto para las empresas? Una mejora sustancial en la toma de decisiones, agilidad operativa y resultados palpables.