Analiza datos multimodales en Python con BigQuery DataFrames
En este instructivo, se muestra cómo analizar datos multimodales en un notebook de Python con las clases y los métodos de BigQuery DataFrames.
En este instructivo, se usa el catálogo de productos del conjunto de datos públicos de la tienda de mascotas Cymbal.
Para subir un notebook ya completado con las tareas que se abordan en este instructivo, consulta DataFrame multimodal de BigFrames.
Objetivos
- Crea DataFrames multimodales.
- Combina datos estructurados y no estructurados en un DataFrame.
- Transformar imágenes
- Generar texto y embeddings basados en datos de imágenes
- Divide los archivos PDF en fragmentos para su posterior análisis.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
- BigQuery: you incur costs for the data that you process in BigQuery.
- BigQuery Python UDFs: you incur costs for using BigQuery DataFrames image transformation and chunk PDF methods.
- Cloud Storage: you incur costs for the objects stored in Cloud Storage.
- Vertex AI: you incur costs for calls to Vertex AI models.
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Para obtener más información, consulta las siguientes páginas de precios:
- Precios de BigQuery
- Precios de las UDF de Python de BigQuery
- Precios de Cloud Storage
- Precios de Vertex AI
Antes de comenzar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, Cloud Storage, and Vertex AI APIs.
Roles obligatorios
Si quieres obtener los permisos que necesitas para completar este instructivo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Crea una conexión:
Administrador de conexión de BigQuery (
roles/bigquery.connectionAdmin
) -
Otorga permisos a la cuenta de servicio de la conexión:
Administrador de IAM del proyecto (
roles/resourcemanager.projectIamAdmin
) -
Crea un bucket de Cloud Storage:
Administrador de almacenamiento (
roles/storage.admin
) -
Ejecutar trabajos de BigQuery:
Usuario de BigQuery (
roles/bigquery.user
) -
Crea y llama a UDF de Python:
Editor de datos de BigQuery (
roles/bigquery.dataEditor
) -
Crea URLs que te permitan leer y modificar objetos de Cloud Storage:
Administrador de ObjectRef de BigQuery (
roles/bigquery.objectRefAdmin
) -
Usa notebooks:
-
Usuario de sesión de lectura de BigQuery (
roles/bigquery.readSessionUser
) -
Usuario del entorno de ejecución del notebook (
roles/aiplatform.notebookRuntimeUser
) -
Usuario del entorno de ejecución del notebook (
roles/aiplatform.notebookRuntimeUser
) -
Creador de código (
roles/dataform.codeCreator
)
-
Usuario de sesión de lectura de BigQuery (
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Configurar
En esta sección, crearás el bucket de Cloud Storage, la conexión y el notebook que se usan en este instructivo.
Crea un bucket
Crea un bucket de Cloud Storage para almacenar objetos transformados:
En la consola de Google Cloud , ve a la página Buckets.
Haz clic en
Crear.En la página Crear un bucket, en la sección Comenzar, ingresa un nombre único a nivel global que cumpla con los requisitos de nombres de buckets.
Haz clic en Crear.
Crear una conexión
Crea una conexión de recurso de Cloud y obtén la cuenta de servicio de la conexión. BigQuery usa la conexión para acceder a los objetos en Cloud Storage.
Ve a la página de BigQuery.
En el panel Explorador, haz clic en
Agregar datos.Se abrirá el diálogo Agregar datos.
En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Aplicaciones empresariales.
También puedes ingresar
Vertex AI
en el campo Buscar fuentes de datos.En la sección Fuentes de datos destacadas, haz clic en Vertex AI.
Haz clic en la tarjeta de solución Vertex AI Models: BigQuery Federation.
En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).
En el campo ID de conexión, escribe
bigframes-default-connection
.Haz clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.
Otorga permisos a la cuenta de servicio de las conexiones
Otorga a la cuenta de servicio de la conexión los roles que necesita para acceder a Cloud Storage y Vertex AI. Debes otorgar estos roles en el mismo proyecto que creaste o seleccionaste en la sección Antes de comenzar.
Para otorgar el rol, sigue estos pasos:
Ir a la página IAM y administración
Haz clic en
Grant access.En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.
En el campo Selecciona un rol, elige Cloud Storage y, luego, selecciona Usuario de objetos de Storage.
Haz clic en Agregar otra función.
En el campo Selecciona un rol, selecciona Vertex AI y, luego, Usuario de Vertex AI.
Haz clic en Guardar.
Crea un notebook
Crea un notebook en el que puedas ejecutar código de Python:
Ve a la página de BigQuery.
En la barra de pestañas del panel del editor, haz clic en la
flecha desplegable junto a Consulta en SQL y, luego, haz clic en Notebook.En el panel Empezar con una plantilla, haz clic en Cerrar.
Haz clic en Connect > Connect to a runtime.
Si tienes un tiempo de ejecución existente, acepta la configuración predeterminada y haz clic en Conectar. Si no tienes un entorno de ejecución existente, selecciona Create new Runtime y, luego, haz clic en Connect.
La configuración del tiempo de ejecución puede tardar varios minutos.
Crea un DataFrame multimodal
Crea un DataFrame multimodal que integre datos estructurados y no estructurados con el método from_glob_path
de la clase Session
:
- En el notebook, crea una celda de código y copia el siguiente código en ella:
Haz clic en
Ejecutar.La llamada final a
df_image
devuelve las imágenes que se agregaron al DataFrame. También puedes llamar al método.display
.
Cómo combinar datos estructurados y no estructurados en el DataFrame
Combina datos de texto y de imágenes en el DataFrame multimodal:
- En el notebook, crea una celda de código y copia el siguiente código en ella:
Haga clic en Ejecutar
.El código devuelve los datos del DataFrame.
En el notebook, crea una celda de código y copia el siguiente código en ella:
Haga clic en Ejecutar
.El código devuelve imágenes del DataFrame en las que el valor de la columna
author
esalice
.
Realiza transformaciones de imágenes
Transforma los datos de la imagen con los siguientes métodos de la clase Series.BlobAccessor
:
Las imágenes transformadas se escriben en Cloud Storage.
Transformar imágenes:
- En el notebook, crea una celda de código y copia el siguiente código en ella:
- Actualiza todas las referencias a
{dst_bucket}
para que hagan referencia al bucket que creaste, en el formatogs://mybucket
. Haga clic en Ejecutar
.El código devuelve las imágenes originales y todas sus transformaciones.
Generar texto
Genera texto a partir de datos multimodales con el método predict
de la clase GeminiTextGenerator
:
- En el notebook, crea una celda de código y copia el siguiente código en ella:
Haga clic en Ejecutar
.El código devuelve las dos primeras imágenes de
df_image
, junto con el texto generado en respuesta a la preguntawhat item is it?
para ambas imágenes.En el notebook, crea una celda de código y copia el siguiente código en ella:
Haga clic en Ejecutar
.El código devuelve las dos primeras imágenes en
df_image
, con texto generado en respuesta a la preguntawhat item is it?
para la primera imagen y texto generado en respuesta a la preguntawhat color is the picture?
para la segunda imagen.
Genera embeddings
Genera embeddings para datos multimodales con el método predict
de la clase MultimodalEmbeddingGenerator
:
- En el notebook, crea una celda de código y copia el siguiente código en ella:
Haga clic en Ejecutar
.El código devuelve las incorporaciones generadas por una llamada a un modelo de incorporación.
Fragmenta PDFs
Fragmenta objetos PDF con el método pdf_chunk
de la clase Series.BlobAccessor
:
- En el notebook, crea una celda de código y copia el siguiente código en ella:
Haga clic en Ejecutar
.El código devuelve los datos del PDF en fragmentos.
Limpia
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.