Améliorer les performances d'un modèle à l'aide des réglages et de l'évaluation
Ce document explique comment créer un modèle distant BigQuery ML faisant référence à un modèle Vertex AI gemini-2.0-flash-001
.
Vous utiliserez ensuite le
réglage supervisé pour ajuster le modèle avec de nouvelles données d'entraînement, puis l'évaluer avec la fonction ML.EVALUATE
.
Le réglage peut vous aider à traiter les scénarios dans lesquels vous devez personnaliser le modèle Vertex AI hébergé, par exemple lorsque le comportement attendu du modèle est difficile à définir de manière concise dans une requête, ou lorsque les requêtes ne produisent pas de résultats attendus suffisamment cohérents. Le réglage supervisé influence également le modèle des manières suivantes :
- Il permet de guider le modèle afin qu'il renvoie des styles de réponse spécifiques (par exemple, plus concis ou plus détaillé).
- Entraîne les nouveaux comportements du modèle, par exemple en répondant aux requêtes en tant que persona spécifique.
- Il entraîne la mise à jour du modèle avec de nouvelles informations.
Dans ce tutoriel, l'objectif est de faire en sorte que le modèle génère un texte dont le style et le contenu sont aussi proches que possible du contenu de vérité terrain fourni.
Rôles requis
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
).
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 un tableau :
bigquery.tables.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
. - 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.
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, Vertex AI, and Compute Engine APIs.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- BigQuery: You incur costs for the queries that you run in BigQuery.
- BigQuery ML: You incur costs for the model that you create and the processing that you perform in BigQuery ML.
- Vertex AI: You incur costs for calls to and
supervised tuning of the
gemini-1.0-flash-002
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, consultez les ressources suivantes :
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 des tables de test
Créez des tables de données d'entraînement et d'évaluation à partir de l'ensemble de données public task955_wiki_auto_style_transfer de Hugging Face.
Ouvrez Cloud Shell.
Dans Cloud Shell, exécutez les commandes suivantes pour créer des tables de données de test et d'évaluation :
python3 -m pip install pandas pyarrow fsspec huggingface_hub python3 -c "import pandas as pd; df_train = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/train-00000-of-00001.parquet').drop('id', axis=1); df_train['output'] = [x[0] for x in df_train['output']]; df_train.to_json('wiki_auto_style_transfer_train.jsonl', orient='records', lines=True);" python3 -c "import pandas as pd; df_valid = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/valid-00000-of-00001.parquet').drop('id', axis=1); df_valid['output'] = [x[0] for x in df_valid['output']]; df_valid.to_json('wiki_auto_style_transfer_valid.jsonl', orient='records', lines=True);" bq rm -t bqml_tutorial.wiki_auto_style_transfer_train bq rm -t bqml_tutorial.wiki_auto_style_transfer_valid bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
Créer un modèle de référence
Créez un modèle distant basé sur le modèle Vertex AI gemini-1.0-flash-002
.
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante pour créer un modèle distant :
CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT ='gemini-2.0-flash-001');
L'exécution de la requête prend plusieurs secondes, après quoi le modèle
gemini_baseline
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.
Vérifier les performances du modèle de référence
Exécutez la fonction ML.GENERATE_TEXT
avec le modèle distant afin de constater ses performances sur les données d'évaluation, sans aucun réglage.
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
SELECT ml_generate_text_llm_result, ground_truth FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemini_baseline`, ( SELECT input AS prompt, output AS ground_truth FROM `bqml_tutorial.wiki_auto_style_transfer_valid` LIMIT 10 ), STRUCT(TRUE AS flatten_json_output));
Si vous examinez les données de sortie et que vous comparez les valeurs
ml_generate_text_llm_result
etground_truth
, vous constatez que si le modèle de référence génère du texte qui reflète fidèlement les faits fournis dans le contenu de référence, le style du texte est assez différent.
Évaluer le modèle de référence
Pour effectuer une évaluation plus détaillée des performances du modèle, vous allez utiliser la fonction ML.EVALUATE
.
Cette fonction calcule les métriques du modèle qui mesurent la précision et la qualité du texte généré, afin de comparer les réponses du modèle aux réponses idéales.
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.gemini_baseline`, ( SELECT input AS input_text, output AS output_text FROM `bqml_tutorial.wiki_auto_style_transfer_valid` ), STRUCT('text_generation' AS task_type));
La sortie ressemble à ceci :
+---------------------+---------------------+-------------------------------------------+--------------------------------------------+ | bleu4_score | rouge-l_precision | rouge-l_recall | rouge-l_f1_score | evaluation_status | +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+ | 0.23317359667074181 | 0.37809145226740043 | 0.45902937167791508 | 0.40956844061733139 | { | | | | | | "num_successful_rows": 176, | | | | | | "num_total_rows": 176 | | | | | | } | +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
Vous pouvez constater que les performances du modèle de référence ne sont pas mauvaises, mais que la similarité du texte généré avec la vérité terrain est faible, d'après les métriques d'évaluation. Cela indique qu'il est intéressant d'effectuer un réglage supervisé pour voir si vous pouvez améliorer les performances du modèle pour ce cas d'utilisation.
Créer un modèle réglé
Créez un modèle distant très semblable à celui que vous avez créé dans la section Créer un modèle, mais en spécifiant cette fois la clause AS SELECT
pour fournir les données d'entraînement afin de régler le modèle.
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante pour créer un modèle distant :
CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned` REMOTE WITH CONNECTION DEFAULT OPTIONS ( endpoint = 'gemini-2.0-flash-001', max_iterations = 500, data_split_method = 'no_split') AS SELECT input AS prompt, output AS label FROM `bqml_tutorial.wiki_auto_style_transfer_train`;
L'exécution de la requête prend quelques minutes, après quoi le modèle
gemini_tuned
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.
Vérifier les performances du modèle réglé
Exécutez la fonction ML.GENERATE_TEXT
pour constater les performances du modèle réglé sur les données d'évaluation.
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
SELECT ml_generate_text_llm_result, ground_truth FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemini_tuned`, ( SELECT input AS prompt, output AS ground_truth FROM `bqml_tutorial.wiki_auto_style_transfer_valid` LIMIT 10 ), STRUCT(TRUE AS flatten_json_output));
Si vous examinez les données de sortie, vous constatez que le modèle réglé produit un texte dont le style est beaucoup plus proche du contenu de vérité terrain.
Évaluer le modèle réglé
Utilisez la fonction ML.EVALUATE
pour comparer les réponses du modèle réglé aux réponses idéales.
Dans la console Google Cloud , accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.gemini_tuned`, ( SELECT input AS prompt, output AS label FROM `bqml_tutorial.wiki_auto_style_transfer_valid` ), STRUCT('text_generation' AS task_type));
La sortie ressemble à ceci :
+---------------------+---------------------+-------------------------------------------+--------------------------------------------+ | bleu4_score | rouge-l_precision | rouge-l_recall | rouge-l_f1_score | evaluation_status | +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+ | 0.416868792119966 | 0.642001000843349 | 0.55910008048151372 | 0.5907226262084847 | { | | | | | | "num_successful_rows": 176, | | | | | | "num_total_rows": 176 | | | | | | } | +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
Vous pouvez voir que même si l'ensemble de données d'entraînement n'a utilisé que 1 408 exemples,les performances sont nettement améliorées, comme l'indiquent les métriques d'évaluation plus élevées.
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.