Obtenir les métadonnées du modèle

Cette page explique comment obtenir des informations ou des métadonnées sur des modèles BigQuery ML à l'aide des méthodes suivantes :

  • Utiliser la console Google Cloud.
  • En utilisant la commande CLI bq show
  • en appelant directement la méthode d'API models.get ou en utilisant les bibliothèques clientes.

Autorisations requises

Pour obtenir des métadonnées de modèle, vous devez disposer du rôle READER au niveau de l'ensemble de données, ou d'un rôle Identity and Access Management (IAM) au niveau du projet, qui Inclut les autorisations bigquery.models.getMetadata. Si vous disposez des autorisations bigquery.models.getMetadata au niveau du projet, vous pouvez obtenir des métadonnées de modèle dans n'importe quel ensemble de données du projet. Les rôles IAM prédéfinis suivants au niveau du projet incluent des autorisations bigquery.models.getMetadata :

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

Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery ML, consultez la page Contrôle des accès.

Obtenir les métadonnées du modèle

Pour obtenir des métadonnées sur des modèles, procédez comme suit :

Console

  1. Dans le volet Explorateur, développez votre projet, puis un ensemble de données.

  2. Développez le dossier Modèles dans l'ensemble de données, puis cliquez sur un nom de modèle pour le sélectionner.

  3. Cliquez sur l'onglet Détails. Cet onglet affiche les métadonnées du modèle, y compris la description, les étiquettes, le type de modèle et les options d'entraînement.

bq

Exécutez la commande bq show avec l'option --model ou -m pour afficher les métadonnées du modèle. L'option --format peut être utilisée pour contrôler la sortie.

Pour n'afficher que les colonnes de caractéristiques de votre modèle, utilisez l'option --schema avec l'option --model. Lorsque vous utilisez l'option --schema, le paramètre --format doit être défini sur json ou prettyjson.

Si vous obtenez des informations sur un modèle d'un projet autre que votre projet par défaut, ajoutez l'ID du projet au nom de l'ensemble de données en respectant le format suivant : [PROJECT_ID]:[DATASET].

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

Remplacez les éléments suivants :

  • PROJECT_ID est l'ID de votre projet.
  • DATASET est le nom de l'ensemble de données.
  • MODEL est le nom du modèle.

Le résultat de la commande ressemble à ceci lorsque l'option --format=pretty est utilisée. Pour en savoir plus, utilisez le format --format=prettyjson. L'exemple de résultat ci-dessous montre les métadonnées d'un modèle de régression logistique.

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

Exemples :

Saisissez la commande suivante pour afficher toutes les informations sur la table mymodel dans mydataset. mydataset se trouve dans votre projet par défaut.

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

Saisissez la commande suivante pour afficher toutes les informations sur la table mymodel dans mydataset. mydataset se trouve dans myotherproject, et non dans votre projet par défaut.

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

Entrez la commande suivante pour n'afficher que les colonnes de caractéristiques pour mymodel dans mydataset. mydataset se trouve dans myotherproject, et non dans votre projet par défaut.

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

API

Pour obtenir des métadonnées de modèle à l'aide de l'API, appelez la méthode models.get et spécifiez les valeurs projectId, datasetId et modelId.

Go

Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Go.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Java du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Java.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Node.js.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

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

Avant d'essayer cet exemple, suivez les instructions de configuration pour Python du guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery pour Python.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.


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

Étape suivante