Générer du texte à l'aide d'un modèle ouvert Gemma et de la fonction ML.GENERATE_TEXT
Ce tutoriel explique comment créer un modèle distant basé sur le modèle Gemma et comment utiliser ce modèle avec la fonction ML.GENERATE_TEXT
pour extraire des mots clés et effectuer une analyse des sentiments sur les avis de films à partir de la table publique bigquery-public-data.imdb.reviews
.
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
). - Déployer et annuler le déploiement de modèles dans Vertex AI : administrateur Vertex AI (
roles/aiplatform.admin
).
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
. - Déployer et annuler le déploiement d'un modèle Vertex AI :
aiplatform.endpoints.deploy
aiplatform.endpoints.undeploy
- 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 that's represented by the remote 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 dans la documentation BigQuery.
Les modèles ouverts que vous déployez sur Vertex AI sont facturés à l'heure machine. Cela signifie que la facturation commence dès que le point de terminaison est entièrement configuré et se poursuit jusqu'à ce que vous le déployiez. 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Déployer un modèle Gemma sur Vertex AI
Déployez le modèle gemma-2-27b-it
sur Vertex AI en suivant les instructions de la section Déployer des modèles Model Garden.
Lors du déploiement, vous devez sélectionner Public (point de terminaison partagé) comme valeur du champ Accès au point de terminaison dans le workflow de déploiement.
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).
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" } }
BigQuery DataFrames
Avant d'essayer cet exemple, suivez les instructions de configuration pour BigQuery DataFrames du guide de démarrage rapide de BigQuery DataFrames. Pour en savoir plus, consultez la documentation de référence sur BigQuery DataFrames.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local.
Créer le modèle distant
Créez un modèle distant représentant un modèle 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 `bqml_tutorial.gemma_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID');
Remplacez les éléments suivants :
ENDPOINT_REGION
: région dans laquelle le modèle ouvert est déployé.ENDPOINT_PROJECT_ID
: projet dans lequel le modèle ouvert est déployé.ENDPOINT_ID
: ID du point de terminaison HTTPS utilisé par le modèle ouvert. Vous pouvez obtenir l'ID du point de terminaison en recherchant le modèle ouvert sur la page Prédiction en ligne et en copiant la valeur dans le champ ID.
L'exemple suivant montre le format d'un point de terminaison HTTP valide :
https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234
.
L'exécution de la requête prend plusieurs secondes, après quoi le modèle gemma_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
:
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 * FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemma_model`, ( SELECT CONCAT('Extract the key words from the movie review below: ', review) AS prompt, * FROM `bigquery-public-data.imdb.reviews` LIMIT 10 ), STRUCT( 0.2 AS temperature, 100 AS max_output_tokens, TRUE AS flatten_json_output));
Le résultat ressemble à ce qui suit, les colonnes non générées étant omises pour plus de clarté :
+----------------------------------------------+-------------------------+-----------------------------+-----+ | generated_text | ml_generate_text_status | prompt | ... | +----------------------------------------------+-------------------------------------------------------+-----+ | Here are some key words from the | | Extract the key words from | | | movie review: * **Romance:** | | the movie review below: | | | "romantic tryst," "elope" * **Comedy:** | | Linda Arvidson (as Jennie) | | | "Contrived Comedy" * **Burglary:** | | and Harry Solter (as Frank) | | | "burglar," "rob," "booty" * **Chase:** | | are enjoying a romantic | | | "chases," "escape" * **Director:** "D.W. | | tryst, when in walks her | | | Griffith" * **Actors:** "Linda Arvidson,"... | | father Charles Inslee;... | | +----------------------------------------------+-------------------------+-----------------------------+-----+ | Here are some key words from the | | Extract the key words from | | | movie review: * **Elderbush Gilch:** The | | the movie review below: | | | name of the movie being reviewed. * | | This is the second addition | | | **Disappointment:** The reviewer's | | to Frank Baum's personally | | | overall feeling about the film. * | | produced trilogy of Oz | | | **Dim-witted:** Describes the story | | films. It's essentially the | | | line negatively. * **Moronic, sadistic,... | | same childishness as the... | | +----------------------------------------------+-------------------------+-----------------------------+-----+
Les résultats incluent les colonnes suivantes :
generated_text
: texte généré.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
: requête utilisée pour l'analyse des sentiments.- 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 * FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemma_model`, ( SELECT CONCAT('Analyze the sentiment of the following movie review and classify it as either POSITIVE or NEGATIVE. \nMovie Review: ', review) AS prompt, * FROM `bigquery-public-data.imdb.reviews` LIMIT 10 ), STRUCT( 0.2 AS temperature, 128 AS max_output_tokens, TRUE AS flatten_json_output));
Le résultat ressemble à ce qui suit, les colonnes non générées étant omises pour plus de clarté :
+----------------------------------------------+-------------------------+-----------------------------+-----+ | generated_text | ml_generate_text_status | prompt | ... | +----------------------------------------------+-------------------------------------------------------+-----+ | **Sentiment:** NEGATIVE **Justification:** | | Analyze the sentiment of | | | * **Negative Language:** The reviewer uses | | movie review and classify | | | phrases like "don't quite make it," "come to | | it as either POSITIVE or | | | mind," "quite disappointing," and "not many | | NEGATIVE. Movie Review: | | | laughs." * **Specific Criticisms:** The | | Although Charlie Chaplin | | | reviewer points out specific flaws in the | | made some great short | | | plot and humor, stating that the manager... | | comedies in the late... | | +----------------------------------------------+-------------------------+-----------------------------+-----+ | **Sentiment:** NEGATIVE **Reasoning:** | | Analyze the sentiment of | | | * **Negative Language:** The reviewer uses | | movie review and classify | | | phrases like "poor writing," "static camera- | | it as either POSITIVE or | | | work," "chews the scenery," "all surface and | | NEGATIVE. Movie Review: | | | no depth," "sterile spectacles," which all | | Opulent sets and sumptuous | | | carry negative connotations. * **Comparison | | costumes well photographed | | | to a More Successful Film:**... | | by Theodor Sparkuhl, and... | | +----------------------------------------------+-------------------------+-----------------------------+-----+
Les résultats incluent les mêmes colonnes que celles décrites dans la section Effectuer une extraction de mots clés.
Annuler le déploiement du modèle
Si vous choisissez de ne pas supprimer votre projet comme recommandé, assurez-vous d'annuler le déploiement du modèle Gemma dans Vertex AI pour éviter de continuer à payer des frais.
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.