יצירת תחזיות באמצעות מודלים מיובאים של TensorFlow

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

מטרות

  • משתמשים בהצהרת CREATE MODEL כדי לייבא מודלים של TensorFlow ל-BigQuery ML.
  • משתמשים בפונקציה ML.PREDICT כדי ליצור תחזיות באמצעות מודלים של TensorFlow שיובאו.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

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

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

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

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  5. צריך לוודא ש-BigQuery API מופעל.

    הפעלת ה-API

  6. חשוב לוודא שיש לכם את ההרשאות הנדרשות לביצוע המשימות שמתוארות במסמך הזה.

התפקידים הנדרשים

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

אם אתם משתמשים בפרויקט קיים, התפקיד אדמין של BigQuery Studio (roles/bigquery.studioAdmin) מעניק את כל ההרשאות שנדרשות כדי להשלים את ההדרכה הזו.

מוודאים שיש לכם את התפקיד או התפקידים הבאים בפרויקט: BigQuery Studio Admin ‏ (roles/bigquery.studioAdmin).

בדיקת התפקידים

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

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

  4. בודקים את העמודה Role בכל השורות שבהן מצוין או מופיע השם שלכם, כדי לראות אם רשימת התפקידים כוללת את התפקידים הנדרשים.

מתן התפקידים

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

    כניסה לדף IAM
  2. בוחרים את הפרויקט.
  3. לוחצים על Grant access.
  4. בשדה New principals, מזינים את מזהה המשתמש. ‫ בדרך כלל מזהה המשתמש הוא כתובת האימייל של חשבון Google.

  5. לוחצים על Select a role ומחפשים את התפקיד.
  6. כדי לתת עוד תפקידים, לוחצים על Add another role ומוסיפים אותם.
  7. לוחצים על Save.

מידע נוסף על הרשאות IAM ב-BigQuery זמין במאמר הרשאות ב-BigQuery.

יצירת מערך נתונים

כדי ליצור מערך נתונים ב-BigQuery, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

  4. בדף Datasets (מערכי נתונים), לוחצים על Create dataset (יצירת מערך נתונים).

  5. בחלונית Create dataset:

    • בשדה Dataset ID (מזהה קבוצת נתונים), מזינים bqml_tutorial.

    • בקטע Data location, בוחרים באפשרות US.

    משאירים את שאר הגדרות ברירת המחדל כמו שהן.

  6. לוחצים על יצירת מערך נתונים.

BQ

כדי ליצור מערך נתונים חדש, משתמשים בפקודה bq mk --dataset.

  1. יוצרים מערך נתונים בשם bqml_tutorial עם מיקום הנתונים שמוגדר ל-US:

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. בודקים שמערך הנתונים נוצר:

    bq ls

API

מפעילים את השיטה datasets.insert עם משאב מוגדר של מערך נתונים:

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

ייבוא מודל TensorFlow

בשלבים הבאים מוסבר איך לייבא מודל מ-Cloud Storage. הנתיב למודל הוא gs://cloud-training-demos/txtclass/export/exporter/1549825580/*. שם המודל המיובא הוא imported_tf_model.

שימו לב שמזהה ה-URI של Cloud Storage מסתיים בתו כללי (*). התו הזה מציין ש-BigQuery ML צריך לייבא את כל הנכסים שמשויכים למודל.

המודל שיובא הוא מודל TensorFlow לסיווג טקסט, שמנבא באיזה אתר פורסמה כותרת מאמר מסוימת.

כדי לייבא את מודל TensorFlow אל מערך הנתונים, פועלים לפי השלבים הבאים.

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    לדף BigQuery

  2. כדי ליצור חדש, לוחצים על שאילתת SQL.

  3. בעורך השאילתות, מזינים את ההצהרה CREATE MODEL ולוחצים על Run.

      CREATE OR REPLACE MODEL `bqml_tutorial.imported_tf_model`
      OPTIONS (MODEL_TYPE='TENSORFLOW',
        MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')

    בסיום הפעולה, אמורה להופיע הודעה כמו Successfully created model named imported_tf_model.

  4. המודל החדש יופיע בחלונית משאבים. מודלים מסומנים בסמל המודל: model
icon.

  5. אם בוחרים את המודל החדש בחלונית Resources, המידע על המודל מופיע מתחת לעורך השאילתות.

    פרטי דגם TensorFlow

BQ

  1. מייבאים את מודל TensorFlow מ-Cloud Storage על ידי הזנת ההצהרה הבאה CREATE MODEL.

    bq query --use_legacy_sql=false \
    "CREATE OR REPLACE MODEL
      `bqml_tutorial.imported_tf_model`
    OPTIONS
      (MODEL_TYPE='TENSORFLOW',
        MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
  2. אחרי שמייבאים את המודל, מוודאים שהוא מופיע במערך הנתונים.

    bq ls -m bqml_tutorial

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

    tableId             Type
    ------------------- -------
    imported_tf_model   MODEL

API

מוסיפים משרה חדשה ומאכלסים את המאפיין jobs#configuration.query בגוף הבקשה.

{
  "query": "CREATE MODEL `PROJECT_ID:bqml_tutorial.imported_tf_model` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
}

מחליפים את PROJECT_ID בשם הפרויקט ומערך הנתונים.

BigQuery DataFrames

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

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

יוצרים את המודל באמצעות הפונקציה bigframes.bigquery.ml.create_model.

import bigframes
import bigframes.pandas as bpd
from bigframes.bigquery import ml

bigframes.options.bigquery.project = PROJECT_ID
# You can change the location to one of the valid locations: https://cloud.google.com/bigquery/docs/locations#supported_locations
bigframes.options.bigquery.location = "US"

# Set partial ordering mode for BigQuery DataFrames.
# For more information, see the BigQuery DataFrames performance documentation:
# https://cloud.google.com/bigquery/docs/dataframes-performance#partial-ordering-mode
bpd.options.bigquery.ordering_mode = "partial"

# Use ml.create_model to create and import the model in BigQuery.
# The options parameter specifies the model type and the Cloud Storage path.
# For more information, see the BigQuery DataFrames API reference documentation:
# https://dataframes.bigquery.dev/reference/api/bigframes.bigquery.ml.create_model.html#bigframes.bigquery.ml.create_model
ml.create_model(
    your_model_id,  # For example: "bqml_tutorial.imported_tf_model"
    options={
        "model_type": "TENSORFLOW",
        "model_path": "gs://cloud-training-demos/txtclass/export/exporter/1549825580/*",
    },
    replace=True,
)

מידע נוסף על ייבוא מודלים של TensorFlow ל-BigQuery ML, כולל דרישות לגבי פורמט ואחסון, מופיע בהצהרה CREATE MODEL בנושא ייבוא מודלים של TensorFlow.

יצירת תחזיות באמצעות מודל TensorFlow מיובא

אחרי שמייבאים את מודל TensorFlow, משתמשים בפונקציה ML.PREDICT כדי ליצור תחזיות באמצעות המודל.

השאילתה הבאה משתמשת ב-imported_tf_model כדי ליצור תחזיות באמצעות נתוני קלט מהטבלה full בקבוצת הנתונים הציבורית hacker_news. בשאילתה, הפונקציה serving_input_fn של מודל TensorFlow מציינת שהמודל מצפה למחרוזת קלט אחת בשם input. שאילתת המשנה מקצה את הכינוי input לעמודה title בהצהרת SELECT של שאילתת המשנה.

כדי ליצור תחזיות באמצעות מודל TensorFlow המיובא, פועלים לפי השלבים הבאים.

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    לדף BigQuery

  2. בקטע יצירה של, לוחצים על שאילתת SQL.

  3. בעורך השאילתות, מזינים את השאילתה הזו שמשתמשת בפונקציה ML.PREDICT.

    SELECT *
      FROM ML.PREDICT(MODEL `bqml_tutorial.imported_tf_model`,
        (
         SELECT title AS input
         FROM bigquery-public-data.hacker_news.full
        )
    )

    תוצאות השאילתה אמורות להיראות כך:

    תוצאות השאילתה

BQ

כדי להריץ את השאילתה שמשתמשת ב-ML.PREDICT, מזינים את הפקודה הבאה.

bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
  MODEL `bqml_tutorial.imported_tf_model`,
  (SELECT title AS input FROM `bigquery-public-data.hacker_news.full`))'

התוצאות אמורות להיראות כך:

+------------------------------------------------------------------------+----------------------------------------------------------------------------------+
|                               dense_1                                  |                                       input                                      |
+------------------------------------------------------------------------+----------------------------------------------------------------------------------+
|   ["0.6251608729362488","0.2989124357700348","0.07592673599720001"]    | How Red Hat Decides Which Open Source Companies t...                             |
|   ["0.014276246540248394","0.972910463809967","0.01281337533146143"]   | Ask HN: Toronto/GTA mastermind around side income for big corp. dev?             |
|   ["0.9821603298187256","1.8601855117594823E-5","0.01782100833952427"] | Ask HN: What are good resources on strategy and decision making for your career? |
|   ["0.8611106276512146","0.06648492068052292","0.07240450382232666"]   | Forget about promises, use harvests                                              |
+------------------------------------------------------------------------+----------------------------------------------------------------------------------+

API

מוסיפים משרה חדשה ומאכלסים את מאפיין jobs#configuration.query כמו בגוף הבקשה. מחליפים את project_id בשם הפרויקט.

{
  "query": "SELECT * FROM ML.PREDICT(MODEL `project_id.bqml_tutorial.imported_tf_model`, (SELECT * FROM input_data))"
}

BigQuery DataFrames

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

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

משתמשים בפונקציה bigframes.bigquery.ml.predict כדי להפעיל את מודל TensorFlow:

import bigframes.pandas as bpd
from bigframes.bigquery import ml

# Set partial ordering mode for BigQuery DataFrames.
# For more information, see the BigQuery DataFrames performance documentation:
# https://cloud.google.com/bigquery/docs/dataframes-performance#partial-ordering-mode
bpd.options.bigquery.ordering_mode = "partial"

df = bpd.read_gbq("bigquery-public-data.hacker_news.full")
df_pred = df.rename(columns={"title": "input"})

# Use the ml.predict method to predict results using your model.
# For more information, see the BigQuery DataFrames API reference documentation:
# https://dataframes.bigquery.dev/reference/api/bigframes.bigquery.ml.predict.html#bigframes.bigquery.ml.predict
predictions = ml.predict(
    your_model_id,  # For example: "bqml_tutorial.imported_tf_model"
    input_=df_pred,
)
predictions.peek(5)

התוצאות אמורות להיראות כך:

המחשה של התוצאה

בתוצאות השאילתה, העמודה dense_1 מכילה מערך של ערכי הסתברות, והעמודה input מכילה את ערכי המחרוזת התואמים מטבלת הקלט. כל ערך של רכיב במערך מייצג את ההסתברות שמחרוזת הקלט התואמת היא כותרת של מאמר מפרסום מסוים.

הסרת המשאבים

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

מחיקת הפרויקט

המסוף

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

gcloud

    כדי למחוק Google Cloud פרויקט:

    gcloud projects delete PROJECT_ID

מחיקת משאבים בודדים

לחלופין, אפשר להסיר את המשאבים הספציפיים שבהם השתמשתם במדריך הזה:

  1. מחיקת המודל המיובא.

  2. אופציונלי: מחיקת מערך הנתונים.

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