Effectuer des prédictions à l'aide de modèles distants sur Vertex AI

Dans ce tutoriel, vous allez enregistrer un point de terminaison Vertex AI en tant que modèle distant dans BigQuery. Vous utilisez ensuite 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 à une 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 :

Pour obtenir une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai sans frais.

Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. 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 role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Vérifiez que la facturation est activée pour votre projet Google Cloud .

  5. Activez les API BigQuery, Vertex AI, Cloud Storage et BigQuery Connection.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    Activer les API

  6. 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.

Assurez-vous de disposer du ou des rôles suivants sur le projet :

Vérifier les rôles

  1. Dans la console Google Cloud , accédez à la page IAM.

    Accéder à IAM
  2. Sélectionnez le projet.
  3. Dans la colonne Compte principal, recherchez toutes les lignes qui vous identifient ou identifient un groupe dont vous faites partie. Pour savoir à quels groupes vous appartenez, contactez votre administrateur.

  4. Pour toutes les lignes qui vous spécifient ou vous incluent, consultez la colonne Rôle pour vous assurer que la liste inclut les rôles requis.

Attribuer les rôles

  1. Dans la console Google Cloud , accédez à la page IAM.

    Accéder à IAM
  2. Sélectionnez le projet.
  3. Cliquez sur  Accorder l'accès.
  4. 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.

  5. Cliquez sur Sélectionner un rôle, puis recherchez le rôle.
  6. Pour attribuer des rôles supplémentaires, cliquez sur  Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
  7. Cliquez sur Enregistrer.

Pour en savoir plus sur les autorisations IAM dans BigQuery, consultez 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.

Le modèle est un modèle TensorFlow nommé saved_model.pb. Il s'agit d'un modèle d'analyse des sentiments personnalisé qui a été créé en ajustant un modèle BERT à l'aide d'avis sur des films IMDB en texte brut. Le modèle utilise des entrées de texte provenant des avis de films et renvoie des scores de sentiments compris entre 0 et 1. 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.

  1. Dans la console Google Cloud , accédez à la page Vertex AI Model Registry.

    Accéder à la page Registre de modèles

  2. Cliquez sur Importer.

  3. Pour Étape 1 : Nom et région, procédez comme suit :

    1. Sélectionnez Importer en tant que nouveau modèle.

    2. Dans le champ Nom, saisissez bert_sentiment.

    3. Dans Description, saisissez BQML tutorial model.

    4. 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égional US.

    5. Cliquez sur Continuer.

  4. Pour l'étape 2 : Paramètres du modèle, procédez comme suit :

    1. Sélectionnez Importer des artefacts de modèle dans un nouveau conteneur prédéfini.

    2. Dans la section Paramètres de conteneur prédéfini, procédez comme suit :

      1. Pour Framework du modèle, sélectionnez TensorFlow.

      2. Pour Version de framework du modèle, sélectionnez 2.15.

      3. Pour Type d'accélérateur, sélectionnez GPU.

      4. Dans le champ Emplacement de l'artefact de modèle, saisissez gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/.

      5. Conservez les valeurs par défaut de 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

Suivez ces étapes pour déployer le modèle sur un point de terminaison.

  1. Dans la console Google Cloud , accédez à la page Vertex AI Model Registry.

    Accéder à la page Registre de modèles

  2. Dans la colonne Nom, cliquez sur bert_sentiment.

  3. Cliquez sur l'onglet Déployer et tester.

  4. Cliquez sur Déployer sur un point de terminaison.

  5. Pour la première étape, Définir votre point de terminaison, procédez comme suit :

    1. Cliquez sur Créer un point de terminaison.

    2. Dans le champ Nom du point de terminaison, saisissez bert sentiment endpoint.

    3. Conservez les autres valeurs par défaut et cliquez sur Continuer.

  6. Pour l'étape 2, Paramètres du modèle, procédez comme suit :

    1. 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.

    2. Dans la section Options de scaling avancées, sélectionnez Standard (n1-standard-2) pour Type de machine. Étant donné que vous avez choisi "GPU" comme type d'accélérateur lors de l'importation du modèle, le type et le nombre d'accélérateurs sont définis automatiquement après que vous avez choisi le type de machine.

    3. Conservez les autres valeurs par défaut et cliquez sur Déployer.

      Lorsque le modèle est déployé sur le point de terminaison, l'état passe à Active.

    4. 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

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à la page "BigQuery"

  2. Dans le volet Explorateur, cliquez sur le nom de votre projet.

  3. Cliquez sur Afficher les actions > Créer un ensemble de données.

  4. 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 États-Unis.

    • 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, utilisez la commande bq mk --dataset.

  1. Créez un ensemble de données nommé bqml_tutorial et définissez l'emplacement des données sur US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. 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 à une ressource cloud BigQuery

Vous devez disposer d'une connexion à une ressource cloud pour vous connecter à un point de terminaison Vertex AI.

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet de gauche, cliquez sur Explorateur :

    Bouton du volet Explorateur mis en évidence.

    Si le volet de gauche n'apparaît pas, cliquez sur Développer le volet de gauche pour l'ouvrir.

  3. Dans le volet Explorateur, cliquez sur  Ajouter des données.

    La boîte de dialogue Ajouter des données s'ouvre.

  4. Dans le panneau Filtrer par, dans la section Type de source de données, sélectionnez Bases de données.

    Vous pouvez également saisir Vertex AI dans le champ Rechercher des sources de données.

  5. Dans la section Sources de données recommandées, cliquez sur Vertex AI.

  6. Cliquez sur la carte de solution Vertex AI Models: BigQuery Federation (Vertex AI : Fédération BigQuery).

  7. Dans la liste Type de connexion, sélectionnez Modèles distants Vertex AI, fonctions distantes et BigLake (ressource Cloud).

  8. Dans le champ ID de connexion, saisissez bqml_tutorial.

  9. Vérifiez que l'option Multirégional – États-Unis est sélectionnée.

  10. Cliquez sur Créer une connexion.

  11. En bas de la fenêtre, cliquez sur Accéder à la connexion. Vous pouvez également cliquer sur Connexions dans le volet Explorateur, puis sur us.bqml_tutorial.

  12. Dans le volet Informations de connexion, copiez l'ID du compte de service. Vous en aurez besoin pour configurer 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

  1. 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 projetGoogle 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...
    
  2. 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 à la connexion

Attribuez le rôle 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 :

  1. Accédez à la page IAM et administration.

    Accéder à IAM et administration

  2. Cliquez sur Accorder l'accès.

  3. Dans le champ Nouveaux comptes principaux, saisissez l'ID du compte de service de la connexion à la ressource cloud que vous avez copié précédemment.

  4. Dans le champ Sélectionner un rôle, sélectionnez Vertex AI, puis Utilisateur Vertex AI.

  5. Cliquez sur Enregistrer.

Créer un modèle distant BigQuery ML

Pour créer un modèle distant BigQuery ML, utilisez l'instruction CREATE MODEL avec la clause REMOTE WITH CONNECTION. Pour en savoir plus sur l'instruction CREATE MODEL, consultez Instruction CREATE MODEL pour les modèles distants sur les 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 du point de terminaison généré lorsque vous avez déployé le modèle sur Vertex AI. De plus, les noms et les types de champs d'entrée et de sortie doivent être exactement identiques à ceux du modèle Vertex AI. Dans cet exemple, l'entrée est un STRING de type texte, et la sortie est un ARRAY de type FLOAT64.

Console

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Sous Créer, cliquez sur Requête SQL.

  3. Dans l'éditeur de requête, saisissez l'instruction CREATE MODEL, puis cliquez sur Exécuter :

    CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`
    INPUT (text STRING)
    OUTPUT(scores ARRAY<FLOAT64>)
    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 apparaît dans le panneau Ressources. Les modèles sont indiqués par l'icône model
icon.

    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

  1. 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<FLOAT64>)
    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.
  2. 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

La fonction ML.PREDICT permet d'obtenir des prédictions de sentiments à partir du modèle distant. L'entrée est une colonne de texte (review) qui contient des avis de films issus 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

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans la section Créer, cliquez sur Requête SQL.

  3. 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 :

    Résultats de la requête

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

  1. Dans la console Google Cloud , accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

gcloud

    Supprimer un projet Google Cloud  :

    gcloud projects delete PROJECT_ID

Supprimer des ressources individuelles

Vous pouvez également supprimer les ressources individuelles utilisées dans ce tutoriel :

  1. Supprimez le modèle.

  2. Facultatif : supprimez l'ensemble de données.

  3. Annulez le déploiement du modèle et supprimez le point de terminaison.

  4. Supprimez le modèle de Model Registry.

  5. Supprimez la connexion de ressource Cloud.

Étapes suivantes