Gérer les erreurs de quota en appelant ML.GENERATE_EMBEDDING de manière itérative
Ce tutoriel explique comment utiliser la procédure stockée publique BigQuery bqutil.procedure.bqml_generate_embeddings
pour effectuer une itération par le biais d'appels à la fonction ML.GENERATE_EMBEDDING
.
L'appel de la fonction de manière itérative vous permet de résoudre les erreurs renouvelables qui se produisent en raison du dépassement des quotas et des limites qui s'appliquent à la fonction.
Pour examiner le code source de la procédure stockée bqutil.procedure.bqml_generate_embeddings
dans GitHub, consultez bqml_generate_embeddings.sqlx
.
Pour en savoir plus sur les paramètres et l'utilisation de la procédure stockée, consultez le fichier README.
Ce tutoriel vous guide à travers les tâches suivantes :
- Créer un modèle distant sur un modèle
text-embedding-005
- Effectuer des itérations par le biais d'appels à la fonction
ML.GENERATE_EMBEDDING
, à l'aide du modèle distant et de la table de données publiquesbigquery-public-data.bbc_news.fulltext
avec la procédure stockéebqutil.procedure.bqml_generate_embeddings
.
Autorisations requises
Pour exécuter ce tutoriel, vous devez disposer des rôles IAM (Identity and Access Management) suivants :
- Créer et utiliser des ensembles de données, des connexions et des modèles BigQuery : administrateur BigQuery (
roles/bigquery.admin
). - Accordez des autorisations au compte de service de la connexion : Administrateur IAM du projet (
roles/resourcemanager.projectIamAdmin
).
Ces rôles prédéfinis contiennent les autorisations requises pour effectuer les tâches décrites dans ce document. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
- Créez un ensemble de données :
bigquery.datasets.create
- Créer, déléguer et utiliser une connexion :
bigquery.connections.*
- Définissez la connexion par défaut :
bigquery.config.*
- Définissez les autorisations du compte de service :
resourcemanager.projects.getIamPolicy
etresourcemanager.projects.setIamPolicy
. - Créez un modèle et exécutez l'inférence :
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Vertex AI: You incur costs for calls to the Vertex AI model.
Pour obtenir une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.
Pour en savoir plus sur les tarifs de BigQuery, consultez la page Tarifs de BigQuery.
Pour en savoir plus sur les tarifs de Vertex AI, consultez la page Tarifs de Vertex AI.
Avant de commencer
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Créer un ensemble de données
Créez un ensemble de données BigQuery pour stocker vos modèles et vos exemples de données :
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le volet Explorateur, cliquez sur le nom de votre projet.
Cliquez sur > Créer un ensemble de données.
Afficher les actionsSur la page Créer un ensemble de données, procédez comme suit :
Dans le champ ID de l'ensemble de données, saisissez
target_dataset
.Pour Type d'emplacement, sélectionnez Multirégional, puis sélectionnez US (plusieurs régions aux États-Unis).
Conservez les autres paramètres par défaut, puis cliquez sur Créer un ensemble de données.
Créer le modèle génératif d'embeddings textuels
Créez un modèle distant représentant un modèle text-embedding-005
Vertex AI hébergé :
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
CREATE OR REPLACE MODEL `target_dataset.embedding_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'text-embedding-005');
L'exécution de la requête prend plusieurs secondes, après quoi le modèle
embedding
apparaît dans l'ensemble de donnéessample
dans le volet Explorateur. Étant donné que la requête utilise une instructionCREATE MODEL
pour créer un modèle, il n'y a aucun résultat de requête.
Exécuter la procédure stockée
Exécutez la procédure stockée bqutil.procedure.bqml_generate_embeddings
, qui effectue une itération par le biais d'appels à la fonction ML.GENERATE_EMBEDDING
à l'aide du modèle target_dataset.embedding_model
et de la table de données publiques bigquery-public-data.bbc_news.fulltext
:
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
CALL `bqutil.procedure.bqml_generate_embeddings`( "bigquery-public-data.bbc_news.fulltext", -- source table "PROJECT_ID.target_dataset.news_body_embeddings", -- destination table "PROJECT_ID.target_dataset.embedding_model", -- model "body", -- content column ["filename"], -- key columns '{}' -- optional arguments encoded as a JSON string );
Remplacez
PROJECT_ID
par l'ID du projet que vous utilisez pour ce tutoriel.La procédure stockée crée une table
target_dataset.news_body_embeddings
pour contenir le résultat de la fonctionML.GENERATE_EMBEDDING
.Une fois la requête exécutée, vérifiez qu'aucune ligne de la table
target_dataset.news_body_embeddings
ne contient d'erreur pouvant être corrigée. Dans l'éditeur de requête, exécutez l'instruction suivante :SELECT * FROM `target_dataset.news_body_embeddings` WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';
La requête renvoie le message
No data to display
.
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.