Puntos de control
Notebook created
/ 20
Emoji pipeline has completed
/ 40
End-to-end ML pipeline training job has started
/ 40
Vertex Pipelines: Qwik Start
GSP965
Descripción general
Las canalizaciones te permiten automatizar y reproducir tu flujo de trabajo de AA. Vertex AI integra las ofertas de AA de Google Cloud en una experiencia de desarrollo fluida. Anteriormente, se podía acceder a los modelos personalizados y a los entrenados con AutoML mediante servicios independientes. Vertex AI combina ambos en una sola API, junto con otros productos nuevos. Además, Vertex AI también incluye una variedad de productos de MLOps, como Vertex Pipelines. En este lab, aprenderás a crear y ejecutar canalizaciones de AA con Vertex Pipelines.
¿Por qué son útiles las canalizaciones de AA?
Antes de comenzar, primero debes comprender por qué deberías utilizar canalizaciones. Imagina que estás compilando un flujo de trabajo de AA que incluye procesar datos, implementar y entrenar modelos, ajustar hiperparámetros y realizar evaluaciones. Es posible que cada uno de estos pasos tenga dependencias diferentes, lo que podría ser difícil de manejar si tratas todo el flujo de trabajo como una aplicación monolítica. A medida que empiezas a escalar tu proceso de AA, es posible que quieras compartir el flujo de trabajo de AA con otras personas de tu equipo para que puedan ejecutarlo y agregar más código. Pero esto puede ser complicado sin un proceso confiable y reproducible. Con las canalizaciones, cada paso en tu proceso de AA tiene su propio contenedor. De esta forma, podrás desarrollar pasos de forma independiente y hacer un seguimiento de la entrada y salida en cada paso de manera reproducible. Además, puedes programar o activar ejecuciones para tu canalización en función de otros eventos de tu entorno de Cloud, como cuando hay nuevos datos de entrenamiento disponibles.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Usar el SDK de canalizaciones de Kubeflow para compilar canalizaciones de AA escalables
- Aprenderás a crear y ejecutar una canalización de introducción en 3 pasos que admite entradas de texto.
- Aprenderás a crear y ejecutar una canalización que entrene, evalúe y, luego, implemente un modelo de clasificación de AutoML.
- Aprenderás a usar componentes predefinidos para interactuar con los servicios de Vertex AI que se proporcionan mediante la biblioteca google_cloud_pipeline_components.
- Aprenderás a programar un trabajo de canalización con Cloud Scheduler.
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
- Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón Abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debe usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta. -
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}} También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}} También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia Cuenta de Google podría generar cargos adicionales. -
Haga clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Tarea 1: Crea una instancia de notebooks de Vertex
-
Haz clic en Menú de navegación.
-
Navega a Vertex AI y selecciona Workbench.
-
En la página Instancias de notebook, navega a la pestaña Notebooks administrados por el usuario y espera hasta que
ai-notebook
se cree por completo.
- Una vez que se crea la instancia, selecciona Abrir JupyterLab:
Tarea 2: Configuración de Vertex Pipelines
Existen algunas bibliotecas adicionales que deberás instalar para usar Vertex Pipelines:
- Kubeflow Pipelines: Este es el SDK que se usa para compilar la canalización. Vertex Pipelines admite canalizaciones en ejecución compiladas con Kubeflow Pipelines o TFX.
- Componentes de canalizaciones de Google Cloud: Esta biblioteca proporciona componentes predefinidos que facilitan la interacción con los servicios de Vertex AI durante los pasos de tu canalización.
Paso 1: Crea un notebook de Python y, luego, instala bibliotecas
- En el menú Selector de tu instancia de notebook, selecciona Python 3 para crear un notebook:
-
Para acceder al menú Selector, haz clic en Acceder + en la esquina superior izquierda de tu instancia de notebook.
-
Para instalar los servicios que necesitas para este lab, primero configura la marca de usuario en una celda de notebook:
- Luego, ejecuta el siguiente comando en tu notebook:
- Luego de instalar estos paquetes, deberás reiniciar el kernel:
- Finalmente, verifica que instalaste los paquetes de forma correcta. La versión del SDK de KFP debe ser igual o superior a 1.6:
Paso 2: Configura tu ID del proyecto y bucket
Durante este lab, podrás hacer referencia al ID del proyecto de Cloud y al bucket que creaste anteriormente. Luego, crearás variables para cada uno de ellos.
- Si desconoces el ID de tu proyecto, probablemente logres obtenerlo por medio de la ejecución del siguiente comando:
- Luego, crea una variable para almacenar el nombre de tu bucket.
Paso 3: Importa bibliotecas
- Agrega la siguiente información para importar las bibliotecas que utilizarás durante este lab:
Paso 4: Define las constantes
- Lo último que debes hacer antes de compilar la canalización es definir algunas variables constantes.
PIPELINE_ROOT
es la ruta de Cloud Storage en la que se escribirán los artefactos que cree tu canalización. Aquí estás usando la región. Sin embargo, si usaste una region
diferente cuando creaste tu bucket, actualiza la variable REGION en el siguiente código:
Luego de ejecutar el código anterior, deberías ver impreso el directorio raíz de tu canalización. Esta es la ubicación de Cloud Storage en la que se escribirán los artefactos de tu canalización, y tendrá el formato gs://<bucket_name>/pipeline_root/
.
Tarea 3: Crea tu primera canalización
-
Crea una canalización corta con el SDK de KFP. Esta canalización no ejecuta ninguna acción relacionada con el AA (no te preocupes, ya llegaremos a ese paso). Mediante este ejercicio, buscamos que aprendas los siguientes procesos:
- Cómo crear componentes personalizados en el SDK de KFP
- Cómo ejecutar y supervisar una canalización en Vertex Pipelines
Crearás una canalización que imprima una oración mediante dos salidas: el nombre de un producto y una descripción en forma de emoji. Esta canalización consistirá en tres componentes:
-
product_name
: Este componente tomará un nombre de producto como entrada y mostrará esa cadena como salida. -
emoji
: Este componente tomará la descripción de texto de un emoji y lo convertirá en un emoji. Por ejemplo, el código de texto para ✨ es “sparkles”. Este componente utiliza una biblioteca de emojis para mostrarte cómo administrar dependencias externas en tu canalización. -
build_sentence
: Este componente final consumirá la salida de los dos componentes anteriores para crear una oración que utilice el emoji. Por ejemplo, la salida sería “Vertex Pipelines es ✨”.
Paso 1: Crea un componente basado en una función de Python
Con el SDK de KFP, puedes crear componentes basados en las funciones de Python. Primero crea el componente product_name
, que simplemente toma una cadena como entrada y la muestra.
- Agrega el siguiente comando a tu notebook:
Analiza con mayor detalle esta sintaxis:
- El decorador
@component
compila esta función en un componente cuando se ejecuta la canalización. Lo utilizarás cada vez que escribas un componente personalizado. - El parámetro
base_image
especifica la imagen de contenedor que usará este componente. - El parámetro
output_component_file
es opcional y especifica el archivo yaml en el que se escribirá el componente compilado. Luego de ejecutar la celda, deberías ver que ese archivo se escribió en tu instancia de notebook. Si quieres compartir este componente con otra persona, puedes enviar el archivo yaml generado para que lo cargue con el siguiente comando:
El segmento -> str
que aparece después de la definición de la función especifica el tipo de resultado de este componente.
Paso 2: Crea dos componentes adicionales
- Crea dos componentes adicionales para completar la canalización. El primero toma una cadena como entrada y la convierte en su emoji correspondiente, si es que tiene alguno. De esta forma, devolverá una tupla con el texto de entrada proporcionado, y el emoji resultante:
Este componente es un poco más complejo que el anterior. Aquí te mostramos lo nuevo:
- El parámetro
packages_to_install
indica al componente si hay dependencias de bibliotecas externas para tu contenedor. En este caso, usarás una biblioteca llamada emoji. - Este componente muestra un
NamedTuple
llamadoOutputs
. Ten en cuenta que cada cadena de esta tupla tiene claves:emoji_text
yemoji
. Deberás utilizar estas claves en el próximo componente para acceder al resultado.
- El componente final de esta canalización consumirá el resultado de las dos primeras y los combinará para devolver una cadena:
Quizás te estés preguntando, ¿cómo sabe este componente que debe utilizar el resultado de los pasos anteriores que definió?
Buena pregunta. Te darás cuenta en el próximo paso.
Paso 3: Junta los componentes en una canalización
Las definiciones indicadas de los componentes crearon funciones de fábrica que se pueden utilizar en una definición de canalización para crear pasos.
-
A fin de configurar una canalización, utiliza el decorador
@dsl.pipeline
, asigna un nombre y una descripción a la canalización y proporciona la ruta raíz en la que se deben escribir los artefactos de tu canalización. Los artefactos hacen referencia a los archivos de salida que genera tu canalización. Si bien esta canalización de introducción no genera ninguno, la siguiente lo hará. -
En el siguiente bloque de códigos, define una función
intro_pipeline
. En este punto, especifica las entradas de los pasos iniciales de tu canalización, y cómo estos pasos se conectan entre sí:
-
product_task
toma el nombre de un producto como entrada. Aquí transfiere canalizaciones de “Vertex Pipelines”, pero puede cambiar esta configuración según tus necesidades. -
emoji_task
toma el código de texto de un emoji como entrada. También puedes cambiarlo según tus necesidades. Por ejemplo, “party_face” hace referencia al emoji 🥳. Ten en cuenta que, como ni este ni el componenteproduct_task
tienen pasos que les otorguen entradas, debes especificarlas de forma manual cuando definas la canalización. - El último paso de la canalización,
consumer_task
, tiene tres parámetros de entrada:- El resultado de
product_task
. Dado que en este paso solo se produce un resultado, puedes hacer referencia a él medianteproduct_task.output.
- El resultado de
emoji
del pasoemoji_task
. Consulta el componente deemoji
que se definió previamente en el que mencionaste los parámetros del resultado. - De forma similar, el resultado llamado
emoji_text
del componenteemoji
. En caso de que a tu canalización se le transfiera texto que no corresponde con el emoji, lo utilizarás para construir una oración.
- El resultado de
Paso 4: Compila y ejecuta la canalización
- Luego de que definas la canalización, la podrás compilar. El siguiente comando generará un archivo JSON que utilizarás para ejecutarla:
- Luego, crea una instancia de un cliente de API:
- Finalmente, ejecuta la canalización:
Cuando ejecutes la canalización, se debería generar un vínculo para verla en tu consola. Se debería visualizar de la siguiente manera cuando se complete:
- Esta canalización demorará de 5 a 6 minutos en ejecutarse. Cuando se complete, puedes hacer clic en el componente
build-sentence
para ver el resultado final:
Ahora que sabes cómo funcionan el SDK de KFP y Vertex Pipelines, ya puedes compilar una canalización que cree y, luego, implemente un modelo de AA con otros servicios de Vertex AI.
Tarea 4: Crea una canalización de AA de extremo a extremo
Llegó la hora de compilar tu primera canalización de AA. En esta canalización, usarás el conjunto de datos de UCI Machine Learning Dry Beans de KOKLU, M. y OZKAN, I.A., (2020), “Multiclass Classification of Dry Beans Using Computer Vision and Machine Learning Techniques”. En Computers and Electronics in Agriculture, 174, 105507. DOI.
Este es un conjunto de datos tabular y tu canalización lo utilizará para entrenar, evaluar y, luego, implementar un modelo de AutoML que clasifique beans en uno de 7 tipos, según sus características.
Con esta canalización podrás realizar las siguientes acciones:
- Crear un conjunto de datos en Vertex AI
- Entrenar un modelo de clasificación tabular con AutoML
- Obtener métricas de evaluación sobre este modelo
- Según las métricas de evaluación, decidir si quieres implementar el modelo mediante una lógica condicional en Vertex Pipelines
- Implementar el modelo en un extremo mediante Vertex Prediction
Cada paso descrito será un componente. La mayoría de los pasos de la canalización usarán componentes predefinidos para los servicios de Vertex AI desde la biblioteca google_cloud_pipeline_components
que importaste previamente en este lab.
En esta sección, primero definiremos un componente personalizado. Luego, definiremos el resto de los pasos de la canalización mediante componentes predefinidos. Estos componentes facilitan el acceso a los servicios de Vertex AI, como el entrenamiento y la implementación de modelos.
En este paso, la mayor parte del tiempo se dedicará a la pieza de entrenamiento de AutoML de esta canalización, que demorará aproximadamente una hora.
Paso 1: Un componente personalizado para la evaluación de modelos
El componente personalizado que definas se utilizará al final de la canalización, una vez que se complete el entrenamiento de modelos. Este componente realizará algunas acciones:
- Obtener las métricas de evaluación del modelo de clasificación entrenado de AutoML
- Analizar las métricas y renderizarlas en la IU de Vertex Pipelines
- Comparar las métricas con un umbral para determinar si se debe implementar el modelo
Antes de definir el componente, comprende sus parámetros de entrada y salida. Como entrada, esta canalización toma algunos metadatos sobre tu proyecto de Cloud, el modelo entrenado resultante (más adelante definirás este componente), las métricas de evaluación del modelo y un thresholds_dict_str
.
El thresholds_dict_str
lo definirás cuando ejecutes tu canalización. En el caso de este modelo de clasificación, será el valor del área bajo la curva ROC para el que debes implementar el modelo. Por ejemplo, si ingresas 0.95, significa que solo quieres que tu canalización implemente el modelo si esta métrica es superior al 95%.
El componente de evaluación devuelve una cadena que te indica si implementar el modelo o no hacerlo.
- Agrega el siguiente comando a una celda de notebook para crear este componente personalizado:
Paso 2: Agrega componentes predefinidos de Google Cloud
En este paso, definirás el resto de componentes de tu canalización y descubrirás cómo funcionan todos juntos.
- Primero, define el nombre visible de la ejecución de tu canalización con una marca de tiempo:
- Luego, copia el siguiente comando en una celda de notebook nueva:
Qué sucede con este código:
- Primero, así como en la canalización anterior, tú defines los parámetros de entrada que utiliza esta canalización. Debes establecerlos de forma manual, ya que no dependen del resultado de otros pasos.
- El resto de la canalización usa algunos componentes predefinidos para interactuar con los servicios de Vertex AI:
-
TabularDatasetCreateOp
crea un conjunto de datos tabular en Vertex AI a partir de una fuente de conjunto de datos en Cloud Storage o BigQuery. En esta canalización, transfieres los datos mediante una URL de tabla de BigQuery. -
AutoMLTabularTrainingJobRunOp
inicia un trabajo de entrenamiento de AutoML para un conjunto de datos tabular. Tú transfieres algunos parámetros de configuración a este componente, incluidos el tipo de modelo (en este caso la clasificación), algunos datos en las columnas, cuánto tiempo te gustaría que se ejecute el entrenamiento y un puntero para el conjunto de datos. Ten en cuenta que, para transferir el conjunto de datos a este componente, debes proporcionar el resultado del componente anterior por medio dedataset_create_op.outputs["dataset"]
. -
ModelDeployOp
implementa un modelo proporcionado en un extremo de Vertex AI. Aunque existen opciones de configuración adicionales, aquí proporcionas el tipo de máquina, el proyecto y el modelo del extremo que quieres implementar. Para transferir el modelo, debes acceder a los resultados del paso de entrenamiento de tu canalización.
-
- Esta canalización también hace uso de una lógica condicional, una función de Vertex Pipelines que te permite definir una condición, junto con diferentes ramas basadas en el resultado de esa condición. Recuerda que cuando definiste la canalización, transferiste un parámetro
thresholds_dict_str
. Este es el umbral de precisión que utilizas para determinar si quieres implementar tu modelo en un extremo. Para implementarlo, utiliza la claseCondition
del SDK de KFP. La condición que se transfiere es el resultado del componente de evaluación personalizado que definiste anteriormente en este lab. Si esta condición es verdadera, la canalización seguirá ejecutando el componentedeploy_op
. Si la precisión no cumple con el umbral predefinido, se detendrá la canalización y no se implementará el modelo.
Paso 3: Compila y ejecuta la canalización de AA de extremo a extremo
- Luego de definir la canalización completa, es momento de compilarla:
- Luego, inicia una ejecución de canalización:
- Haz clic en el vínculo que aparece luego de ejecutar la celda anterior para ver tu canalización en la consola. Esta canalización demorará aproximadamente una hora en ejecutarse. La mayor parte del tiempo se dedica a la etapa de entrenamiento de AutoML. La canalización completa se verá de forma similar a esta:
- Si presionas el botón de activación “Expand artifacts” que aparece en la parte superior, podrás ver los detalles de los diferentes artefactos que creó tu canalización. Por ejemplo, si haces clic en el artefacto
dataset
verás los detalles del conjunto de datos de Vertex AI que se creó. Puedes hacer clic en este vínculo para ir a la página de ese conjunto de datos:
- De forma similar, para conocer las visualizaciones de las métricas resultantes de tu componente de evaluación personalizado, haz clic en el artefacto llamado metricsc. En el lado derecho del panel, podrás ver la matriz de confusión de este modelo:
- Para ver el modelo y el extremo creados a partir de la ejecución de esta canalización, dirígete a la sección de modelos y haz clic en el modelo llamado
automl-beans
. Ahí encontrarás este modelo implementado en un extremo:
-
También puedes acceder a esta página haciendo clic en el artefacto endpoint del gráfico de tu canalización.
-
Además de mirar el gráfico de la canalización en la consola, también puedes utilizar Vertex Pipelines para hacer un seguimiento del linaje.
-
Esto significa hacer un seguimiento de los artefactos que se crearon durante la canalización. De esta forma, podrás comprender dónde se crearon los artefactos y cómo se usan mediante un flujo de trabajo de AA. Por ejemplo, para ver el seguimiento del linaje del conjunto de datos que se creó en esta canalización, haz clic en el artefacto del conjunto de datos y, luego, en Ver linaje:
Aquí se muestran todos los lugares en los que se está utilizando este artefacto:
Paso 4: Compara las métricas en las ejecuciones de las canalizaciones (opcional)
- Si ejecutas esta canalización varias veces, es probable que quieras comparar las métricas de las ejecuciones. Puedes utilizar el método
aiplatform.get_pipeline_df()
para acceder a los metadatos de la ejecución. En este paso, obtendrás los metadatos de todas las ejecuciones de esta canalización y los cargarás al DataFrame de Pandas:
Ya aprendiste a compilar, ejecutar y obtener metadatos para una canalización de AA de extremo a extremo en Vertex Pipelines.
¡Felicitaciones!
En este lab, creaste y ejecutaste una canalización de emoji. Además, aprendiste a compilar, ejecutar y obtener metadatos para una canalización de AA de extremo a extremo en Vertex Pipelines.
Próximos pasos/Más información
Intenta replicar la misma situación en tu propio proyecto de Google Cloud por medio del codelab de Relaciones con Desarrolladores.
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 28 de junio de 2024
Prueba más reciente del lab: 28 de junio de 2024
Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.