מדריך: הרצת הסקה בטבלת אובייקטים באמצעות מודל וקטור תכונות
במדריך הזה נסביר איך ליצור טבלת אובייקטים על סמך התמונות ממערך הנתונים של הפרחים, ואז להריץ הסקה על טבלת האובייקטים הזו באמצעות המודל MobileNet V3.
מודל MobileNet V3
מודל MobileNet V3 מנתח קובצי תמונות ומחזיר מערך של וקטורי מאפיינים. מערך וקטור המאפיינים הוא רשימה של רכיבים מספריים שמתארים את המאפיינים של התמונות שנותחו. כל וקטור מאפיינים מתאר מרחב מאפיינים רב-ממדי, ומספק את הקואורדינטות של התמונה במרחב הזה. אתם יכולים להשתמש במידע על וקטור המאפיינים של תמונה כדי לסווג אותה בצורה מדויקת יותר, למשל באמצעות דמיון קוסינוס כדי לקבץ תמונות דומות.
הקלט של המודל MobileNet V3 מקבל טנזור של DType tf.float32 בצורה [-1, 224, 224, 3]. הפלט הוא מערך של טנזורים של tf.float32 בצורה [-1, 1024].
ההרשאות הנדרשות
- כדי ליצור את מערך הנתונים, צריך את ההרשאה
bigquery.datasets.create. כדי ליצור את משאב החיבור, צריך את ההרשאות הבאות:
bigquery.connections.createbigquery.connections.get
כדי לתת הרשאות לחשבון השירות של החיבור, צריך את ההרשאה הבאה:
resourcemanager.projects.setIamPolicy
כדי ליצור את טבלת האובייקטים, צריך את ההרשאות הבאות:
bigquery.tables.createbigquery.tables.updatebigquery.connections.delegate
כדי ליצור את הקטגוריה, נדרשת ההרשאה
storage.buckets.create.כדי להעלות את מערך הנתונים והמודל ל-Cloud Storage, צריך את ההרשאות
storage.objects.createו-storage.objects.get.כדי לטעון את המודל ל-BigQuery ML, אתם צריכים את ההרשאות הבאות:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
כדי להריץ הסקה, צריך את ההרשאות הבאות:
-
bigquery.tables.getDataבטבלת האובייקטים -
bigquery.models.getDataבמודל bigquery.jobs.create
-
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
- BigQuery: You incur storage costs for the object table you create in BigQuery.
- BigQuery ML: You incur costs for the model you create and the inference you perform in BigQuery ML.
- Cloud Storage: You incur costs for the objects you store in Cloud Storage.
בעזרת מחשבון העלויות אתם יכולים להעריך את העלויות בהתאם לשימוש הצפוי.
למידע נוסף על מחירי האחסון ב-BigQuery, קראו את המאמר מחירי האחסון במסמכי התיעוד של BigQuery.
למידע נוסף על התמחור של BigQuery ML, קראו את המאמר התמחור של BigQuery ML במסמכי התיעוד של BigQuery.
מידע נוסף על התמחור של Cloud Storage זמין בדף התמחור של Cloud Storage.
לפני שמתחילים
-
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.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery and BigQuery Connection API APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
יצירת בקשה לשמירת מקום
כדי להשתמש במודל מיובא עם טבלת אובייקטים, צריך ליצור הקצאה שמשתמשת במהדורת Enterprise או Enterprise Plus של BigQuery, ואז ליצור הקצאת משאבים שמשתמשת בסוג המשימה QUERY.
יצירת קבוצת נתונים
יוצרים מערך נתונים בשם mobilenet_inference_test:
SQL
נכנסים לדף BigQuery.
בחלונית Editor, מריצים את הצהרת ה-SQL הבאה:
CREATE SCHEMA `PROJECT_ID.mobilenet_inference_test`;
מחליפים את
PROJECT_IDבמזהה הפרויקט.
BQ
מפעילים את Cloud Shell במסוף Google Cloud .
מריצים את הפקודה
bq mkכדי ליצור את קבוצת הנתונים:bq mk --dataset --location=us PROJECT_ID:resnet_inference_test
מחליפים את
PROJECT_IDבמזהה הפרויקט.
יצירת חיבור
יוצרים חיבור בשם lake-connection:
המסוף
נכנסים לדף BigQuery.
בחלונית השמאלית, לוחצים על database Data Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית נתונים, לוחצים על הוספת נתונים.
תיבת הדו-שיח Add data נפתחת.
בחלונית Filter By, בקטע Data Source Type, בוחרים באפשרות Databases.
אפשר גם להזין
Vertex AIבשדה Search for data sources.בקטע Featured data sources, לוחצים על Vertex AI.
לוחצים על כרטיס הפתרון מודלי AI של Vertex: איחוד BigQuery.
ברשימה Connection type, בוחרים באפשרות Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).
בשדה Connection ID, מקלידים
lake-connection.לוחצים על יצירת חיבור.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Connections ובוחרים את החיבור
us.lake-connection.בחלונית Connection info, מעתיקים את הערך מהשדה Service account ID. אתם צריכים את המידע הזה כדי לתת הרשאה לחשבון השירות של החיבור בקטגוריה של Cloud Storage שתיצרו בשלב הבא.
BQ
מריצים את הפקודה
bq mkב-Cloud Shell כדי ליצור את החיבור:bq mk --connection --location=us --connection_type=CLOUD_RESOURCE \ lake-connectionמריצים את הפקודה
bq showכדי לאחזר מידע על החיבור:bq show --connection us.lake-connectionבעמודה
properties, מעתיקים את הערך של המאפייןserviceAccountIdושומרים אותו במקום כלשהו. אתם צריכים את המידע הזה כדי לתת הרשאות לחשבון השירות של החיבור.
יצירת קטגוריה של Cloud Storage
- יצירת קטגוריה של Cloud Storage
- יוצרים שתי תיקיות בקטגוריה, אחת בשם
mobilenetלקובצי המודל ואחת בשםflowersלמערך הנתונים.
מתן הרשאות לחשבון השירות של החיבור
המסוף
נכנסים לדף IAM & Admin.
לוחצים על הענקת גישה.
תיבת הדו-שיח Add principals נפתחת.
בשדה New principals, מזינים את מזהה חשבון השירות שהעתקתם קודם.
בשדה Select a role, בוחרים באפשרות Cloud Storage ואז באפשרות Storage Object Viewer.
לוחצים על Save.
gcloud
ב-Cloud Shell, מריצים את הפקודה gcloud storage buckets add-iam-policy-binding:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:MEMBER \ --role=roles/storage.objectViewer
מחליפים את MEMBER במזהה של חשבון השירות שהעתקתם קודם. מחליפים את BUCKET_NAME בשם הקטגוריה שיצרתם קודם.
מידע נוסף זמין במאמר הוספת חשבון משתמש למדיניות ברמת הקטגוריה.
העלאת מערך הנתונים ל-Cloud Storage
מורידים את קובצי מערך הנתונים ומעבירים אותם ל-Cloud Storage:
- מורידים את קבוצת הנתונים של הפרחים למחשב המקומי.
- מחלצים את קובץ ה-
flower_photos.tgz. - מעלים את התיקייה
flower_photosלתיקייהflowersבקטגוריה שיצרתם קודם. - בסיום ההעלאה, מוחקים את הקובץ
LICENSE.txtמהתיקייהflower_photos.
יצירת טבלת אובייקטים
יוצרים טבלת אובייקטים בשם sample_images על סמך מערך הנתונים של הפרחים שהעליתם:
SQL
נכנסים לדף BigQuery.
בחלונית Editor, מריצים את הצהרת ה-SQL הבאה:
CREATE EXTERNAL TABLE mobilenet_inference_test.sample_images WITH CONNECTION `us.lake-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://BUCKET_NAME/flowers/*']);
מחליפים את
BUCKET_NAMEבשם הקטגוריה שיצרתם קודם.
BQ
מריצים את הפקודה bq mk ב-Cloud Shell כדי ליצור את החיבור:
bq mk --table \ --external_table_definition='gs://BUCKET_NAME/flowers/*@us.lake-connection' \ --object_metadata=SIMPLE \ mobilenet_inference_test.sample_images
מחליפים את BUCKET_NAME בשם הקטגוריה שיצרתם קודם.
העלאת המודל ל-Cloud Storage
מורידים את קובצי המודל ומאחסנים אותם ב-Cloud Storage:
- מורידים את המודל MobileNet V3 למחשב המקומי. כך תקבלו קובץ
saved_model.pbותיקייתvariablesלמודל. - מעלים את הקובץ
saved_model.pbואת התיקייהvariablesלתיקייהmobilenetבקטגוריה שיצרתם קודם.
טעינת המודל ל-BigQuery ML
נכנסים לדף BigQuery.
בחלונית Editor, מריצים את הצהרת ה-SQL הבאה:
CREATE MODEL `mobilenet_inference_test.mobilenet` OPTIONS( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/mobilenet/*');
מחליפים את
BUCKET_NAMEבשם הקטגוריה שיצרתם קודם.
בדיקת המודל
בודקים את המודל שהועלה כדי לראות מהם שדות הקלט והפלט שלו:
נכנסים לדף BigQuery.
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז על קבוצת הנתונים
mobilenet_inference_test.עוברים לכרטיסייה מודלים.
לוחצים על המודל
mobilenet.בחלונית המודל שנפתחת, לוחצים על הכרטיסייה Schema.
מעיינים בקטע תוויות. כך מזהים את השדות שהמודל מוציא כפלט. במקרה הזה, הערך של שם השדה הוא
feature_vector.מעיינים בקטע תכונות. כך מזהים את השדות שצריך להזין במודל. אתם מפנים אליהם בהצהרה
SELECTשל הפונקציהML.DECODE_IMAGE. במקרה הזה, הערך של שם השדה הואinputs.
הרצת הסקה
מריצים את ההסקה על טבלת האובייקטים sample_images באמצעות המודל mobilenet:
נכנסים לדף BigQuery.
בחלונית Editor, מריצים את הצהרת ה-SQL הבאה:
SELECT * FROM ML.PREDICT( MODEL `mobilenet_inference_test.mobilenet`, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 224, FALSE) AS inputs FROM mobilenet_inference_test.sample_images) );
התוצאות אמורות להיראות כך:
-------------------------------------------------------------------------------------------------------------- | feature_vector | uri | inputs | —------------------------------------------------------------------------------------------------------------- | 0.850297749042511 | gs://mybucket/flowers/dandelion/3844111216_742ea491a0.jpg | 0.29019609093666077 | —------------------------------------------------------------------------------------------------------------- | -0.27427938580513 | | 0.31372550129890442 | —------------------------- ------------------------ | -0.23189745843410492 | | 0.039215687662363052 | —------------------------- ------------------------ | -0.058292809873819351 | | 0.29985997080802917 | —-------------------------------------------------------------------------------------------------------------
הסרת המשאבים
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.