Analisar dados multimodais em Python com o BigQuery DataFrames
Este tutorial mostra como analisar dados multimodais em um notebook Python usando classes e métodos do BigQuery DataFrames.
Este tutorial usa o catálogo de produtos do conjunto de dados público da loja de animais de estimação Cymbal.
Para fazer upload de um notebook já preenchido com as tarefas abordadas neste tutorial, consulte DataFrame multimodal do BigFrames.
Objetivos
- Crie DataFrames multimodais.
- Combine dados estruturados e não estruturados em um DataFrame.
- Transformar imagens.
- Gerar texto e embeddings com base em dados de imagem.
- Divida os PDFs em partes para análise mais detalhada.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do 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 gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Para mais informações, consulte as seguintes páginas de preços:
- Preços do BigQuery
- Preços das UDFs em Python do BigQuery
- Preços do Cloud Storage
- Preços da Vertex AI
Antes de começar
-
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.
Funções exigidas
Para conseguir as permissões necessárias para concluir este tutorial, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Criar uma conexão:
Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin
) -
Conceda permissões à conta de serviço da conexão:
Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin
) -
Crie um bucket do Cloud Storage:
Administrador do Storage (
roles/storage.admin
) -
Executar jobs do BigQuery:
Usuário do BigQuery (
roles/bigquery.user
) -
Crie e chame UDFs em Python:
Editor de dados do BigQuery (
roles/bigquery.dataEditor
) -
Crie URLs que permitem ler e modificar objetos do Cloud Storage:
Administrador de ObjectRef do BigQuery (
roles/bigquery.objectRefAdmin
) -
Usar notebooks:
-
Usuário de sessão de leitura do BigQuery (
roles/bigquery.readSessionUser
) -
Usuário do ambiente de execução do notebook (
roles/aiplatform.notebookRuntimeUser
) -
Usuário do ambiente de execução do notebook (
roles/aiplatform.notebookRuntimeUser
) -
Criador de código (
roles/dataform.codeCreator
)
-
Usuário de sessão de leitura do BigQuery (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Configurar
Nesta seção, você vai criar o bucket do Cloud Storage, a conexão e o notebook usados neste tutorial.
Criar um bucket
Crie um bucket do Cloud Storage para armazenar objetos transformados:
No console Google Cloud , acesse a página Buckets.
Clique em
Criar.Na página Criar um bucket, na seção Começar, insira um nome globalmente exclusivo que atenda aos requisitos de nome de bucket.
Clique em Criar.
Crie uma conexão
Crie uma Conexão de recursos do Cloud e tenha acesso à conta de serviço da conexão. O BigQuery usa a conexão para acessar objetos no Cloud Storage.
Acessar a página do BigQuery.
No painel Explorer, clique em
Adicionar dados.A caixa de diálogo Adicionar dados é aberta.
No painel Filtrar por, na seção Tipo de fonte de dados, selecione Aplicativos comerciais.
Como alternativa, no campo Pesquisar fontes de dados, insira
Vertex AI
.Na seção Fontes de dados em destaque, clique em Vertex AI.
Clique no card da solução Modelos da Vertex AI: federação do BigQuery.
Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas e BigLake (recurso do Cloud).
No campo ID da conexão, digite
bigframes-default-connection
.Clique em Criar conexão.
Clique em Ir para conexão.
No painel Informações da conexão, copie o ID da conta de serviço para uso em uma etapa posterior.
Conceder permissões para a conta de serviço do portal
Conceda à conta de serviço da conexão os papéis necessários para acessar o Cloud Storage e a Vertex AI. É necessário conceder essas funções no mesmo projeto que você criou ou selecionou na seção Antes de começar.
Para conceder o papel, siga estas etapas:
Acessar a página AM e administrador
Clique em
CONCEDER ACESSO.No campo Novos principais, digite o ID da conta de serviço que você copiou anteriormente.
No campo Selecionar papel, escolha Cloud Storage e, em seguida, Usuário de objetos do Storage.
Clique em Adicionar outro papel.
No campo Selecionar um papel, selecione Vertex AI e, em seguida, selecione Usuário da Vertex AI.
Clique em Salvar.
Criar um notebook
Crie um notebook em que você possa executar código Python:
Acessar a página do BigQuery.
Na barra de guias do painel do editor, clique na
seta suspensa ao lado de Consulta SQL e clique em Notebook.No painel Começar com um modelo, clique em Fechar.
Clique em Conectar > Conectar a um ambiente de execução.
Se você tiver um ambiente de execução, aceite as configurações padrão e clique em Conectar. Se você não tiver um ambiente de execução, selecione Criar novo ambiente de execução e clique em Conectar.
A configuração do ambiente de execução pode levar alguns minutos.
Criar um DataFrame multimodal
Crie um DataFrame multimodal que integre dados estruturados e não estruturados usando o método from_glob_path
da classe Session
:
- No notebook, crie uma célula de código e copie o seguinte código nela:
Clique em
Executar.A chamada final para
df_image
retorna as imagens que foram adicionadas ao DataFrame. Como alternativa, você pode chamar o método.display
.
Combinar dados estruturados e não estruturados no DataFrame
Combine dados de texto e imagem no DataFrame multimodal:
- No notebook, crie uma célula de código e copie o seguinte código nela:
Clique em Executar
.O código retorna os dados do DataFrame.
No notebook, crie uma célula de código e copie o seguinte código nela:
Clique em Executar
.O código retorna imagens do DataFrame em que o valor da coluna
author
éalice
.
Fazer transformações de imagem
Transforme dados de imagem usando os seguintes métodos da classe Series.BlobAccessor
:
As imagens transformadas são gravadas no Cloud Storage.
Transformar imagens:
- No notebook, crie uma célula de código e copie o seguinte código nela:
- Atualize todas as referências a
{dst_bucket}
para se referirem ao bucket que você criou, no formatogs://mybucket
. Clique em Executar
.O código retorna as imagens originais e todas as transformações delas.
Gerar texto
Gere texto de dados multimodais usando o
método predict
da
classe GeminiTextGenerator
:
- No notebook, crie uma célula de código e copie o seguinte código nela:
Clique em Executar
.O código retorna as duas primeiras imagens em
df_image
, além do texto gerado em resposta à perguntawhat item is it?
para ambas as imagens.No notebook, crie uma célula de código e copie o seguinte código nela:
Clique em Executar
.O código retorna as duas primeiras imagens em
df_image
, com texto gerado em resposta à perguntawhat item is it?
para a primeira imagem e texto gerado em resposta à perguntawhat color is the picture?
para a segunda imagem.
Gerar embeddings
Gere embeddings para dados multimodais usando o
método predict
da
classe MultimodalEmbeddingGenerator
:
- No notebook, crie uma célula de código e copie o seguinte código nela:
Clique em Executar
.O código retorna os embeddings gerados por uma chamada a um modelo de embedding.
Dividir PDFs em partes
Divida os objetos PDF usando o
método pdf_chunk
da
classe Series.BlobAccessor
:
- No notebook, crie uma célula de código e copie o seguinte código nela:
Clique em Executar
.O código retorna os dados do PDF em partes.
Limpar
- 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.