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

1. מבוא

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

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

נלמד על שלבי ההטמעה.

מה תפַתחו

תיצורו

  • מערך נתונים ב-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, לוחצים על Activate Cloud Shell (הפעלת 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. לצורך סדנת הקוד הזו, נניח שהנתונים כבר מוכנים ונשתמש בקובץ data שכבר עבר עיבוד.

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

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

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

מגדירים את location לאזור (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 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 בשדה 'עיון' של נתיב BigQuery. לחץ על 'המשך'.

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

b787ef18dbca4cff.png

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

אימון המודל

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

bf095263d57106de.png

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

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

e72b004a17849bd.png

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

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

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

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

95fb4495618174f0.png

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

6. פונקציית Java Cloud להפעלת קריאה ל-ML

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

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

a68272022df062f2.png

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

13df616369ca5951.png

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

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

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

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

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

8. מזל טוב

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