Predicción de calificaciones de películas con AutoML de Vertex AI

1. Introducción

En este codelab, crearemos un modelo de predicción de puntuación de películas con AutoML de Vertex AI y activaremos el extremo del modelo implementado desde Java Cloud Functions. El modelo se entrena con datos almacenados en BigQuery y registrados en Vertex AI. La lista de servicios se puede dividir en dos secciones:

  1. Creación e implementación de modelos de AA
  2. Activar para predecir con la API de AA

Creación de modelos de AA:

  1. Datos de CSV a BigQuery
  2. Datos de BigQuery integrados en Vertex AI para la creación de modelos de AutoML
  3. Modelo implementado en Vertex AI Model Registry para generar la API del extremo

Activa para predecir con la API de AA:

  1. Cloud Functions de Java para activar la invocación del extremo del modelo de AutoML implementado que toma los detalles de la película como solicitud de la IU y muestra la puntuación de la película prevista

A continuación, se muestra la descripción general de la arquitectura de alto nivel de la aplicación:

5ae50607c0f2db20.png

La aplicación de la arquitectura anterior está fuera del alcance de este codelab, pero si también quieres desarrollar la aplicación cliente, consulta el blog.

Analicemos los pasos de implementación.

Qué compilarás

Crearás un

  • Un conjunto de datos de BigQuery que contenga los componentes de la tabla y del modelo
  • Modelo de AutoML de Vertex AI (creación e implementación)
  • Activador de Cloud Functions de Java para realizar predicciones con la API de AA

2. Requisitos

  • Un navegador, como Chrome o Firefox.
  • Un proyecto de Google Cloud con la facturación habilitada.

Estos son los requisitos previos:

Crea tu proyecto

  1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
  3. Navega a BigQuery para habilitar la API. También puedes abrir la IU web de BigQuery directamente si ingresas la siguiente URL en tu navegador: https://console.cloud.google.com/bigquery

Activa Cloud Shell

  1. Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud y que viene precargado con bq: En la consola de Cloud, haz clic en Activar Cloud Shell en la esquina superior derecha: 6757b2fb50ddcc2d.png
  2. Una vez que te conectes a Cloud Shell, deberías ver que ya se te autenticó y que el proyecto ya se configuró con el ID de tu proyecto. En Cloud Shell, ejecuta el siguiente comando para confirmar que tienes la autenticación:
gcloud auth list
  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que el comando gcloud conoce tu proyecto.
gcloud config list project
  1. Si tu proyecto no está configurado, usa el siguiente comando para hacerlo:
gcloud config set project <PROJECT_ID>

Consulta la documentación para ver los comandos y el uso de gcloud.

3. Cómo preparar los datos de entrenamiento

Este es un paso importante en todos los proyectos, productos y apps relacionados con los datos que requieren mucho conocimiento del dominio, además de la tecnología para preparar un conjunto de datos óptimo y prepararlo para tu proyecto de AA. A los efectos de este codelab, supondremos que los datos ya están preparados y usaremos este archivo de datos ya procesado.

4. Cómo crear y cargar el conjunto de datos

Un conjunto de datos de BigQuery es una colección de tablas. Todas las tablas de un conjunto de datos se almacenan en la misma ubicación de datos. También puedes adjuntar controles de acceso personalizados para limitar el acceso a un conjunto de datos y sus tablas.

  1. En Cloud Shell, usa el comando bq mk para crear un conjunto de datos llamado "movies".
bq mk --location=<<LOCATION>> movies

Establece la ubicación en una región (asia-south1). Recuerda configurarla también como la región del paso de VERTEX AI (ambas instancias deben estar en la misma región).

  1. Asegúrate de tener listo el archivo de datos (.csv). Ejecuta los siguientes comandos en Cloud Shell para clonar el repositorio y navegar al proyecto:
git clone <<repository link>>

cd movie-score
  1. Usa el comando bq load para cargar tu archivo CSV en una tabla de BigQuery (ten en cuenta que también puedes subirlo directamente desde la IU de BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
  1. Realiza la consulta de una de las siguientes 3 maneras:

Podemos interactuar con BigQuery de tres maneras. Probaremos dos de ellas: a. IU web de BigQuery b. El comando bq c. API

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

Usé BigQuery Web SQL Workspace para ejecutar consultas. El lugar de trabajo de SQL se ve de la siguiente manera:

109a0b2c7155e9b3.png

Usa el comando bq:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

5. Usa datos de BigQuery en Vertex AI AutoML

Usa tus datos de BigQuery para crear directamente un modelo de AutoML con Vertex AI. Recuerda que también podemos realizar AutoML desde BigQuery, registrar el modelo con Vertex AI y exponer el extremo. Consulta la documentación de BigQuery AutoML. Sin embargo, en este ejemplo, usaremos AutoML de Vertex AI para crear nuestro modelo.

Cómo crear un conjunto de datos de Vertex AI

Ve a Vertex AI desde la consola de Google Cloud, habilita la API de Vertex AI si aún no lo hiciste, expande los datos y selecciona Conjuntos de datos, haz clic en Crear conjunto de datos, selecciona el tipo de datos TABULAR y la opción "Regresión / clasificación", y haz clic en Crear:

4104c75c34cbd2d9.png

Seleccionar fuente de datos

En la página siguiente, selecciona una fuente de datos. Elige la opción "Seleccionar una tabla o una vista de BigQuery" y selecciona la tabla de BigQuery en el campo BROWSE de la ruta de BigQuery. Haz clic en Continuar.

Recuerda: La instancia de BigQuery y los conjuntos de datos de Vertex AI deben tener la misma región para que la tabla de BigQuery aparezca en Vertex AI.

b787ef18dbca4cff.png

Cuando selecciones la tabla o vista de origen, en la lista de exploración, recuerda hacer clic en el botón de selección para continuar con los pasos que se indican a continuación. Si haces clic accidentalmente en el nombre de la tabla o vista, se te redireccionará a Dataplex. Si esto sucede, solo debes volver a navegar a Vertex AI.

Entrena el modelo

  1. Una vez que se cree el conjunto de datos, deberías ver la página Analizar con la opción para entrenar un modelo nuevo. Haz clic en lo siguiente:

bf095263d57106de.png

  1. Deja el objetivo como Clasificación, selecciona la opción AutoML en la primera página y haz clic en Continuar: e50597bc3f29894c.png
  2. Asigna un nombre a tu modelo y selecciona "Puntuación" (Score) como el nombre de la columna de destino en el menú desplegable que aparece. Luego, haz clic en Continuar.
  3. Además, ten en cuenta que puedes marcar la opción "Exportar conjunto de datos de prueba a BigQuery", que facilita ver el conjunto de prueba con resultados en la base de datos de manera eficiente sin una capa de integración adicional ni tener que mover datos entre servicios.
  4. En la siguiente página, tienes la opción de seleccionar las opciones de entrenamiento avanzadas que necesites y las horas que deseas que se entrene el modelo. Ten en cuenta que te recomendamos que tengas en cuenta los precios antes de aumentar la cantidad de horas de procesamiento de nodo que deseas usar para el entrenamiento.

Haz clic en Comenzar entrenamiento para comenzar a entrenar tu modelo nuevo.

e72b004a17849bd.png

Evalúa, implementa y prueba el modelo

Una vez que se complete el entrenamiento, deberías poder hacer clic en Entrenamiento (en el encabezado Desarrollo de modelos del menú de la izquierda) y ver tu entrenamiento en la sección Canales de entrenamiento. Haz clic en él para ir a la página Model Registry. Deberías ser capaz de hacer lo siguiente:

  1. Visualiza y evalúa los resultados de la capacitación 4767b4bbd7cf93fa.png
  2. Implementa y prueba el modelo con tu extremo de API

Una vez que implementes tu modelo, se creará un extremo de API que se puede usar en tu aplicación para enviar solicitudes y obtener los resultados de la predicción del modelo en la respuesta.

95fb4495618174f0.png

Antes de pasar a la siguiente sección, asegúrate de anotar el ID, la ubicación y otros detalles del extremo del modelo implementado en la sección de extremos de Vertex AI.

6. Cloud Function de Java para activar la invocación de ML

¿Recuerdas que tenemos el extremo y otros detalles del paso de implementación de AA? Lo usaremos aquí y, como usamos Java Cloud Functions, usaremos pom.xml para controlar las dependencias. Usamos la biblioteca google-cloud-aiplatform para consumir la API del extremo de AutoML de Vertex AI.

  1. Busca Cloud Functions en la consola de Google Cloud y haz clic en "Crear función".
  2. Ingresa los detalles de configuración, como el entorno, el nombre de la función, la región, el activador (en este caso, HTTPS), la autenticación que elijas, habilita "Require HTTPS" y haz clic en Siguiente o Guardar.

a68272022df062f2.png

  1. En la página siguiente, selecciona Entorno de ejecución (Java 11), Código fuente (Directo o carga) y comienza a editar.

13df616369ca5951.png

  1. Copia los archivos java y pom.xml del repositorio y pégalos en los archivos correspondientes del editor intercalado. Si usas tu editor local (recomendado), clona la fuente del repositorio.
  2. En este ejemplo, cambia el ID del proyecto, el ID del extremo, la ubicación y el extremo en el archivo fuente .java, pero ten en cuenta que la práctica recomendada es usar Secret Manager para almacenar las credenciales.
  3. Para el alcance de este codelab, comenta las partes de MongoDB en la clase .java del código fuente copiado.

Continúa e implementa la función una vez que se completen todos los cambios. Deberías ver la URL del extremo que se puede usar en tu aplicación cliente para enviar solicitudes a esta Cloud Function y recibir la puntuación de la película como respuesta.

7. Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta publicación:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.
  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.

8. Felicitaciones

¡Felicitaciones! Creaste e implementaste correctamente un modelo de predicción de puntuación de películas en AutoML de Vertex AI y activaste el modelo implementado desde Cloud Functions.