Générer du texte à l'aide d'un modèle distant et de la fonction ML.GENERATE_TEXT

Ce tutoriel explique comment créer un modèle distant basé sur le grand modèle de langage text-bison et l'utiliser avec la fonction ML.GENERATE_TEXT pour effectuer plusieurs tâches de génération de texte. Ce tutoriel utilise la table publique bigquery-public-data.imdb.reviews.

Autorisations requises

  • Pour créer l'ensemble de données, vous devez disposer de l'autorisation Identity and Access Management (IAM) bigquery.datasets.create.
  • Pour créer la ressource de connexion, vous devez disposer des autorisations IAM suivantes :

    • bigquery.connections.create
    • bigquery.connections.get
  • Pour accorder des autorisations au compte de service de la connexion, vous devez disposer de l'autorisation suivante :

    • resourcemanager.projects.setIamPolicy
  • Pour créer le modèle, vous avez besoin des autorisations suivantes :

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.connections.delegate
  • Pour exécuter une inférence, vous devez disposer des autorisations suivantes :

    • bigquery.models.getData
    • bigquery.jobs.create

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

  • BigQuery ML : les données que vous traitez dans BigQuery sont facturées.
  • Vertex AI : des frais vous sont facturés pour les appels au service Vertex AI représenté par le modèle distant.

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Pour en savoir plus sur les tarifs de BigQuery, consultez la page Tarifs de BigQuery dans la documentation BigQuery.

Pour en savoir plus sur les tarifs de Vertex AI, consultez la page Tarifs de Vertex AI.

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

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

  3. Activer les API BigQuery, BigQuery Connection, and Vertex AI.

    Activer les API

Créer un ensemble de données

Vous allez créer un ensemble de données BigQuery pour stocker votre modèle de ML :

  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.

    Créer l'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 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.

      Créer une page d'ensemble de données

Créer une connexion

Créez une connexion de ressource cloud et obtenez le compte de service de la connexion. Créez la connexion dans le même emplacement que l'ensemble de données que vous avez créé à l'étape précédente.

Sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Pour créer une connexion, cliquez sur Ajouter, puis sur Connexions aux sources de données externes.

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

  4. Dans le champ ID de connexion, saisissez un nom pour votre connexion.

  5. Cliquez sur Créer une connexion.

  6. Cliquez sur Accéder à la connexion.

  7. Dans le volet Informations de connexion, copiez l'ID du compte de service à utiliser à l'étape suivante.

bq

  1. Dans un environnement de ligne de commande, créez une connexion :

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID
    

    Le paramètre --project_id remplace le projet par défaut.

    Remplacez les éléments suivants :

    • REGION : votre région de connexion
    • PROJECT_ID : ID de votre projet Google Cloud
    • CONNECTION_ID : ID de votre connexion

    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.REGION.CONNECTION_ID
    

    Le résultat ressemble à ce qui suit :

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Ajoutez la section suivante à votre fichier main.tf.

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
Remplacez les éléments suivants :

  • CONNECTION_ID : ID de votre connexion
  • PROJECT_ID : ID de votre projet Google Cloud
  • REGION : votre région de connexion

Accorder des autorisations au compte de service de la connexion

Pour attribuer au compte de service de la connexion un rôle approprié permettant d'accéder au service Vertex AI, 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 que vous avez copié précédemment.

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

  5. Cliquez sur Enregistrer.

Créer le modèle distant

Créez un modèle distant représentant un grand modèle de langage (LLM) hébergé sur Vertex AI :

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

    Accéder à BigQuery

  2. Dans l'éditeur de requête, exécutez l'instruction suivante :

    CREATE OR REPLACE MODEL `bqml_tutorial.llm_model`
      REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID`
      OPTIONS (ENDPOINT = 'text-bison');
    

    Remplacez les éléments suivants :

    • LOCATION : emplacement de la connexion
    • CONNECTION_ID : ID de votre connexion BigQuery.

      Lorsque vous affichez les détails de la connexion dans la console Google Cloud, il s'agit de la valeur de la dernière section de l'ID de connexion complet affiché dans ID de connexion (par exemple, projects/myproject/locations/connection_location/connections/myconnection).

    L'exécution de la requête prend plusieurs secondes, après quoi le modèle llm_model apparaît dans l'ensemble de données bqml_tutorial dans le volet Explorateur. Étant donné que la requête utilise une instruction CREATE MODEL pour créer un modèle, il n'y a aucun résultat de requête.

Effectuer une extraction de mots clés

Effectuez une extraction de mots clés sur des avis de films IMDB à l'aide du modèle distant et de la fonction ML.GENERATE_TEXT :

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

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante pour effectuer l'extraction de mots clés sur cinq avis de films :

    SELECT
      ml_generate_text_result['predictions'][0]['content'] AS generated_text,
      ml_generate_text_result['predictions'][0]['safetyAttributes']
        AS safety_attributes,
      * EXCEPT (ml_generate_text_result)
    FROM
      ML.GENERATE_TEXT(
        MODEL `bqml_tutorial.llm_model`,
        (
          SELECT
            CONCAT('Extract the key words from the text below: ', review) AS prompt,
            *
          FROM
            `bigquery-public-data.imdb.reviews`
          LIMIT 5
        ),
        STRUCT(
          0.2 AS temperature,
          100 AS max_output_tokens));
    

    Le résultat ressemble à ce qui suit :

    Résultats de l'extraction de mots clés pour cinq avis de films.

    Les résultats incluent les colonnes suivantes :

    • generated_text : texte généré.
    • safety_attributes : attributs de sécurité et informations indiquant si le contenu est bloqué en raison de l'une des catégories bloquantes. Pour en savoir plus sur les attributs de sécurité, consultez API PaLM de Vertex AI.
    • ml_generate_text_status : état de réponse d'API pour la ligne correspondante. Si l'opération a abouti, cette valeur est vide.
    • prompt : invite utilisée pour l'analyse des sentiments.
    • Toutes les colonnes de la table bigquery-public-data.imdb.reviews.
  3. Facultatif : Au lieu d'analyser manuellement le fichier JSON renvoyé par la fonction comme vous l'avez fait à l'étape précédente, utilisez l'argument flatten_json_output pour renvoyer le texte généré et les attributs de sécurité dans des colonnes distinctes.

    Dans l'éditeur de requête, exécutez l'instruction suivante :

    SELECT
      *
    FROM
      ML.GENERATE_TEXT(
        MODEL `bqml_tutorial.llm_model`,
        (
          SELECT
            CONCAT('Extract the key words from the text below: ', review) AS prompt,
            *
          FROM
            `bigquery-public-data.imdb.reviews`
          LIMIT 5
        ),
        STRUCT(
          0.2 AS temperature,
          100 AS max_output_tokens,
          TRUE AS flatten_json_output));
    

    Le résultat ressemble à ce qui suit :

    Résultats de l'extraction de mots clés pour cinq avis de films.

    Les résultats incluent les colonnes suivantes :

    • ml_generate_text_llm_result : texte généré.
    • ml_generate_text_rai_result : attributs de sécurité et informations indiquant si le contenu est bloqué en raison de l'une des catégories bloquantes. Pour en savoir plus sur les attributs de sécurité, consultez API PaLM de Vertex AI.
    • ml_generate_text_status : état de réponse d'API pour la ligne correspondante. Si l'opération a abouti, cette valeur est vide.
    • prompt : invite utilisée pour l'extraction de mots clés.
    • Toutes les colonnes de la table bigquery-public-data.imdb.reviews.

Effectuer une analyse des sentiments

Effectuez une analyse des sentiments sur des avis de films IMDB à l'aide du modèle distant et de la fonction ML.GENERATE_TEXT :

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

    Accéder à BigQuery

  2. Dans l'éditeur de requête, exécutez l'instruction suivante pour effectuer une analyse des sentiments sur cinq avis de films :

    SELECT
      ml_generate_text_result['predictions'][0]['content'] AS generated_text,
      ml_generate_text_result['predictions'][0]['safetyAttributes']
        AS safety_attributes,
      * EXCEPT (ml_generate_text_result)
    FROM
      ML.GENERATE_TEXT(
        MODEL `bqml_tutorial.llm_model`,
        (
          SELECT
            CONCAT(
              'perform sentiment analysis on the following text, return one the following categories: positive, negative: ',
              review) AS prompt,
            *
          FROM
            `bigquery-public-data.imdb.reviews`
          LIMIT 5
        ),
        STRUCT(
          0.2 AS temperature,
          100 AS max_output_tokens));
    

    Le résultat ressemble à ce qui suit :

    Résultats de l'analyse des sentiments pour cinq avis de films.

    Les résultats incluent les mêmes colonnes que celles décrites dans la section Effectuer une extraction de mots clés.

Effectuer un nettoyage

  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.