1. סקירה כללית
בשיעור ה-Lab הזה תאמנו מודל באמצעות BigQuery Machine Learning, ואז תייצאו ותפרסו את המודל ב-Vertex AI. זהו מוצר ה-AI החדש ביותר ב-Google Cloud.
מה לומדים
במאמר הזה נסביר איך:
- אימון מודל באמצעות BigQuery Machine Learning (BQML)
- ייצוא מודל BQML ל-Cloud Storage
- פריסת מודל BQML מאומן ב-Vertex AI
- קבלת תחזיות לגבי המודל שפרסתם
העלות הכוללת להרצת שיעור ה-Lab הזה ב-Google Cloud היא בערך 2$.
2. מבוא ל-Vertex AI
בשיעור ה-Lab הזה נעשה שימוש במוצר ה-AI החדש ביותר שזמין ב-Google Cloud. Vertex AI משלב את מוצרי ה-ML ב-Google Cloud לחוויית פיתוח חלקה. בעבר, היה אפשר לגשת למודלים שאומנו באמצעות AutoML ולמודלים בהתאמה אישית דרך שירותים נפרדים. המוצר החדש משלב את שניהם ב-API אחד, יחד עם מוצרים חדשים אחרים. אפשר גם להעביר פרויקטים קיימים אל Vertex AI. אם יש לך משוב, אפשר לעיין בדף התמיכה.
Vertex AI כולל מוצרים רבים ושונים לתמיכה בתהליכי עבודה של למידת מכונה מקצה לקצה. בשיעור ה-Lab הזה נתמקד במוצרים שמודגשים בהמשך: Prediction ו-Notebooks.

3. הגדרת הסביבה
כדי להפעיל את ה-codelab הזה, צריך פרויקט ב-Google Cloud Platform שמופעל בו חיוב. כדי ליצור פרויקט, פועלים לפי ההוראות האלה.
שלב 1: הפעלת Compute Engine API
עוברים אל Compute Engine ובוחרים באפשרות הפעלה אם הוא עדיין לא מופעל. תצטרכו את זה כדי ליצור את מופע המחברת.
שלב 2: הפעלת Vertex AI API
עוברים אל הקטע Vertex AI במסוף Cloud ולוחצים על הפעלת Vertex AI API.

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

משם, בוחרים באפשרות New Instance (מופע חדש). לאחר מכן בוחרים את סוג האינסטנס TensorFlow Enterprise 2.3 without GPUs:

משתמשים באפשרויות ברירת המחדל ולוחצים על יצירה. אחרי שהמופע נוצר, בוחרים באפשרות Open JupyterLab:

4. אימון מודל BigQuery ML
בעזרת BigQuery ML אפשר לאמן מודלים מותאמים אישית של למידת מכונה באמצעות נתונים שמאוחסנים ב-BigQuery. אתם יכולים לאמן מודלים ולקבל מהם תחזיות, והכול בשפת SQL. בשיעור ה-Lab הזה נשתמש במערך נתונים שזמין לציבור ב-BigQuery כדי לחזות את הסבירות לאי-תשלום בכרטיס אשראי.
שלב 1: יוצרים מערך נתונים ב-BigQuery בפרויקט
כדי לאמן מודל ב-BigQuery ML, צריך ליצור מערך נתונים בפרויקט כדי לאחסן את המודל. לוחצים על הפרויקט בסרגל התפריטים הימני, ואז בוחרים באפשרות Create Dataset (יצירת קבוצת נתונים):

בשדה Dataset ID (מזהה מערך הנתונים), מזינים את הערך cc_default. משאירים את שאר השדות כמו שהם ולוחצים על Create dataset (יצירת מערך נתונים).
שלב 2: מריצים שאילתת CREATE MODEL
בעורך השאילתות של BigQuery, מריצים את השאילתה CREATE MODEL הבאה כדי ליצור ולאמן מודל BigQuery ML במערך הנתונים הציבורי שבו נשתמש. חשוב להחליף את your-project בשם של פרויקט הענן:
CREATE OR REPLACE MODEL
`your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
input_label_cols=['default_payment_next_month']) AS
SELECT
limit_balance,
sex,
education_level,
marital_status,
age,
pay_0,
pay_2,
pay_3,
pay_4,
pay_5,
pay_6,
bill_amt_1,
bill_amt_2,
bill_amt_3,
bill_amt_4,
bill_amt_5,
bill_amt_6,
pay_amt_1,
pay_amt_2,
pay_amt_3,
pay_amt_4,
pay_amt_5,
pay_amt_6,
default_payment_next_month
FROM
`bigquery-public-data.ml_datasets.credit_card_default`
הפעולה הזו תיצור מודל רגרסיה לוגיסטית שמחזיר ערך מספרי בטווח 0 עד 1, והיא תימשך כדקה. כשהאימון יסתיים, המודל יופיע מתחת למערך הנתונים:

אפשר ללחוץ על המודל כדי לראות את מדדי האימון וההערכה שלו.
5. ייצוא מודל BigQuery ML
אחרי שמכשירים מודל BQML, אפשר להשתמש בתחביר SQL של BQML כדי לקבל תחזיות, או לייצא את המודל כדי לפרוס אותו במקום אחר. בשלב הזה נבצע ייצוא של המודל כדי שנוכל לפרוס אותו ב-Vertex AI, להפעיל אותו באופן מדרגי ולקבל תחזיות.
שלב 1: יצירת קטגוריה של Cloud Storage עבור המודל
בפרטי המודל, לוחצים על ייצוא המודל:

תתבקשו להזין את המיקום ב-Google Cloud Storage (GCS) שאליו תרצו לייצא את הנכסים של המודל. אם עדיין אין לכם קטגוריית GCS, אל דאגה. אנחנו עומדים ליצור אחד. קודם לוחצים על עיון:

אחר כך לוחצים על סמל הפלוס + כדי ליצור מאגר חדש:

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

משתמשים ב-Storage class שמוגדר כברירת מחדל, ובקטע 'בקרת גישה' מוודאים שהאפשרות Uniform מסומנת:

לוחצים על 'המשך' ומשתמשים בערכי ברירת המחדל לשאר האפשרויות. ואז לוחצים על יצירה.
שלב 2: ייצוא של מודל BQML
אחרי שיוצרים את הקטגוריה החדשה, מזינים model-assets (או כל שם אחר שרוצים) בשדה Name ולוחצים על Select:

לוחצים על ייצוא. הפעולה הזו תיצור משימה ב-BigQuery לייצוא המודל בפורמט SavedModel של TensorFlow לקטגוריית GCS החדשה שציינתם. הייצוא יימשך כדקה.
בזמן שהמודל מיוצא, עוברים אל הקטע Storage במסוף Cloud. כשהעבודה תושלם, נכסי המודל ייוצאו אל דלי האחסון שיצרתם זה עתה, בספריית משנה model-assets:

6. ייבוא המודל ל-Vertex AI
בשלב הזה נתייחס למיקום האחסון ב-GCS שאליו ייצאנו את נכסי המודל כדי ליצור את המודל ולייבא אותו ל-Vertex AI.
שלב 1: ייבוא המודל
במסוף Cloud, עוברים אל הקטע Models ב-Vertex AI. משם, בוחרים באפשרות ייבוא:

בשלב הראשון, נותנים למודל את השם predict_default. בוחרים את אותו אזור שבו יצרתם את הקטגוריה (us-central1, europe-west4 או asia-east1). ואז לוחצים על המשך. בהגדרות המודל, משאירים את האפשרות 'ייבוא ארטיפקטים של מודל למאגר חדש מוכן מראש' מסומנת.
בתפריט הנפתח Model framework (מסגרת מודל), בוחרים באפשרות TensorFlow. לאחר מכן בוחרים באפשרות 2.3 כגרסת המסגרת.
בשדה Model artifact location (מיקום ארטיפקט המודל), לוחצים על Browse (עיון), לוחצים על דלי ה-GCS שיצרתם ולוחצים על הספרייה model-assets:

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

7. פריסת המודל בנקודת קצה
אחרי שהעלינו את המודל, השלב הבא הוא ליצור נקודת קצה ב-Vertex. למשאב Model ב-Vertex יכולות להיות משויכות כמה נקודות קצה, ואפשר לפצל את התנועה בין נקודות הקצה.
שלב 1: יצירת נקודת קצה
בדף של המודל, עוברים לכרטיסייה Deploy and test (פריסה ובדיקה) ולוחצים על Deploy to endpoint (פריסה לנקודת קצה):

נותנים לנקודת הקצה שם, כמו default_pred_v1, משאירים את הגדרות פיצול התנועה כמו שהן, ואז בוחרים סוג מכונה לפריסת המודל. השתמשנו ב-n1-highcpu-2 כאן, אבל אתם יכולים לבחור את סוג המכונה שאתם רוצים.
לאחר מכן בוחרים באפשרות Done (סיום) ולוחצים על Continue (המשך). משאירים את הגדרות המיקום שנבחרו כמו שהן ולוחצים על פריסה. ייקח כמה דקות עד שנקודת הקצה תופעל. כשההעברה מסתיימת, מופיע לצידה סימן וי ירוק:

כמעט סיימת! עכשיו אפשר לקבל תחזיות לגבי המודל שפרסתם.
8. קבלת תחזיות במודל שפרסנו
יש כמה אפשרויות לקבלת תחזיות של מודלים:
- ממשק המשתמש של Vertex AI
- Vertex AI API
במאמר הזה נסביר איך לקבל חיזויים באמצעות ה-API
שלב 1: קבלת תחזיות של מודלים באמצעות Vertex AI API
כדי להראות לכם איך מקבלים תחזיות של מודלים, נשתמש במופע Vertex Notebook שיצרתם בתחילת שיעור ה-Lab הזה.
לאחר מכן, פותחים את מופע ה-Notebook שיצרתם ופותחים מחברת Python 3 מ-Launcher:

במחברת, מריצים את הפקודה הבאה בתא כדי לכתוב דוגמה לבדיקה לקובץ JSON בשם default-pred.json. נשלח את הדוגמה הזו למודל שלנו כדי לקבל חיזוי:
%%writefile default-pred.json
{
"instances": [
{"age": 39,
"bill_amt_1": 47174,
"bill_amt_2": 47974,
"bill_amt_3": 48630,
"bill_amt_4": 50803,
"bill_amt_5": 30789,
"bill_amt_6": 15874,
"education_level": "1",
"limit_balance": 50000,
"marital_status": "2",
"pay_0": 0,
"pay_2":0,
"pay_3": 0,
"pay_4": 0,
"pay_5": "0",
"pay_6": "0",
"pay_amt_1": 1800,
"pay_amt_2": 2000,
"pay_amt_3": 3000,
"pay_amt_4": 2000,
"pay_amt_5": 2000,
"pay_amt_6": 2000,
"sex": "1"}
]
}
בממשק המשתמש של Vertex, לוחצים על Sample Request (בקשה לדוגמה) לנקודת הקצה שזה עתה פרסתם:

מעתיקים את הקוד משלב 4 בכרטיסייה REST למחברת ומריצים את התא:

לאחר מכן מוסיפים משתנה לאזור שבו יצרתם את הקטגוריה ואת המודל. מחליפים את your-region במחרוזת שלמטה:
REGION="your-region" # either us-central1, europe-west4, or asia-east1
לבסוף, שולחים בקשת חיזוי לנקודת הקצה עם curl על ידי העתקת הקוד הבא למחברת:
!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"
אתם אמורים לראות משהו דומה לזה (ערכי התחזית המדויקים ישתנו מעט):
{
"predictions": [
{
"default_payment_next_month_values": [
"1",
"0"
],
"default_payment_next_month_probs": [
0.180815295299778,
0.819184704700222
],
"predicted_default_payment_next_month": [
"0"
]
}
],
"deployedModelId": "your-model-id"
}
הערכים ב-default_payment_next_month_probs מראים את ההסתברות לכל מחלקה. בדוגמה הזו, המודל שלנו חוזה שיש סיכוי של 81% שהאדם הזה לא יפגר בתשלום הבא. הערך .819 תואם לסיווג 0 (לא ברירת המחדל).
🎉 איזה כיף! 🎉
למדתם איך:
- אימון מודל ב-BQML
- ייצוא מודל BQML ל-Cloud Storage
- ייבוא מודל BQML ל-Vertex AI לצורך חיזוי
- יצירת מודל Vertex AI ופריסת המודל לנקודת קצה
- קבלת חיזויים בנקודת הקצה שפרסתם באמצעות Vertex Notebooks ו-curl
מידע נוסף על חלקים שונים ב-Vertex AI זמין בתיעוד.
9. הסרת המשאבים
אם רוצים להמשיך להשתמש במחברת שיצרתם בסדנה הזו, מומלץ להשבית אותה כשלא משתמשים בה. בממשק המשתמש של Notebooks במסוף Cloud, בוחרים את מחברת ה-Notebook ואז בוחרים באפשרות Stop:

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

כדי למחוק את קטגוריית האחסון, בתפריט הניווט ב-Cloud Console, עוברים אל Storage, בוחרים את הקטגוריה ולוחצים על Delete:
