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 gemini-2.0-flash-001 Gemini Enterprise Agent Platform.
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
ML.EVALUATE fonction.
Le réglage peut vous aider à traiter les scénarios dans lesquels vous devez personnaliser le modèle Agent Platform hébergé, par exemple lorsque le comportement attendu du modèle est difficile à définir de manière concise dans un prompt, ou lorsque les prompts 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 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 Identity and Access Management (IAM) suivants :
- Créer et utiliser des ensembles de données, des connexions et des modèles BigQuery : Administrateur BigQuery (
roles/bigquery.admin) - Accorder 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éer un ensemble de données :
bigquery.datasets.create - Créer une table :
bigquery.tables.create - Créer, déléguer et utiliser une connexion :
bigquery.connections.* - Définir la connexion par défaut :
bigquery.config.* - Définir les autorisations du compte de service :
resourcemanager.projects.getIamPolicyetresourcemanager.projects.setIamPolicy - Créer un modèle et exécuter une inférence :
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.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
-
Dans la Google Cloud console, sur la page de sélection du projet, sélectionnez ou créez un Google Cloud projet.
Rôles requis pour sélectionner ou créer un projet
- Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet
(
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Vérifiez que la facturation est activée pour votre Google Cloud projet.
-
Activez les API BigQuery, BigQuery Connection, Agent Platform et Compute Engine.
Rôles requis pour activer les API
Pour activer les API, vous devez disposer du rôle IAM Administrateur d'utilisation du service (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.
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.
- Gemini Enterprise Agent Platform: You incur costs for calls to and
supervised tuning of the
gemini-2.0-flash-001model.
Obtenez 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 ML.
Console
Dans la Google Cloud console, 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.
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
bq mk --dataset commande.
Créez un ensemble de données nommé
bqml_tutorialavec l'emplacement des données défini surUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Vérifiez que l'ensemble de données a été créé :
bq ls
API
Appelez la datasets.insert
méthode avec une ressource d'ensemble de données définie.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
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
sur le modèle gemini-2.0-flash-001 Gemini Enterprise Agent Platform.
Dans la Google Cloud console, 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_baselineapparaît dans l'ensemble de donnéesbqml_tutorialdans le volet Explorateur. Étant donné que la requête utilise une instructionCREATE MODELpour 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
AI.GENERATE_TEXT fonction
avec le modèle distant afin de constater ses performances sur les données d'évaluation, sans aucun
réglage.
Dans la Google Cloud console, accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
SELECT result, ground_truth FROM AI.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 ));
Si vous examinez les données de sortie et que vous comparez les valeurs
resultetground_truth, vous constatez que si le modèle de référence génère un texte qui reflète fidèlement les faits fournis dans le contenu de vérité terrain, 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
ML.EVALUATE fonction.
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 Google Cloud console, 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 similitude du texte généré avec la vérité terrain est faible, d'après les métriques d'évaluation. Vous pouvez donc constater 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
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 Google Cloud console, 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_tunedapparaît dans l'ensemble de donnéesbqml_tutorialdans le volet Explorateur. Étant donné que la requête utilise une instructionCREATE MODELpour 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 AI.GENERATE_TEXT pour constater les performances du modèle réglé sur les données d'évaluation.
Dans la Google Cloud console, accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez l'instruction suivante :
SELECT result, ground_truth FROM AI.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 ));
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 Google Cloud console, 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.
Libérer de l'espace
- Dans la Google Cloud console, 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.