חיזוי לדירוג סרטים באמצעות Vertex AI AutoML

1. מבוא

ב-Codelab הזה, ניצור מודל לחיזוי הציון של סרט באמצעות Vertex AI AutoML, ונפעיל מ-Java Cloud Functions את נקודת הקצה של המודל שנפרסה. אימון המודל מתבצע עם נתונים שמאוחסנים ב-BigQuery ורשום ב-Vertex AI. אפשר לחלק את רשימת השירותים לשני קטעים:

  1. יצירה ופריסה של מודלים של למידת מכונה
  2. טריגר לחיזוי באמצעות ML API

יצירת מודל למידת מכונה:

  1. הנתונים הגיעו מ-CSV ל-BigQuery
  2. שילוב של נתוני BigQuery ב-Vertex AI ליצירת מודלים של AutoML
  3. המודל נפרס במרשם המודלים של Vertex AI ליצירת ממשק API של נקודת קצה (endpoint)

טריגר לחיזוי באמצעות ML API:

  1. Java Cloud Functions כדי להפעיל הפעלה של נקודת הקצה (endpoint) של מודל AutoML שנפרסה, שמקבלת את פרטי הסרט כבקשה מממשק המשתמש, ומחזירה את התוצאה החזויה של הסרט SCORE

בהמשך מוצגת סקירה כללית ארכיטקטונית ברמה גבוהה של האפליקציה:

5ae50607c0f2db20.png

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

בואו נתעמק בשלבי ההטמעה.

מה תפַתחו

תיצור

  • מערך נתונים ב-BigQuery שיכיל את רכיבי הטבלה והמודל
  • מודל Vertex AI AutoML (יצירה ופריסה)
  • טריגר של Java Cloud Functions לחיזוי באמצעות ML API

2. דרישות

  • דפדפן כמו Chrome או Firefox
  • פרויקט ב-Google Cloud שמופעל בו חיוב

אלה הדרישות המוקדמות:

יצירת פרויקט

  1. במסוף Google Cloud, בדף בורר הפרויקטים, בוחרים או יוצרים פרויקט ב-Google Cloud.
  2. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. איך בודקים אם החיוב מופעל בפרויקט
  3. כדי להפעיל את ה-API, צריך לעבור אל BigQuery. אפשר גם לפתוח ישירות את ממשק המשתמש של BigQuery באינטרנט על ידי הזנת כתובת ה-URL הבאה בדפדפן: https://console.cloud.google.com/bigquery

הפעלת Cloud Shell

  1. אתם תשתמשו ב-Cloud Shell, סביבת שורת הפקודה שרצה ב-Google Cloud וכוללת מראש את bq: במסוף Cloud, לוחצים על Activate Cloud Shell בפינה הימנית העליונה: 6757b2fb50ddcc2d.png.
  2. אחרי ההתחברות ל-Cloud Shell, אתם אמורים לראות שכבר בוצע אימות ושהפרויקט כבר מוגדר למזהה הפרויקט שלכם. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהאימות בוצע:
gcloud auth list
  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהפקודה ב-gcloud יודעת על הפרויקט שלכם.
gcloud config list project
  1. אם הפרויקט לא מוגדר, מגדירים אותו באמצעות הפקודה הבאה:
gcloud config set project <PROJECT_ID>

עיינו במאמרי העזרה לפקודות ולשימוש ב-gcloud.

3. נתוני האימון בהכנה

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

4. יצירה וטעינה של מערך הנתונים

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

  1. ב-Cloud Shell, משתמשים בפקודה bq mk כדי ליצור מערך נתונים שנקרא "סרטים".
bq mk --location=<<LOCATION>> movies

מגדירים את המיקום כאזור (asia-south1). חשוב לזכור להגדיר אותו גם כאזור של השלב VERTEX AI (שני המופעים צריכים להיות באותו אזור).

  1. חשוב לוודא שקובץ הנתונים (csv.) מוכן. כדי לשכפל את המאגר ולעבור לפרויקט, מריצים את הפקודות הבאות ב-Cloud Shell:
git clone <<repository link>>

cd movie-score
  1. אפשר להשתמש בפקודה טעינת bq כדי לטעון את קובץ ה-CSV לטבלה של BigQuery (שימו לב שאפשר גם להעלות ישירות מממשק המשתמש של BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
  1. שולחים שאילתה באחת מ-3 הדרכים הבאות:

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

SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

השתמשתי ב-BigQuery Web SQL Workspace כדי להריץ שאילתות. סביבת העבודה של SQL נראית כך:

109a0b2c7155e9b3.png

שימוש בפקודת bq:

bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;

5. שימוש בנתוני BigQuery ב-Vertex AI AutoML

להשתמש בנתונים מ-BigQuery כדי ליצור מודל AutoML ישירות באמצעות Vertex AI. חשוב לזכור שאנחנו יכולים גם לבצע AutoML מ-BigQuery עצמו, לרשום את המודל באמצעות VertexAI ולחשוף את נקודת הקצה. ניתן לעיין במסמכי העזרה של BigQuery AutoML. עם זאת, בדוגמה הזו נשתמש ב-Vertex AI AutoML כדי ליצור את המודל שלנו.

יצירת מערך נתונים של Vertex AI

נכנסים ל-Vertex AI ממסוף Google Cloud, מפעילים את Vertex AI API אם עדיין לא עשיתם זאת, מרחיבים את הנתונים ובוחרים 'מערכי נתונים', לוחצים על 'יצירת קבוצת נתונים', בוחרים באפשרות 'סוג הנתונים TABULAR' ואז בקטע 'רגרסיה / סיווג'. ולוחצים על 'יצירה':

4104c75c34cbd2d9.png

בחירת מקור נתונים

בדף הבא בוחרים מקור נתונים. בוחרים באפשרות 'בחירת טבלה או תצוגה מ-BigQuery' ובוחרים את הטבלה מ-BigQuery בשדה BROWSE בנתיב BigQuery. לחץ על 'המשך'.

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

b787ef18dbca4cff.png

כשבוחרים את טבלת/תצוגת המקור, חשוב לזכור ללחוץ על לחצן הבחירה מתוך רשימת העיון כדי להמשיך בשלבים הבאים. אם תלחצו בטעות על שם הטבלה או התצוגה, תועברו אל Dataplex. אם זה קורה, צריך פשוט לחזור ל-Vertex AI.

אימון המודל

  1. אחרי שיוצרים מערך הנתונים אמור להופיע הדף 'ניתוח' עם האפשרות לאמן מודל חדש. לוחצים על הקישור הזה:

bf095263d57106de.png

  1. משאירים את 'יעד כסיווג', בוחרים באפשרות AutoML בדף הראשון ולוחצים על 'המשך': e50597bc3f29894c.png
  2. נותנים למודל שם ובוחרים בשם עמודת היעד בתור 'ציון'. בתפריט הנפתח שמופיע ולוחצים על 'המשך'.
  3. כדאי גם לעיין במאמר 'ייצוא מערך הנתונים לבדיקה של BigQuery'. שמאפשרת לראות בקלות את קבוצת הבדיקה עם התוצאות במסד הנתונים בצורה יעילה, ללא שכבת שילוב נוספת או צורך להעביר נתונים בין שירותים.
  4. בדף הבא יש לכם אפשרות לבחור את אפשרויות האימון המתקדמות שאתם צריכים ואת השעות שבהן תרצו להגדיר את המודל לאמן. חשוב לשים לב לתמחור לפני הגדלת מספר השעות לצמתים שרוצים להשתמש בהן לאימון.

לוחצים על 'התחלת אימון' כדי להתחיל באימון המודל החדש.

e72b004a17849bd.png

הערכה, פריסה ובדיקה של המודל

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

  1. צפייה בתוצאות האימון 4767b4bbd7cf93fa.png והערכה שלהן
  2. פריסה ובדיקה של המודל באמצעות נקודת הקצה ל-API

אחרי פריסת המודל, נוצרת נקודת קצה ל-API שאפשר להשתמש בה באפליקציה כדי לשלוח בקשות ולקבל בתשובה תוצאות של חיזוי המודל.

95fb4495618174f0.png

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

6. פונקציה של Java Cloud Functions להפעלה של למידת מכונה

חשוב לזכור איך יש לנו את נקודת הקצה ופרטים אחרים משלב הפריסה של למידת מכונה? נשתמש בה כאן, ומכיוון שאנחנו משתמשים ב-Java Cloud Functions, נשתמש ב-pom.xml כדי לטפל ביחסי תלות. אנחנו משתמשים בספריית google-cloud-aiplatform כדי לצרוך את Vertex AI AutoML endpoint API.

  1. מחפשים את Cloud Functions במסוף Google Cloud ולוחצים על 'Create Function' (יצירת פונקציה).
  2. מזינים את פרטי ההגדרות האישיות, כמו 'סביבה', 'שם הפונקציה', 'אזור', 'טריגר' (במקרה הזה, HTTPS), אימות לבחירתכם, מפעילים את האפשרות 'דרישת HTTPS', ולוחצים על 'הבא'/'שמירה'

a68272022df062f2.png

  1. בדף הבא בוחרים באפשרות 'זמן ריצה (Java 11)', 'קוד מקור' (מוטמע או העלאה) ומתחילים לערוך

13df616369ca5951.png

  1. מעתיקים קובצי java ו-pom.xml ממאגר תגים ומדביקים אותם בקבצים המתאימים בעורך המוטבע, אם משתמשים בעורך המקומי (מומלץ), ואז מעתיקים את המקור מהמאגר
  2. בדוגמה הזו, משנים את מזהה הפרויקט, מזהה נקודת הקצה, המיקום ונקודת הקצה בקובץ המקור ב-JavaScript. לתשומת ליבכם: השיטה המומלצת היא להשתמש ב-Secret Manager לאחסון פרטי הכניסה.
  3. בהיקף של Codelab זה, יש להוסיף הערות על החלקים MongoDB במחלקה Java בקוד המקור שהעתקת

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

7. הסרת המשאבים

כדי להימנע מצבירת חיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בפוסט הזה:

  1. במסוף Google Cloud, נכנסים לדף Manage resources:
  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete (מחיקה).
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down

8. מזל טוב

מעולה! יצרתם ופרסתם בהצלחה מודל חיזוי של ציון סרט ב-Vertex AI AutoML והפעלתם את המודל שנפרס מ-Cloud Functions.