En este artículo, presentaremos una herramienta que demuestra, de forma práctica, nuestra experiencia utilizando los conductos de IA de Vértice en un proyecto en producción.
Un tutorial de principio a fin sobre cómo entrenar y desplegar un modelo ML personalizado en producción utilizando Vertex AI Pipelines con Kubeflow v2. Si usted está confundido sobre cómo acercarse a Vertex AI, podrá encontrar su camino ya que todo en este tutorial se basa en la experiencia de la vida real. Hay muchos ejemplos de pipelines que ilustran cómo utilizar ciertas características interesantes de Vertex AI y Kubeflow. También encontrará un makefile que le ayudará a ejecutar recetas importantes y le ahorrará mucho tiempo para construir su modelo y tenerlo listo y funcionando en producción.
Los pipelines en ML pueden definirse como conjuntos de trabajos conectados que realizan partes completas o específicas del flujo de trabajo de ML (ej: pipeline de entrenamiento).

ejemplo de un proceso de formación sencillo

ejemplo de un pipeline de entrenamiento en Vertex AI Pipelines usando Kubeflow
Diseñadas adecuadamente, las canalizaciones tienen la ventaja de ser reproducibles y altamente personalizables. Estas dos propiedades hacen que experimentar con ellas y desplegarlas en producción sea una tarea relativamente fácil. El uso de Vertex AI Pipelines junto con Kubeflow nos ayudó a diseñar y ejecutar rápidamente pipelines personalizados que tienen las propiedades mencionadas. Los ejemplos de canalizaciones que ilustramos en el kit de inicio son muy representativos de lo que uno podría encontrarse cuando trabaja en un proyecto de ML que necesita desplegarse en producción. También compartimos un puñado de consejos y scripts automatizados para que pueda centrarse en sentirse cómodo con Vertex AI.
Cuando empecé a utilizar los conductos de IA de vértices, me sentí bastante abrumado por todas las posibilidades de realizar exactamente la misma tarea. No estaba muy seguro de las mejores opciones sobre cómo construir mis pipelines. Al cabo de unos meses, encontramos nuestro camino y forjamos algunas convicciones, al menos sobre el aspecto más importante de la gestión del ciclo de vida de un proyecto en producción con esta tecnología.
Como ya hemos dicho, este artículo pretende presentar un kit de iniciación que muestre, con métodos prácticos, nuestra experiencia y lo que hemos aprendido al utilizar los conductos de IA de Vértice. Esperamos que esto ayude a los nuevos principiantes a hacerse rápidamente con esta potente herramienta sin tener que pagar su elevado precio de entrada.
En las próximas secciones, presentaremos los conceptos/características más interesantes que hemos encontrado utilizando las tuberías de IA de Vértice. También utilizaremos un proyecto de previsión de juguete (el concurso M5) para ilustrarlo todo. Intencionadamente no nos centraremos en la parte de modelado, sino que haremos hincapié en los distintos pasos necesarios para hacer operativo un modelo en producción.
Construya una imagen base personalizada y utilícela como base para sus componentes
Si alguna vez ha trabajado con pipelines Kubeflow, una pregunta que puede tener es cuándo utilizar componentes basados en contenedores frente a componentes basados en funciones. Hay muchos pros y contras en ambas opciones, sin embargo, también se puede encontrar un término medio. Los componentes basados en contenedores son más adecuados para tareas complejas en las que hay muchas dependencias de código en comparación con los componentes basados en funciones que contienen todas las dependencias de código dentro de una función y suelen ser más sencillos. Estos últimos se ejecutan más rápidamente ya que no necesitamos construir y desplegar una imagen cada vez que editamos nuestro código. En los componentes basados en funciones, se utiliza una imagen python 3.7 por defecto para ejecutar su función.
Nuestra solución para que tanto los componentes complejos como los sencillos funcionen de la misma manera es trabajar con una versión sobrescrita de la imagen base predeterminada. Dentro de esta imagen base alterada instalamos todos nuestros códigos como un paquete. Luego, importamos esas funciones dentro de componentes basados en funciones como se haría con pandas, por ejemplo. Obtenemos el beneficio de ejecutar tareas complejas y simples de la misma manera y reducimos el tiempo de construcción de la imagen a sólo 1 (la imagen base).
También organizamos nuestro archivos de configuración de forma que sea fácil adaptar las entradas de sus componentes y canalizaciones.

Utilizar una imagen base sobrescrita como base única para todos sus componentes
Paralelizar partes de sus pipelines es tan sencillo como escribir un bucle for
Cuando experimentamos con el ML, solemos necesitar ejecutar muchas iteraciones de un flujo de trabajo de entrenamiento sencillo, ya sea para afinar un hiperparámetro o para hacer varios modelos (por ejemplo, un modelo por categoría de producto).
Hacer esto de forma óptima significaría paralelizar los diferentes flujos de trabajo de entrenamiento para ganar tiempo y optimizar recursos. Con Vertex Pipelines y Kubefkow el esfuerzo es mínimo por diseño; sólo le costará escribir un bucle for. Y al compilar su pipeline, Kubeflow averiguará qué pasos y/o grupo de pasos pueden ejecutarse en paralelo y cuáles deben hacerse sucesivamente.

Ejemplo de canalización con partes que se ejecutan en paralelo
Despliegue condicional para operar su modelo ML sin problemas
Con kfp.dsl.condition, puede desplegar fácilmente un modelo entrenado y prepararse para reutilizarlo más tarde con algo de lógica de código. Si está experimentando con muchas configuraciones y espera trasladar sin problemas las cosas a producción dado un conjunto de condiciones, esta funcionalidad de Kubeflow le será muy útil. Mézclela con un gran CICD y operará el ciclo de vida de su modelo ML sin problemas.

Ejemplo de despliegue condicional
Además de estas características (que no son exhaustivas), dispondrá de reproducibilidad , trazabilidad, manejabilidad y por último, pero no menos importante, una gran interfaz de usuario para supervisarlo todo en la interfaz Vertex AI en GCP.
Conclusión
Hoy en día se espera que muchos modelos ML funcionen en producción. Así que si está trabajando en GCP y planea utilizar Vertex AI, esperamos que este kit de inicio le ayude a tener un viaje agradable con la herramienta. También debería echarle un vistazo si está empezando sus proyectos con la ambición de hacerlos útiles lo antes posible, es decir, desplegarlos en producción.
Muchas gracias a Luca Serra, Jeffrey Kayne y Robin Doumerc (Artefact) que ayudó a construir este kit de inicio, pero también a Maxime Lutel por haber realizado realmente el modelado para el proyecto de juguete que utilizamos.
Si desea pasar al siguiente nivel, en la documentación de GCP encontrará cómo hacerlo:

BLOG







