Modellmetadaten aktualisieren

Überblick

Auf dieser Seite erfahren Sie, wie Sie Metadaten von BigQuery ML-Modellen aktualisieren. Dafür haben Sie folgende Möglichkeiten:

  • Cloud Console verwenden
  • Mit dem Befehl bq update im bq-Befehlszeilentool
  • Durch direkten Aufruf der API-Methode models.patch oder mithilfe der Clientbibliotheken

Die folgenden Modellmetadaten können aktualisiert werden:

  • Beschreibung: Kann über die Cloud Console, das bq-Befehlszeilentool, die API oder die Clientbibliotheken aktualisiert werden.
  • Labels: Kann über die Cloud Console, das bq-Befehlszeilentool, die API oder Clientbibliotheken aktualisiert werden.
  • Ablaufzeit: Kann mit dem bq-Befehlszeilentool, der API oder den Clientbibliotheken aktualisiert werden.

Erforderliche Berechtigungen

Wenn Sie Modellmetadaten aktualisieren möchten, muss Ihnen die Rolle WRITER für das Dataset oder eine IAM-Rolle mit der Berechtigung bigquery.models.updateMetadata auf Projektebene zugewiesen sein. Wenn Ihnen die Berechtigung bigquery.models.updateMetadata auf Projektebene erteilt wurde, können Sie Metadaten zu Modellen in jedem Dataset innerhalb des Projekts aktualisieren. Die folgenden vordefinierten IAM-Rollen auf Projektebene umfassen Berechtigungen des Typs bigquery.models.updateMetadata:

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

Unter Zugriffssteuerung erfahren Sie mehr über IAM-Rollen und -Berechtigungen in BigQuery ML. Weitere Informationen zu Rollen auf Dataset-Ebene finden Sie in der BigQuery-Dokumentation unter Einfache Rollen für Datasets.

Beschreibung eines Modells aktualisieren

Die Beschreibung eines Modells ist ein Textstring, mit dem das Modell leicht identifiziert werden kann.

So aktualisieren Sie die Beschreibung eines Modells:

Console

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

    Zur Seite "BigQuery"

  2. Maximieren Sie im Navigationsbereich im Abschnitt Ressourcen den Namen Ihres Projekts und des Datasets.

  3. Klicken Sie auf den Modellnamen. Modelle sind am Modellsymbol Modellsymbol zu erkennen.

  4. Klicken Sie auf den Tab Details.

  5. Klicken Sie zum Aktualisieren der Modellbeschreibung auf das Symbol "Bearbeiten" (Stift) rechts neben Beschreibung.

  6. Geben Sie im Dialogfeld Beschreibung bearbeiten Ihren Text ein und klicken Sie dann auf Aktualisieren.

bq

Zum Aktualisieren der Beschreibung eines Modells führen Sie den Befehl bq update mit dem Flag --model oder -m sowie dem Flag --description aus.

Wenn Sie ein Modell in einem anderen Projekt als Ihrem Standardprojekt aktualisieren, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET].

bq ls --model --description "[STRING]" [PROJECT_ID]:[DATASET].[MODEL]

Dabei gilt:

  • [STRING] ist der Textstring in Anführungszeichen, der das Modell beschreibt.
  • [PROJECT_ID] ist die Projekt-ID.
  • [DATASET] ist der Name des Datasets.
  • [MODEL] ist der Name des Modells.

Die Ausgabe des Befehls sieht so aus:

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Sie können Ihre Änderungen mit dem Befehl bq show bestätigen. Weitere Informationen finden Sie unter Modellmetadaten abrufen.

Beispiele:

Geben Sie den folgenden Befehl ein, um die Beschreibung von mymodel in mydataset in Ihrem Standardprojekt zu aktualisieren.

bq update --model --description "My updated description" \
mydataset.mymodel

Geben Sie den folgenden Befehl ein, um die Beschreibung von mymodel in mydataset in myotherproject zu ändern.

bq update --model --description "My updated description" \
myotherproject:mydataset.mymodel

API

Rufen Sie zum Aktualisieren der Beschreibung eines Modells mithilfe der API die Methode models.patch auf und geben Sie projectId, datasetId und modelId an. Ergänzen oder aktualisieren Sie das Attribut "description" in der Modellressource, um die Beschreibung zu ändern.

Go

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// updateModelDescription demonstrates fetching BigQuery ML model metadata and updating the
// Description metadata.
func updateModelDescription(projectID, datasetID, modelID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// modelID := "mymodel"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	model := client.Dataset(datasetID).Model(modelID)
	oldMeta, err := model.Metadata(ctx)
	if err != nil {
		return fmt.Errorf("Metadata: %v", err)
	}
	update := bigquery.ModelMetadataToUpdate{
		Description: "This model was modified from a Go program",
	}
	if _, err = model.Update(ctx, update, oldMeta.ETag); err != nil {
		return fmt.Errorf("Update: %v", err)
	}
	return nil
}

Java

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Model;
import com.google.cloud.bigquery.ModelId;

// Sample to update description on a model
public class UpdateModelDescription {

  public static void runUpdateModelDescription() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String modelName = "MY_MODEL_NAME";
    String newDescription = "A really great model.";
    updateModelDescription(datasetName, modelName, newDescription);
  }

  public static void updateModelDescription(
      String datasetName, String modelName, String newDescription) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      Model model = bigquery.getModel(ModelId.of(datasetName, modelName));
      bigquery.update(model.toBuilder().setDescription(newDescription).build());
      System.out.println("Model description updated successfully to " + newDescription);
    } catch (BigQueryException e) {
      System.out.println("Model description was not updated \n" + e.toString());
    }
  }
}

Node.js

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function updateModel() {
  // Updates a model's metadata.

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";
  // const modelId = "my__model";

  const metadata = {
    description: 'A really great model.',
  };

  const dataset = bigquery.dataset(datasetId);
  const [apiResponse] = await dataset.model(modelId).setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${modelId} description: ${newDescription}`);
}

Python


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set model_id to the ID of the model to fetch.
# model_id = 'your-project.your_dataset.your_model'

model = client.get_model(model_id)  # Make an API request.
model.description = "This model was modified from a Python program."
model = client.update_model(model, ["description"])  # Make an API request.

full_model_id = "{}.{}.{}".format(model.project, model.dataset_id, model.model_id)
print(
    "Updated model '{}' with description '{}'.".format(
        full_model_id, model.description
    )
)

Labels eines Modells aktualisieren

Labels sind Schlüssel/Wert-Paare, die Sie an eine Ressource anhängen können. Beim Erstellen von BigQuery-Ressourcen sind Labels optional. Weitere Informationen finden Sie in der BigQuery-Dokumentation unter Labels hinzufügen und verwenden.

So aktualisieren Sie die Labels eines Modells:

Console

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

    Zur Seite "BigQuery"

  2. Maximieren Sie im Navigationsbereich im Abschnitt Ressourcen den Namen Ihres Projekts und des Datasets.

  3. Klicken Sie auf den Modellnamen. Modelle sind am Modellsymbol Modellsymbol zu erkennen.

  4. Klicken Sie auf den Tab Details.

  5. Klicken Sie zum Aktualisieren der Modelllabels auf das Symbol "Bearbeiten" (Stift) rechts neben Labels.

  6. Gehen Sie im Dialogfeld Labels bearbeiten so vor:

    • Klicken Sie auf Add label (Label hinzufügen), um weitere Labels anzuwenden. Jeder Schlüssel kann pro Dataset nur einmal verwendet werden, Sie können aber denselben Schlüssel in verschiedenen Datasets eines Projekts verwenden.
    • Ändern Sie die vorhandenen Schlüssel oder Werte, um ein Label zu aktualisieren.
    • Klicken Sie auf Update (Aktualisieren), um die Änderungen zu speichern.

bq

Zum Aktualisieren der Label eines Modells führen Sie den Befehl bq update mit dem Flag --model oder -m sowie dem Flag --set_label aus. Wiederholen Sie das Flag --set_label, um mehrere Labels hinzuzufügen oder zu aktualisieren.

Wenn Sie ein Modell in einem anderen Projekt als Ihrem Standardprojekt aktualisieren, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET].

bq update --model --set_label [KEY:VALUE] \
[PROJECT_ID]:[DATASET].[MODEL]

Dabei gilt:

  • [KEY:VALUE] entspricht einem Schlüssel/Wert-Paar für ein Label, das Sie hinzufügen oder aktualisieren möchten. Wenn Sie den Schlüssel eines vorhandenen Labels angeben, wird der Wert für das vorhandene Label aktualisiert. Der Schlüssel muss eindeutig sein.
  • [PROJECT_ID] ist die Projekt-ID.
  • [DATASET] ist der Name des Datasets.
  • [MODEL] ist der Name des Modells.

Die Ausgabe des Befehls sieht so aus:

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Sie können Ihre Änderungen mit dem Befehl bq show bestätigen. Weitere Informationen finden Sie unter Modellmetadaten abrufen.

Beispiele:

Geben Sie den Befehl bq update mit department als Labelschlüssel ein, um das department-Label für mymodel zu aktualisieren. Wenn Sie beispielsweise das Label department:shipping in department:logistics ändern möchten, geben Sie den folgenden Befehl ein. mydataset befindet sich in myotherproject, nicht in Ihrem Standardprojekt.

bq update --model --set_label department:logistics \
myotherproject:mydataset.mymodel

API

Rufen Sie zum Aktualisieren der Labels eines Modells mithilfe der API die Methode models.patch auf und geben Sie projectId, datasetId und modelId an. Ergänzen oder aktualisieren Sie das Attribut "labels" in der Modellressource, um die Labels zu ändern.

Ablaufzeit eines Modells aktualisieren

Die Ablaufzeit eines Modells ist ein Zeitstempelwert, der vorgibt, wann ein Modell gelöscht wird. Sie können die Ablaufzeit eines Modells festlegen, wenn Sie das Modell über die Befehlszeile, API oder Clientbibliotheken erstellen. Es besteht auch die Möglichkeit, die Ablaufzeit nach der Modellerstellung festzulegen oder zu aktualisieren. Die Ablaufzeit eines Modells wird oft auch als "Gültigkeitsdauer" (Time To Live, TTL) bezeichnet.

Wenn Sie keine Ablaufzeit für ein Modell festlegen, läuft es nie ab. Sie müssen dann das Modell manuell löschen.

Der Wert für die Ablaufzeit wird je nachdem, wo er festgelegt wird, unterschiedlich angegeben. Verwenden Sie die Methode, die Ihnen die gewünschte Genauigkeit bietet:

  • Im Befehlszeilentool wird die Ablaufzeit in Sekunden ab der aktuellen UTC-Zeit angegeben. Wenn Sie die Ablaufzeit in der Befehlszeile angeben, wird der ganzzahlige Wert in Sekunden zum aktuellen UTC-Zeitstempel addiert.
  • In der API wird die Ablaufzeit in Millisekunden seit der Epoche angegeben. Wenn Sie einen Ablaufwert angeben, der kleiner als der aktuelle Zeitstempel ist, läuft das Modell sofort ab.

So aktualisieren Sie die Ablaufzeit für ein Modell:

Console

Das Festlegen oder Aktualisieren der Ablaufzeit eines Modells wird derzeit von der Cloud Console nicht unterstützt.

bq

Zum Aktualisieren der Ablaufzeit eines Modells führen Sie den Befehl bq update mit dem Flag --model oder -m sowie dem Flag --expiration aus.

Wenn Sie ein Modell in einem anderen Projekt als Ihrem Standardprojekt aktualisieren, fügen Sie dem Dataset die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET].

bq update --model --expiration [INTEGER] \
[PROJECT_ID]:[DATASET].[MODEL]

Dabei gilt:

  • [INTEGER] ist die Lebensdauer (in Sekunden) des Modells. Der Mindestwert beträgt 3.600 Sekunden bzw. eine Stunde. Die Ablaufzeit entspricht der aktuellen UTC-Zeit plus dem ganzzahligen Wert.
  • [PROJECT_ID] ist die Projekt-ID.
  • [DATASET] ist der Name des Datasets.
  • [MODEL] ist der Name des Modells.

Die Ausgabe des Befehls sieht so aus:

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

Sie können Ihre Änderungen mit dem Befehl bq show bestätigen. Weitere Informationen finden Sie unter Modellmetadaten abrufen.

Beispiele:

Geben Sie den folgenden Befehl ein, um die Ablaufzeit von mymodel in mydataset auf 5 Tage (432000 Sekunden) zu aktualisieren. mydataset befindet sich in Ihrem Standardprojekt.

bq update --model --expiration 432000 mydataset.mymodel

Geben Sie den folgenden Befehl ein, um die Ablaufzeit von mymodel in mydataset auf 5 Tage (432000 Sekunden) zu aktualisieren. mydataset befindet sich nicht in Ihrem Standardprojekt, sondern in myotherproject.

bq update --model --expiration 432000 myotherproject:mydataset.mymodel

API

Rufen Sie zum Aktualisieren der Ablaufzeit eines Modells mithilfe der API die Methode models.patch auf und geben Sie projectId, datasetId und modelId an. Ergänzen oder aktualisieren Sie das Attribut "expirationTime" in der Modellressource, um die Ablaufzeit zu ändern. "expirationTime" wird in Millisekunden seit der Epoche angegeben.

Weitere Informationen