אחזור מטא-נתונים של מודל

בדף הזה מוסבר איך לאחזר מידע או מטא-נתונים על מודלים של BigQuery ML. כדי לקבל מטא-נתונים של מודל:

  • שימוש במסוף Google Cloud
  • שימוש בפקודה bq show CLI
  • הפעלת שיטת API של models.get ישירות או באמצעות ספריות הלקוח

ההרשאות הנדרשות

כדי לקבל את המטא-נתונים של המודל, צריך להקצות לכם את התפקיד READER במערך הנתונים, או תפקיד ב-IAM ברמת הפרויקט שכולל את ההרשאות bigquery.models.getMetadata. אם קיבלתם bigquery.models.getMetadataהרשאות ברמת הפרויקט, תוכלו לקבל מטא-נתונים על מודלים בכל מערך נתונים בפרויקט. תפקידי ה-IAM המוגדרים מראש הבאים ברמת הפרויקט כוללים את ההרשאות bigquery.models.getMetadata:

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

במאמר בקרת גישה יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery ML.

אחזור מטא-נתונים של מודל

כדי לקבל מטא-נתונים על מודלים:

המסוף

  1. בחלונית הימנית, לוחצים על כלי הניתוחים:

    כפתור מודגש לחלונית הסייר.

    אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.

  2. בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז בוחרים את מערך הנתונים.

  3. לוחצים על הכרטיסייה מודלים ואז על שם של מודל כדי לבחור אותו.

  4. לוחצים על הכרטיסייה פרטים. בכרטיסייה הזו מוצגים המטא-נתונים של המודל, כולל התיאור, התוויות, סוג המודל ואפשרויות האימון.

BQ

מריצים את הפקודה bq show עם הדגל --model או -m כדי להציג את המטא-נתונים של המודל. אפשר להשתמש בדגל --format כדי לשלוט בפלט.

כדי לראות רק את עמודות התכונות של המודל, משתמשים בדגל --schema עם הדגל --model. כשמשתמשים בדגל --schema, צריך להגדיר את --format לערך json או prettyjson.

אם אתם מקבלים מידע על מודל בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט למערך הנתונים בפורמט הבא: [PROJECT_ID]:[DATASET].

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

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID הוא מזהה הפרויקט.
  • DATASET הוא שם מערך הנתונים.
  • MODEL הוא שם המודל.

הפלט של הפקודה אמור להיראות כך כשמשתמשים בדגל --format=pretty. כדי לראות את כל הפרטים, משתמשים בפורמט --format=prettyjson. פלט לדוגמה שמציג מטא-נתונים של מודל רגרסיה לוגיסטית.

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

דוגמאות:

מזינים את הפקודה הבאה כדי להציג את כל המידע על mymodel בmydataset. ‫mydataset נמצא בפרויקט ברירת המחדל שלכם.

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

מזינים את הפקודה הבאה כדי להציג את כל המידע על mymodel בmydataset. ‫mydataset נמצא ב-myotherproject, ולא בפרויקט ברירת המחדל.

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

מזינים את הפקודה הבאה כדי להציג רק את עמודות התכונות של mymodel ב-mydataset. ‫mydataset נמצא בmyotherproject, ולא בפרויקט ברירת המחדל.

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

API

כדי לקבל מטא-נתונים של מודל באמצעות ה-API, קוראים לשיטה models.get ומספקים את הערכים projectId, datasetId ו-modelId.

Go

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

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

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

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

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

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

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.


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

המאמרים הבאים