Obtenir des métadonnées de modèle

Présentation

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

  • à l'aide de Cloud Console ;
  • en exécutant 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 détenir le rôle READER au niveau de l'ensemble de données, ou un rôle IAM au niveau du projet qui comprend 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. Pour en savoir plus sur les rôles au niveau des ensembles de données, consultez la section Rôles primitifs pour les ensembles de données dans la documentation BigQuery.

Obtenir des métadonnées de modèle

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

Console

  1. Dans la section Ressources du panneau de navigation, développez votre projet et sélectionnez un ensemble de données.

  2. Cliquez sur le nom du modèle.

  3. Sous la zone de l'éditeur de requête, cliquez sur Details (Détails). Cette page affiche les métadonnées du modèle, y compris la description, les étiquettes, les détails et les options d'entraînement.

    Métadonnées de modèle dans Google Cloud Console

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]

Où :

  • [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

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

	meta, err := client.Dataset(datasetID).Model(modelID).Metadata(ctx)
	if err != nil {
		return fmt.Errorf("Metadata: %v", err)
	}
	fmt.Fprintf(w, "Got model '%q' with friendly name '%q'\n", modelID, meta.Name)
	return nil
}

Java

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

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


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

Étapes suivantes