עדכון המטא-נתונים של המודל

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

  • באמצעות מסוף Google Cloud .
  • שימוש בפקודה bq update בכלי שורת הפקודה של BigQuery.
  • הפעלת שיטת ה-API‏ models.patch ישירות או באמצעות ספריות הלקוח.

אפשר לעדכן את המטא-נתונים הבאים של המודל:

  • תיאור: אפשר לעדכן את התיאור באמצעותGoogle Cloud המסוף, כלי שורת הפקודה של BigQuery,‏ API או ספריות לקוח.
  • תוויות: אפשר לעדכן אותן באמצעות מסוף Google Cloud , כלי שורת הפקודה של BigQuery,‏ API או ספריות לקוח.
  • זמן התפוגה: אפשר לעדכן אותו באמצעות הכלי bq,‏ API או ספריות לקוח.

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

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

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

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

עדכון התיאור של מודל

תיאור המודל הוא מחרוזת טקסט שמשמשת לזיהוי המודל.

כדי לעדכן את תיאור המודל:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    לדף BigQuery

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

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

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

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

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

  5. לוחצים על הכרטיסייה פרטים.

  6. כדי לעדכן את תיאור המודל, לוחצים על עריכה .

  7. בתיבת הדו-שיח עריכת הפרטים, מעדכנים את התיאור ולוחצים על שמירה.

BQ

כדי לעדכן את התיאור של מודל, מריצים את הפקודה bq update עם הדגל --model או -m והדגל --description.

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

bq update --model --description "[STRING]" PROJECT_ID:DATASET.MODEL

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

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

פלט הפקודה אמור להיראות כך:

Model 'myproject.mydataset.mymodel' successfully updated.

כדי לאשר את השינויים, מריצים את הפקודה bq show. מידע נוסף זמין במאמר קבלת מטא-נתונים של מודלים.

דוגמאות:

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

bq update --model --description "My updated description" \
mydataset.mymodel

מזינים את הפקודה הבאה כדי לעדכן את התיאור של mymodel ב-mydataset ב-myotherproject.

bq update --model --description "My updated description" \
myotherproject:mydataset.mymodel

API

כדי לעדכן את תיאור המודל באמצעות ה-API, קוראים ל-method ‏models.patch ומספקים את הערכים projectId, datasetId ו-modelId. כדי לשנות את התיאור, מוסיפים או מעדכנים את המאפיין description של משאב המודל.

Go

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

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

import (
	"context"
	"fmt"

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

// updateModelDescription demonstrates fetching BigQuery ML model metadata and updating the
// Description metadata.
func updateModelDescription(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()

	model := client.Dataset(datasetID).Model(modelID)
	oldMeta, err := model.Metadata(ctx)
	if err != nil {
		return fmt.Errorf("couldn't retrieve model metadata: %w", err)
	}
	update := bigquery.ModelMetadataToUpdate{
		Description: "This model was modified from a Go program",
	}
	if _, err = model.Update(ctx, update, oldMeta.ETag); err != nil {
		return fmt.Errorf("couldn't update model: %w", err)
	}
	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;

// Sample to update description on a model
public class UpdateModelDescription {

  public static void runUpdateModelDescription() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String modelName = "MY_MODEL_NAME";
    String newDescription = "A really great model.";
    updateModelDescription(datasetName, modelName, newDescription);
  }

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

      Model model = bigquery.getModel(ModelId.of(datasetName, modelName));
      bigquery.update(model.toBuilder().setDescription(newDescription).build());
      System.out.println("Model description updated successfully to " + newDescription);
    } catch (BigQueryException e) {
      System.out.println("Model description was not updated \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 updateModel() {
  // Updates a model's metadata.

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

  const metadata = {
    description: 'A really great model.',
  };

  const dataset = bigquery.dataset(datasetId);
  const [apiResponse] = await dataset.model(modelId).setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${modelId} description: ${newDescription}`);
}

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.
model.description = "This model was modified from a Python program."
model = client.update_model(model, ["description"])  # Make an API request.

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

עדכון התוויות של מודל

תוויות הן צמדי מפתח/ערך שאפשר לצרף למשאב. כשיוצרים משאבים של BigQuery ML, התוויות הן אופציונליות. מידע נוסף זמין במאמר הוספה ושימוש בתוויות.

כדי לעדכן את התוויות של מודל:

המסוף

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

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

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

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

  4. לוחצים על הכרטיסייה פרטים.

  5. כדי לעדכן את התוויות של המודל, לוחצים על עריכה .

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

BQ

כדי לעדכן את התוויות של מודל, מריצים את הפקודה bq update עם הדגל --model או -m והדגל --set_label. כדי להוסיף או לעדכן כמה תוויות, חוזרים על הדגל --set_label.

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

bq update --model --set_label KEY:VALUE \
PROJECT_ID:DATASET.MODEL

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

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

פלט הפקודה אמור להיראות כך:

Model 'myproject.mydataset.mymodel' successfully updated.

כדי לאשר את השינויים, מריצים את הפקודה bq show. מידע נוסף זמין במאמר קבלת מטא-נתונים של מודלים.

דוגמאות:

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

bq update --model --set_label department:logistics \
myotherproject:mydataset.mymodel

API

כדי לעדכן את התוויות של מודל באמצעות ה-API, קוראים ל-method ‏models.patch ומספקים את projectId, datasetId ו-modelId. כדי לשנות את התוויות, מוסיפים או מעדכנים את המאפיין labels במשאב model.

עדכון מועד התפוגה של מודל

זמן התפוגה של מודל הוא ערך של חותמת זמן שקובע מתי המודל יימחק. אפשר להגדיר את תאריך התפוגה של מודל כשיוצרים אותו באמצעות ה-CLI, ה-API או ספריות הלקוח. אפשר גם להגדיר או לעדכן את זמן התפוגה של מודל אחרי שהוא נוצר. זמן התפוגה של מודל נקרא לעיתים קרובות 'אורך חיים' או TTL.

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

הערך של זמן התפוגה מוצג בצורה שונה בהתאם למקום שבו הוא מוגדר. משתמשים בשיטה שנותנת את רמת הפירוט המתאימה:

  • בכלי שורת הפקודה, התוקף מוצג בשניות מהשעה הנוכחית ב-UTC. כשמציינים את התפוגה בשורת הפקודה, הערך השלם בשניות מתווסף לחותמת הזמן הנוכחית בשעון UTC.
  • ב-API, התפוגה מבוטאת באלפיות השנייה מאז ראשית הזמן. אם מציינים ערך תפוגה שהוא קטן מהחותמת הנוכחית של הזמן, המודל יפוג מיד.

כדי לעדכן את תאריך התפוגה של מודל:

המסוף

אי אפשר להגדיר או לעדכן את זמן התפוגה של מודל באמצעות מסוף Google Cloud .

BQ

כדי לעדכן את זמן התפוגה של מודל, מריצים את הפקודה bq update עם הדגל --model או -m והדגל --expiration.

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

bq update --model --expiration INTEGER \
PROJECT_ID:DATASET.MODEL

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

  • INTEGER הוא משך החיים (בשניות) של המודל. הערך המינימלי הוא 3,600 שניות (שעה אחת). מועד התפוגה הוא השעה הנוכחית בשעון UTC בתוספת הערך השלם.
  • PROJECT_ID הוא מזהה הפרויקט.
  • DATASET הוא שם מערך הנתונים.
  • MODEL הוא שם המודל.

פלט הפקודה אמור להיראות כך:

Model 'myproject.mydataset.mymodel' successfully updated.

כדי לאשר את השינויים, מריצים את הפקודה bq show. מידע נוסף זמין במאמר קבלת מטא-נתונים של מודלים.

דוגמאות:

מזינים את הפקודה הבאה כדי לעדכן את תאריך התפוגה של mymodel ב-mydataset ל-5 ימים (432,000 שניות). ‫mydataset נמצא בפרויקט ברירת המחדל שלכם.

bq update --model --expiration 432000 mydataset.mymodel

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

bq update --model --expiration 432000 myotherproject:mydataset.mymodel

API

כדי לעדכן את תאריך התפוגה של מודל באמצעות ה-API, צריך לקרוא ל-method‏ models.patch ולספק את הערכים projectId, datasetId ו-modelId. כדי לשנות את התפוגה, מוסיפים או מעדכנים את המאפיין expirationTime במשאב המודל. הערך של expirationTime מבוטא באלפיות השנייה מאז ראשית הזמן.

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