Actualizar metadatos de modelos

En esta página se explica cómo actualizar los metadatos de los modelos de BigQuery ML. Puedes actualizar los metadatos de un modelo de las siguientes formas:

  • Con la Google Cloud consola.
  • Usando el comando bq update en la herramienta de línea de comandos bq.
  • Llamar al método de API models.patch directamente o mediante las bibliotecas de cliente.

Se pueden actualizar los siguientes metadatos del modelo:

  • Descripción: se puede actualizar mediante la consolaGoogle Cloud , la herramienta de línea de comandos bq, la API o las bibliotecas de cliente.
  • Etiquetas: se pueden actualizar mediante la consola de Google Cloud , la herramienta de línea de comandos bq, la API o las bibliotecas de cliente.
  • Hora de vencimiento: se puede actualizar con la herramienta bq, la API o las bibliotecas de cliente.

Permisos obligatorios

Para actualizar los metadatos de un modelo, debes tener asignado el rol WRITER en el conjunto de datos o un rol de gestión de identidades y accesos (IAM) a nivel de proyecto que incluya permisos bigquery.models.updateMetadata. Si se te conceden bigquery.models.updateMetadata permisos a nivel de proyecto, puedes actualizar los metadatos de los modelos de cualquier conjunto de datos del proyecto. Los siguientes roles de gestión de identidades y accesos predefinidos a nivel de proyecto incluyen los permisos de bigquery.models.updateMetadata:

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

Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery ML, consulta el artículo sobre el control de acceso.

Actualizar la descripción de un modelo

La descripción de un modelo es una cadena de texto que se usa para identificar el modelo.

Para actualizar la descripción de un modelo, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a la página de BigQuery

  2. En el panel Explorador, expande tu proyecto y, a continuación, un conjunto de datos.

  3. Expanda la carpeta Modelos del conjunto de datos y, a continuación, haga clic en el nombre de un modelo para seleccionarlo.

  4. Haga clic en la pestaña Detalles.

  5. Para actualizar la descripción del modelo, haz clic en Editar .

  6. En el cuadro de diálogo Editar detalles, actualiza la descripción y haz clic en Guardar.

bq

Para actualizar la descripción de un modelo, ejecuta el comando bq update con las marcas --model o -m y --description.

Si vas a actualizar un modelo en un proyecto que no sea el predeterminado, añade el ID del proyecto al conjunto de datos con el siguiente formato: [PROJECT_ID]:[DATASET].

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

Haz los cambios siguientes:

  • STRING es la cadena de texto que describe tu modelo entre comillas.
  • PROJECT_ID es el ID del proyecto.
  • DATASET es el nombre del conjunto de datos.
  • MODEL es el nombre del modelo.

La salida del comando es similar a la siguiente:

Model 'myproject.mydataset.mymodel' successfully updated.

Puedes confirmar los cambios con el comando bq show. Para obtener más información, consulta Obtener metadatos de modelos.

Ejemplos:

Introduce el siguiente comando para actualizar la descripción de mymodel en mydataset en tu proyecto predeterminado.

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

Introduce el siguiente comando para actualizar la descripción de mymodel en mydataset en myotherproject.

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

API

Para actualizar la descripción de un modelo mediante la API, llama al método models.patch y proporciona los valores projectId, datasetId y modelId. Para modificar la descripción, añade o actualiza la propiedad "description" del recurso de modelo.

Go

Antes de probar este ejemplo, sigue las Goinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

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

Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

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

Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

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

Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.


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

Actualizar las etiquetas de un modelo

Las etiquetas son pares clave-valor que puede asociar a un recurso. Cuando creas recursos de BigQuery ML, las etiquetas son opcionales. Para obtener más información, consulta el artículo Añadir y usar etiquetas.

Para actualizar las etiquetas de un modelo, sigue estos pasos:

Consola

  1. En el panel Explorador, expande tu proyecto y, a continuación, un conjunto de datos.

  2. Expanda la carpeta Modelos del conjunto de datos y, a continuación, haga clic en el nombre de un modelo para seleccionarlo.

  3. Haga clic en la pestaña Detalles.

  4. Para actualizar las etiquetas del modelo, haz clic en Editar .

  5. En el cuadro de diálogo Editar detalle, añade, elimina o modifica etiquetas y, a continuación, haz clic en Guardar.

bq

Para actualizar las etiquetas de un modelo, ejecuta el comando bq update con las marcas --model o -m y --set_label. Repite la marca --set_label para añadir o actualizar varias etiquetas.

Si vas a actualizar un modelo en un proyecto que no sea el predeterminado, añade el ID del proyecto al conjunto de datos con el siguiente formato: [PROJECT_ID]:[DATASET].

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

Haz los cambios siguientes:

  • KEY:VALUE corresponde a un par clave-valor de una etiqueta que quiera añadir o actualizar. Si especificas la misma clave que una etiqueta ya creada, se actualizará el valor de la etiqueta. La clave debe ser única.
  • PROJECT_ID es el ID del proyecto.
  • DATASET es el nombre del conjunto de datos.
  • MODEL es el nombre del modelo.

La salida del comando tiene el siguiente aspecto.

Model 'myproject.mydataset.mymodel' successfully updated.

Puedes confirmar los cambios con el comando bq show. Para obtener más información, consulta Obtener metadatos de modelos.

Ejemplos:

Para actualizar la etiqueta department en mymodel, introduce el comando bq update y especifica department como clave de etiqueta. Por ejemplo, para cambiar la etiqueta department:shipping a department:logistics, introduce el siguiente comando. mydataset está en myotherproject, no en tu proyecto predeterminado.

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

API

Para actualizar las etiquetas de un modelo mediante la API, llama al método models.patch y proporciona los valores projectId, datasetId y modelId. Para modificar las etiquetas, añade o actualiza la propiedad "labels" del recurso de modelo.

Actualizar la fecha de vencimiento de un modelo

El tiempo de vencimiento de un modelo es una marca de tiempo que indica cuándo se elimina un modelo. Puedes definir la hora de vencimiento de un modelo cuando lo crees mediante la CLI, la API o las bibliotecas de cliente. También puedes definir o actualizar el tiempo de vencimiento de un modelo después de crearlo. El tiempo de vencimiento de un modelo se suele denominar "tiempo de vida" o TTL.

Si no defines una fecha de vencimiento para un modelo, este nunca caducará y tendrás que eliminarlo manualmente.

no admite la configuración ni la actualización de la hora de vencimiento de un modelo.

El valor del tiempo de caducidad se expresa de forma diferente en función de dónde se defina. Usa el método que te proporcione el nivel de granularidad adecuado:

  • En la herramienta de línea de comandos, la caducidad se expresa en segundos a partir de la hora UTC actual. Cuando especifica la fecha de vencimiento en la línea de comandos, el valor entero en segundos se añade a la marca de tiempo UTC actual.
  • En la API, la caducidad se expresa en milisegundos desde el inicio del registro de tiempo. Si especificas un valor de vencimiento inferior a la marca de tiempo actual, el modelo caducará inmediatamente.

Para actualizar la fecha de vencimiento de un modelo, sigue estos pasos:

Consola

La consola no admite la configuración ni la actualización de la hora de vencimiento de un modelo. Google Cloud

bq

Para actualizar la hora de vencimiento de un modelo, ejecuta el comando bq update con las marcas --model o -m y la marca --expiration.

Si vas a actualizar un modelo en un proyecto que no sea el predeterminado, añade el ID del proyecto al conjunto de datos con el siguiente formato: [PROJECT_ID]:[DATASET].

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

Haz los cambios siguientes:

  • INTEGER es el tiempo de vida del modelo (en segundos). El valor mínimo es de 3600 segundos (una hora). La hora de vencimiento se calcula como la hora UTC actual más el valor entero.
  • PROJECT_ID es el ID del proyecto.
  • DATASET es el nombre del conjunto de datos.
  • MODEL es el nombre del modelo.

La salida del comando tiene el siguiente aspecto.

Model 'myproject.mydataset.mymodel' successfully updated.

Puedes confirmar los cambios con el comando bq show. Para obtener más información, consulta Obtener metadatos de modelos.

Ejemplos:

Introduce el siguiente comando para actualizar el tiempo de vencimiento de mymodel en mydataset a 5 días (432.000 segundos). mydataset está en tu proyecto predeterminado.

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

Introduce el siguiente comando para actualizar el tiempo de vencimiento de mymodel en mydataset a 5 días (432.000 segundos). mydataset está en myotherproject, no en tu proyecto predeterminado.

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

API

Para actualizar la caducidad de un modelo mediante la API, llama al método models.patch y proporciona los valores projectId, datasetId y modelId. Para modificar la caducidad, añade o actualiza la propiedad "expirationTime" del recurso de modelo. "expirationTime" se expresa en milisegundos desde el inicio del registro de tiempo.

Siguientes pasos