Analyser des données multimodales dans Python avec BigQuery DataFrames
Ce tutoriel vous explique comment analyser des données multimodales dans un notebook Python à l'aide des classes et des méthodes BigQuery DataFrames.
Ce tutoriel utilise le catalogue de produits de l'ensemble de données public de la boutique pour animaux de compagnie Cymbal.
Pour importer un notebook déjà renseigné avec les tâches abordées dans ce tutoriel, consultez BigFrames Multimodal DataFrame.
Objectifs
- Créez des DataFrames multimodaux.
- Combinez des données structurées et non structurées dans un DataFrame.
- Transformer des images
- Générer du texte et des embeddings à partir de données d'image
- Divisez les PDF en sections pour une analyse plus approfondie.
Coûts
Dans ce document, vous utilisez les composants facturables suivants 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.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Pour en savoir plus, consultez les pages de tarification suivantes:
- Tarifs de BigQuery
- Tarifs des fonctions définies par l'utilisateur Python dans BigQuery
- Tarifs de Cloud Storage
- Tarification de Vertex AI
Avant de commencer
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.
Rôles requis
Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants:
- Créer une connexion : Administrateur de connexion BigQuery (
roles/bigquery.connectionAdmin
) - Accordez des autorisations au compte de service de la connexion : Administrateur IAM du projet (
roles/resourcemanager.projectIamAdmin
) - Créez un bucket Cloud Storage : Administrateur de l'espace de stockage (
roles/storage.admin
) - Exécuter des tâches BigQuery : Utilisateur BigQuery (
roles/bigquery.user
) - Créer et appeler des fonctions définies par l'utilisateur Python : Éditeur de données BigQuery (
roles/bigquery.dataEditor
) - Créez des URL qui vous permettent de lire et de modifier des objets Cloud Storage : Administrateur d'ObjectRef BigQuery (
roles/bigquery.objectRefAdmin
) - Utilisez des notebooks :
- Utilisateur de sessions de lecture BigQuery (
roles/bigquery.readSessionUser
) - Utilisateur de l'environnement d'exécution de notebook (
roles/aiplatform.notebookRuntimeUser
) - Utilisateur de l'environnement d'exécution de notebook (
roles/aiplatform.notebookRuntimeUser
) - Créateur de code (
roles/dataform.codeCreator
)
- Utilisateur de sessions de lecture BigQuery (
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Configurer
Dans cette section, vous allez créer le bucket Cloud Storage, la connexion et le notebook utilisés dans ce tutoriel.
Créer un bucket
Créez un bucket Cloud Storage pour stocker les objets transformés:
Dans la console Google Cloud , accédez à la page Buckets.
Cliquez sur
Créer.Sur la page Créer un bucket, dans la section Premiers pas, saisissez un nom unique qui répond aux exigences de dénomination des buckets.
Cliquez sur Créer.
Créer une connexion
Créez une connexion de ressource cloud et obtenez le compte de service de la connexion. BigQuery utilise cette connexion pour accéder aux objets de Cloud Storage.
Accédez à la page BigQuery.
Dans le volet Explorateur, cliquez sur
Ajouter des données.La boîte de dialogue Ajouter des données s'ouvre.
Dans le volet Filtrer par, dans la section Type de source de données, sélectionnez Applications d'entreprise.
Vous pouvez également saisir
Vertex AI
dans le champ Rechercher des sources de données.Dans la section Sources de données sélectionnées, cliquez sur Vertex AI.
Cliquez sur la fiche de solution Modèles Vertex AI: fédération BigQuery.
Dans la liste Type de connexion, sélectionnez Modèles distants Vertex AI, fonctions distantes et BigLake (ressource Cloud).
Dans le champ ID de connexion, saisissez
bigframes-default-connection
.Cliquez sur Créer une connexion.
Cliquez sur Accéder à la connexion.
Dans le volet Informations de connexion, copiez l'ID du compte de service à utiliser à l'étape suivante.
Accorder des autorisations au compte de service de la connexion
Attribuez au compte de service de la connexion les rôles dont il a besoin pour accéder à Cloud Storage et à Vertex AI. Vous devez accorder ces rôles dans le projet que vous avez créé ou sélectionné dans la section Avant de commencer.
Pour accorder le rôle, procédez comme suit :
Accédez à la page IAM et administration.
Cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'ID du compte de service que vous avez copié précédemment.
Dans le champ Sélectionner un rôle, sélectionnez Cloud Storage, puis Utilisateur d'objets Storage.
Cliquez sur Ajouter un autre rôle.
Dans le champ Sélectionner un rôle, sélectionnez Vertex AI, puis Utilisateur Vertex AI.
Cliquez sur Enregistrer.
Créer un notebook
Créez un notebook dans lequel vous pouvez exécuter du code Python:
Accédez à la page BigQuery.
Dans la barre d'onglets du volet de l'éditeur, cliquez sur la flèche du menu déroulant
à côté de Requête SQL, puis sur Notebook.Dans le volet Commencer avec un modèle, cliquez sur Fermer.
Cliquez sur Connecter> Se connecter à un environnement d'exécution.
Si vous disposez d'un environnement d'exécution, acceptez les paramètres par défaut, puis cliquez sur Connecter. Si vous ne disposez pas d'environnement d'exécution, sélectionnez Créer un environnement d'exécution, puis cliquez sur Se connecter.
La configuration de l'environnement d'exécution peut prendre plusieurs minutes.
Créer un DataFrame multimodal
Créez un DataFrame multimodal qui intègre des données structurées et non structurées à l'aide de la méthode from_glob_path
de la classe Session
:
- Dans le notebook, créez une cellule de code et copiez-y le code suivant :
Cliquez sur
Exécuter.L'appel final à
df_image
renvoie les images qui ont été ajoutées au DataFrame. Vous pouvez également appeler la méthode.display
.
Combiner des données structurées et non structurées dans le DataFrame
Combinez les données textuelles et visuelles dans le DataFrame multimodal:
- Dans le notebook, créez une cellule de code et copiez-y le code suivant :
Cliquez sur Run (Exécuter)
.Le code renvoie les données du DataFrame.
Dans le notebook, créez une cellule de code et copiez-y le code suivant:
Cliquez sur Run (Exécuter)
.Le code renvoie les images du DataFrame où la valeur de la colonne
author
estalice
.
Effectuer des transformations d'images
Transformez les données d'image à l'aide des méthodes suivantes de la classe Series.BlobAccessor
:
Les images transformées sont écrites dans Cloud Storage.
Transformer des images:
- Dans le notebook, créez une cellule de code et copiez-y le code suivant :
- Mettez à jour toutes les références à
{dst_bucket}
pour qu'elles pointent vers le bucket que vous avez créé, au formatgs://mybucket
. Cliquez sur Run (Exécuter)
.Le code renvoie les images d'origine ainsi que toutes leurs transformations.
Générer du texte
Générez du texte à partir de données multimodales à l'aide de la méthode predict
de la classe GeminiTextGenerator
:
- Dans le notebook, créez une cellule de code et copiez-y le code suivant :
Cliquez sur Run (Exécuter)
.Le code renvoie les deux premières images dans
df_image
, ainsi que le texte généré en réponse à la questionwhat item is it?
pour les deux images.Dans le notebook, créez une cellule de code et copiez-y le code suivant:
Cliquez sur Run (Exécuter)
.Le code renvoie les deux premières images dans
df_image
, avec du texte généré en réponse à la questionwhat item is it?
pour la première image et du texte généré en réponse à la questionwhat color is the picture?
pour la deuxième image.
Générer des embeddings
Générez des embeddings pour les données multimodales à l'aide de la méthode predict
de la classe MultimodalEmbeddingGenerator
:
- Dans le notebook, créez une cellule de code et copiez-y le code suivant :
Cliquez sur Run (Exécuter)
.Le code renvoie les représentations vectorielles continues générées par un appel à un modèle d'embedding.
Chunker des PDF
Divisez les objets PDF à l'aide de la méthode pdf_chunk
de la classe Series.BlobAccessor
:
- Dans le notebook, créez une cellule de code et copiez-y le code suivant :
Cliquez sur Run (Exécuter)
.Le code renvoie les données PDF par blocs.
Effectuer un nettoyage
- 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.