Feinabstimmung und Bewertung verwenden, um die Modelleistung zu verbessern

In dieser Anleitung erfahren Sie, wie Sie ein Modell abstimmen, das einen bestimmten Satz durch präzisere Formulierungen oder Hinzufügen von Qualifizierern erweitert, ohne die Gesamtbedeutung zu ändern. Sie erstellen ein Remote-Modell , das auf ein Gemini Enterprise Agent Platform-Modell verweist, verwenden die überwachte Abstimmung und bewerten das abgestimmte Modell dann mit der ML.EVALUATE Funktion.

Durch die Abstimmung können Sie das gehostete Agent Platform-Modell anpassen, z. B. wenn das erwartete Verhalten in einem Prompt schwer zu definieren ist oder wenn Prompts nicht immer die erwarteten Ergebnisse liefern. Die überwachte Abstimmung wirkt sich auch so auf das Modell aus:

  • Leitet das Modell so, dass bestimmte Antwortstile zurückgegeben werden, z. B. mit prägnanteren oder ausführlicheren Antworten.
  • Bringt dem Modell neue Verhaltensweisen bei, z. B. das Beantworten von Prompts als eine bestimmte Persona.
  • Bewirkt, dass das Modell sich mit neuen Informationen aktualisiert.

In dieser Anleitung soll das Modell Text generieren, dessen Stil und Inhalt so nah wie möglich an den bereitgestellten Ground-Truth-Inhalt angelehnt sind.

Ziele

  • Dataset erstellen
  • Trainings- und Bewertungsdaten in Tabellen importieren
  • Basismodell erstellen
  • Leistung des Basismodells bewerten
  • Abgestimmtes Modell erstellen
  • Leistung des abgestimmten Modells bewerten

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von 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 model.

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Verwenden Sie den Preisrechner.

Neuen Google Cloud Nutzern vonsteht möglicherweise eine kostenlose Testversion zur Verfügung.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Hinweis

Zum Ausführen dieser Anleitung benötigen Sie die folgenden IAM-Rollen (Identity and Access Management):

  • BigQuery-Administrator (roles/bigquery.admin) zum Erstellen und Verwenden von BigQuery-Datasets, -Verbindungen und -Modellen
  • Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin) zum Erteilen von Berechtigungen für das Dienstkonto der Verbindung

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Ausführen der Aufgaben in diesem Dokument erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

  • Dataset erstellen: bigquery.datasets.create
  • Tabelle erstellen: bigquery.tables.create
  • Verbindung erstellen, delegieren und verwenden: bigquery.connections.*
  • Standardverbindung festlegen: bigquery.config.*
  • Dienstkontoberechtigungen festlegen: resourcemanager.projects.getIamPolicy und resourcemanager.projects.setIamPolicy
  • Modell erstellen und Inferenzen ausführen:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

  1. Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Projekt aus oder erstellen Sie eines. Google Cloud

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die resourcemanager.projects.create Berechtigung enthält. Rollen zuweisen.

    Zur Projektauswahl

  2. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  3. Aktivieren Sie die BigQuery API, die BigQuery Connection API, die Agent Platform API und die Compute Engine API.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Rollen zuweisen.

    APIs aktivieren

Dataset erstellen

Wählen Sie eine der folgenden Optionen aus, um ein BigQuery-Dataset zu erstellen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie im linken Steuerfeld auf Explorer:

    Hervorgehobener Button für den Explorer-Bereich.

    Wenn das linke Steuerfeld nicht angezeigt wird, klicken Sie auf Linkes Steuerfeld maximieren , um es zu öffnen.

  3. Maximieren Sie in Explorer Ihr Projekt und klicken Sie dann auf Datasets.

  4. Klicken Sie auf der Seite Datasets auf Dataset erstellen.

  5. Führen Sie im Bereich Dataset erstellen die folgenden Schritte aus:

    • Geben Sie unter Dataset-ID bqml_tutorial ein.

    • Wählen Sie unter Speicherort der Daten die Option USA aus.

    Übernehmen Sie die anderen Standardeinstellungen.

  6. Klicken Sie auf Dataset erstellen.

bq

Verwenden Sie den bq mk --dataset Befehl, um ein neues Dataset zu erstellen.

  1. Erstellen Sie ein Dataset mit dem Namen bqml_tutorial und legen Sie den Speicherort der Daten auf US fest:

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Prüfen Sie, ob das Dataset erstellt wurde:

    bq ls

API

Rufen Sie die datasets.insert Methode mit einer definierten Dataset-Ressource auf:

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

Testtabellen erstellen

Erstellen Sie Tabellen mit Trainings- und Bewertungsdaten basierend auf dem öffentlichen task955_wiki_auto_style_transfer Dataset von Hugging Face.

  1. Öffnen Sie Cloud Shell.

  2. Erstellen Sie in Cloud Shell Tabellen mit Test- und Bewertungsdaten:

    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 load --replace=true --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING
    
    bq load --replace=true --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
    

Trainingsdaten ansehen

Die Eingabe-Trainingsdaten sind ein Prompt, in dem das Modell aufgefordert wird, einen Satz zu erweitern, ohne seine allgemeine Bedeutung zu ändern. Jeder Prompt enthält dieselbe Gruppe von zwei positiven und zwei negativen Beispielen sowie einen Satz, der umgeschrieben werden soll. Die Ausgabe ist der detailliertere Satz, der vom Modell erstellt wurde.

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor die folgende Anweisung aus, um ein Beispiel für Eingabe- und Ausgabedaten zu sehen:

    SELECT * FROM bqml_tutorial.wiki_auto_style_transfer_train LIMIT 1;

    Das Ergebnis sieht etwa so aus:

    +-----------------------------------------------+-------------------------------------------------+
    | input                                         | output                                          |
    +-----------------------------------------------+-------------------------------------------------+
    | Definition: In this task, we ask you to       | Merton College ( in full : The House or College |
    | elaborate the sentence without changing its   | of Scholars of Merton in the University of      |
    | general meaning. You can do so by explaining  | Oxford ) is one of the constituent colleges of  |
    | further the input sentence, using more        | the University of Oxford in England .           |
    | precise wording, adding qualifiers and        |                                                 |
    | auxiliary information etc.                    |                                                 |
    |                                               |                                                 |
    | Positive Example 1 -                          |                                                 |
    | Input: The Inheritance Cycle is a series of   |                                                 |
    | fantasy books written by Christopher Paolini. |                                                 |
    | Output: The Inheritance Cycle is a tetralogy  |                                                 |
    | of young adult high fantasy novels written by |                                                 |
    | American author Christopher Paolini.          |                                                 |
    |                                               |                                                 |
    | Positive Example 2 -                          |                                                 |
    | Input: The Greco-Roman or Graeco-Roman world, |                                                 |
    | refers to geographical regions and countries  |                                                 |
    | who had the language , culture , government   |                                                 |
    | or religion of the ancient Greeks and Romans. |                                                 |
    | Output: The Greco-Roman world , Greco-Roman   |                                                 |
    | culture , or the term Greco-Roman (spelled    |                                                 |
    | Graeco-Roman in the United Kingdom and the    |                                                 |
    | Commonwealth), when used as an adjective , as |                                                 |
    | understood by modern scholars and writers ,   |                                                 |
    | refers to those geographical regions and      |                                                 |
    | countries that culturally ( and so            |                                                 |
    |  historically ) were directly , long-term ,   |                                                 |
    | and intimately influenced by the language ,   |                                                 |
    | culture , government and religion of the      |                                                 |
    | ancient Greeks and Romans.                    |                                                 |
    |                                               |                                                 |
    | Negative Example 1 -                          |                                                 |
    | Input: Boryla, an American football           |                                                 |
    | quarterback, did not participate in the 1952  |                                                 |
    | playoffs.                                     |                                                 |
    | Output: Boryla was not in the 1952 playoffs.  |                                                 |
    |                                               |                                                 |
    | Negative Example 2 -                          |                                                 |
    | Input: The wild population in China decreased |                                                 |
    | to around 2,000 in 2005.                      |                                                 |
    | Output: By 2005, the wild population          |                                                 |
    | decreased to about 2,000.                     |                                                 |
    |                                               |                                                 |
    | Now complete the following example -          |                                                 |
    | Input: Merton College is one of the colleges  |                                                 |
    | of the University of Oxford .                 |                                                 |
    | Output:                                       |                                                 |
    +-----------------------------------------------+-------------------------------------------------+
    

Basismodell erstellen

Erstellen Sie ein Remote-Modell über ein Gemini-Modell:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor die folgende Anweisung aus, um ein Remote-Modell zu erstellen:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline`
    REMOTE WITH CONNECTION DEFAULT
    OPTIONS (ENDPOINT = 'gemini-2.5-pro');

    Die Abfrage dauert einige Sekunden. Anschließend wird das Modell gemini_baseline im Dataset bqml_tutorial des Bereichs Explorer angezeigt. Da die Abfrage eine CREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.

Leistung des Basismodells prüfen

Führen Sie die AI.GENERATE_TEXT Funktion aus, um zu sehen, wie das Remote-Modell mit den Bewertungsdaten ohne Abstimmung funktioniert:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor folgende Abfrage aus:

    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
        ));

    Das Ergebnis sieht etwa so aus:

    +-------------------------------------------------+-------------------------------------------------+
    | result                                          | ground_truth                                    |
    +-------------------------------------------------+-------------------------------------------------+
    | In mathematics, and more specifically in graph  | In mathematics , and more specifically in graph |
    | theory, a graph is an abstract structure that   | theory , a graph is a structure amounting to a  |
    | is used to model pairwise relationships between | set of objects in which some pairs of the       |
    | objects. A graph in this context is made up of  | objects are in some sense " related " .         |
    | vertices (also called nodes or points) and      |                                                 |
    | edges (also called links or lines) that connect |                                                 |
    | pairs of vertices.                              |                                                 |
    | ...                                             | ...                                             |
    +-------------------------------------------------+-------------------------------------------------+
    

    Obwohl das Basismodell Text generiert, der die im Ground-Truth-Inhalt enthaltenen Fakten genau widerspiegelt, unterscheidet sich der Stil des Texts manchmal. Das Basismodell erzeugt in der Regel längere Ausführungen als der gewünschte Ground Truth.

Basismodell bewerten

Verwenden Sie die ML.EVALUATE Funktion, um die Leistung des Modells detaillierter zu bewerten. Diese Funktion berechnet Modellmesswerte, die die Genauigkeit und Qualität des generierten Texts messen, um die Antworten des Modells mit idealen Antworten zu vergleichen.

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor folgende Abfrage aus:

    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));

    Das Ergebnis sieht etwa so aus:

    +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
    | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
    +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
    | 0.32571814014498979 | 0.45752569962901607 | 0.557224161991254   | 0.49205029983307907 | {                                          |
    |                     |                     |                     |                     |  "num_successful_rows": 176,               |
    |                     |                     |                     |                     |  "num_total_rows": 176                     |
    |                     |                     |                     |                     | }                                          |
    +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
    

Diese Werte bieten eine quantitative Möglichkeit, die Leistung zu messen. In den nächsten Abschnitten erfahren Sie, wie Sie ein abgestimmtes Modell erstellen und seine Leistung mit der des Basismodells vergleichen.

Abgestimmtes Modell erstellen

Erstellen Sie ein Remote-Modell, das dem ähnelt, das Sie unter Modell erstellen erstellt haben, aber geben Sie dieses Mal die AS SELECT Klausel an, um die Trainingsdaten bereitzustellen, damit das Modell abgestimmt wird.

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor die folgende Anweisung aus, um ein Remote-Modell zu erstellen:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned`
      REMOTE
        WITH CONNECTION DEFAULT
      OPTIONS (
        endpoint = 'gemini-2.5-pro',
        max_iterations = 500,
        data_split_method = 'no_split')
    AS
    SELECT
      input AS prompt, output AS label
    FROM `bqml_tutorial.wiki_auto_style_transfer_train`;

    Die Abfrage dauert einige Minuten. Anschließend wird das Modell gemini_tuned im Dataset bqml_tutorial des Bereichs Explorer angezeigt. Da die Abfrage eine CREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.

Leistung des abgestimmten Modells prüfen

Führen Sie die Funktion AI.GENERATE_TEXT aus, um zu sehen, wie das abgestimmte Modell mit den Bewertungsdaten funktioniert:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor folgende Abfrage aus:

    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
        ));

    Der Stil des vom abgestimmten Modell erstellten Texts ähnelt dem des Ground-Truth-Inhalts viel mehr.

Abgestimmtes Modell bewerten

Mit der Funktion ML.EVALUATE können Sie die Antworten des abgestimmten Modells mit den idealen Antworten vergleichen:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor folgende Abfrage aus:

    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));

    Das Ergebnis sieht etwa so aus:

    +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
    | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
    +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
    | 0.44878025403825506 | 0.57236062510796448 | 0.638794269320597   | 0.59591519400141835 | {                                          |
    |                     |                     |                     |                     |  "num_successful_rows": 176,               |
    |                     |                     |                     |                     |  "num_total_rows": 176                     |
    |                     |                     |                     |                     | }                                          |
    +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
    

Das abgestimmte Modell zeigt eine deutliche Leistungsverbesserung und übertrifft das Basismodell bei allen Bewertungskriterien.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

    Projekt löschen: Google Cloud

    gcloud projects delete PROJECT_ID

Einzelne Ressourcen löschen

Wenn Sie das Projekt wiederverwenden möchten, löschen Sie die für diese Anleitung erstellten Ressourcen.

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Löschen Sie das Dataset bqml_tutorial. Durch das Löschen des Datasets werden auch die Modelle und Tabellen gelöscht.

    1. Maximieren Sie im Bereich Explorer Ihr Projekt und klicken Sie dann auf Datasets.

    2. Klicken Sie in der Liste Datasets auf das Dataset bqml_tutorial.

    3. Klicken Sie im Detailbereich auf Löschen.

    4. Klicken Sie im Dialogfeld Dataset löschen auf Löschen.

Nächste Schritte