Obtener metadatos de modelos

En esta página se explica cómo obtener información o metadatos sobre modelos de BigQuery ML. Para obtener metadatos de modelos, puedes hacer lo siguiente:

  • Usar la Google Cloud consola
  • Usar el comando de la CLI bq show
  • Llamar al método de API models.get directamente o mediante las bibliotecas de cliente
.

Permisos obligatorios

Para obtener los metadatos de un modelo, debes tener asignado el rol READER en el conjunto de datos o un rol de gestión de identidades y accesos (IAM) a nivel de proyecto que incluya permisos de bigquery.models.getMetadata. Si se te conceden bigquery.models.getMetadatapermisos a nivel de proyecto, puedes obtener 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.getMetadata:

  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.metadataViewer
  • 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.

Obtener metadatos de modelos

Para obtener metadatos sobre los modelos, 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. En esta pestaña se muestran los metadatos del modelo, como la descripción, las etiquetas, el tipo de modelo y las opciones de entrenamiento.

bq

Ejecuta el comando bq show con la marca --model o -m para mostrar los metadatos del modelo. La marca --format se puede usar para controlar el resultado.

Para ver solo las columnas de características de su modelo, use la marca --schema junto con la marca --model. Cuando usas la marca --schema, --format debe tener el valor json o prettyjson.

Si quieres obtener información sobre un modelo de 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 show --model --format=prettyjson PROJECT_ID:DATASET.MODEL

Haz los cambios siguientes:

  • 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 cuando se usa la marca --format=pretty: Para ver todos los detalles, usa el formato --format=prettyjson. El ejemplo de salida muestra los metadatos de un modelo de regresión logística.

+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+
|      Id      |     Model Type      |   Feature Columns   |       Label Columns       | Labels |  Creation Time  | Expiration Time |
+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+
| sample_model | LOGISTIC_REGRESSION | |- column1: string  | |- label_column: int64    |        | 03 May 23:14:42 |                 |
|              |                     | |- column2: bool    |                           |        |                 |                 |
|              |                     | |- column3: string  |                           |        |                 |                 |
|              |                     | |- column4: int64   |                           |        |                 |                 |
+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+

Ejemplos:

Introduce el siguiente comando para mostrar toda la información sobre mymodel en mydataset. mydataset está en tu proyecto predeterminado.

bq show --model --format=prettyjson mydataset.mymodel

Introduce el siguiente comando para mostrar toda la información sobre mymodel en mydataset. mydataset está en myotherproject, no en tu proyecto predeterminado.

bq show --model --format=prettyjson myotherproject:mydataset.mymodel

Introduce el siguiente comando para mostrar solo las columnas de características de mymodel en mydataset. mydataset está en myotherproject, no en tu proyecto predeterminado.

bq show --model --schema --format=prettyjson \
myotherproject:mydataset.mymodel

API

Para obtener los metadatos de un modelo mediante la API, llama al método models.get y proporciona los valores de projectId, datasetId y modelId.

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"
	"io"

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

// printModelInfo demonstrates fetching metadata about a BigQuery ML model and printing some of
// it to an io.Writer.
func printModelInfo(w io.Writer, 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()

	meta, err := client.Dataset(datasetID).Model(modelID).Metadata(ctx)
	if err != nil {
		return fmt.Errorf("couldn't retrieve metadata: %w", err)
	}
	fmt.Fprintf(w, "Got model '%q' with friendly name '%q'\n", modelID, meta.Name)
	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;

public class GetModel {

  public static void runGetModel() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String modelName = "MY_MODEL_ID";
    getModel(datasetName, modelName);
  }

  public static void getModel(String datasetName, String modelName) {
    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();

      ModelId modelId = ModelId.of(datasetName, modelName);
      Model model = bigquery.getModel(modelId);
      System.out.println("Model: " + model.getDescription());

      System.out.println("Successfully retrieved model");
    } catch (BigQueryException e) {
      System.out.println("Cannot retrieve model \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 getModel() {
  // Retrieves model named "my_existing_model" in "my_dataset".

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

  const dataset = bigquery.dataset(datasetId);
  const [model] = await dataset.model(modelId).get();

  console.log('Model:');
  console.log(model.metadata.modelReference);
}

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.

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

Siguientes pasos