Analizar datos multimodales en Python con BigQuery DataFrames
En este tutorial se muestra cómo analizar datos multimodales en un cuaderno de Python mediante las clases y los métodos de DataFrames de BigQuery.
En este tutorial se usa el catálogo de productos del conjunto de datos público de la tienda de mascotas Cymbal.
Para subir un cuaderno que ya tenga las tareas que se explican en este tutorial, consulta BigFrames Multimodal DataFrame.
Objetivos
- Crea DataFrames multimodales.
- Combina datos estructurados y sin estructurar en un DataFrame.
- Transformar imágenes.
- Generar texto e incrustaciones a partir de datos de imagen.
- Divide los PDFs en fragmentos para analizarlos más a fondo.
Costes
En este documento, se utilizan 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 costes basada en el uso previsto,
utiliza 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 empezar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, Cloud Storage, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Roles obligatorios
Para obtener los permisos que necesitas para completar este tutorial, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Crea una conexión:
Administrador de conexión de BigQuery (
roles/bigquery.connectionAdmin
) -
Concede 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 Storage (
roles/storage.admin
) -
Ejecutar tareas de BigQuery:
Usuario de BigQuery (
roles/bigquery.user
) -
Crear y llamar a UDFs 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
) -
Usar cuadernos:
-
Usuario con acceso a sesiones de lectura de BigQuery (
roles/bigquery.readSessionUser
) -
Usuario de tiempo de ejecución de cuaderno (
roles/aiplatform.notebookRuntimeUser
) -
Usuario de tiempo de ejecución de cuaderno (
roles/aiplatform.notebookRuntimeUser
) -
Creador de código (
roles/dataform.codeCreator
)
-
Usuario con acceso a sesiones de lectura de BigQuery (
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Configurar
En esta sección, creará el segmento de Cloud Storage, la conexión y el cuaderno que se usan en este tutorial.
Crear un segmento
Crea un segmento de Cloud Storage para almacenar los objetos transformados:
En la Google Cloud consola, ve a la página Buckets.
Haz clic en
Crear.En la página Crear un contenedor, en la sección Empezar, introduce un nombre único a nivel global que cumpla los requisitos de los nombres de los contenedores.
Haz clic en Crear.
Crear una conexión
Crea una conexión de recursos de Cloud y obtén la cuenta de servicio de la conexión. BigQuery usa la conexión para acceder a los objetos de Cloud Storage.
Ve a la página BigQuery.
En el panel Explorador, haz clic en
Añadir datos.Se abrirá el cuadro de diálogo Añadir datos.
En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Aplicaciones empresariales.
También puede introducir
Vertex AI
en el campo Buscar fuentes de datos.En la sección Fuentes de datos destacadas, haga clic en Vertex AI.
Haz clic en la tarjeta de solución Modelos de Vertex AI: federación de BigQuery.
En la lista Tipo de conexión, selecciona Modelos remotos, funciones remotas y BigLake (recurso de Cloud) de Vertex AI.
En el campo Connection ID (ID de conexión), escribe
bigframes-default-connection
.Haga 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.
Conceder permisos a la cuenta de servicio de la conexión
Concede a la cuenta de servicio de la conexión los roles que necesita para acceder a Cloud Storage y Vertex AI. Debes conceder estos roles en el mismo proyecto que has creado o seleccionado en la sección Antes de empezar.
Para conceder el rol, sigue estos pasos:
Ve a la página IAM y administración.
Haz clic en
Conceder acceso.En el campo Nuevos principales, introduce el ID de la cuenta de servicio que has copiado anteriormente.
En el campo Selecciona un rol, elige Cloud Storage y, a continuación, selecciona Usuario de objetos de Storage.
Haz clic en Añadir otro rol.
En el campo Selecciona un rol, elige Vertex AI y, a continuación, Usuario de Vertex AI.
Haz clic en Guardar.
Crear un cuaderno
Crea un cuaderno en el que puedas ejecutar código Python:
Ve a la página BigQuery.
En la barra de pestañas del panel del editor, haz clic en la flecha desplegable
junto a Consulta de SQL y, a continuación, en Notebook.En el panel Empezar con una plantilla, haz clic en Cerrar.
Haz clic en Conectar > Conectar con un tiempo de ejecución.
Si ya tienes un tiempo de ejecución, acepta la configuración predeterminada y haz clic en Conectar. Si no tienes ningún tiempo de ejecución, selecciona Crear nuevo tiempo de ejecución y, a continuación, haz clic en Conectar.
El tiempo de ejecución puede tardar varios minutos en configurarse.
Crear 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 cuaderno, crea una celda de código y copia el siguiente código:
Haz clic en
Ejecutar.La última llamada a
df_image
devuelve las imágenes que se han añadido al DataFrame. También puedes llamar al método.display
.
Combinar datos estructurados y sin estructurar en el DataFrame
Combina datos de texto e imagen en el DataFrame multimodal:
- En el cuaderno, crea una celda de código y copia el siguiente código:
Haz clic en Ejecutar
.El código devuelve los datos de DataFrame.
En el cuaderno, crea una celda de código y copia el siguiente código en ella:
Haz clic en Ejecutar
.El código devuelve imágenes del DataFrame en las que el valor de la columna
author
esalice
.
Realizar transformaciones de imágenes
Transforma los datos de imagen usando los siguientes métodos de la clase Series.BlobAccessor
:
Las imágenes transformadas se escriben en Cloud Storage.
Transformar imágenes:
- En el cuaderno, crea una celda de código y copia el siguiente código:
- Actualiza todas las referencias a
{dst_bucket}
para que hagan referencia al contenedor que has creado, con el formatogs://mybucket
. Haz clic en Ejecutar
.El código devuelve las imágenes originales, así como todas sus transformaciones.
Generar texto
Genera texto a partir de datos multimodales usando el método predict
de la clase GeminiTextGenerator
:
- En el cuaderno, crea una celda de código y copia el siguiente código:
Haz 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 cuaderno, crea una celda de código y copia el siguiente código en ella:
Haz clic en Ejecutar
.El código devuelve las dos primeras imágenes de
df_image
, con el texto generado en respuesta a la preguntawhat item is it?
de la primera imagen y el texto generado en respuesta a la preguntawhat color is the picture?
de la segunda imagen.
Generar inserciones
Genera embeddings de datos multimodales con el método predict
de la clase MultimodalEmbeddingGenerator
:
- En el cuaderno, crea una celda de código y copia el siguiente código:
Haz clic en Ejecutar
.El código devuelve las inserciones generadas por una llamada a un modelo de inserciones.
Dividir PDFs en fragmentos
Divide en fragmentos los objetos PDF con el método pdf_chunk
de la clase Series.BlobAccessor
:
- En el cuaderno, crea una celda de código y copia el siguiente código:
Haz clic en Ejecutar
.El código devuelve los datos PDF fragmentados.
Limpieza
- 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.