Modell mit Ihren Daten abstimmen
In diesem Dokument erfahren Sie, wie Sie ein BigQuery ML-Remote-Modell erstellen, das entweder auf das Vertex AI-gemini-1.0-pro-002
Modell oder die Version des Vertex AI-text-bison
-Modells und konfigurieren Sie das Modell dann für die überwachte Abstimmung.
Nachdem Sie das Remote-Modell erstellt haben, verwenden Sie die ML.EVALUATE
-Funktion, um das Modell zu bewerten und zu bestätigen, dass die Leistung des Modells zu Ihrem Anwendungsfall passt. Sie können das Modell dann in Verbindung mit der ML.GENERATE_TEXT
-Funktion verwenden, um Text in einer BigQuery-Tabelle zu analysieren.
Weitere Informationen finden Sie unter Überwachte Abstimmung der Vertex AI Gemini API oder Textmodell: Überwachte Abstimmung von Vertex AI PaLM API.
Erforderliche Berechtigungen
Zum Erstellen einer Verbindung benötigen Sie die Mitgliedschaft in der folgenden IAM-Rolle (Identity and Access Management):
roles/bigquery.connectionAdmin
Zum Erteilen von Berechtigungen für das Dienstkonto der Verbindung benötigen Sie die folgende Berechtigung:
resourcemanager.projects.setIamPolicy
Zum Erstellen des Modells mit BigQuery ML benötigen Sie die folgenden IAM-Berechtigungen:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Zum Ausführen von Inferenzen benötigen Sie die folgenden Berechtigungen:
bigquery.tables.getData
für die Tabellebigquery.models.getData
für das Modellbigquery.jobs.create
Hinweis
-
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.
Verbindung herstellen
Erstellen Sie eine Cloud-Ressourcenverbindung und rufen Sie das Dienstkonto der Verbindung ab.
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Klicken Sie auf
Hinzufügen und dann auf Verbindungen zu externen Datenquellen, um eine Verbindung zu erstellen.Wählen Sie in der Liste Verbindungstyp die Option Vertex AI-Remote-Modelle, Remote-Funktionen und BigLake (Cloud Resource) aus.
Geben Sie im Feld Verbindungs-ID einen Namen für die Verbindung ein.
Klicken Sie auf Verbindung erstellen.
Klicken Sie auf Zur Verbindung.
Kopieren Sie im Bereich Verbindungsinformationen die Dienstkonto-ID zur Verwendung in einem späteren Schritt.
bq
Erstellen Sie in einer Befehlszeilenumgebung eine Verbindung:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
Der Parameter
--project_id
überschreibt das Standardprojekt.Ersetzen Sie Folgendes:
REGION
: Ihre VerbindungsregionPROJECT_ID
: Ihre Google Cloud-Projekt-IDCONNECTION_ID
: eine ID für Ihre Verbindung
Wenn Sie eine Verbindungsressource herstellen, erstellt BigQuery ein eindeutiges Systemdienstkonto und ordnet es der Verbindung zu.
Fehlerbehebung:Wird der folgende Verbindungsfehler angezeigt, aktualisieren Sie das Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Rufen Sie die Dienstkonto-ID ab und kopieren Sie sie zur Verwendung in einem späteren Schritt:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
Die Ausgabe sieht in etwa so aus:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Hängen Sie folgenden Abschnitt an Ihre main.tf
-Datei an.
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }Ersetzen Sie Folgendes:
CONNECTION_ID
: eine ID für Ihre VerbindungPROJECT_ID
: Ihre Google Cloud-Projekt-IDREGION
: Ihre Verbindungsregion
Dem Dienstkonto der Verbindung Zugriff gewähren
Gewähren Sie Ihrem Dienstkonto Zugriff auf Vertex AI. Wenn Sie keine Berechtigung erteilen, tritt ein Fehler auf. Wählen Sie eine der folgenden Optionen aus:
Console
Zur Seite IAM & Verwaltung.
Klicken Sie auf
Zugriff gewähren.Geben Sie unter Neue Hauptkonten die Dienstkonto-ID ein, die Sie zuvor kopiert haben.
Klicken Sie auf Rolle auswählen.
Geben Sie unter Filter
Vertex AI Service Agent
ein und wählen Sie dann diese Rolle aus.Klicken Sie auf Speichern.
gcloud
Führen Sie den Befehl gcloud projects add-iam-policy-binding
aus:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.serviceAgent' --condition=None
Ersetzen Sie Folgendes:
PROJECT_NUMBER
: Ihre Projektnummer.MEMBER
: Die Dienstkonto-ID, die Sie zuvor kopiert haben.
Das mit Ihrer Verbindung verknüpfte Dienstkonto ist eine Instanz des BigQuery Connection Delegation Service-Agents. Daher kann ihm eine Dienst-Agent-Rolle zugewiesen werden.
Dem Compute Engine-Standarddienstkonto Zugriff gewähren
Wenn Sie die Compute Engine API aktivieren, wird dem Compute Engine-Standarddienstkonto automatisch die Bearbeiterrolle für das Projekt zugewiesen, es sei denn, Sie haben dieses Verhalten für Ihr Projekt deaktiviert. In diesem Fall müssen Sie die Rolle „Bearbeiter“ noch einmal dem Compute Engine-Standarddienstkonto zuweisen, damit es die Berechtigungen zum Erstellen und Optimieren eines Remote-Modells hat.
Console
Zur Seite IAM & Verwaltung.
Klicken Sie auf
Zugriff gewähren.Geben Sie unter Neue Hauptkonten die Dienstkonto-ID
PROJECT_NUMBER-compute@developer.gserviceaccount.com
ein.Klicken Sie auf Rolle auswählen.
Wählen Sie unter Rolle auswählen die Option Einfach und dann Bearbeiter aus.
Klicken Sie auf Speichern.
gcloud
Führen Sie den Befehl gcloud projects add-iam-policy-binding
aus:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/editor' --condition=None
Ersetzen Sie Folgendes:
PROJECT_NUMBER
: Ihre Projektnummer.MEMBER
: die Dienstkonto-ID (PROJECT_NUMBER-compute@developer.gserviceaccount.com
).
Abstimmungsdienst-Agent erstellen
Erstellen Sie einen Dienst-Agent, um den Abstimmungsjob auszuführen.
Dienst-Agent für ein gemini-1.0-pro-002
-Modell erstellen
Erstellen Sie eine Instanz des Vertex AI Secure Fine Tuning Service Agent:
Verwenden Sie den
gcloud beta services identity create
-Befehl, um den Abstimmungsdienst-Agent zu erstellen:gcloud beta services identity create --service=aiplatform.googleapis.com --project=PROJECT_NUMBER
Ersetzen Sie
PROJECT_NUMBER
durch die Projekt-ID.Verwenden Sie den
gcloud projects add-iam-policy-binding
-Befehl, um dem Abstimmungsdienst-Agent die Rolle Vertex AI Tuning Service Agent (roles/aiplatform.tuningServiceAgent
) zu gewähren:gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-vertex-tune.iam.gserviceaccount.com' --role='roles/aiplatform.tuningServiceAgent'
Ersetzen Sie
PROJECT_NUMBER
durch die Projekt-ID.
Dienst-Agent für ein text-bison
-Modell erstellen
Erstellen Sie eine Instanz des AI Platform Fine Tuning Service Agent:
Verwenden Sie den
gcloud beta services identity create
-Befehl, um den Abstimmungsdienst-Agent zu erstellen:gcloud beta services identity create --service=aiplatform.googleapis.com --project=PROJECT_NUMBER
Ersetzen Sie
PROJECT_NUMBER
durch die Projekt-ID.Verwenden Sie den
gcloud projects add-iam-policy-binding
-Befehl, um dem Abstimmungsdienst-Agent die Rolle Vertex AI-Dienst-Agent (roles/aiplatform.serviceAgent
) zu gewähren:gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform-ft.iam.gserviceaccount.com' --role='roles/aiplatform.serviceAgent'
Ersetzen Sie
PROJECT_NUMBER
durch die Projekt-ID.
Modell mit überwachter Feinabstimmung erstellen
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor die folgende Abfrage aus, um ein Remote-Modell zu erstellen:
gemini-1.0-pro-002
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( ENDPOINT = 'ENDPOINT', MAX_ITERATIONS = MAX_ITERATIONS, LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER, DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD', DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION, DATA_SPLIT_COL = 'DATA_SPLIT_COL', EVALUATION_TASK = 'EVALUATION_TASK', PROMPT_COL = 'INPUT_PROMPT_COL', INPUT_LABEL_COLS = INPUT_LABEL_COLS) AS SELECT PROMPT_COLUMN, LABEL_COLUMN FROM `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`;
Ersetzen Sie Folgendes:
PROJECT_ID
ist die Projekt-ID des Projekts, in dem das Modell erstellt werden soll.DATASET_ID
ist die ID des Datasets, das das Modell enthalten soll. Dieses Dataset muss sich in einer unterstützten Pipelinejob- und Modelluploadregion befinden.MODEL_NAME
ist der Name des Modells.REGION
ist die Region, die von der Verbindung verwendet wird.CONNECTION_ID
ist die ID Ihrer BigQuery-Verbindung. Diese Verbindung muss sich am selben Standort wie das von Ihnen verwendete Dataset befinden.Wenn Sie sich Verbindungsdetails in der Google Cloud Console ansehen, ist dies der Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID, der unter Verbindungs-ID angezeigt wird, z. B.
projects/myproject/locations/connection_location/connections/myconnection
.ENDPOINT
: einSTRING
-Wert, der den Namen des zu verwendenden Modells angibt. In diesem Fall muss esgemini-1.0-pro-002
sein.MAX_ITERATIONS
: einINT64
-Wert, der die Anzahl der Schritte angibt, die für die überwachte Abstimmung ausgeführt werden sollen. Der WertMAX_ITERATIONS
muss zwischen1
und∞
liegen.Das
gemini-1.0-pro-002
-Modell wird mit Epochen anstelle von Schritten trainiert. BigQuery ML wandelt den WertMAX_ITERATIONS
daher in Epochen um. Der Standardwert fürMAX_ITERATIONS
ist die Anzahl der Zeilen in den Eingabedaten, die einer Epoche entspricht. Falls Sie mehrere Epochen verwenden möchten, geben Sie ein Vielfaches der Anzahl an Zeilen in Ihren Trainingsdaten an. Wenn Sie beispielsweise 100 Zeilen mit Eingabedaten haben und zwei Epochen verwenden möchten, geben Sie200
für den Argumentwert an. Wenn Sie einen Wert angeben, der kein Vielfaches der Anzahl der Zeilen in den Eingabedaten ist, rundet BigQuery ML auf die nächste Epoche auf. Wenn Sie beispielsweise 100 Zeilen an Eingabedaten haben und den Wert101
für den WertMAX_ITERATIONS
angeben, wird das Training in zwei Epochen ausgeführt.Weitere Informationen zu den Parametern, die zum Optimieren von
gemini-1.0-pro-002
-Modellen verwendet werden, finden Sie unter Abstimmungsjob erstellen.LEARNING_RATE_MULTIPLIER
: EinFLOAT64
-Multiplikator, der auf die empfohlene Lernrate anzuwenden ist. Der Standardwert ist1.0
.DATA_SPLIT_METHOD
: einSTRING
-Wert, der die Methode zum Aufteilen von Eingabedaten in Trainings- und Bewertungs-Datasets angibt. Gültige Optionen sind:AUTO_SPLIT
: BigQuery ML teilt die Daten automatisch auf. Die Art und Weise, wie die Daten aufgeteilt werden, hängt von der Anzahl der Zeilen in der Eingabetabelle ab. Dies ist der Standardwert.RANDOM
: Die Daten werden zufällig angeordnet, bevor sie in Datasets aufgeteilt werden. Wenn Sie die Datenaufteilung anpassen möchten, können Sie diese Option mit der OptionDATA_SPLIT_EVAL_FRACTION
verwenden.CUSTOM
: Daten werden mithilfe der Spalte in der OptionDATA_SPLIT_COL
aufgeteilt. Der WertDATA_SPLIT_COL
muss der Name einer Spalte vom TypBOOL
sein. Zeilen mit einem der WerteTRUE
oderNULL
werden als Bewertungsdaten, Zeilen mit dem WertFALSE
werden als Trainingsdaten verwendet.SEQ
: Teilen Sie Daten mithilfe der Spalte in der OptionDATA_SPLIT_COL
auf. Der WertDATA_SPLIT_COL
muss der Name einer Spalte eines der folgenden Typen sein:NUMERIC
BIGNUMERIC
STRING
TIMESTAMP
Die Daten werden basierend auf der angegebenen Spalte vom kleinsten zum größten Wert sortiert.
Die ersten n Zeilen werden als Bewertungsdaten verwendet, wobei n der für
DATA_SPLIT_EVAL_FRACTION
angegebene Wert ist. Die restlichen Zeilen werden als Trainingsdaten verwendet.NO_SPLIT
: keine Datenaufteilung. Alle Eingabedaten werden als Trainingsdaten verwendet.
Weitere Informationen zu diesen Datenaufteilungsoptionen finden Sie unter
DATA_SPLIT_METHOD
.DATA_SPLIT_EVAL_FRACTION
: einFLOAT64
-Wert, der den Anteil der Daten angibt, die bei der überwachten Abstimmung als Evaluationsdaten verwendet werden sollen. Muss ein Wert im Bereich[0, 1.0]
sein. Der Standardwert ist0.2
.Verwenden Sie diese Option, wenn Sie
RANDOM
oderSEQ
als Wert für die OptionDATA_SPLIT_METHOD
angeben. Wenn Sie die Datenaufteilung anpassen möchten, können Sie die OptionDATA_SPLIT_METHOD
mit der OptionDATA_SPLIT_EVAL_FRACTION
verwenden.DATA_SPLIT_COL
: einSTRING
-Wert, der den Namen der Spalte angibt, die zum Sortieren von Eingabedaten in die Trainings- oder Bewertungs-Datasets verwendet werden soll. Verwenden Sie diese Option, wenn SieCUSTOM
oderSEQ
als Wert für die OptionDATA_SPLIT_METHOD
angeben.EVALUATION_TASK
: einSTRING
-Wert, der die Art der Aufgabe angibt, für die das Modell optimiert werden soll. Gültige Optionen sind:TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
Der Standardwert ist
UNSPECIFIED
.INPUT_PROMPT_COL
: einSTRING
-Wert, der den Namen der Prompt-Spalte in der Trainingsdatentabelle enthält, die bei der überwachten Abstimmung verwendet werden soll. Der Standardwert istprompt
.INPUT_LABEL_COLS
: einARRAY<<STRING>
-Wert, der den Namen der Labelspalte in der Trainingsdatentabelle enthält, die für die überwachte Abstimmung verwendet werden soll. Sie können nur ein Element im Array angeben. Der Standardwert ist ein leerer String. Dadurch istlabel
der Standardwert des ArgumentsLABEL_COLUMN
.PROMPT_COLUMN
: die Spalte in der Trainingsdatentabelle, die die Eingabeaufforderung zum Auswerten des Inhalts in der SpalteLABEL_COLUMN
enthält. Diese Spalte muss vom TypSTRING
sein oder inSTRING
übertragen worden sein. Wenn Sie einen Wert für die OptionINPUT_PROMPT_COL
angeben, müssen Sie denselben Wert fürPROMPT_COLUMN
angeben. Andernfalls muss dieser Wertprompt
sein. Wenn die Tabelle keineprompt
-Spalte enthält, verwenden Sie einen Alias, um eine vorhandene Tabellenspalte anzugeben. Beispiel:AS SELECT hint AS prompt, label FROM mydataset.mytable
.LABEL_COLUMN
: die Spalte in der Trainingsdatentabelle, die die Beispiele zum Trainieren des Modells enthält. Diese Spalte muss vom TypSTRING
sein oder inSTRING
übertragen worden sein. Wenn Sie einen Wert für die OptionINPUT_LABEL_COLS
angeben, müssen Sie denselben Wert fürLABEL_COLUMN
angeben. Andernfalls muss dieser Wertlabel
sein. Wenn die Tabelle keinelabel
-Spalte enthält, verwenden Sie einen Alias, um eine vorhandene Tabellenspalte anzugeben. Beispiel:AS SELECT prompt, feature AS label FROM mydataset.mytable
.TABLE_PROJECT_ID
: Die Projekt-ID des Projekts, das die Trainingsdatentabelle enthält.TABLE_DATASET
: der Name des Datasets, das die Trainingsdatentabelle enthält.TABLE_NAME
: der Name der Tabelle, die die Daten enthält, die zum Trainieren des Modells verwendet werden sollen.
text-bison
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( ENDPOINT = 'ENDPOINT', MAX_ITERATIONS = MAX_ITERATIONS, LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER, EARLY_STOP = EARLY_STOP, ACCELERATOR_TYPE = 'ACCELERATOR_TYPE', DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD', DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION, DATA_SPLIT_COL = 'DATA_SPLIT_COL', EVALUATION_TASK = 'EVALUATION_TASK', PROMPT_COL = 'INPUT_PROMPT_COL', INPUT_LABEL_COLS = INPUT_LABEL_COLS) AS SELECT PROMPT_COLUMN, LABEL_COLUMN FROM `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`;
Ersetzen Sie Folgendes:
PROJECT_ID
ist die Projekt-ID des Projekts, in dem das Modell erstellt werden soll.DATASET_ID
ist die ID des Datasets, das das Modell enthalten soll. Dieses Dataset muss sich in einer unterstützten Pipelinejob- und Modelluploadregion befinden.MODEL_NAME
ist der Name des Modells.REGION
ist die Region, die von der Verbindung verwendet wird.CONNECTION_ID
ist die ID Ihrer BigQuery-Verbindung. Diese Verbindung muss sich am selben Standort wie das von Ihnen verwendete Dataset befinden.Wenn Sie sich Verbindungsdetails in der Google Cloud Console ansehen, ist dies der Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID, der unter Verbindungs-ID angezeigt wird, z. B.
projects/myproject/locations/connection_location/connections/myconnection
.ENDPOINT
: einSTRING
-Wert, der den Namen des zu verwendenden Modells angibt. In diesem Fall muss es eine beliebige Version des Modellstext-bison
sein.MAX_ITERATIONS
: einINT64
-Wert, der die Anzahl der Schritte angibt, die für die überwachte Abstimmung ausgeführt werden sollen. Der WertMAX_ITERATIONS
muss zwischen1
und∞
liegen. Normalerweise dauern 100 Schritte etwa eine Stunde. Der Standardwert ist300
.Der Wert
MAX_ITERATIONS
wirkt sich der in Kombination mit dem WertACCELERATOR_TYPE
auf die für das Modelltraining verwendete Batchgröße aus. Weitere Informationen zur Bestimmung der Batchgröße finden Sie unterMAX_ITERATIONS
. Weitere Informationen zur Auswahl der Anzahl der Trainingsschritte finden Sie unter Empfohlene Konfigurationen.LEARNING_RATE_MULTIPLIER
: EinFLOAT64
-Multiplikator, der auf die empfohlene Lernrate anzuwenden ist. Der Standardwert ist1.0
.EARLY_STOP
: einBOOL
-Wert, der bestimmt, ob die überwachte Abstimmung beendet werden soll, bevor alle Abstimmungsschritte ausgeführt werden. Wenn dieser aufTRUE
festgelegt ist, wird die überwachte Abstimmung beendet, wenn sich die Modellleistung, gemessen über die Accuracy der vorhergesagten Tokens, zwischen den Bewertungsausführungen nicht verbessert. Wenn dieser aufFALSE
festgelegt ist, wird die überwachte Abstimmung fortgesetzt, bis alle Abstimmungsschritte abgeschlossen sind. Der Standardwert istFALSE
.ACCELERATOR_TYPE
: einSTRING
-Wert, der den Typ des Beschleunigers angibt, der für die überwachte Abstimmung verwendet werden soll. Gültige Optionen sind:GPU
: Verwendet A100-GPUs mit 80 GB für die überwachte Abstimmung.TPU
: Verwendet 64 Kerne des TPU v3-Pods für die Optimierung. Wenn Sie diese Option auswählen, gilt Folgendes:- Sie müssen Ihre Abfrage in der Region
europe-west4
ausführen. Informationen zum Ändern von Abfrageoptionen wie dem Standort finden Sie unter Interaktive Abfrage ausführen. - Die überwachten Abstimmungsberechnungen werden in der Region
europe-west4
durchgeführt, da sich dort die TPU-Ressourcen befinden.
- Sie müssen Ihre Abfrage in der Region
Der Standardwert ist
GPU
. Unabhängig von der verwendeten Option sollten Sie darauf achten, dass Ihr Kontingent ausreicht.DATA_SPLIT_METHOD
: einSTRING
-Wert, der die Methode angibt, mit der Eingabedaten in Trainings- und Bewertungs-Datasets aufgeteilt werden. Gültige Optionen sind:AUTO_SPLIT
: BigQuery ML teilt die Daten automatisch auf. Die Art und Weise, wie die Daten aufgeteilt werden, hängt von der Anzahl der Zeilen in der Eingabetabelle ab. Dies ist der Standardwert.RANDOM
: Die Daten werden zufällig angeordnet, bevor sie in Datasets aufgeteilt werden. Wenn Sie die Datenaufteilung anpassen möchten, können Sie diese Option mit der OptionDATA_SPLIT_EVAL_FRACTION
verwenden.CUSTOM
: Daten werden mithilfe der Spalte in der OptionDATA_SPLIT_COL
aufgeteilt. Der WertDATA_SPLIT_COL
muss der Name einer Spalte vom TypBOOL
sein. Zeilen mit einem der WerteTRUE
oderNULL
werden als Bewertungsdaten, Zeilen mit dem WertFALSE
werden als Trainingsdaten verwendet.SEQ
: Teilen Sie Daten mithilfe der Spalte in der OptionDATA_SPLIT_COL
auf. Der WertDATA_SPLIT_COL
muss der Name einer Spalte eines der folgenden Typen sein:NUMERIC
BIGNUMERIC
STRING
TIMESTAMP
Die Daten werden basierend auf der angegebenen Spalte vom kleinsten zum größten Wert sortiert.
Die ersten n Zeilen werden als Bewertungsdaten verwendet, wobei n der für
DATA_SPLIT_EVAL_FRACTION
angegebene Wert ist. Die restlichen Zeilen werden als Trainingsdaten verwendet.NO_SPLIT
: keine Datenaufteilung. Alle Eingabedaten werden als Trainingsdaten verwendet.
Weitere Informationen zu diesen Datenaufteilungsoptionen finden Sie unter
DATA_SPLIT_METHOD
.DATA_SPLIT_EVAL_FRACTION
: einFLOAT64
-Wert, der den Anteil der Daten angibt, die bei der überwachten Abstimmung als Evaluationsdaten verwendet werden sollen. Muss ein Wert im Bereich[0, 1.0]
sein. Der Standardwert ist0.2
.Verwenden Sie diese Option, wenn Sie
RANDOM
oderSEQ
als Wert für die OptionDATA_SPLIT_METHOD
angeben. Wenn Sie die Datenaufteilung anpassen möchten, können Sie die OptionDATA_SPLIT_METHOD
mit der OptionDATA_SPLIT_EVAL_FRACTION
verwenden.DATA_SPLIT_COL
: einSTRING
-Wert, der den Namen der Spalte angibt, die zum Sortieren von Eingabedaten in die Trainings- oder Bewertungs-Datasets verwendet werden soll. Verwenden Sie diese Option, wenn SieCUSTOM
oderSEQ
als Wert für die OptionDATA_SPLIT_METHOD
angeben.EVALUATION_TASK
: einSTRING
-Wert, der die Art der Aufgabe angibt, für die das Modell optimiert werden soll. Gültige Optionen sind:TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
Der Standardwert ist
UNSPECIFIED
.INPUT_PROMPT_COL
: einSTRING
-Wert, der den Namen der Prompt-Spalte in der Trainingsdatentabelle enthält, die bei der überwachten Abstimmung verwendet werden soll. Der Standardwert istprompt
.INPUT_LABEL_COLS
: einARRAY<<STRING>
-Wert, der den Namen der Labelspalte in der Trainingsdatentabelle enthält, die für die überwachte Abstimmung verwendet werden soll. Sie können nur ein Element im Array angeben. Der Standardwert ist ein leerer String. Dadurch istlabel
der Standardwert des ArgumentsLABEL_COLUMN
.PROMPT_COLUMN
: die Spalte in der Trainingsdatentabelle, die die Eingabeaufforderung zum Auswerten des Inhalts in der SpalteLABEL_COLUMN
enthält. Diese Spalte muss vom TypSTRING
sein oder inSTRING
übertragen worden sein. Wenn Sie einen Wert für die OptionINPUT_PROMPT_COL
angeben, müssen Sie denselben Wert fürPROMPT_COLUMN
angeben. Andernfalls muss dieser Wertprompt
sein. Wenn die Tabelle keineprompt
-Spalte enthält, verwenden Sie einen Alias, um eine vorhandene Tabellenspalte anzugeben. Beispiel:AS SELECT hint AS prompt, label FROM mydataset.mytable
.LABEL_COLUMN
: die Spalte in der Trainingsdatentabelle, die die Beispiele zum Trainieren des Modells enthält. Diese Spalte muss vom TypSTRING
sein oder inSTRING
übertragen worden sein. Wenn Sie einen Wert für die OptionINPUT_LABEL_COLS
angeben, müssen Sie denselben Wert fürLABEL_COLUMN
angeben. Andernfalls muss dieser Wertlabel
sein. Wenn die Tabelle keinelabel
-Spalte enthält, verwenden Sie einen Alias, um eine vorhandene Tabellenspalte anzugeben. Beispiel:AS SELECT prompt, feature AS label FROM mydataset.mytable
.TABLE_PROJECT_ID
: Die Projekt-ID des Projekts, das die Trainingsdatentabelle enthält.TABLE_DATASET
: der Name des Datasets, das die Trainingsdatentabelle enthält.TABLE_NAME
: der Name der Tabelle, die die Daten enthält, die zum Trainieren des Modells verwendet werden sollen.
Abgestimmtes Modell bewerten
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Führen Sie im Abfrageeditor die folgende Abfrage aus, um das abgestimmte Modell zu bewerten:
SELECT * FROM ML.EVALUATE( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`, STRUCT('TASK_TYPE' AS task_type, TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p));
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das das Modell enthältDATASET_ID
ist die ID des Datasets, das das Modell enthält.MODEL_NAME
ist der Name des Modells.TABLE_PROJECT_ID
: Die Projekt-ID des Projekts, das die Bewertungsdatentabelle enthält.TABLE_DATASET
: der Name des Datasets, das die Bewertungsdatentabelle enthält.TABLE_NAME
: Der Name der Tabelle, die die Bewertungsdaten enthält.Die Tabelle muss eine Spalte enthalten, deren Name mit dem Spaltennamen übereinstimmt, der während des Modelltrainings bereitgestellt wird. Sie können diesen Wert während des Modelltrainings mit der Option
prompt_col
angeben. Wennprompt_col
nicht angegeben ist, wird in den Trainingsdaten die Spalteprompt
verwendet. Wenn keine Spalte namensprompt
vorhanden ist, wird ein Fehler zurückgegeben.Die Tabelle muss eine Spalte enthalten, deren Name mit dem Namen der Labelspalte übereinstimmt, die während des Modelltrainings angegeben wird. Sie können diesen Wert während des Modelltrainings mit der Option
input_label_cols
angeben. Wenninput_label_cols
nicht angegeben ist, wird in den Trainingsdaten die Spaltelabel
verwendet. Wenn keine Spalte namenslabel
vorhanden ist, wird ein Fehler zurückgegeben.TASK_TYPE
: einSTRING
-Wert, der die Art der Aufgabe angibt, für die Sie das Modell bewerten möchten. Gültige Optionen sind:TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
TOKENS
: einINT64
-Wert, der die maximale Anzahl an Tokens festlegt, die in der Antwort generiert werden können. Dieser Wert muss im Bereich[1,1024]
liegen. Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an. Der Standardwert ist128
.TEMPERATURE
: einFLOAT64
-Wert im Bereich[0.0,1.0]
, der den Grad der Zufälligkeit in der Tokenauswahl steuert. Der Standardwert ist0
.Niedrigere Werte für
temperature
eignen sich für Prompts, die deterministischere und weniger offene oder kreative Reaktionen erfordern, während höhere Werte fürtemperature
zu vielfältigeren oder kreativen Ergebnissen führen können. Ein Wert von0
fürtemperature
ist deterministisch, d. h. die Antwort mit der höchsten Wahrscheinlichkeit wird immer ausgewählt.TOP_K
: einINT64
-Wert im Bereich[1,40]
, der den anfänglichen Pool von Tokens bestimmt, die das Modell zur Auswahl berücksichtigt. Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an. Der Standardwert ist40
.TOP_P
: einFLOAT64
-Wert im Bereich[0.0,1.0]
hilft dabei, zu ermitteln, welche Token aus dem durchTOP_K
bestimmten Pool ausgewählt werden. Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an. Der Standardwert ist0.95
.
Text generieren
Generieren Sie Text mit der Funktion ML.GENERATE_TEXT
:
Prompt-Spalte
Generieren Sie Text mithilfe einer Tabellenspalte, um den Prompt bereitzustellen.
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.DATASET_ID
ist die ID des Datasets, das das Modell enthält.MODEL_NAME
ist der Name des Modells.TABLE_NAME
: der Name der Tabelle, die den Prompt enthält. Diese Tabelle muss eine Spalte enthalten, deren Name mit dem Namen der Featurespalte im abgestimmten LLM übereinstimmt. Der Name der Featurespalte im LLM kann beim Erstellen des Modells mit der OptionPROMPT_COL
festgelegt werden. Andernfalls lautet der Name der Featurespalte in der LLM standardmäßigprompt
. Sie können auch einen Alias verwenden, um eine Spalte mit einem anderen Namen zu verwenden.TOKENS
: einINT64
-Wert, der die maximale Anzahl an Tokens festlegt, die in der Antwort generiert werden können. Dieser Wert muss im Bereich[1,1024]
liegen. Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an. Der Standardwert ist128
.TEMPERATURE
: einFLOAT64
-Wert im Bereich[0.0,1.0]
, der den Grad der Zufälligkeit in der Tokenauswahl steuert. Der Standardwert ist0
.Niedrigere Werte für
temperature
eignen sich für Prompts, die deterministischere und weniger offene oder kreative Reaktionen erfordern, während höhere Werte fürtemperature
zu vielfältigeren oder kreativen Ergebnissen führen können. Ein Wert von0
fürtemperature
ist deterministisch, d. h. die Antwort mit der höchsten Wahrscheinlichkeit wird immer ausgewählt.TOP_K
: einINT64
-Wert im Bereich[1,40]
, der den anfänglichen Pool von Tokens bestimmt, die das Modell zur Auswahl berücksichtigt. Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an. Der Standardwert ist40
.TOP_P
: einFLOAT64
-Wert im Bereich[0.0,1.0]
hilft dabei, die Wahrscheinlichkeit der ausgewählten Tokens zu ermitteln. Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an. Der Standardwert ist0.95
.FLATTEN_JSON
: einBOOL
-Wert, der bestimmt, ob der generierte Text und die Sicherheitsattribute in separaten Spalten zurückgegeben werden. Der Standardwert istFALSE
.STOP_SEQUENCES
ist einARRAY<STRING>
-Wert, der die angegebenen Strings entfernt, wenn sie in Antworten des Modells enthalten sind. Strings werden genau abgeglichen, einschließlich Groß-/Kleinschreibung. Die Standardeinstellung ist ein leeres Array.
Das folgende Beispiel zeigt eine Anfrage mit diesen Merkmalen:
- Verwendet die Spalte
prompt
der Tabelleprompts
für den Prompt. - Gibt eine kurze und moderat wahrscheinliche Antwort zurück.
- Gibt den generierten Text und die Sicherheitsattribute in separaten Spalten zurück.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 40 AS top_k, TRUE AS flatten_json_output));
Abfrage eingeben
Generieren Sie Text mithilfe einer Abfrage, um den Prompt bereitzustellen.
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, (PROMPT_QUERY), STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Projekt-ID.DATASET_ID
ist die ID des Datasets, das das Modell enthält.MODEL_NAME
ist der Name des Modells.PROMPT_QUERY
: eine Abfrage, die die Prompt-Daten bereitstellt.TOKENS
ist einINT64
-Wert, der die maximale Anzahl an Tokens festlegt, die in der Antwort generiert werden können. Dieser Wert muss im Bereich[1,1024]
liegen. Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an. Der Standardwert ist128
.TEMPERATURE
: einFLOAT64
-Wert im Bereich[0.0,1.0]
, der den Grad der Zufälligkeit in der Tokenauswahl steuert. Der Standardwert ist0
.Niedrigere Werte für
temperature
eignen sich für Prompts, die deterministischere und weniger offene oder kreative Reaktionen erfordern, während höhere Werte fürtemperature
zu vielfältigeren oder kreativen Ergebnissen führen können. Ein Wert von0
fürtemperature
ist deterministisch, d. h. die Antwort mit der höchsten Wahrscheinlichkeit wird immer ausgewählt.TOP_K
: einINT64
-Wert im Bereich[1,40]
, der den anfänglichen Pool von Tokens bestimmt, die das Modell zur Auswahl berücksichtigt. Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an. Der Standardwert ist40
.TOP_P
: einFLOAT64
-Wert im Bereich[0.0,1.0]
hilft dabei, die Wahrscheinlichkeit der ausgewählten Tokens zu ermitteln. Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an. Der Standardwert ist0.95
.FLATTEN_JSON
: einBOOL
-Wert, der bestimmt, ob der generierte Text und die Sicherheitsattribute in separaten Spalten zurückgegeben werden. Der Standardwert istFALSE
.STOP_SEQUENCES
ist einARRAY<STRING>
-Wert, der die angegebenen Strings entfernt, wenn sie in Antworten des Modells enthalten sind. Strings werden genau abgeglichen, einschließlich Groß-/Kleinschreibung. Die Standardeinstellung ist ein leeres Array.
Beispiel 1
Das folgende Beispiel zeigt eine Anfrage mit diesen Merkmalen:
- Aufforderungen für eine Zusammenfassung des Texts in der Spalte
body
der Tabellearticles
. - Gibt eine relativ lange und wahrscheinlichere Antwort zurück.
- Gibt den generierten Text und die Sicherheitsattribute in separaten Spalten zurück.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
Beispiel 2
Das folgende Beispiel zeigt eine Anfrage mit diesen Merkmalen:
- Verwendet eine Abfrage, um die Eingabedaten zu erstellen. Verkettet werden Strings, die Tabellenpräfixe mit Tabellenspalten bereitstellen.
- Gibt eine kurze und moderat wahrscheinliche Antwort zurück.
- Gibt den generierten Text und die Sicherheitsattribute in separaten Spalten nicht zurück.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_tuned_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k, FALSE AS flatten_json_output));