AI-Assisted Data Science with BigQuery

1. מבוא

סקירה כללית

בשיעור ה-Lab הזה תלמדו על תהליך עבודה של מדע נתונים מולטי-מודאלי ב-BigQuery, במסגרת תרחיש של נדל"ן. תתחילו עם מערך נתונים גולמי של רשימות בתים ותמונות שלהם, תעשירו את הנתונים האלה באמצעות AI כדי לחלץ תכונות חזותיות, תיצרו מודל אשכול כדי לגלות פלחי שוק נפרדים, ולבסוף תיצרו כלי חיפוש חזותי עוצמתי באמצעות הטמעות וקטוריות.

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

מה תלמדו

  • הכנת מערך נתונים גולמי של רשימות נדל"ן לניתוח באמצעות הנדסת תכונות.
  • העשרת כרטיסי הנכס באמצעות פונקציות ה-AI של BigQuery כדי לנתח תמונות של בתים ולזהות מאפיינים חזותיים מרכזיים.
  • ליצור ולהעריך מודל K-means באמצעות BigQuery Machine Learning (BQML) כדי לפלח נכסים לאשכולות נפרדים.
  • יצירת מודל אוטומטית באמצעות Data Science Agent כדי ליצור מודל אשכולות עם Python.
  • ליצור הטמעות של תמונות של בתים כדי להפעיל כלי לחיפוש חזותי, ולמצוא בתים דומים באמצעות שאילתות טקסט או תמונות.

דרישות מוקדמות

לפני שמתחילים את שיעור ה-Lab הזה, חשוב להכיר את הנושאים הבאים:

  • ידע בסיסי ב-SQL ובשפת התכנות Python.
  • הרצת קוד Python ב-notebook של Jupyter.

‫2. לפני שמתחילים

יצירת פרויקט ב-Google Cloud

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

בחירת פרויקט

  1. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט

הפעלת ממשקי API באמצעות Cloud Shell

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

  1. לוחצים על Activate Cloud Shell (הפעלת Cloud Shell) בחלק העליון של מסוף Google Cloud:

הפעלת Cloud Shell

  1. אחרי שמתחברים ל-Cloud Shell, מריצים את הפקודה הבאה כדי לאמת את האימות ב-Cloud Shell:
gcloud auth list
  1. מריצים את הפקודה הבאה כדי לוודא שהפרויקט מוגדר לשימוש ב-gcloud:
gcloud config list project
  1. אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

הפעלת ממשקי API

  1. מריצים את הפקודה הבאה כדי להפעיל את כל ממשקי ה-API והשירותים הנדרשים:
gcloud services enable bigquery.googleapis.com \
                       bigqueryunified.googleapis.com \
                       cloudaicompanion.googleapis.com \
                       aiplatform.googleapis.com
  1. אם הפקודה תפעל בהצלחה, תוצג הודעה שדומה לזו שמופיעה בהמשך:
Operation "operations/..." finished successfully.
  1. יוצאים מ-Cloud Shell.

3. פתיחת מחברת Lab ב-BigQuery Studio

  1. במסוף Google Cloud, עוברים אל תפריט הניווט > BigQuery.

לחצן החץ לתפריט נפתח

  1. בחלונית BigQuery Studio, לוחצים על לחצן החץ לתפריט הנפתח, מעבירים את העכבר מעל Notebook ובוחרים באפשרות Upload (העלאה).

לחצן החץ לתפריט נפתח

  1. בוחרים בלחצן האפשרויות כתובת URL ומזינים את כתובת ה-URL הבאה:

https://github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/ai-assisted-data-science/ai-assisted-data-science.ipynb

  1. מגדירים את האזור ל-us-central1 ולוחצים על העלאה.

העלאת notebook מ-GitHub

  1. כדי לפתוח את המחברת, לוחצים על החץ לתפריט הנפתח בחלונית Explorer שכוללת את מזהה הפרויקט. לוחצים על התפריט הנפתח מחברות. לוחצים על ה-Notebook ai-assisted-data-science.

פתיחת מסמך notebook

  1. (אופציונלי) כדי לפנות מקום, אפשר לכווץ את תפריט הניווט של BigQuery ואת תוכן העניינים של המחברת.

כיווץ החלוניות

4. התחברות לסביבת זמן ריצה והרצת קוד ההגדרה

  1. לוחצים על חיבור. אם מופיע חלון קופץ, מאשרים את השימוש ב-Colab Enterprise עם המשתמש. ה-notebook יתחבר אוטומטית לסביבת ריצה. הפעולה הזו עשויה להימשך כמה דקות.

התחברות לסביבת זמן ריצה

  1. אחרי שהסביבה תוגדר, תראו את האפשרויות הבאות:

סביבת הרצה פעילה

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

הרצת קוד ההגדרה

5. הכנת נתונים והנדסת תכונות

בקטע הזה תעברו על השלב החשוב הראשון בכל פרויקט של מדעי הנתונים: הכנת הנתונים. מתחילים ביצירת מערך נתונים ב-BigQuery כדי לארגן את העבודה, ואז טוענים את הנתונים הגולמיים של הנדל"ן והדיור מקובץ CSV ב-Cloud Storage לטבלה חדשה.

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

6. העשרה מולטימודאלית באמצעות פונקציות AI

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

כשמקשרים את BigQuery למודל Gemini, אפשר לחלץ תכונות חדשות וחשובות מתמונות (למשל, אם נכס נמצא ליד מים ותיאור קצר של הבית) ישירות באמצעות SQL.

7. אימון מודל באמצעות אשכולות K-Means

אחרי שהעשרתם את מערך הנתונים, אתם יכולים לבנות מודל ללמידת מכונה. המטרה היא לפלח את רשימות הבתים לקבוצות נפרדות, ואתם עושים את זה באמצעות אימון מודל אשכולות K-means ישירות ב-BigQuery באמצעות BigQuery Machine Learning‏ (BQML). במסגרת השלב הזה, אתם גם רושמים את המודל במרשם המודלים של Vertex AI, וכך הוא זמין באופן מיידי במערכת האקולוגית הרחבה יותר של MLOps ב-Google Cloud.

כדי לוודא שהמודל נרשם בהצלחה, אפשר למצוא אותו במרשם המודלים של Vertex AI באופן הבא:

  1. ב-Google Cloud Console, לוחצים על תפריט הניווט (☰) בפינה הימנית העליונה.
  2. גוללים לקטע Vertex AI ולוחצים על Model Registry. עכשיו המודל שלכם ב-BQML יופיע ברשימה לצד כל המודלים המותאמים אישית האחרים.

מעבר למרשם המודלים

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

מעבר למרשם המודלים

אחרי שבודקים את Model Registry, אפשר לחזור למחברת Colab ב-BigQuery באמצעות השלבים הבאים:

  1. בתפריט הניווט (☰), עוברים אל BigQuery > Studio.
  2. מרחיבים את התפריטים בחלונית חיפוש כדי למצוא את המחברת ולפתוח אותה.

8. הערכה וחיזוי של מודלים

אחרי שמסיימים לאמן את המודל, השלב הבא הוא להבין את האשכולות שהוא יצר. כאן משתמשים בפונקציות של BigQuery Machine Learning כמו ML.EVALUATE ו-ML.CENTROIDS כדי לנתח את איכות המודל ואת המאפיינים המגדירים של כל פלח.

לאחר מכן משתמשים ב-ML.PREDICT כדי להקצות כל בית לאשכול. כשמריצים את השאילתה הזו באמצעות הפקודה הקסומה %%bigquery df, התוצאות נשמרות ב-pandas DataFrame בשם df. כך הנתונים יהיו זמינים באופן מיידי לשלבי Python הבאים. הדוגמה הזו ממחישה את יכולת הפעולה ההדדית בין SQL ל-Python ב-Colab Enterprise.

9. הדמיה ופרשנות של אשכולות

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

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

10. יצירת תיאורים של אשכולות באמצעות מודלים של Gemini

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

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

אתם יכולים לשנות את ההנחיה כרצונכם ולהתנסות עם התוצאות.

11. אוטומציה של יצירת מודלים באמצעות Data Science Agent

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

כדי ליצור את המודל ולהריץ אותו באמצעות הסוכן:

  1. בחלונית BigQuery Studio, לוחצים על לחצן החץ לתפריט הנפתח, מעבירים את העכבר מעל Notebook ובוחרים באפשרות Empty Notebook (מחברת ריקה). כך קוד הסוכן לא יפריע למחברת המעבדה המקורית.

פותחים מסמך notebook חדש

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

פותחים מסמך notebook חדש

  1. מתחילים להקליד @listing_multimodal בחלונית הצ'אט ולוחצים על הטבלה. הפעולה הזו מגדירה במפורש את הטבלה listings_multimodal כהקשר.

הוספת הקשר של הטבלה לסוכן

  1. מעתיקים את ההנחיה שלמטה ומזינים אותה בתיבת הצ'אט של הסוכן. לאחר מכן, לוחצים על שליחה כדי לשלוח את ההנחיה לסוכן.
    Use the selected table to generate a k-means clustering model with 3 clusters for housing listings. Then, help me understand the characteristics of each cluster so I can market to them as a real estate professional. Use Python.
    

נותנים לסוכן הנחיה ושולחים אותה

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

אישור תוכנית הסוכן

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

הרצת קוד של סוכן

  1. בסיום, פשוט סוגרים את הכרטיסייה החדשה של המחברת וחוזרים לכרטיסייה המקורית ai-assisted-data-science.ipynb כדי להמשיך לקטע האחרון של ה-Lab.

12. חיפוש מרובה מצבים באמצעות הטמעות וחיפוש וקטורי

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

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

תשתמשו במודל multimodalembedding כדי ליצור את הווקטורים האלה לכל כרטיסי המוצר. אחרי שיוצרים אינדקס וקטורי כדי להאיץ את החיפושים, מבצעים שני סוגים של חיפוש דמיון: חיפוש טקסט לתמונה (מציאת בתים שתואמים לתיאור) וחיפוש תמונה לתמונה (מציאת בתים שנראים כמו תמונה לדוגמה).

את כל הפעולות האלה מבצעים ב-BigQuery, באמצעות פונקציות כמו ML.GENERATE_EMBEDDING ליצירת הטבעות או VECTOR_SEARCH לחיפוש דמיון.

13. ניקוי

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

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

# Delete the BigQuery tables
!bq rm --table -f housing_dataset.listings
!bq rm --table -f housing_dataset.listings_multimodal
!bq rm --table -f housing_dataset.home_embeddings

# Delete the remote model
!bq rm --model -f housing_dataset.gemini
!bq rm --model -f housing_dataset.kmeans_clustering_model
!bq rm --model -f housing_dataset.multimodal_embedding_model

# Delete the remote connection
!bq rm --connection --project_id=$PROJECT_ID --location=us ai_connection

# Delete the BigQuery dataset
!bq rm -r -f $PROJECT_ID:housing_dataset

לבסוף, אפשר למחוק את ה-notebook עצמו:

  1. בחלונית Explorer ב-BigQuery Studio, מרחיבים את הפרויקט ואת הצומת Notebooks.
  2. לוחצים על סמל האפשרויות הנוספות (3 נקודות אנכיות) לצד מחברת ai-assisted-data-science.
  3. בוחרים באפשרות מחיקה.

14. מעולה!

כל הכבוד, סיימתם את ה-Codelab!

מה נכלל

  • הכנת מערך נתונים גולמי של רשימות נדל"ן לניתוח באמצעות הנדסת תכונות.
  • העשרת כרטיסי הנכס באמצעות פונקציות ה-AI של BigQuery כדי לנתח תמונות של בתים ולזהות מאפיינים חזותיים מרכזיים.
  • ליצור ולהעריך מודל K-means באמצעות BigQuery Machine Learning ‏ (BQML) כדי לפלח נכסים לאשכולות נפרדים.
  • יצירת מודל אוטומטית באמצעות Data Science Agent כדי ליצור מודל אשכולות עם Python.
  • ליצור הטמעות של תמונות של בתים כדי להפעיל כלי לחיפוש חזותי, ולמצוא בתים דומים באמצעות שאילתות טקסט או תמונות.