חיזוי לדירוג סרטים באמצעות 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 של נקודת קצה

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

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

למטה מופיעה סקירה כללית של ארכיטקטורת האפליקציה:

5ae50607c0f2db20.png

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

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

מה תפַתחו

תצרו

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

2. דרישות

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

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

יצירת הפרויקט

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

הפעלת Cloud Shell

  1. תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud וכוללת את bq: במסוף Cloud, לוחצים על 'הפעלת 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. הכנת נתוני אימון

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

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

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

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

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

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

cd movie-score
  1. משתמשים בפקודה bq load כדי לטעון את קובץ ה-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 כדי להריץ שאילתות. סביבת העבודה של 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 עצמו, לרשום את המודל ב-Vertex AI ולחשוף את נקודת הקצה. אפשר לעיין במאמרי העזרה בנושא BigQuery AutoML. עם זאת, בדוגמה הזו נשתמש ב-Vertex AI AutoML כדי ליצור את המודל.

יצירת מערך נתונים ב-Vertex AI

עוברים אל Vertex AI מ-Google Cloud Console, מפעילים את Vertex AI API אם עדיין לא עשיתם את זה, מרחיבים את הנתונים, בוחרים באפשרות Datasets (מערכי נתונים), לוחצים על Create data set (יצירת מערך נתונים), בוחרים בסוג הנתונים TABULAR (טבלאי) ובאפשרות Regression / classification (רגרסיה / סיווג), ואז לוחצים על Create (יצירה):

4104c75c34cbd2d9.png

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

בדף הבא, בוחרים מקור נתונים. בוחרים באפשרות Select a table or view from BigQuery (בחירת טבלה או תצוגה מפורטת מ-BigQuery) ובוחרים את הטבלה מ-BigQuery בשדה BigQuery path BROWSE (נתיב BigQuery עיון). לחץ על 'המשך'.

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

b787ef18dbca4cff.png

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

אימון המודל

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

bf095263d57106de.png

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

לוחצים על Start Training (התחלת אימון) כדי להתחיל לאמן את המודל החדש.

e72b004a17849bd.png

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

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

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

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

95fb4495618174f0.png

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

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

זוכרים את נקודת הקצה ופרטים אחרים משלב הפריסה של ה-ML? אנחנו נשתמש בזה כאן, ומכיוון שאנחנו משתמשים ב-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. בדף הבא, בוחרים באפשרות Runtime (Java 11), באפשרות Source Code (Inline or upload) ומתחילים לערוך.

13df616369ca5951.png

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

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

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

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

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

8. מזל טוב

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