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.
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
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API BigQuery, BigQuery Connection, and Vertex AI.
Créer un ensemble de données
Vous allez créer un ensemble de données BigQuery pour stocker votre modèle de ML :
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.
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
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 un nom pour votre connexion.
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.
bq
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 connexionPROJECT_ID
: ID de votre projet Google CloudCONNECTION_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...
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 connexionPROJECT_ID
: ID de votre projet Google CloudREGION
: 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 :
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 Vertex AI, puis le rôle Utilisateur Vertex AI.
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 :
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 `bqml_tutorial.llm_model` REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID` OPTIONS (ENDPOINT = 'text-bison');
Remplacez les éléments suivants :
LOCATION
: emplacement de la connexionCONNECTION_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éesbqml_tutorial
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.
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
:
Dans la console Google Cloud, accédez à la page BigQuery.
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 :
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
.
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 :
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
:
Dans la console Google Cloud, accédez à la page BigQuery.
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 :
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
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.