En este artículo, presentaremos una herramienta que muestra, de forma práctica, nuestra experiencia con Vertex AI en un proyecto que se ejecuta en producción.
Un tutorial completo sobre cómo entrenar e implementar un modelo de aprendizaje automático personalizado en producción utilizando Vertex AI con Kubeflow v2. Si no sabes muy bien cómo abordar Vertex AI, aquí encontrarás la respuesta, ya que todo lo que se explica en este tutorial se basa en experiencias reales. Hay muchos ejemplos de pipelines que ilustran cómo utilizar ciertas funciones interesantes de Vertex AI Kubeflow. También encontrarás un archivo Makefile que te ayudará a ejecutar recetas importantes y te ahorrará mucho tiempo a la hora de construir tu modelo y ponerlo en marcha en producción.
En el aprendizaje automático, los flujos de trabajo se pueden definir como conjuntos de tareas conectadas entre sí que ejecutan partes completas o específicas del flujo de trabajo de aprendizaje automático (por ejemplo, un flujo de trabajo de entrenamiento).

ejemplo de un proceso de entrenamiento sencillo

Ejemplo de un proceso de entrenamiento en Vertex AI utilizando Kubeflow
Si se diseñan correctamente, los flujos de trabajo ofrecen la ventaja de ser reproducibles y altamente personalizables. Estas dos características hacen que experimentar con ellos e implementarlos en producción sea una tarea relativamente sencilla. El uso de Vertex AI junto con Kubeflow nos ayudó a diseñar y ejecutar rápidamente flujos de trabajo personalizados que cuentan con las propiedades mencionadas anteriormente. Los ejemplos de flujos de trabajo que mostramos en el kit de inicio son muy representativos de lo que uno podría encontrarse al trabajar en un proyecto de aprendizaje automático que deba implementarse en producción. También hemos compartido algunos consejos y scripts automatizados para que puedas centrarte en familiarizarte con Vertex AI.
Cuando empecé a utilizar Vertex AI , me sentí bastante abrumado por todas las opciones disponibles para realizar una misma tarea. No tenía muy claro cuáles eran las mejores opciones a la hora de diseñar mis pipelines. Tras unos meses, encontramos nuestro camino y nos formamos algunas ideas claras, al menos en lo que respecta al aspecto más importante de la gestión del ciclo de vida de un proyecto en producción con esta tecnología.
Como se ha mencionado anteriormente, el objetivo de este artículo es presentar un kit de inicio que muestre, a través de métodos prácticos, nuestra experiencia y lo que hemos aprendido al utilizar Vertex AI . Esperamos que esto ayude a los principiantes a familiarizarse rápidamente con esta potente herramienta sin tener que pagar el elevado precio de entrada.
En las siguientes secciones, presentaremos los conceptos y características más interesantes que hemos encontrado al utilizar Vertex AI . Además, utilizaremos un proyecto de previsión de prueba (el concurso M5) para ilustrarlo todo. De forma intencionada, no nos centraremos en la parte del modelado, sino que, en su lugar, haremos hincapié en los diferentes pasos necesarios para poner en marcha un modelo en producción.
Crea una imagen base personalizada y utilízala como punto de partida para tus componentes
Si alguna vez has trabajado con Kubeflow Pipelines, es posible que te hayas preguntado cuándo conviene utilizar componentes basados en contenedores y cuándo los basados en funciones. Ambas opciones presentan numerosas ventajas e inconvenientes; sin embargo, también existe 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 es necesario compilar e implementar una imagen cada vez que editamos nuestro código. En los componentes basados en funciones, se utiliza una imagen predeterminada de Python 3.7 para ejecutar la función.
Nuestra solución para ejecutar tanto componentes complejos como sencillos de la misma manera consiste en trabajar con una versión modificada de la imagen base predeterminada. Dentro de esta imagen base modificada, hemos instalado todo nuestro código en forma de paquete. A continuación, importamos esas funciones dentro de los componentes basados en funciones, tal y como se haría, por ejemplo, con pandas. De este modo, obtenemos la ventaja de ejecutar tareas complejas y sencillas de la misma manera y reducimos el tiempo de compilación de la imagen a solo 1 (la imagen base).
Además, organizamos nuestrosarchivos de configuraciónde tal manera que resulte fácil adaptar las entradas de tus componentes y flujos de trabajo.

Utilizar una imagen base sobrescrita como única base para todos tus componentes
Paralelizar partes de tus flujos de trabajo es tan sencillo como escribir un bucle «for»
Cuando experimentamos con el aprendizaje automático, solemos tener que ejecutar muchas iteraciones de un flujo de trabajo de entrenamiento sencillo, ya sea para ajustar un hiperparámetro o para crear varios modelos (por ejemplo, un modelo por categoría de producto).
Para hacerlo de forma óptima, habría que paralelizar los distintos flujos de trabajo de entrenamiento con el fin de ahorrar tiempo y optimizar los recursos. Con Vertex Pipelines y Kubeflow, el esfuerzo es mínimo por diseño; solo tendrás que escribir un bucle «for». Y al compilar tu pipeline, Kubeflow determinará qué pasos o grupos de pasos se pueden ejecutar en paralelo y cuáles deben realizarse de forma sucesiva.

Ejemplo de un proceso con partes que se ejecutan en paralelo
Implementación condicional para ejecutar tu modelo de aprendizaje automático sin problemas
Con kfp.dsl.condition, puedes implementar fácilmente un modelo entrenado y prepararlo para reutilizarlo más adelante mediante un poco de lógica de código. Si estás probando diferentes configuraciones y esperas poder pasar a producción sin problemas cuando se cumplan una serie de condiciones, esta funcionalidad de Kubeflow te resultará muy útil. Si la combinas con un buen sistema de CICD, podrás gestionar el ciclo de vida de tu modelo de aprendizaje automático sin ningún contratiempo.

Ejemplo de implementación condicional
Además de estas características (la lista no es exhaustiva), dispondrás dereproducibilidad, trazabilidad, facilidad de gestióny, por último, pero no por ello menos importante, una excelente interfaz de usuario para supervisar todo desde la AI Vertex AI en GCP.
Conclusión
Hoy en día, se espera que muchos modelos de aprendizaje automático se ejecuten en entorno de producción. Por eso, si trabajas en GCP y tienes pensado utilizar Vertex AI, esperamos que este kit de inicio te ayude a tener una experiencia satisfactoria con la herramienta. También te recomendamos que le eches un vistazo si estás iniciando tus proyectos con el objetivo de que sean útiles lo antes posible, es decir, de implementarlos en entorno de producción.
Muchas gracias a Luca Serra, Jeffrey Kayne y Robin Doumerc (Artefact) por su ayuda en la creación de este kit de inicio, así como a Maxime Lutel por encargarse del modelado del proyecto de juguete que utilizamos.
Si quieres dar un paso más, en la documentación de GCP encontrarás cómo:

BLOG







