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 et resourcemanager.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

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

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionnez 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'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.

    Accéder au sélecteur de projet

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

  3. Activez les API BigQuery, BigQuery Connection, Vertex AI et Compute Engine.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    Activer les API

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Cloud de Confiance by S3NS :

  • 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-2.0-flash-001 model.

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

  1. Dans la console Cloud de Confiance , 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.

  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 É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, utilisez la commande bq mk --dataset.

  1. Créez un ensemble de données nommé bqml_tutorial et définissez l'emplacement des données sur US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. 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"
  }
}

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.

  1. Ouvrez Cloud Shell.

  2. 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-2.0-flash-001.

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

    Accéder à BigQuery

  2. 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é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.

Vérifier les performances du modèle de référence

Exécutez la fonction AI.GENERATE_TEXT avec le modèle distant afin de constater ses performances sur les données d'évaluation, sans aucun réglage.

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

    Accéder à BigQuery

  2. 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 result et ground_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.

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

    Accéder à BigQuery

  2. 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, selon 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.

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

    Accéder à BigQuery

  2. 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é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.

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.

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

    Accéder à BigQuery

  2. 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.

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

    Accéder à BigQuery

  2. 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

  1. Dans la console Cloud de Confiance , 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.