Obtener metadatos de modelos

Descripción general

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

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

Permisos necesarios

Para obtener los metadatos del modelo, debes tener asignado el rol READER en el conjunto de datos o un rol de administración de identidades y accesos (IAM) a nivel de proyecto que incluye permisos bigquery.models.getMetadata. Si se te otorgan permisos bigquery.models.getMetadata a nivel de proyecto, puedes obtener metadatos en modelos de cualquier conjunto de datos del proyecto. Las siguientes funciones predefinidas de IAM a nivel de proyecto incluyen los permisos bigquery.models.getMetadata:

  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.metadataViewer
  • bigquery.admin

Para obtener más información sobre los roles de IAM y los permisos en BigQuery ML, consulta Control de acceso.

Obtener metadatos de modelos

Para obtener metadatos sobre los modelos:

Console

  1. En el panel de navegación, en la sección Recursos, expande tu proyecto y selecciona un conjunto de datos.

  2. Haz clic en el nombre del modelo.

  3. Debajo de la casilla del editor de consultas, haz clic en Details (Detalles). En esta página, se muestran los metadatos del modelo, incluidas las opciones de entrenamiento, las etiquetas, los detalles y la descripción.

    Metadatos de modelo en la consola de Google Cloud

bq

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

Para ver solo las columnas de atributos de tu modelo, usa la marca --schema con la marca --model. Cuando usas la marca --schema, --format debe configurarse como json o prettyjson.

Si obtienes información sobre un modelo de un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al conjunto de datos en el siguiente formato: [PROJECT_ID]:[DATASET].

bq show --model --format=prettyjson [PROJECT_ID]:[DATASET].[MODEL]

Donde:

  • [PROJECT_ID] es el ID del proyecto.
  • [DATASET] es el nombre del conjunto de datos.
  • [MODEL] es el nombre del modelo.

El resultado del comando se verá de la siguiente manera cuando se usa la marca --format=pretty. Para ver todos los detalles, usa el formato --format=prettyjson. El resultado de muestra presenta metadatos para 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:

Ingresa 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

Ingresa 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

Ingresa el siguiente comando para mostrar solo las columnas de atributos 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 metadatos del modelo con la API, llama al método models.get y proporciona projectId, datasetId y modelId.

Comienza a usarlo

Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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 instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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 instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Node.js.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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 instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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)
)

¿Qué sigue?