Aggiornamento metadati modello

Questa pagina mostra come aggiornare i metadati del modello BigQuery ML. Puoi aggiornare i metadati del modello:

  • Utilizzando la console Google Cloud.
  • Utilizzo del comando bq update nello strumento a riga di comando bq.
  • Chiamando il metodo dell'API models.patch direttamente o utilizzando le librerie client.

È possibile aggiornare i seguenti metadati del modello:

  • Descrizione: può essere aggiornata utilizzando la console Google Cloud, lo strumento a riga di comando bq, l'API o le librerie client.
  • Etichette: possono essere aggiornate utilizzando la console Google Cloud, lo strumento a riga di comando bq, l'API o le librerie client.
  • Data e ora di scadenza: può essere aggiornata utilizzando lo strumento bq, l'API o le librerie client.

Autorizzazioni obbligatorie

Per aggiornare i metadati del modello, devi disporre del ruolo WRITER nel set di dati oppure devi disporre di un ruolo IAM (Identity and Access Management) a livello di progetto che include le autorizzazioni bigquery.models.updateMetadata. Se ti sono state concesse le autorizzazioni bigquery.models.updateMetadata a livello di progetto, puoi aggiornare i metadati dei modelli in qualsiasi set di dati del progetto. I seguenti ruoli IAM predefiniti a livello di progetto includono le autorizzazioni bigquery.models.updateMetadata:

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

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery ML, consulta Controllo dell'accesso.

Aggiornare la descrizione di un modello

La descrizione di un modello è una stringa di testo utilizzata per identificarlo.

Per aggiornare la descrizione di un modello:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nel riquadro Explorer, espandi il progetto e poi un set di dati.

  3. Espandi la cartella Modelli nel set di dati, poi fai clic sul nome di un modello per selezionarlo.

  4. Fai clic sulla scheda Dettagli.

  5. Per aggiornare la descrizione del modello, fai clic su Modifica .

  6. Nella finestra di dialogo Modifica dettaglio, aggiorna la descrizione e fai clic su Salva.

bq

Per aggiornare la descrizione di un modello, esegui il comando bq update con il flag --model o -m e il flag --description.

Se stai aggiornando un modello in un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: [PROJECT_ID]:[DATASET].

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

Sostituisci quanto segue:

  • STRING è la stringa di testo che descrive il modello tra virgolette.
  • PROJECT_ID è l'ID progetto.
  • DATASET è il nome del set di dati.
  • MODEL è il nome del modello.

L'output del comando è il seguente:

Model 'myproject.mydataset.mymodel' successfully updated.

Puoi confermare le modifiche emettendo il comando bq show. Per ulteriori informazioni, consulta la sezione Ottenere i metadati del modello.

Esempi:

Inserisci il seguente comando per aggiornare la descrizione di mymodel in mydataset nel progetto predefinito.

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

Inserisci il seguente comando per aggiornare la descrizione di mymodel in mydataset in myotherproject.

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

API

Per aggiornare la descrizione di un modello utilizzando l'API, chiama il metodo models.patch e fornisci projectId, datasetId e modelId. Per modificare la descrizione, aggiungi o aggiorna la proprietà "description" per la risorsa modello.

Vai

Prima di provare questo esempio, segui le istruzioni di configurazione Go riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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: %w", err)
	}
	defer client.Close()

	model := client.Dataset(datasetID).Model(modelID)
	oldMeta, err := model.Metadata(ctx)
	if err != nil {
		return fmt.Errorf("couldn't retrieve model metadata: %w", 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("couldn't update model: %w", err)
	}
	return nil
}

Java

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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

Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Node.js.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

// 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

Prima di provare questo esempio, segui le istruzioni di configurazione Python riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.


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

Aggiornare le etichette di un modello

Le etichette sono coppie chiave/valore che puoi collegare a una risorsa. Quando crei risorse BigQuery ML, le etichette sono facoltative. Per ulteriori informazioni, consulta Aggiungere e utilizzare le etichette.

Per aggiornare le etichette di un modello:

Console

  1. Nel riquadro Explorer, espandi il progetto e poi un set di dati.

  2. Espandi la cartella Modelli nel set di dati, poi fai clic sul nome di un modello per selezionarlo.

  3. Fai clic sulla scheda Dettagli.

  4. Per aggiornare le etichette del modello, fai clic su Modifica .

  5. Nella finestra di dialogo Modifica dettaglio, aggiungi, elimina o modifica le etichette e poi fai clic su Salva.

bq

Per aggiornare le etichette di un modello, esegui il comando bq update con il flag --model o -m e il flag --set_label. Ripeti il flag --set_label per aggiungere o aggiornare più etichette.

Se stai aggiornando un modello in un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: [PROJECT_ID]:[DATASET].

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

Sostituisci quanto segue:

  • KEY:VALUE corrisponde a una coppia chiave:valore per un'etichetta che vuoi aggiungere o aggiornare. Se specifichi la stessa chiave di un'etichetta esistente, viene aggiornato il valore dell'etichetta esistente. La chiave deve essere univoca.
  • PROJECT_ID è l'ID progetto.
  • DATASET è il nome del set di dati.
  • MODEL è il nome del modello.

L'output del comando è simile al seguente.

Model 'myproject.mydataset.mymodel' successfully updated.

Puoi confermare le modifiche emettendo il comando bq show. Per ulteriori informazioni, consulta la sezione Ottenere i metadati del modello.

Esempi:

Per aggiornare l'etichetta department su mymodel, inserisci il comando bq update e specifica department come chiave dell'etichetta. Ad esempio, per aggiornare l'etichetta department:shipping in department:logistics, inserisci il seguente comando. mydataset si trova in myotherproject, non nel progetto predefinito.

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

API

Per aggiornare le etichette di un modello utilizzando l'API, chiama il metodo models.patch e fornisci projectId, datasetId e modelId. Per modificare le etichette, aggiungi o aggiorna la proprietà "labels" per la risorsa modello.

Aggiornare la data e l'ora di scadenza di un modello

La data e l'ora di scadenza di un modello sono un valore timestamp che indica quando un modello viene eliminato. Puoi impostare la data e l'ora di scadenza di un modello al momento della sua creazione utilizzando l'interfaccia a riga di comando, l'API o le librerie client. Puoi anche impostare o aggiornare la data di scadenza di un modello dopo la sua creazione. La data e l'ora di scadenza di un modello vengono spesso indicate come "time to live" o TTL.

Se non imposti una data di scadenza per un modello, il modello non scade mai e devi eliminarlo manualmente.

Il valore dell'ora di scadenza viene espresso in modo diverso a seconda di dove viene impostato. Utilizza il metodo che offre il livello di granularità appropriato:

  • Nello strumento a riga di comando, la scadenza è espressa in secondi dall'ora UTC corrente. Quando specifichi la scadenza sulla riga di comando, il valore intero in secondi viene aggiunto al timestamp UTC corrente.
  • Nell'API, la scadenza è espressa in millisecondi dall'epoca. Se specifichi un valore di scadenza inferiore al timestamp corrente, il modello scade immediatamente.

Per aggiornare la data e l'ora di scadenza di un modello:

Console

L'impostazione o l'aggiornamento della data di scadenza di un modello non è supportata dalla console Google Cloud.

bq

Per aggiornare la data e l'ora di scadenza di un modello, esegui il comando bq update con il flag --model o -m e il flag --expiration.

Se stai aggiornando un modello in un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: [PROJECT_ID]:[DATASET].

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

Sostituisci quanto segue:

  • INTEGER è la durata (in secondi) del modello. Il valore minimo è 3600 secondi (un'ora). La scadenza viene valutata come l'ora UTC corrente più il valore intero.
  • PROJECT_ID è l'ID progetto.
  • DATASET è il nome del set di dati.
  • MODEL è il nome del modello.

L'output del comando è simile al seguente.

Model 'myproject.mydataset.mymodel' successfully updated.

Puoi confermare le modifiche emettendo il comando bq show. Per ulteriori informazioni, consulta la sezione Ottenere i metadati del modello.

Esempi:

Inserisci il seguente comando per aggiornare la data e l'ora di scadenza di mymodel in mydataset su 5 giorni (432000 secondi). mydataset si trova nel progetto predefinito.

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

Inserisci il seguente comando per aggiornare la data e l'ora di scadenza di mymodel in mydataset su 5 giorni (432000 secondi). mydataset si trova in myotherproject, non nel tuo progetto predefinito.

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

API

Per aggiornare la data di scadenza di un modello utilizzando l'API, chiama il metodo models.patch e fornisci projectId, datasetId e modelId. Per modificare la scadenza, aggiungi o aggiorna la proprietà "expirationTime" per la risorsa modello. "expirationTime" è espresso in millisecondi dall'epoca.

Passaggi successivi