במדריך הזה תייבאו מודלים של TensorFlow למערך נתונים של BigQuery ML. לאחר מכן, משתמשים בשאילתת SQL כדי ליצור תחזיות מהמודלים המיובאים.
מטרות
- משתמשים בהצהרה
CREATE MODELכדי לייבא מודלים של TensorFlow ל-BigQuery ML. - משתמשים בפונקציה
ML.PREDICTכדי ליצור חיזויים באמצעות המודלים המיובאים של TensorFlow.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
בעזרת מחשבון העלויות אתם יכולים להעריך את העלויות בהתאם לשימוש הצפוי.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
צריך לוודא ש-BigQuery API מופעל.
- מוודאים שיש לכם את ההרשאות הנדרשות כדי לבצע את המשימות שמפורטות במסמך הזה.
התפקידים הנדרשים
אם אתם יוצרים פרויקט חדש, אתם ה-Project Owner של הפרויקט ומוענקות לכם כל ההרשאות הנדרשות ב-Identity and Access Management (IAM) כדי להשלים את המדריך הזה.
אם אתם משתמשים בפרויקט קיים, התפקיד אדמין של BigQuery Studio (roles/bigquery.studioAdmin) נותן את כל ההרשאות שצריך כדי להשלים את המדריך הזה.
מוודאים שיש לכם את התפקיד או התפקידים הבאים בפרויקט:
אדמין ב-BigQuery Studio (roles/bigquery.studioAdmin).
בדיקת התפקידים
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
-
בעמודה Principal, מחפשים את כל השורות שמזהות אתכם או קבוצה שאתם חברים בה. כדי לברר לאילו קבוצות אתם שייכים, פנו לאדמין.
- בכל השורות שבהן אתם מופיעים, בודקים בעמודה Role אם רשימת התפקידים כוללת את התפקידים הנדרשים.
מתן התפקידים
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
- לוחצים על Grant access.
-
בשדה New principals, מזינים את מזהה המשתמש. בדרך כלל זה המזהה של משתמש במאגר זהויות של כוח עבודה. למידע נוסף, קראו את המאמר ייצוג המשתמשים במאגרי כוח עבודה בכללי מדיניות IAM או פנו לאדמין שלכם.
- לוחצים על Select a role ומחפשים את התפקיד.
- כדי לתת עוד תפקידים, לוחצים על Add another role ומוסיפים אותם.
- לוחצים על Save.
למידע נוסף על הרשאות IAM ב-BigQuery, קראו את המאמר הרשאות ב-BigQuery.
יצירת קבוצת נתונים
כדי ליצור מערך נתונים ב-BigQuery, בוחרים אחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.
ב-Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
בדף Datasets, לוחצים על Create dataset.
בחלונית Create dataset:
בשדה Dataset ID, מזינים
bqml_tutorial.בקטע Data location (מיקום הנתונים), בוחרים באפשרות US (ארה"ב).
משאירים את שאר הגדרות ברירת המחדל כמו שהן.
לוחצים על Create dataset.
BQ
כדי ליצור קבוצת נתונים חדשה, משתמשים בפקודה bq mk --dataset.
יוצרים מערך נתונים בשם
bqml_tutorialומגדירים את מיקום הנתונים ל-US:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
מוודאים שמערך הנתונים נוצר:
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 למערך הנתונים, פועלים לפי השלבים הבאים.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בקטע Create new, לוחצים על שאילתת SQL.
בעורך השאילתות, מזינים את ההצהרה
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.המודל החדש מופיע בחלונית משאבים. המודלים מסומנים בסמל המודל:
.אם בוחרים את המודל החדש בחלונית Resources, המידע על המודל מופיע מתחת ל-עורך השאילתות.
BQ
מייבאים את המודל של 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/*')"
אחרי שמייבאים את המודל, מוודאים שהוא מופיע במערך הנתונים.
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.
מידע נוסף על ייבוא מודלים של 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 המיובא, מבצעים את השלבים הבאים.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בקטע Create new, לוחצים על שאילתת SQL.
בעורך השאילתות, מזינים את השאילתה הזו שמשתמשת בפונקציה
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:
התוצאות אמורות להיראות כך:
בתוצאות השאילתה, העמודה dense_1 מכילה מערך של ערכי הסתברות, והעמודה input מכילה את ערכי המחרוזת התואמים מטבלת הקלט. כל ערך של רכיב במערך מייצג את ההסתברות שמחרוזת הקלט התואמת היא כותרת של מאמר מפרסום מסוים.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים הנפרדים.
מחיקת הפרויקט
המסוף
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
gcloud
כדי למחוק פרויקט ב- Google Cloud :
gcloud projects delete PROJECT_ID
מחיקת משאבים ספציפיים
לחלופין, אפשר להסיר את המשאבים הספציפיים שבהם השתמשתם במדריך הזה:
אופציונלי: מוחקים את מערך הנתונים.
המאמרים הבאים
- לסקירה כללית על BigQuery ML, קראו את המאמר מבוא ל-BigQuery ML.
- כדי להתחיל להשתמש ב-BigQuery ML, קראו את המאמר יצירת מודלים של למידת מכונה ב-BigQuery ML.
- למידע נוסף על ייבוא מודלים של TensorFlow, קראו את המאמר ההצהרה
CREATE MODELלייבוא מודלים של TensorFlow. - למידע נוסף על עבודה עם מודלים, אפשר לעיין במקורות המידע הבאים:
- מידע נוסף על השימוש ב-BigQuery DataFrames API ב-BigQuery Notebook: