1. סקירה כללית
בשיעור ה-Lab הזה תאמנו מודל באמצעות למידת מכונה של BigQuery, ולאחר מכן תייצאו ותפרסו את המודל הזה ל-Vertex AI. זוהי הצעה החדשה של מוצר ה-AI ב-Google Cloud.
מה לומדים
נסביר לכם איך:
- אימון מודל באמצעות למידת מכונה של BigQuery (BQML)
- ייצוא מודל BQML ל-Cloud Storage
- פריסת BQML שאומנתם ל-Vertex AI
- קבלת תחזיות על המודל שנפרס
העלות הכוללת של הפעלת שיעור ה-Lab הזה ב-Google Cloud היא כ-$2.
2. מבוא ל-Vertex AI
בשיעור ה-Lab הזה נעשה שימוש במוצר ה-AI החדש ביותר שזמין ב-Google Cloud. Vertex AI משלב את הצעות למידת המכונה ב-Google Cloud ליצירת חוויית פיתוח חלקה. בעבר, ניתן היה לגשת למודלים שעברו אימון באמצעות AutoML ומודלים בהתאמה אישית דרך שירותים נפרדים. המוצר החדש משלב את כל ממשקי ה-API האלה בממשק API אחד, לצד מוצרים חדשים אחרים. תוכלו גם להעביר פרויקטים קיימים ל-Vertex AI. יש לך משוב? אפשר למצוא אותו בדף התמיכה.
Vertex AI כולל מוצרים רבים ושונים לתמיכה בתהליכי עבודה של למידת מכונה מקצה לקצה. שיעור ה-Lab הזה יתמקד במוצרים שמודגשים בהמשך: Prediction ו-notebooks.
3. הגדרת הסביבה
כדי להריץ את ה-Codelab הזה צריך פרויקט ב-Google Cloud Platform שהחיוב מופעל בו. כדי ליצור פרויקט, יש לפעול לפי ההוראות האלה.
שלב 1: מפעילים את ממשק ה-API של Compute Engine
עוברים אל Compute Engine ובוחרים באפשרות Enable (הפעלה) אם היא לא מופעלת עדיין. תצטרכו את הקישור הזה כדי ליצור מכונה של ה-notebook.
שלב 2: מפעילים את Vertex AI API
עוברים לקטע Vertex AI במסוף Cloud ולוחצים על Enable Vertex AI API.
שלב 3: יצירת מכונת notebooks
נשתמש ב-notebooks כדי לקבל חיזויים אחרי שנפרוס את המודל שלנו. בקטע Vertex AI במסוף Cloud, לוחצים על Notebooks:
משם, בוחרים באפשרות מכונה חדשה. לאחר מכן בוחרים בסוג המכונה TensorFlow Enterprise 2.3 ללא מעבדי GPU:
משתמשים באפשרויות ברירת המחדל ואז לוחצים על יצירה. אחרי שיוצרים את המכונה, בוחרים באפשרות Open JupyterLab:
4. אימון מודל של BigQuery ML
BigQuery ML מאפשר לכם לאמן מודלים מותאמים אישית של למידת מכונה באמצעות נתונים שמאוחסנים ב-BigQuery. אפשר לאמן ולקבל חיזויים ממודלים ב-SQL. בשיעור ה-Lab הזה נשתמש במערך נתונים הזמין לציבור ב-BigQuery כדי לחזות את הסבירות לברירת המחדל של תשלום בכרטיס אשראי.
שלב 1: יצירת מערך נתונים ב-BigQuery בפרויקט
כדי לאמן מודל בלמידת מכונה של BigQuery, תצטרכו ליצור מערך נתונים בפרויקט שבו יאוחסנו המודל. לוחצים על הפרויקט בסרגל התפריטים השמאלי ובוחרים באפשרות Create Dataset (יצירת מערך נתונים):
בשדה Dataset ID, מזינים cc_default
. משאירים את שאר השדות כמו שהם ולוחצים על Create dataset.
שלב 2: מריצים שאילתת CREATE MODEL
בעורך השאילתות של BigQuery, מריצים את שאילתת CREATE MODEL
הבאה כדי ליצור ולאמן מודל של BigQuery ML על מערך הנתונים הציבורי שבו נשתמש. חשוב להחליף את your-project
בשם של הפרויקט ב-Cloud:
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
בעזרת מודל BQML מאומן, אנחנו יכולים להשתמש בתחביר BQML SQL כדי לקבל תחזיות, או לייצא את המודל כדי לפרוס אותו במקום אחר. כאן נייצא את המודל שלנו כדי לפרוס אותו ב-Vertex AI כדי לשרת את המודל באופן שניתן להתאמה ולקבל חיזויים.
שלב 1: יצירת קטגוריה של Cloud Storage למודל שלכם
בפרטי המודל, לוחצים על ייצוא מודל:
תופיע הנחיה להזין את המיקום ב-Google Cloud Storage (GCS) שאליו אתם רוצים לייצא את הנכסים של המודל. אם עדיין אין לכם קטגוריה של GCS, אל דאגה! אנחנו עומדים ליצור אותו. קודם לוחצים על עיון:
לאחר מכן, לוחצים על הסמל + כדי ליצור קטגוריה חדשה:
נותנים לו שם ייחודי (השמות של קטגוריות האחסון צריכים להיות ייחודיים באופן גלובלי). לוחצים על המשך. בשלב הבא, בקטע Location type (סוג המיקום), בוחרים באפשרות Region (אזור) ובוחרים אחד מהאזורים בתפריט הנפתח:
משתמשים בסוג האחסון (storage class) שמוגדר כברירת מחדל, ובקטע בקרת גישה מוודאים שהאפשרות Uniform מסומנת:
לוחצים על 'המשך' ומשתמשים בהגדרות ברירת המחדל בשאר האפשרויות. לאחר מכן לוחצים על יצירה.
שלב 2: מייצאים את מודל BQML
אחרי שיצרתם את הקטגוריה החדשה, מזינים model-assets
(או כל דבר שרוצים) בשדה Name ולוחצים על Select (בחירה):
לאחר מכן לוחצים על ייצוא. הפעולה הזו תיצור משימה ב-BigQuery שתייצא את המודל בפורמט SaveModel של 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 כגרסת המסגרת.
בשדה המיקום של פריט המידע שנוצר בתהליך הפיתוח (Artifact) לוחצים על עיון, נכנסים לקטגוריה של GCS שיצרתם ואז לוחצים על הספרייה נכסי מודל:
לאחר מכן לוחצים על ייבוא. ייבוא המודל יימשך כמה דקות. לאחר היצירה שלו אפשר לראות אותו בקטע המודלים במסוף Cloud:
7. פריסת המודל בנקודת קצה
עכשיו, אחרי שתעלו את המודל, השלב הבא הוא ליצור נקודת קצה (endpoint) ב-Vertex. מודל של משאב ב-Vertex יכול להיות משויכות אליו כמה נקודות קצה, ואפשר לפצל את תעבורת הנתונים בין נקודות קצה.
שלב 1: יצירת נקודת קצה
בדף המודל, נכנסים לכרטיסייה פריסה ובדיקה ולוחצים על פריסה לנקודת קצה (endpoint):
נותנים שם לנקודת הקצה, למשל default_pred_v1
, משאירים את ההגדרות של פיצול התנועה כפי שהן ולאחר מכן בוחרים את סוג המכונה לפריסת המודל. השתמשנו כאן ב-n1-highcpu-2
, אבל אפשר לבחור כל סוג של מחשב.
לאחר מכן בוחרים באפשרות 'סיום' ולוחצים על המשך. משאירים את הגדרות המיקום שנבחרו כפי שהן ולוחצים על פריסה. הפריסה של נקודת הקצה תימשך כמה דקות. בסיום התהליך, יופיע לצידו סימן וי ירוק:
עוד מעט נגיע לסוף! עכשיו אתם מוכנים לקבל תחזיות על המודל שנפרס.
8. קבלת חיזויים על המודל שנפרס
יש כמה אפשרויות לקבל חיזויים של מודלים:
- ממשק משתמש של Vertex AI
- Vertex AI API
כאן נראה איך לקבל חיזויים באמצעות ה-API
שלב 1: קבלת חיזויים של המודלים באמצעות Vertex AI API
כדי להראות לכם איך לקבל כאן חיזויים של מודלים, נשתמש במכונה של Vertex Notebook שיצרתם בתחילת שיעור ה-Lab הזה.
לאחר מכן, פותחים את מכונת ה-notebook שיצרתם ופותחים notebook של Python 3 ממרכז האפליקציות:
ב-notebook, מריצים את הפקודה הבאה בתא כדי לכתוב דוגמה לבדיקה בקובץ 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 (בקשה לדוגמה) של נקודת הקצה שפרסתם:
מעתיקים ל-notebook את הקוד משלב 4 שבכרטיסייה REST ומריצים את התא:
לאחר מכן מוסיפים משתנה לאזור שבו יצרתם את הקטגוריה והמודל. מחליפים את your-region
במחרוזת הבאה:
REGION="your-region" # either us-central1, europe-west4, or asia-east1
לסיום, שולחים בקשת חיזוי לנקודת הקצה (endpoint) באמצעות curl
. כדי לעשות את זה, מעתיקים את הקוד הבא ל-notebook:
!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. הסרת המשאבים
אם אתם רוצים להמשיך להשתמש ב-notebook שיצרתם בשיעור ה-Lab הזה, מומלץ להשבית אותו כשהוא לא בשימוש. בממשק המשתמש של Notebooks במסוף Cloud, בוחרים את ה-notebook ואז לוחצים על Stop (עצירה):
אם אתם רוצים למחוק לגמרי את ה-notebook, פשוט לוחצים על הלחצן 'מחיקה' בפינה השמאלית העליונה.
כדי למחוק את נקודת הקצה שפרסתם, עוברים לקטע Endpoints במסוף Vertex AI ולוחצים על סמל המחיקה:
כדי למחוק את קטגוריית האחסון, באמצעות תפריט הניווט במסוף Cloud, עוברים אל Storage (אחסון), בוחרים את הקטגוריה ולוחצים על סמל המחיקה: