Flyte, un año después

Lee el experimento definitivo realizado en Bazaarvoice para mejorar la eficiencia de los flujos de trabajo de machine learning gracias a la facilidad de desarrollo, despliegue y personalización de Flyte. Publicado: 26 de marzo de 2024 Autor: Bazaarvoice Engineering Team

En la pista de carreras de la creación de aplicaciones de ML, los pasos tradicionales del desarrollo de software suelen quedar adelantados. Bienvenido al mundo del MLOps, donde retos únicos se encuentran con soluciones innovadoras y la coherencia es la reina.

En Bazaarvoice, los pipelines de entrenamiento son la columna vertebral de nuestra estrategia de MLOps. Sustentan la reproducibilidad de la construcción de nuestros modelos. Sin embargo, existía una laguna evidente en el paso del código experimental a producción.

En lugar de seguir con enfoques fragmentarios, que a menudo se centraban en gran medida en los notebooks de Jupyter, determinamos que hacía falta un estándar para que los profesionales pudieran experimentar y poner en producción modelos de machine learning con extrema rapidez, siguiendo a la vez nuestras mejores prácticas.

Construir vs. comprar

Recién salidos de los éxitos de unificar nuestra estrategia de despliegue de modelos de machine learning (ML)Se abre en una ventana nueva, lo primero que debíamos decidir era si construir una plataforma propia de orquestación de flujos de trabajo de ML o buscar soluciones externas.

Cuando decidimos “comprar” (al fin y al cabo es de código abierto), elegir FlyteSe abre en una ventana nueva como plataforma de gestión de flujos de trabajo se perfiló como una opción clara. Nos ahorró un tiempo de desarrollo inestimable y acercó a nuestro equipo a ofrecer una infraestructura de autoservicio sólida. Una infraestructura así permite a nuestros ingenieros construir, evaluar, registrar y desplegar modelos sin fricciones. En lugar de reinventar la rueda, Flyte nos dotó de una rueda eficiente para adelantarnos a los demás.

Antes de dar el salto con Flyte, nos embarcamos en un extenso viaje de evaluación. Elegir el sistema de orquestación de flujos de trabajo adecuado no consistía solo en seleccionar una herramienta, sino también en encontrar una plataforma que complementara nuestra visión y se alineara con nuestros objetivos estratégicos. Éramos conscientes de la importancia de esta decisión y queríamos asegurarnos de tenerlo todo cubierto. Al final, las opciones de herramientas que se consideraron fueron Flyte, Metaflow, Kubeflow Pipelines y Prefect.

Para tomar una decisión informada, establecimos una serie de criterios:

Imprescindibles:

  • Facilidad de desarrollo: La herramienta debería ayudar a los desarrolladores de forma intuitiva, sin curvas de aprendizaje pronunciadas.

  • Implantación: mecanismos de implantación rápidos y sin complicaciones.

  • Personalización de pipelines: flexibilidad para ajustar los pipelines a medida que surgen requisitos de proyecto específicos.

  • Visibilidad: información clara sobre los procesos para depurar y entender mejor.

Aspectos deseables:

  • Integración con AWS: Capacidades de integración fluida con los servicios de AWS.

  • Conservación de metadatos: almacenamiento y recuperación eficientes de los metadatos.

  • Tiempo de arranque: inicialización rápida para reducir la latencia.

  • Almacenamiento en caché: Almacenamiento en caché óptimo de los datos para obtener resultados más rápidos.

Neutrales, pero dignas de mención:

  • Seguridad: medidas de seguridad sólidas que garantizan la protección de los datos.

  • Administración de usuarios: funciones que facilitan la gestión de usuarios y el control de acceso.

  • Coste: Asequibilidad: un buen equilibrio entre funciones y precio.

Por qué Flyte destacó: cumplir los criterios clave

Profundizando en nuestro proceso de selección, Flyte cumplió de forma constante nuestros criterios principales, superando a menudo las capacidades de otras herramientas que se estaban considerando:

  1. Facilidad de desarrollo: Pure Python | Task Decorators Experiencia de desarrollo nativa de Python

  2. Pipeline Customization Personaliza fácilmente cualquier flujo de trabajo y cualquier tarea modificando el decorador de tareas

  3. Despliegue: clúster de Kubernetes

  4. Visibilidad Registros de contenedores fácilmente accesibles

  5. Los decks de Flyte permiten visualizaciones de informes

  6. La integración nativa de Flyte con Kubernetes simplificó el proceso de implementación.

La personalización de Bazaarvoice

Como con cualquier plataforma, aunque Flyte aportó muchas ventajas, necesitábamos una solución plug-and-play distinta para nuestras necesidades particulares. Anticipamos la novedad de la plataforma dentro de nuestra organización. Queríamos reducir al máximo la curva de aprendizaje y permitir que nuestros desarrolladores hicieran la transición sin problemas y sin sentirse abrumados.

Para facilitar la transición y agilizar el proceso de desarrollo, hemos creado una plantilla de cookiecutterSe abre en una ventana nueva que sirve de plataforma de lanzamiento para los desarrolladores y ofrece un punto de partida estructurado, estandarizado y alineado con las buenas prácticas para los proyectos de Flyte. Esta estructura permite a los desarrolladores construir rápidamente pipelines de entrenamiento.

Los archivos más relevantes que proporciona la plantilla son:

  • Pipfile - Detalla las dependencias del proyecto

  • Dockerfile - Crea el contenedor de Docker

  • Makefile - Archivo auxiliar para compilar, registrar y ejecutar proyectos

  • README.md - Detalla el proyecto

  • src/ tasks/

  • Workflows.py (sigue el estándar Kedro para capas de datosSe abre en una ventana nueva) process_raw_data: flujo de trabajo para extraer, limpiar y transformar datos sin procesar

  • generate_model_input - flujo de trabajo para crear los conjuntos de datos de entrenamiento, prueba y validación

  • train_model - flujo de trabajo para generar un modelo de aprendizaje automático entrenado y serializado

  • generate_model_output - flujo de trabajo para evitar el desajuste entre entrenamiento y servicio realizando inferencia sobre el conjunto de datos de validación con el modelo de aprendizaje automático entrenado

  • evaluate - flujo de trabajo para evaluar el modelo con un conjunto deseado de métricas de rendimiento

  • reporting - flujo de trabajo para resumir y visualizar el rendimiento del modelo

  • full - pipeline de Flyte completo para generar un modelo entrenado

  • tests/ - Pruebas unitarias de tus flujos de trabajo y tareas

  • run - Simplifica la ejecución de flujos de trabajo

Además, un desafío habitual al desarrollar pipelines es necesitar más recursos de los que ofrecen nuestras máquinas locales. O puede haber tareas que requieran tiempos de ejecución prolongados. Flyte sí ofrece la capacidad de desarrollar en local y ejecutar en remoto. Sin embargo, esto implica una serie de pasos:

  • Vuelve a construir tu imagen de Docker personalizada tras cada modificación del código.

  • Asigna una etiqueta de versión a esta nueva imagen de docker y súbela a ECR.

  • Registra esta nueva versión del workflow en Flyte, actualizando la imagen de docker.

  • Indica a Flyte que ejecute esa versión específica del workflow, parametrizando mediante la CLI.

Para sortear estos retos y agilizar el proceso de desarrollo, diseñamos el Makefile y el script de ejecución de la plantilla para que abstraigan la serie de pasos anteriores en un único comando.

./run —remote src/workflows.py full

El Makefile usa un par de targets auxiliares, pero en conjunto ofrece los siguientes comandos:

  • info - Imprime información sobre este proyecto

  • init - Configura el proyecto en flyte y crea un repositorio ECR

  • build - Construye la imagen de docker

  • push - Sube la imagen de docker a ECR

  • package - Crea el paquete de flyte

  • register - Registra la versión en flyte

  • runcmd - Genera el comando de ejecución tanto para local como para remoto

  • test - Ejecuta todas las pruebas del código

  • code_style - Aplica el formato black & flake8

Triunfos clave

Con Flyte como componente esencial de nuestra plataforma de machine learning, hemos logrado un impulso inigualable en el desarrollo de ML. Permite experimentar y desplegar nuestros modelos con rapidez, garantizando que siempre sigamos las mejores prácticas. Más allá de alinearse con los principios fundamentales de MLOps, nuestras personalizaciones hacen que Flyte se adapte perfectamente a nuestras necesidades específicas y garantizan la coherencia y la fiabilidad de nuestros modelos de ML.

Reflexiones finales

Igual que los pilotos sienten euforia al cruzar la línea de meta, nuestro equipo siente una inmensa sensación de logro al ver cómo nuestros proyectos de machine learning despegan a toda velocidad con Flyte. Al mirar hacia delante, somos optimistas y estamos listos para afrontar los nuevos retos e hitos que nos esperan. 🏎️

Si te atrae este tipo de trabajo, echa un vistazo a nuestras ofertas de empleoSe abre en una ventana nueva.

Sobre el autor

Edgar Trujillo es especialista en MLOps en Bazaarvoice y se especializa en todo el ciclo de vida de los modelos, desde el entrenamiento hasta la producción. Antes de incorporarse a Bazaarvoice, trabajó como ML Engineer en el equipo CTML de JP Morgan, donde ayudaba a los equipos internos de cumplimiento normativo y jurídico con el análisis de datos. También adquirió experiencia en el campo de los coches autónomos durante unas prácticas en una startup de vehículos eléctricos, donde su investigación sobre la predicción del comportamiento de los conductores dio lugar a una patente. En su tiempo libre, Edgar disfruta de la fotografía, de viajar y de estar al día de los últimos estrenos de Netflix.

Sigue explorando

Descubre más recursos, herramientas e insights para impulsar las experiencias de próxima generación basadas en IA.

  • Blog

    La Generación Alpha impulsa el cambio hacia la IA

    La Generación Alpha cambia las barras de búsqueda por chatbots de IA. Aprende a usar el marco Triple-A y el UGC auténtico para convertirte en la respuesta definitiva en la era del GEO.

    Leer más
  • Recurso

    Cómo triunfar en el AI shelf con UGC

    El gasto publicitario tradicional no te llevará al AI shelf. Descubre cómo usar el UGC para que a la IA le resulte fácil encontrar tus productos, confiar en ellos y elegirlos.

    Leer más
  • Webinar

    Cómo triunfar en el AI shelf con UGC: el playbook de los líderes de marca para la visibilidad de los productos

    Los agentes de IA son ahora el primer filtro entre tu catálogo y la decisión de compra del comprador. Descubre cómo el UGC ayuda a tu marca a aparecer en la búsqueda con IA.

    Leer más

¿Tienes 15 minutos para hablar de estrategia?

Revisaremos tu caso de uso y te mostraremos cómo convertir el contenido auténtico de los clientes en una mayor conversión en tu sitio web.