הדרכה: הפעלת הסקה בטבלת אובייקטים באמצעות מודל סיווג
במדריך הזה נסביר איך ליצור טבלת אובייקטים על סמך תמונות ממערך נתונים ציבורי, ואז להריץ הסקת מסקנות בטבלת האובייקטים הזו באמצעות מודל ResNet 50.
מודל ResNet 50
מודל ResNet 50 מנתח קובצי תמונות ומפיק קבוצה של וקטורים שמייצגים את הסבירות שתמונה מסוימת שייכת לסיווג המתאים (לוגיטים). מידע נוסף זמין בקטע Usage (שימוש) בדף של המודל ב-TensorFlow Hub.
הקלט של מודל ResNet 50 הוא טנסור של DType = 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.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
יצירת בקשה לשמירת מקום
כדי להשתמש במודל מיובא עם טבלת אובייקטים, צריך ליצור הזמנה שמשתמשת במהדורות Enterprise או Enterprise Plus של BigQuery, ואז ליצור הקצאת הזמנה שמשתמשת בסוג העבודה QUERY.
יצירת מערך נתונים
יצירת מערך נתונים בשם resnet_inference_test:
SQL
עוברים לדף BigQuery.
בחלונית Editor, מריצים את הצהרת ה-SQL הבאה:
CREATE SCHEMA `PROJECT_ID.resnet_inference_test`;
מחליפים את
PROJECT_IDבמזהה הפרויקט.
BQ
במסוף Google Cloud , מפעילים את Cloud Shell.
מריצים את הפקודה
bq mkכדי ליצור את קבוצת הנתונים:bq mk --dataset --location=us PROJECT_ID:resnet_inference_test
מחליפים את
PROJECT_IDבמזהה הפרויקט.
יצירת חיבור
יוצרים חיבור בשם lake-connection:
המסוף
עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, לוחצים על Add data.
תיבת הדו-שיח הוספת נתונים נפתחת.
בחלונית Filter By, בקטע Data Source Type, בוחרים באפשרות Databases.
אפשרות אחרת היא להזין
Vertex AIבשדה חיפוש מקורות נתונים.בקטע מקורות נתונים מומלצים, לוחצים על Vertex AI.
לוחצים על כרטיס הפתרון Vertex AI Models: BigQuery Federation.
ברשימה Connection type בוחרים באפשרות Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).
בשדה מזהה החיבור, מקלידים
lake-connection.לוחצים על יצירת קישור.
בחלונית Connection info, מעתיקים את הערך מהשדה Service account ID ושומרים אותו במקום כלשהו. המידע הזה נדרש כדי להעניק הרשאות לחשבון השירות של החיבור.
BQ
ב-Cloud Shell, מריצים את הפקודה
bq mkכדי ליצור את החיבור: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 לאחסון קובצי המודל.
מתן הרשאות לחשבון השירות של החיבור
המסוף
עוברים לדף 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 בשם הקטגוריה שיצרתם קודם.
מידע נוסף זמין במאמר בנושא הוספת חשבון משתמש למדיניות ברמת הקטגוריה.
יצירת טבלת אובייקטים
יוצרים טבלת אובייקטים בשם vision_images על סמך קובצי התמונות בקטגוריה הציבורית gs://cloud-samples-data/vision:
SQL
עוברים לדף BigQuery.
בחלונית Editor, מריצים את הצהרת ה-SQL הבאה:
CREATE EXTERNAL TABLE resnet_inference_test.vision_images WITH CONNECTION `us.lake-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/vision/*.jpg'] );
BQ
ב-Cloud Shell, מריצים את הפקודה bq mk כדי ליצור את החיבור:
bq mk --table \
--external_table_definition='gs://cloud-samples-data/vision/*.jpg@us.lake-connection' \
--object_metadata=SIMPLE \
resnet_inference_test.vision_images
העלאת המודל ל-Cloud Storage
מקבלים את קובצי המודל ומוודאים שהם זמינים ב-Cloud Storage:
- מורידים את מודל ResNet 50 למחשב המקומי. כך תקבלו קובץ
saved_model.pbותיקייהvariablesעבור המודל. - מעלים את הקובץ
saved_model.pbואת התיקייהvariablesלקטגוריה שיצרתם קודם.
טעינת המודל ל-BigQuery ML
עוברים לדף BigQuery.
בחלונית Editor, מריצים את הצהרת ה-SQL הבאה:
CREATE MODEL `resnet_inference_test.resnet` OPTIONS( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/*');
מחליפים את
BUCKET_NAMEבשם הקטגוריה שיצרתם קודם.
בדיקת המודל
בודקים את המודל שהועלה כדי לראות מהם שדות הקלט והפלט שלו:
עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

בחלונית Explorer מרחיבים את הפרויקט, לוחצים על Datasets ואז לוחצים על מערך הנתונים
resnet_inference_test.עוברים לכרטיסייה מודלים.
לוחצים על המודל
resnet.בחלונית המודל שנפתחת, לוחצים על הכרטיסייה סכימה.
בודקים את הקטע Labels (תוויות). כאן מציינים את השדות שהמודל מוציא כפלט. במקרה הזה, הערך של שם השדה הוא
activation_49.מעיינים בקטע תכונות. כך מזהים את השדות שצריך להזין במודל. מפנים אליהם בהצהרה
SELECTשל הפונקציהML.DECODE_IMAGE. במקרה הזה, הערך של שם השדה הואinput_1.
הרצת הסקה
מריצים הסקה על טבלת האובייקטים vision_images באמצעות המודל resnet:
עוברים לדף BigQuery.
בחלונית Editor, מריצים את הצהרת ה-SQL הבאה:
SELECT * FROM ML.PREDICT( MODEL `resnet_inference_test.resnet`, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 224, FALSE) AS input_1 FROM resnet_inference_test.vision_images) );
התוצאות אמורות להיראות כך:
------------------------------------------------------------------------------------------------------------------------------------- | activation_49 | uri | input_1 | —------------------------------------------------------------------------------------------------------------------------------------ | 1.0254175464297077e-07 | gs://cloud-samples-data/vision/automl_classification/flowers/daisy/21652746_cc379e0eea_m.jpg | 0.0 | —------------------------------------------------------------------------------------------------------------------------------------ | 2.1671139620593749e-06 | | 0.0 | —-------------------------- ----------- | 8.346052027263795e-08 | | 0.0 | —-------------------------- ----------- | 1.159310958342985e-08 | | 0.0 | —------------------------------------------------------------------------------------------------------------------------------------
הסרת המשאבים
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.