ניתוח תמונות

במדריך הזה נסביר איך לשלב את BigQuery ML עם Gemini כדי להפיק תובנות מנתוני תמונות לא מובְנים. במדריך הזה יוצרים מודל מרוחק שמבוסס על gemini-2.5-flash ומשתמשים בפונקציה AI.GENERATE_TEXT כדי לחלץ אוטומטית מטא-נתונים, כמו שמות ומשנות יציאה לאקרנים, מאוסף של פוסטרים של סרטים.

מטרות

  • יצירת טבלת אובייקטים ב-BigQuery על נתוני תמונות בקטגוריה של Cloud Storage.
  • יוצרים מודל מרוחק של BigQuery ML שמכוון למודל Gemini Enterprise Agent Platform gemini-2.5-flash.
  • משתמשים במודל מרוחק עם הפונקציה AI.GENERATE_TEXT כדי לזהות את הסרטים שמשויכים לקבוצה של כרזות סרטים.

עלויות

במדריך הזה השתמשנו ברכיבים הבאים של Cloud de Confiance, והשימוש בהם כרוך בתשלום:

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

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

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

  1. בדף לבחירת הפרויקט במסוף Cloud de Confiance , בוחרים פרויקט ב- Cloud de Confiance או יוצרים אותו.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים

    כניסה לדף לבחירת הפרויקט

  2. מוודאים שהחיוב מופעל בפרויקט Cloud de Confiance .

  3. מפעילים את ממשקי ה-API‏ BigQuery,‏ BigQuery Connection ו-Agent Platform.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    הפעלת ממשקי ה-API

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

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

  • יצירה ושימוש במערכי נתונים, בחיבורים ובמודלים של BigQuery: ניהול BigQuery‏ (roles/bigquery.admin).
  • נותנים הרשאות לחשבון השירות של החיבור: אדמין IAM של פרויקט (roles/resourcemanager.projectIamAdmin).

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

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

  • יצירת מערך נתונים: bigquery.datasets.create
  • יצירה, הקצאה ושימוש בחיבור: bigquery.connections.*
  • הגדרת החיבור המוגדר כברירת מחדל: bigquery.config.*
  • מגדירים את ההרשאות לחשבון השירות: resourcemanager.projects.getIamPolicy ו- resourcemanager.projects.setIamPolicy
  • יצירת טבלת אובייקטים: bigquery.tables.create ו- bigquery.tables.update
  • יצירת מודל והרצת הסקה:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

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

הכנת הסביבה

כדי לבצע היסק (inference) ב-BigQuery ML בטבלאות של אובייקטים באמצעות gemini-2.5-flash, צריך להקצות מקום שמור ב-BigQuery לפרויקט. אם כבר הוקצתה הזמנה לפרויקט, אפשר לדלג על השלב הזה.

יצירת בקשה לשמירת מקום

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

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על ניהול קיבולת.

  3. לוחצים על יצירת הזמנה.

  4. בדף Create reservation, מבצעים את הפעולות הבאות:

    1. בשדה Reservation name (שם ההזמנה), מזינים bqml-tutorial-reservation.
    2. בקטע Location (מיקום), בוחרים באפשרות us (multiple regions in United States) (ארה"ב (מספר אזורים בארצות הברית)).
    3. משאירים את שאר הגדרות ברירת המחדל כמו שהן ולוחצים על שמירה.

הקצאת ההזמנה

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

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על ניהול קיבולת.

  3. בטבלה Slot Reservations (הזמנות של משבצות זמן), מוצאים את ההזמנה שרוצים להקצות לפרויקט.

  4. לוחצים על הצגת פעולות > יצירת מטלה.

  5. בקטע Create an assignment (יצירת מטלה), לוחצים על Browse (עיון) ובוחרים את הפרויקט.

  6. בשדה Job type (סוג העבודה), בוחרים באפשרות QUERY (שאילתה). הבחירה הזו מבטיחה ששאילתות ה-SQL ישתמשו במשבצות של ההזמנה הזו.

  7. לוחצים על יצירה.

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

יוצרים מערך נתונים ב-BigQuery לאחסון מודל ה-ML.

המסוף

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

    לדף BigQuery

  2. בחלונית Explorer, לוחצים על שם הפרויקט.

  3. לוחצים על הצגת פעולות > יצירת מערך נתונים.

  4. בדף Create dataset, מבצעים את הפעולות הבאות:

    • בשדה Dataset ID (מזהה מערך הנתונים), מזינים bqml_tutorial.

    • בקטע Location type, בוחרים באפשרות Multi-region ואז בוחרים באפשרות US.

    • משאירים את הגדרות ברירת המחדל שנותרו כמו שהן ולוחצים על Create dataset (יצירת מערך נתונים).

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"
  }
}

יצירת טבלת האובייקטים

צור טבלת אובייקטים של תמונות פוסטרים של סרטים בקטגוריה הציבורית של Cloud Storage. טבלת האובייקטים מאפשרת לכם לנתח את התמונות בלי להעביר אותן מ-Cloud Storage.

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את השאילתה הבאה כדי ליצור את טבלת האובייקטים:

    CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.movie_posters`
      WITH CONNECTION DEFAULT
      OPTIONS (
        object_metadata = 'SIMPLE',
        uris =
          ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']);

יצירת המודל המרוחק

יצירת מודל מרוחק שמייצג מודל של Agent Platform gemini-2.5-flash:

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את השאילתה הבאה כדי ליצור את המודל המרוחק:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini-vision`
      REMOTE WITH CONNECTION DEFAULT
      OPTIONS (ENDPOINT = 'gemini-2.5-flash');

    יכול להיות שיחלפו כמה דקות עד שהשאילתה תושלם, ואז מודל gemini-vision יופיע במערך הנתונים bqml_tutorial בחלונית Explorer. מכיוון שהשאילתה משתמשת בהצהרת CREATE MODEL כדי ליצור מודל, אין תוצאות לשאילתה.

ניתוח של כרזות סרטים

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

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את השאילתה הבאה כדי לנתח את תמונות הפוסטרים של הסרטים:

    CREATE OR REPLACE TABLE
      `bqml_tutorial.movie_posters_results` AS (
      SELECT
        uri,
       result
      FROM
        AI.GENERATE_TEXT( MODEL `bqml_tutorial.gemini-vision`,
          TABLE `bqml_tutorial.movie_posters`,
          STRUCT( 0.2 AS temperature,
            'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer.' AS PROMPT)));
        
  3. בעורך השאילתות, מריצים את ההצהרה הבאה כדי להציג את נתוני הטבלה:

    SELECT * FROM `bqml_tutorial.movie_posters_results`;

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

    +--------------------------------------------+----------------------------------+
    | uri                                        | result                           |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/little_annie_rooney.jpg            |  "title": "Little Annie Rooney", |
    |                                            |  "year": 1912                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/mighty_like_a_mouse.jpg            |  "title": "Mighty Like a Moose", |
    |                                            |  "year": 1926                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/brown_of_harvard.jpeg              |  "title": "Brown of Harvard",    |
    |                                            |  "year": 1926                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    

עיצוב הפלט של המודל

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

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

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את השאילתה הבאה כדי לעצב את הנתונים:

    CREATE OR REPLACE TABLE
      `bqml_tutorial.movie_posters_results_formatted` AS (
      SELECT
        uri,
        JSON_QUERY(RTRIM(LTRIM(results.result, " ```json"), "```"), "$.title") AS title,
        JSON_QUERY(RTRIM(LTRIM(results.result, " ```json"), "```"), "$.year") AS year
      FROM
        `bqml_tutorial.movie_posters_results` results );
  3. בעורך השאילתות, מריצים את ההצהרה הבאה כדי להציג את נתוני הטבלה:

    SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;

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

    +--------------------------------------------+----------------------------+------+
    | uri                                        | title                      | year |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "Barque sortant du port"   | 1895 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/barque_sortant_du_port.jpeg        |                            |      |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "The Great Train Robbery"  | 1903 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/the_great_train_robbery.jpg        |                            |      |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "Little Annie Rooney"      | 1912 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/little_annie_rooney.jpg            |                            |      |
    +--------------------------------------------+----------------------------+------+
    

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

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

    כניסה לדף Manage resources

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

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

אם רוצים להשתמש שוב בפרויקט, צריך למחוק את המשאבים שיצרתם בשביל המדריך.

מחיקת מערך הנתונים

המסוף

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

DROP SCHEMA IF EXISTS `bqml_tutorial` CASCADE;

BQ

מחיקת מערך הנתונים bqml_tutorial כולו וכל התוכן שלו:

bq rm -r bqml_tutorial

מחיקת ההזמנה

המסוף

אם יצרתם הזמנה ב-BigQuery כחלק מהמדריך הזה, מומלץ להסיר אותה כדי להימנע מחיובים נוספים על יחידות קיבולת.

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

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על ניהול קיבולת.

  3. בטבלה Slot Reservations, מחפשים את bqml-tutorial-reservation.

  4. לוחצים על הצגת פעולות > מחיקה.

BQ

אם יצרתם הזמנה ב-BigQuery בשם bqml-tutorial-reservation במיקום us, אתם יכולים להשתמש בפקודה הבאה כדי להסיר אותה:

bq rm --reservation --location=us bqml-tutorial-reservation

מחיקת החיבור

המסוף

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

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer, מאתרים את הפרויקט ולוחצים על Connections.

  3. בטבלה, מחפשים את החיבור.

  4. לוחצים על הצגת פעולות > מחיקה.

BQ

מחיקת החיבור:

bq rm --connection --location=us CONNECTION_ID

מחליפים את CONNECTION_ID במזהה החיבור בפועל.

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