Dans ce tutoriel, vous enregistrez un point de terminaison Vertex AI en tant que modèle distant dans BigQuery. Vous pouvez ensuite utiliser la fonction ML.PREDICT
pour effectuer des prédictions à l'aide du modèle distant.
Vous pouvez utiliser des modèles distants lorsqu'un modèle est trop volumineux pour être importé dans BigQuery. Ils sont également utiles lorsque vous souhaitez disposer d'un point d'inférence unique pour les cas d'utilisation en ligne, par lot et par micro-lot.
Objectifs
- Importer un modèle TensorFlow pré-entraîné dans Vertex AI Model Registry.
- Déployer le modèle sur un point de terminaison Vertex AI.
- Créez une connexion de ressource Cloud.
- Utilisez l'instruction
CREATE MODEL
pour créer un modèle distant dans BigQuery. - Utilisez la fonction
ML.PREDICT
pour effectuer des prédictions avec le modèle distant.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
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, Vertex AI, Cloud Storage, and BigQuery Connection APIs.
- Assurez-vous de disposer des autorisations nécessaires pour effectuer les tâches décrites dans ce document.
Rôles requis
Si vous créez un projet, vous en êtes le propriétaire et vous disposez de toutes les autorisations IAM requises pour suivre ce tutoriel.
Si vous utilisez un projet existant, procédez comme suit.
Make sure that you have the following role or roles on the project:
- BigQuery Studio Admin (
roles/bigquery.studioAdmin
) - Vertex AI User (
roles/aiplatform.user
) - BigQuery Connection Admin (
roles/bigquery.connectionAdmin
)
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Dans la liste Sélectionner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.
- Cliquez sur Enregistrer.
Pour en savoir plus sur les autorisations IAM dans BigQuery, consultez la page Autorisations BigQuery.
Importer le modèle dans Vertex AI Model Registry
Dans ce tutoriel, vous utilisez un modèle TensorFlow pré-entraîné disponible dans Cloud Storage à l'adresse gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
. Le bucket Cloud Storage se trouve dans l'emplacement multirégional US
.
Il s'agit d'un modèle TensorFlow nommé saved_model.pb
. Il s'agit d'un modèle d'analyse des sentiments personnalisé créé en ajustant un modèle BERT à l'aide d'avis sur des films IMDB en texte brut. Le modèle utilise les entrées de texte des avis sur les films et renvoie des scores de sentiment compris entre zéro et un. Lorsque vous importez le modèle dans le registre de modèles, vous utilisez un conteneur TensorFlow prédéfini.
Pour importer le modèle, procédez comme suit :
Dans la console Google Cloud, accédez à la page Registre de modèles de Vertex AI.
Cliquez sur Importer.
Pour Étape 1: Nom et région, procédez comme suit:
Sélectionnez Importer en tant que nouveau modèle.
Dans le champ Nom, saisissez
bert_sentiment
.Dans Description, saisissez
BQML tutorial model
.Pour Région, sélectionnez
us-central1
. Vous devez choisir une région basée aux États-Unis, car le bucket Cloud Storage se trouve dans l'emplacement multirégionalUS
.Cliquez sur Continuer.
Pour l'étape 2 : "Paramètres du modèle", procédez comme suit :
Sélectionnez Importer des artefacts de modèle dans un nouveau conteneur prédéfini.
Dans la section Paramètres de conteneur prédéfini, procédez comme suit :
Pour Framework de modèle, sélectionnez TensorFlow.
Dans Version de framework du modèle, sélectionnez 2.15.
Pour Type d'accélérateur, sélectionnez GPU.
Dans Emplacement de l'artefact de modèle, saisissez
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
.Conservez les valeurs par défaut pour toutes les autres options, puis cliquez sur Importer.
Une fois l'importation terminée, votre modèle s'affiche sur la page Registre de modèles.
Déployer le modèle sur un point de terminaison Vertex AI
Pour déployer le modèle sur un point de terminaison, procédez comme suit :
Dans la console Google Cloud, accédez à la page Registre de modèles de Vertex AI.
Dans la colonne Nom, cliquez sur
bert_sentiment
.Cliquez sur l'onglet Déployer et tester.
Cliquez sur Déployer sur un point de terminaison.
Pour la première étape, Définir votre point de terminaison, procédez comme suit:
Cliquez sur Créer un point de terminaison.
Dans le champ Nom du point de terminaison, saisissez
bert sentiment endpoint
.Conservez les autres valeurs par défaut et cliquez sur Continuer.
Pour l'étape 2, Paramètres du modèle, procédez comme suit:
Dans la section Paramètres de calcul, pour Nombre minimal de nœuds de calcul, saisissez
1
. Il s'agit du nombre de nœuds qui doivent être disponibles pour le modèle à tout moment.Dans la section Options d'ajustement avancées, sous Type de machine, sélectionnez Standard (n1-standard-2). Comme vous avez choisi le GPU comme type d'accélérateur lorsque vous avez importé le modèle, le type d'accélérateur et le nombre d'accélérateurs sont définis automatiquement après avoir choisi le type de machine.
Conservez les valeurs par défaut restantes, puis cliquez sur Déployer.
Lorsque le modèle est déployé sur le point de terminaison, son état passe à
Active
.Copiez l'ID numérique du point de terminaison dans la colonne ID et la valeur dans la colonne Région. Vous en aurez besoin ultérieurement.
Créer un ensemble de données
Créez un ensemble de données BigQuery pour stocker votre modèle de ML.
Console
Dans la console Google Cloud, accédez à la page BigQuery.
Dans le volet Explorateur, cliquez sur le nom de votre projet.
Cliquez sur
Afficher les actions > Créer un ensemble de données.Sur la page Créer un ensemble de données, procédez comme suit :
Dans le champ ID de l'ensemble de données, saisissez
bqml_tutorial
.Pour Type d'emplacement, sélectionnez Multirégional, puis sélectionnez US (plusieurs régions aux États-Unis).
Les ensembles de données publics sont stockés dans l'emplacement multirégional
US
. Par souci de simplicité, stockez votre ensemble de données dans le même emplacement.- Conservez les autres paramètres par défaut, puis cliquez sur Créer un ensemble de données.
bq
Pour créer un ensemble de données, exécutez la commande bq mk
en spécifiant l'option --location
. Pour obtenir la liste complète des paramètres possibles, consultez la documentation de référence sur la commande bq mk --dataset
.
Créez un ensemble de données nommé
bqml_tutorial
avec l'emplacement des données défini surUS
et une description deBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Au lieu d'utiliser l'option
--dataset
, la commande utilise le raccourci-d
. Si vous omettez-d
et--dataset
, la commande crée un ensemble de données par défaut.Vérifiez que l'ensemble de données a été créé:
bq ls
API
Appelez la méthode datasets.insert
avec une ressource d'ensemble de données définie.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Créer une connexion de ressource cloud BigQuery
Vous devez disposer d'une connexion à une ressource cloud pour vous connecter à un point de terminaison Vertex AI.
Console
Accédez à la page BigQuery.
Pour créer une connexion, cliquez sur
Ajouter, puis sur Connexions aux sources de données externes.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
bqml_tutorial
.Vérifiez que l'option Multirégional – États-Unis est sélectionnée.
Cliquez sur Créer une connexion.
En bas de la fenêtre, cliquez sur Accéder à la connexion. Vous pouvez également, dans le volet Explorer, développer Connexions externes, puis cliquer sur
us.bqml_tutorial
.Dans le volet Informations de connexion, copiez l'ID du compte de service. Vous aurez besoin de cet ID lorsque vous configurerez les autorisations de la connexion. Lorsque vous créez une ressource de connexion, BigQuery crée un compte de service système unique et l'associe à la connexion.
bq
Créez une connexion :
bq mk --connection --location=US --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE bqml_tutorial
Remplacez
PROJECT_ID
par l'ID de votre projet Google Cloud. Le paramètre--project_id
remplace le projet par défaut.Lorsque vous créez une ressource de connexion, BigQuery crée un compte de service système unique et l'associe à la connexion.
Dépannage : Si vous obtenez l'erreur de connexion suivante, mettez à jour le Google Cloud SDK :
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Récupérez et copiez l'ID du compte de service pour l'utiliser lors d'une prochaine étape :
bq show --connection PROJECT_ID.us.bqml_tutorial
Le résultat ressemble à ce qui suit :
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Configurer l'accès aux connexions
Attribuez le rôle d'utilisateur Vertex AI au compte de service de la connexion à la ressource cloud. Vous devez accorder ce rôle dans le projet dans lequel vous avez créé le point de terminaison du modèle distant.
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 de la connexion de ressource cloud que vous avez copié précédemment.
Dans le champ Sélectionner un rôle, sélectionnez Vertex AI, puis Utilisateur Vertex AI.
Cliquez sur Enregistrer.
Créer un modèle distant BigQuery ML
Vous créez un modèle distant BigQuery ML à l'aide de l'instruction CREATE MODEL
avec la clause REMOTE WITH CONNECTION
. Pour en savoir plus sur l'instruction CREATE MODEL
, consultez la section Instruction CREATE MODEL pour les modèles distants par rapport aux modèles personnalisés.
Vous créez votre modèle dans l'emplacement multirégional US
. Dans un ensemble de données BigQuery multirégional (US
, EU
), vous ne pouvez créer qu'un modèle distant qui se connecte à un point de terminaison déployé dans une région située dans la même zone multirégionale (US
, EU
).
Lorsque vous créez le modèle distant, vous avez besoin de l'ID de point de terminaison généré lorsque vous avez déployé le modèle dans Vertex AI. De plus, les noms et les types de champs d'entrée et de sortie doivent être identiques aux entrées et aux sorties du modèle Vertex AI. Dans cet exemple, l'entrée est un STRING
de texte et la sortie est un ARRAY
de type FLOAT64
.
Console
Dans la console Google Cloud, accédez à la page BigQuery.
Pour Créer, cliquez sur Requête SQL.
Dans l'éditeur de requête, saisissez l'instruction
CREATE MODEL
suivante, puis cliquez sur Exécuter:CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY
) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID') Remplacez les éléments suivants :
- PROJECT_ID : nom de votre projet.
- ENDPOINT_ID: ID du point de terminaison que vous avez copié précédemment.
Une fois l'opération terminée, un message semblable à
Successfully created model named bert_sentiment
s'affiche.Votre nouveau modèle s'affiche dans le panneau Ressources. Les modèles sont indiqués par l'icône
.
Si vous sélectionnez le nouveau modèle dans le panneau Ressources, les informations relatives au modèle s'affichent sous l'éditeur de requête.
bq
Créez le modèle distant en saisissant l'instruction
CREATE MODEL
suivante:bq query --use_legacy_sql=false \ "CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY
) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')" Remplacez les éléments suivants :
- PROJECT_ID : nom de votre projet.
- ENDPOINT_ID: ID du point de terminaison que vous avez copié précédemment.
Une fois le modèle créé, vérifiez qu'il apparaît dans l'ensemble de données:
bq ls -m bqml_tutorial
Le résultat ressemble à ce qui suit :
Id Model Type Labels Creation Time ---------------- ------------ -------- ----------------- bert_sentiment 28 Jan 17:39:43
Obtenir des prédictions à l'aide de ML.PREDICT
Vous utilisez la fonction ML.PREDICT
pour obtenir des prédictions d'opinion à partir du modèle distant. L'entrée est une colonne de texte (review
) qui contient des avis sur les films de la table bigquery-public-data.imdb.reviews
.
Dans cet exemple, 10 000 enregistrements sont sélectionnés et envoyés pour la prédiction. Le modèle distant utilise par défaut une taille de lot de 128 instances pour les requêtes.
Console
Dans la console Google Cloud, accédez à la page BigQuery.
Dans la section Créer, cliquez sur Requête SQL.
Dans l'éditeur de requête, saisissez cette requête qui utilise la fonction
ML.PREDICT
, puis cliquez sur Exécuter.SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )
Les résultats de la requête doivent se présenter comme suit:
bq
Saisissez cette commande pour exécuter la requête qui utilise ML.PREDICT
.
bq query --use_legacy_sql=false \ 'SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )'
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
Console
- 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.
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Supprimer des ressources individuelles
Vous pouvez également supprimer les ressources individuelles utilisées dans ce tutoriel:
Étape suivante
- Pour obtenir plus d'informations sur BigQuery ML, consultez la page Présentation de l'IA et du ML dans BigQuery ML.
- Pour en savoir plus sur l'utilisation de l'instruction
CREATE MODEL
pour les modèles distants, consultez la section Instruction CREATE MODEL pour les modèles distants par rapport aux modèles personnalisés. - Pour en savoir plus sur l'utilisation d'un notebook BigQuery, consultez la page Présentation des notebooks.
- Pour en savoir plus sur les régions et les zones multirégionales BigQuery, consultez la page Emplacements compatibles.
- Pour en savoir plus sur l'importation de modèles dans Vertex AI Model Registry, consultez la section Importer des modèles dans Vertex AI.
- Pour en savoir plus sur la gestion des versions de modèles dans Vertex AI Model Registry, consultez la section Gestion des versions de modèles avec Model Registry.
- Pour en savoir plus sur l'utilisation de VPC Service Controls avec Vertex AI, consultez la page VPC Service Controls avec Vertex AI.