En este documento se describe la arquitectura general de un sistema de aprendizaje automático (ML) que usa las bibliotecas de TensorFlow Extended (TFX). También se explica cómo configurar la integración continua (CI), la entrega continua (CD) y el entrenamiento continuo (CT) del sistema de aprendizaje automático con Cloud Build y Vertex AI Pipelines.
En este documento, los términos sistema de aprendizaje automático y flujo de procesamiento de aprendizaje automático hacen referencia a los flujos de procesamiento de entrenamiento de modelos de aprendizaje automático, en lugar de a los flujos de procesamiento de puntuación o predicción de modelos.
Este documento está dirigido a científicos de datos e ingenieros de aprendizaje automático que quieran adaptar sus prácticas de integración continua y entrega continua para trasladar soluciones de aprendizaje automático a producción en Google Cloud, así como a quienes quieran ayudar a garantizar la calidad, el mantenimiento y la adaptabilidad de sus flujos de trabajo de aprendizaje automático.
En este documento se tratan los siguientes temas:
- Información sobre la integración continua, la entrega continua y la automatización en el aprendizaje automático.
- Diseñar un flujo de procesamiento de aprendizaje automático integrado con TFX.
- Orquestar y automatizar el flujo de procesamiento de aprendizaje automático con Vertex AI Pipelines.
- Configurar un sistema de CI/CD para el flujo de procesamiento de aprendizaje automático con Cloud Build.
Operaciones de aprendizaje automático
Para integrar un sistema de aprendizaje automático en un entorno de producción, debes orquestar los pasos de tu flujo de procesamiento de aprendizaje automático. Además, debes automatizar la ejecución del flujo de procesamiento para entrenar tus modelos de forma continua. Para experimentar con nuevas ideas y funciones, debes adoptar prácticas de CI/CD en las nuevas implementaciones de las canalizaciones. En las siguientes secciones se ofrece una descripción general de la integración continua, la entrega continua y las pruebas continuas en el aprendizaje automático.
Automatización del flujo de procesamiento del aprendizaje automático
En algunos casos prácticos, el proceso manual de entrenamiento, validación y despliegue de modelos de aprendizaje automático puede ser suficiente. Este enfoque manual funciona si tu equipo gestiona solo unos pocos modelos de aprendizaje automático que no se vuelven a entrenar o que no se cambian con frecuencia. Sin embargo, en la práctica, los modelos suelen fallar cuando se implementan en el mundo real porque no se adaptan a los cambios en la dinámica de los entornos o en los datos que describen dicha dinámica.
Para que tu sistema de aprendizaje automático se adapte a estos cambios, debes aplicar las siguientes técnicas de MLOps:
- Automatiza la ejecución del flujo de procesamiento de aprendizaje automático para volver a entrenar modelos con datos nuevos y detectar patrones emergentes. La CT se explica más adelante en este documento, en la sección Aprendizaje automático con Vertex AI Pipelines.
- Configura un sistema de entrega continua para desplegar con frecuencia nuevas implementaciones de todo el flujo de procesamiento del aprendizaje automático. CI/CD se explica más adelante en este documento, en la sección Configuración de CI/CD para aprendizaje automático en Google Cloud.
Puedes automatizar los flujos de producción de aprendizaje automático para volver a entrenar tus modelos con nuevos datos. Puedes activar tu flujo de trabajo bajo demanda, según una programación, cuando haya nuevos datos disponibles, cuando el rendimiento del modelo se deteriore, cuando se produzcan cambios significativos en las propiedades estadísticas de los datos o en función de otras condiciones.
Flujo de procesamiento de CI/CD en comparación con el flujo de procesamiento de CT
La disponibilidad de nuevos datos es uno de los factores que activan el reentrenamiento del modelo de aprendizaje automático. La disponibilidad de una nueva implementación del flujo de procesamiento de aprendizaje automático (incluida la nueva arquitectura del modelo, la ingeniería de características y los hiperparámetros) es otro factor importante que activa la nueva ejecución del flujo de procesamiento de aprendizaje automático. Esta nueva implementación de la canalización de AA sirve como una nueva versión del servicio de predicción de modelos. Por ejemplo, un microservicio con una API REST para el servicio online. La diferencia entre ambos casos es la siguiente:
- Para entrenar un nuevo modelo de aprendizaje automático con datos nuevos, se ejecuta la canalización de transformación de datos que se había desplegado anteriormente. No se despliegan nuevas canalizaciones ni componentes; solo se sirve un nuevo servicio de predicción o un modelo recién entrenado al final de la canalización.
- Para entrenar un nuevo modelo de aprendizaje automático con una nueva implementación, se despliega un nuevo flujo de procesamiento a través de un flujo de procesamiento de CI/CD.
Para desplegar nuevos flujos de procesamiento de aprendizaje automático rápidamente, debes configurar un flujo de procesamiento de CI/CD. Este flujo de procesamiento se encarga de desplegar automáticamente nuevos flujos de procesamiento y componentes de aprendizaje automático cuando hay nuevas implementaciones disponibles y aprobadas para varios entornos (como desarrollo, prueba, staging, preproducción y producción).
En el siguiente diagrama se muestra la relación entre la canalización de CI/CD y la canalización de CT de aprendizaje automático.
Imagen 1. Flujos de procesamiento de CI/CD y de CT de aprendizaje automático.
El resultado de estas canalizaciones es el siguiente:
- Si se proporciona una nueva implementación, un flujo de procesamiento de CI/CD correcto implementa un nuevo flujo de procesamiento de CT de AA.
- Si se proporcionan datos nuevos, una canalización de CT correcta entrena un nuevo modelo y lo implementa como servicio de predicción.
Diseñar un sistema de aprendizaje automático basado en TFX
En las siguientes secciones se explica cómo diseñar un sistema de aprendizaje automático integrado con TensorFlow Extended (TFX) para configurar una canalización de integración continua y entrega continua (CI/CD) para el sistema de aprendizaje automático. Aunque hay varios frameworks para crear modelos de aprendizaje automático, TFX es una plataforma de aprendizaje automático integrada para desarrollar y desplegar sistemas de aprendizaje automático de producción. Un flujo de procesamiento de TFX es una secuencia de componentes que implementan un sistema de aprendizaje automático. Esta canalización de TFX se ha diseñado para tareas de aprendizaje automático escalables y de alto rendimiento. Estas tareas incluyen el modelado, el entrenamiento, la validación, la inferencia y la gestión de implementaciones. Las bibliotecas clave de TFX son las siguientes:
- Validación de datos de TensorFlow (TFDV): se usa para detectar anomalías en los datos.
- TensorFlow Transform (TFT): se usa para el preprocesamiento de datos y la ingeniería de funciones.
- Estimadores de TensorFlow y Keras: se usan para crear y entrenar modelos de aprendizaje automático.
- TensorFlow Model Analysis (TFMA): se usa para evaluar y analizar modelos de aprendizaje automático.
- TensorFlow Serving (TFServing): se usa para ofrecer modelos de aprendizaje automático como APIs REST y gRPC.
Descripción general del sistema de aprendizaje automático de TFX
En el siguiente diagrama se muestra cómo se integran las distintas bibliotecas de TFX para componer un sistema de aprendizaje automático.
Imagen 2. Un sistema de aprendizaje automático típico basado en TFX.
En la figura 2 se muestra un sistema de aprendizaje automático típico basado en TFX. Los siguientes pasos se pueden completar manualmente o mediante una canalización automatizada:
- Extracción de datos: el primer paso es extraer los nuevos datos de entrenamiento de sus fuentes de datos. Los resultados de este paso son archivos de datos que se usan para entrenar y evaluar el modelo.
- Validación de datos: TFDV valida los datos con el esquema de datos (sin procesar) esperado. El esquema de datos se crea y se corrige durante la fase de desarrollo, antes de la implementación del sistema. Los pasos de validación de datos detectan anomalías relacionadas con la distribución de datos y con las desviaciones del esquema. Los resultados de este paso son las anomalías (si las hay) y una decisión sobre si se deben ejecutar los pasos posteriores o no.
- Transformación de datos: una vez validados los datos, se dividen y se preparan para la tarea de aprendizaje automático. Para ello, se realizan transformaciones de datos y operaciones de ingeniería de funciones con TFT. Los resultados de este paso son archivos de datos para entrenar y evaluar el modelo, que suelen transformarse al formato
TFRecords
. Además, los artefactos de transformación que se producen ayudan a crear las entradas del modelo e incorporan el proceso de transformación en el modelo guardado exportado después del entrenamiento. - Entrenamiento y ajuste del modelo: para implementar y entrenar el modelo de aprendizaje automático, usa la API
tf.Keras
con los datos transformados que se han obtenido en el paso anterior. Para seleccionar los ajustes de parámetros que dan lugar al mejor modelo, puedes usar Keras Tuner, una biblioteca de ajuste de hiperparámetros para Keras. También puedes usar otros servicios, como Katib, Vertex AI Vizier o el optimizador de hiperparámetros de Vertex AI. El resultado de este paso es un modelo guardado que se usa para la evaluación y otro modelo guardado que se usa para el servicio online del modelo para la predicción. - Evaluación y validación del modelo: cuando se exporta el modelo después del paso de entrenamiento, se evalúa en un conjunto de datos de prueba para determinar la calidad del modelo mediante TFMA. TFMA evalúa la calidad del modelo en su conjunto e identifica qué parte del modelo de datos no está funcionando. Esta evaluación ayuda a garantizar que el modelo solo se promocione para el servicio si cumple los criterios de calidad. Los criterios pueden incluir un rendimiento adecuado en varios subconjuntos de datos (por ejemplo, datos demográficos y ubicaciones) y un rendimiento mejorado en comparación con modelos anteriores o con un modelo de referencia. El resultado de este paso es un conjunto de métricas de rendimiento y una decisión sobre si se debe promocionar el modelo a producción.
- Publicación de modelos para predicciones: una vez validado el modelo recién entrenado, se despliega como un microservicio para ofrecer predicciones online mediante TensorFlow Serving. El resultado de este paso es un servicio de predicción desplegado del modelo de aprendizaje automático entrenado. Puedes sustituir este paso almacenando el modelo entrenado en un registro de modelos. A continuación, se inicia un proceso de CI/CD de servicio de modelos independiente.
Para ver un ejemplo de cómo usar las bibliotecas de TFX, consulta el tutorial oficial sobre el componente Keras de TFX.
Sistema de aprendizaje automático de TFX en Google Cloud
En un entorno de producción, los componentes del sistema deben ejecutarse a gran escala en una plataforma fiable. En el siguiente diagrama se muestra cómo se ejecuta cada paso de la canalización de aprendizaje automático de TFX mediante un servicio gestionado en Google Cloud, lo que garantiza la agilidad, la fiabilidad y el rendimiento a gran escala.
Imagen 3. Sistema de aprendizaje automático basado en TFX en Google Cloud.
En la siguiente tabla se describen los servicios de clavesGoogle Cloud que se muestran en la figura 3:
Paso | Biblioteca TFX | ServicioGoogle Cloud |
---|---|---|
Extracción y validación de datos | TensorFlow Data Validation | Dataflow |
Transformación de datos | TensorFlow Transform | Dataflow |
Entrenamiento y ajuste de modelos | TensorFlow | Vertex AI Training |
Evaluación y validación de modelos | TensorFlow Model Analysis | Dataflow |
Servicio de modelos para predicciones | TensorFlow Serving | Inferencia de Vertex AI |
Almacenamiento de modelos | N/A | Registro de modelos de Vertex AI |
- Dataflow es un servicio totalmente gestionado, sin servidor y fiable para ejecutar flujos de procesamiento de datos de Apache Beam a gran escala en Google Cloud. Dataflow se usa para escalar los siguientes procesos:
- Calcula las estadísticas para validar los datos entrantes.
- Realizar la preparación y la transformación de los datos.
- Evaluar el modelo en un conjunto de datos grande.
- Calcula métricas sobre diferentes aspectos del conjunto de datos de evaluación.
- Cloud Storage es un servicio de almacenamiento de alta disponibilidad y durabilidad para objetos binarios grandes.
Cloud Storage aloja los artefactos que se producen durante la ejecución del flujo de procesamiento de aprendizaje automático, incluidos los siguientes:
- Anomalías en los datos (si las hubiera)
- Datos y artefactos transformados
- Modelo exportado (entrenado)
- Métricas de evaluación de modelos
- Vertex AI Training es un servicio gestionado para entrenar modelos de aprendizaje automático a escala. Puedes ejecutar trabajos de entrenamiento de modelos con contenedores precompilados para TensorFlow, scikit-learn, XGBoost y PyTorch. También puedes ejecutar cualquier framework usando tus propios contenedores personalizados. Para tu infraestructura de entrenamiento, puedes usar aceleradores y varios nodos para el entrenamiento distribuido. Además, hay disponible un servicio escalable basado en la optimización bayesiana para el ajuste de hiperparámetros.
- Inferencia de Vertex AI es un servicio gestionado para ejecutar predicciones por lotes con tus modelos entrenados y predicciones online desplegando tus modelos como un microservicio con una API REST. El servicio también se integra con Vertex Explainable AI y Vertex AI Model Monitoring para entender tus modelos y recibir alertas cuando haya un sesgo o una deriva en las funciones o en las atribuciones de funciones.
- Vertex AI Model Registry te permite gestionar el ciclo de vida de tus modelos de aprendizaje automático. Puedes crear versiones de los modelos importados y consultar sus métricas de rendimiento. Después, se puede usar un modelo para hacer predicciones por lotes o desplegarlo para ofrecer servicios online mediante Vertex AI Inference.
Orquestar el sistema de aprendizaje automático con Vertex AI Pipelines
En este documento se ha explicado cómo diseñar un sistema de aprendizaje automático basado en TFX y cómo ejecutar cada componente del sistema a gran escala en Google Cloud. Sin embargo, necesitas un orquestador para conectar estos diferentes componentes del sistema. El orquestador ejecuta la canalización en una secuencia y pasa automáticamente de un paso a otro en función de las condiciones definidas. Por ejemplo, una condición definida podría ejecutar el paso de publicación del modelo después del paso de evaluación del modelo si las métricas de evaluación cumplen los umbrales predefinidos. Los pasos también se pueden ejecutar en paralelo para ahorrar tiempo, por ejemplo, validar la infraestructura de implementación y evaluar el modelo. Orquestar el flujo de procesamiento de aprendizaje automático es útil tanto en la fase de desarrollo como en la de producción:
- Durante la fase de desarrollo, la orquestación ayuda a los científicos de datos a ejecutar el experimento de aprendizaje automático en lugar de ejecutar cada paso manualmente.
- Durante la fase de producción, la orquestación ayuda a automatizar la ejecución del flujo de procesamiento de aprendizaje automático en función de una programación o de determinadas condiciones de activación.
Aprendizaje automático con Vertex AI Pipelines
Vertex AI Pipelines es un Google Cloud servicio gestionado que te permite orquestar y automatizar flujos de procesamiento de aprendizaje automático en los que cada componente del flujo de procesamiento se puede ejecutar en contenedores en Google Cloud u otras plataformas en la nube. Los parámetros y artefactos de la canalización que se generan se almacenan automáticamente en Vertex ML Metadata, lo que permite hacer un seguimiento del linaje y de la ejecución. El servicio Vertex AI Pipelines consta de los siguientes elementos:
- Una interfaz de usuario para gestionar y monitorizar experimentos, trabajos y ejecuciones.
- Un motor para programar flujos de trabajo de aprendizaje automático de varios pasos.
- Un SDK de Python para definir y manipular tuberías y componentes.
- Integración con los metadatos de Vertex ML para guardar información sobre ejecuciones, modelos, conjuntos de datos y otros artefactos.
A continuación, se muestra lo que constituye un flujo de procesamiento ejecutado en Vertex AI Pipelines:
- Un conjunto de tareas de aprendizaje automático en contenedores o componentes. Un componente de una canalización es un código autónomo que se empaqueta como una imagen de Docker. Un componente realiza un paso del flujo de procesamiento. Toma argumentos de entrada y genera artefactos.
- Una especificación de la secuencia de las tareas de aprendizaje automático, definida mediante un lenguaje específico de dominio (DSL) de Python. La topología del flujo de trabajo se define implícitamente conectando las salidas de un paso anterior a las entradas de un paso posterior. Un paso de la definición de un flujo de procesamiento invoca un componente del flujo. En una canalización compleja, los componentes pueden ejecutarse varias veces en bucles o de forma condicional.
- Conjunto de parámetros de entrada de la canalización, cuyos valores se transfieren a los componentes de la canalización, incluidos los criterios para filtrar datos y dónde almacenar los artefactos que produce la canalización.
En el siguiente diagrama se muestra un gráfico de ejemplo de Vertex AI Pipelines.
Imagen 4. Gráfico de ejemplo de Vertex AI Pipelines.
KubeFlow Pipelines SDK
El SDK de Kubeflow Pipelines te permite crear componentes, definir su orquestación y ejecutarlos como un flujo de procesamiento. Para obtener más información sobre los componentes de Kubeflow Pipelines, consulta el artículo Crear componentes de la documentación de Kubeflow.
También puedes usar el DSL de la canalización de TFX y los componentes de TFX. Un componente de TFX encapsula las funciones de metadatos. El controlador proporciona metadatos al ejecutor consultando el almacén de metadatos. El editor acepta los resultados del ejecutor y los almacena en los metadatos. También puedes implementar tu componente personalizado, que tiene la misma integración con los metadatos. Puedes compilar tus flujos de procesamiento de TFX en un archivo YAML compatible con Vertex AI Pipelines mediante tfx.orchestration.experimental.KubeflowV2DagRunner. A continuación, puedes enviar el archivo a Vertex AI Pipelines para que se ejecute.
En el siguiente diagrama se muestra cómo, en Vertex AI Pipelines, una tarea contenedorizada puede invocar otros servicios, como tareas de BigQuery, tareas de entrenamiento (distribuidas) de Vertex AI y tareas de Dataflow.
Imagen 5. Vertex AI Pipelines invoca Google Cloud servicios gestionados.
Vertex AI Pipelines te permite orquestar y automatizar una canalización de aprendizaje automático de producción ejecutando los servicios necesarios. Google Cloud En la figura 5, Vertex ML Metadata actúa como almacén de metadatos de aprendizaje automático para Vertex AI Pipelines.
Los componentes de la canalización no se limitan a ejecutar servicios relacionados con TFX enGoogle Cloud. Estos componentes pueden ejecutar cualquier servicio relacionado con los datos y la computación, incluidos Dataproc para tareas de SparkML, AutoML y otras cargas de trabajo de computación.
Contenerizar tareas en Vertex AI Pipelines tiene las siguientes ventajas:
- Desacopla el entorno de ejecución del tiempo de ejecución del código.
- Proporciona la reproducibilidad del código entre el entorno de desarrollo y el de producción, ya que los elementos que pruebas son los mismos en producción.
- Aísla cada componente de la canalización. Cada uno puede tener su propia versión del tiempo de ejecución, diferentes idiomas y diferentes bibliotecas.
- Ayuda a componer flujos de procesamiento complejos.
- Se integra con Vertex ML Metadata para ofrecer trazabilidad y reproducibilidad de las ejecuciones y los artefactos de las pipelines.
Para obtener una introducción completa a Vertex AI Pipelines, consulta la lista de ejemplos de cuadernos disponibles.
Activar y programar flujos de procesamiento de Vertex AI
Cuando despliegues una canalización en producción, tendrás que automatizar sus ejecuciones en función de los casos prácticos que se describen en la sección Automatización de canalizaciones de AA.
El SDK de Vertex AI te permite controlar la canalización de forma programática. La clase google.cloud.aiplatform.PipelineJob incluye APIs para crear experimentos, así como para desplegar y ejecutar pipelines. Por lo tanto, al usar el SDK, puedes invocar Vertex AI Pipelines desde otro servicio para conseguir activadores basados en eventos o programadores.
Imagen 6. Diagrama de flujo que muestra varios activadores de Vertex AI Pipelines mediante funciones de Pub/Sub y Cloud Run.
En la figura 6 se muestra un ejemplo de cómo activar el servicio Vertex AI Pipelines para ejecutar una canalización. La canalización se activa mediante el SDK de Vertex AI desde una función de Cloud Run. La función de Cloud Run es un suscriptor de Pub/Sub y se activa en función de los mensajes nuevos. Cualquier servicio que quiera activar la ejecución de la canalización puede publicar en el tema de Pub/Sub correspondiente. El ejemplo anterior tiene tres servicios de publicación:
- Cloud Scheduler publica mensajes de forma programada y, por lo tanto, activa el flujo de trabajo.
- Cloud Composer publica mensajes como parte de un flujo de trabajo más amplio, como un flujo de trabajo de ingesta de datos que activa el flujo de procesamiento de entrenamiento después de que BigQuery ingiera datos nuevos.
- Cloud Logging publica un mensaje basado en los registros que cumplen determinados criterios de filtrado. Puedes configurar los filtros para detectar la llegada de nuevos datos o incluso alertas de sesgo y deriva generadas por el servicio Vertex AI Model Monitoring.
Configurar CI/CD para aprendizaje automático en Google Cloud
Vertex AI Pipelines te permite orquestar sistemas de aprendizaje automático que implican varios pasos, como el preprocesamiento de datos, el entrenamiento y la evaluación de modelos, y el despliegue de modelos. En la fase de exploración de la ciencia de datos, Vertex AI Pipelines ayuda a experimentar rápidamente con todo el sistema. En la fase de producción, Vertex AI Pipelines te permite automatizar la ejecución de la canalización en función de los nuevos datos para entrenar o volver a entrenar el modelo de aprendizaje automático.
Arquitectura de CI/CD
En el siguiente diagrama se muestra una descripción general de alto nivel de la CI/CD para el aprendizaje automático con Vertex AI Pipelines.
Figura 7: resumen de alto nivel de la integración y la entrega continuas con Vertex AI Pipelines.
El elemento central de esta arquitectura es Cloud Build. Cloud Build puede importar código fuente de Artifact Registry, GitHub o Bitbucket. A continuación, puede ejecutar una compilación según tus especificaciones y generar artefactos como contenedores Docker o archivos tar de Python.
Cloud Build ejecuta tu compilación como una serie de pasos de compilación, definidos en un archivo de configuración de compilación (cloudbuild.yaml
). Cada paso de compilación se ejecuta en un contenedor Docker. Puedes usar las fases de compilación compatibles que proporciona Cloud Build o escribir tus propias fases de compilación.
El proceso de Cloud Build, que lleva a cabo la CI/CD necesaria para tu sistema de aprendizaje automático, se puede ejecutar de forma manual o mediante activadores de compilación automatizados. Los activadores ejecutan los pasos de compilación configurados cada vez que se insertan cambios en el origen de la compilación. Puedes configurar un activador de compilación para que ejecute la rutina de compilación cuando se produzcan cambios en el repositorio de origen o solo cuando los cambios cumplan determinados criterios.
Además, puedes tener rutinas de compilación (archivos de configuración de Cloud Build) que se ejecuten en respuesta a diferentes activadores. Por ejemplo, puedes tener rutinas de compilación que se activen cuando se hagan confirmaciones en la rama de desarrollo o en la rama principal.
Puede usar sustituciones de variables de configuración
para definir las variables de entorno en tiempo de compilación. Estas sustituciones se
obtienen de las compilaciones activadas. Estas variables incluyen $COMMIT_SHA
, $REPO_NAME
, $BRANCH_NAME
, $TAG_NAME
y $REVISION_ID
. Otras variables que no se basan en activadores son $PROJECT_ID
y $BUILD_ID
. Las sustituciones son útiles para las variables cuyo valor no se conoce hasta el momento de la compilación o para reutilizar una solicitud de compilación con diferentes valores de variable.
Caso práctico de flujo de trabajo de CI/CD
Un repositorio de código fuente suele incluir los siguientes elementos:
- El código fuente del flujo de trabajo de las canalizaciones de Python, donde se define el flujo de trabajo de la canalización
- El código fuente de los componentes de la canalización de Python y los archivos de especificación de componentes correspondientes a los distintos componentes de la canalización, como la validación de datos, la transformación de datos, el entrenamiento de modelos, la evaluación de modelos y el servicio de modelos.
- Archivos Dockerfile necesarios para crear imágenes de contenedor Docker, uno por cada componente de la canalización.
- Pruebas unitarias y de integración de Python para probar los métodos implementados en el componente y en la canalización en general.
- Otras secuencias de comandos, incluido el archivo
cloudbuild.yaml
, los activadores de prueba y las implementaciones de la canalización. - Archivos de configuración (por ejemplo, el archivo
settings.yaml
), incluidas las configuraciones de los parámetros de entrada de la canalización. - Cuadernos que se usan para el análisis exploratorio de datos, el análisis de modelos y la experimentación interactiva con modelos.
En el siguiente ejemplo, se activa una rutina de compilación cuando un desarrollador envía código fuente a la rama de desarrollo desde su entorno de ciencia de datos.
Imagen 8. Pasos de compilación de ejemplo realizados por Cloud Build.
Cloud Build suele realizar los siguientes pasos de compilación, que también se muestran en la figura 7:
- El repositorio de código fuente se copia en el entorno de ejecución de Cloud Build, en el directorio
/workspace
. - Ejecuta pruebas unitarias y de integración.
- Opcional: Ejecuta un análisis de código estático con un analizador como Pylint.
- Si las pruebas se superan, se compilan las imágenes de contenedor de Docker, una por cada componente de la canalización. Las imágenes se etiquetan con el parámetro
$COMMIT_SHA
. - Las imágenes de contenedor Docker se suben a Artifact Registry (como se muestra en la figura 7).
- La URL de la imagen se actualiza en cada uno de los archivos
component.yaml
con las imágenes de contenedor Docker creadas y etiquetadas. - El flujo de trabajo de la canalización se compila para generar el archivo
pipeline.json
. - El archivo
pipeline.json
se sube a Artifact Registry. - Opcional: Ejecuta la canalización con los valores de los parámetros como parte de una prueba de integración o de una ejecución de producción. La canalización ejecutada genera un nuevo modelo y también podría desplegar el modelo como una API en Vertex AI Inference.
Para ver un ejemplo de MLOps integral listo para producción que incluya CI/CD con Cloud Build, consulta los ejemplos integrales de Vertex Pipelines en GitHub.
Consideraciones adicionales
Cuando configures la arquitectura de CI/CD de aprendizaje automático en Google Cloud, ten en cuenta lo siguiente:
- En el entorno de ciencia de datos, puedes usar una máquina local o Vertex AI Workbench.
- Puedes configurar la canalización automatizada de Cloud Build para omitir activadores, por ejemplo, si solo se editan archivos de documentación o si se modifican los cuadernos de experimentación.
- Puedes ejecutar la canalización para las pruebas de integración y regresión como una prueba de compilación. Antes de implementar la canalización en el entorno de destino, puedes usar el método
wait()
para esperar a que se complete la ejecución de la canalización enviada. - Como alternativa a Cloud Build, puedes usar otros sistemas de compilación, como Jenkins. En Google Cloud Marketplace, hay una implementación de Jenkins lista para usar.
- Puedes configurar la canalización para que se despliegue automáticamente en diferentes entornos, como desarrollo, prueba y preproducción, en función de diferentes activadores. Además, puedes implementar manualmente en entornos concretos, como preproducción o producción, normalmente después de obtener la aprobación de una versión. Puedes tener varias rutinas de compilación para diferentes activadores o para diferentes entornos de destino.
- Puedes usar Apache Airflow, un popular framework de orquestación y programación, para flujos de trabajo de uso general, que puedes ejecutar con el servicio Cloud Composer totalmente gestionado.
- Cuando despliegues una nueva versión del modelo en producción, hazlo como una versión canaria para hacerte una idea de su rendimiento (uso de CPU, memoria y disco). Antes de configurar el nuevo modelo para que sirva todo el tráfico real, también puedes realizar pruebas A/B. Configura el nuevo modelo para que publique entre el 10% y el 20% del tráfico en tiempo real. Si el nuevo modelo tiene un mejor rendimiento que el actual, puedes configurarlo para que gestione todo el tráfico. De lo contrario, el sistema de servicio vuelve al modelo actual.
Siguientes pasos
- Consulta más información sobre la entrega continua de tipo GitOps con Cloud Build.
- Para obtener una descripción general de los principios y las recomendaciones de arquitectura específicos de las cargas de trabajo de IA y aprendizaje automático en Google Cloud, consulta la sección Perspectiva de IA y aprendizaje automático del framework Well-Architected.
- Para ver más arquitecturas de referencia, diagramas y prácticas recomendadas, consulta el centro de arquitectura de Cloud.
Colaboradores
Autores:
- Ross Thomson | Arquitecto de soluciones en la nube
- Khalid Salama | Ingeniero de software para empleados, aprendizaje automático
Otro colaborador: Wyatt Gorman | Responsable de producto de HPC