Vertex AI: פיתוח מודל לזיהוי הונאות באמצעות AutoML

1. סקירה כללית

בשיעור ה-Lab הזה תשתמשו ב-Vertex AI כדי לאמן ולהציג מודל עם נתונים בטבלה. זהו מוצר ה-AI החדש ביותר ב-Google Cloud, והוא נמצא כרגע בתצוגה מקדימה.

מה לומדים

נסביר לכם איך:

  • העלאה של מערך נתונים מנוהל ל-Vertex AI
  • אימון מודל באמצעות AutoML
  • פריסת מודל AutoML שאומן בנקודת קצה ושימוש בנקודת הקצה הזו כדי לקבל חיזויים

העלות הכוללת של הפעלת שיעור ה-Lab הזה ב-Google Cloud היא כ-22$.

2. מבוא ל-Vertex AI

בשיעור ה-Lab הזה נעשה שימוש במוצר ה-AI החדש ביותר שזמין ב-Google Cloud. Vertex AI משלב את הצעות למידת המכונה ב-Google Cloud ליצירת חוויית פיתוח חלקה. בעבר, ניתן היה לגשת למודלים שעברו אימון באמצעות AutoML ומודלים בהתאמה אישית דרך שירותים נפרדים. המוצר החדש משלב את כל ממשקי ה-API האלה בממשק API אחד, לצד מוצרים חדשים אחרים. תוכלו גם להעביר פרויקטים קיימים ל-Vertex AI. יש לך משוב? אפשר למצוא אותו בדף התמיכה.

Vertex AI כולל מוצרים רבים ושונים לתמיכה בתהליכי עבודה של למידת מכונה מקצה לקצה. שיעור ה-Lab הזה יתמקד במוצרים שמודגשים בהמשך: AutoML לנתונים בטבלה, Prediction ו-Workbench.

סקירה כללית של המוצר Vertex

3. הגדרת הסביבה

כדי להריץ את ה-Codelab הזה צריך פרויקט ב-Google Cloud Platform שהחיוב מופעל בו. כדי ליצור פרויקט, יש לפעול לפי ההוראות האלה.

שלב 1: מפעילים את ממשק ה-API של Compute Engine

עוברים אל Compute Engine ובוחרים באפשרות Enable (הפעלה) אם היא לא מופעלת עדיין. תצטרכו את הקישור הזה כדי ליצור מכונה של ה-notebook.

שלב 2: מפעילים את Vertex AI API

עוברים לקטע Vertex AI במסוף Cloud ולוחצים על Enable Vertex AI API.

לוח הבקרה של Vertex

שלב 3: יצירת מכונה של Vertex AI Workbench

בקטע Vertex AI במסוף Cloud, לוחצים על Workbench:

תפריט Vertex AI

משם, בתוך notebooks בניהול המשתמשים, לוחצים על New Notebook:

יצירת notebook חדש

אחר כך בוחרים בגרסה העדכנית ביותר של סוג המכונה TensorFlow Enterprise (עם LTS) ללא GPUs:

מכונת TFE

משתמשים באפשרויות ברירת המחדל ואז לוחצים על יצירה.

שלב 5: פותחים את ה-notebook

אחרי שיוצרים את המכונה, בוחרים באפשרות Open JupyterLab:

פתיחת ה-notebook

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

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

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

שלב 1: יצירת מערך נתונים

בתפריט Vertex במסוף, בוחרים באפשרות Data Sets (קבוצות נתונים):

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

בשיעור ה-Lab הזה נבנה מודל לזיהוי הונאות כדי לקבוע אם עסקה מסוימת בכרטיס אשראי צריכה להיות מסווגת כתרמית.

בדף 'קבוצות נתונים', נותנים שם למערך הנתונים ובוחרים טבלה ורגרסיה/סיווג. בשלב הבא, יוצרים את מערך הנתונים:

יצירת מערך נתונים

יש כמה אפשרויות לייבוא נתונים למערכי נתונים מנוהלים ב-Vertex:

  • העלאת קובץ מקומי מהמחשב
  • בחירת קבצים מ-Cloud Storage
  • בחירת נתונים מ-BigQuery

כאן נעלה נתונים מטבלה ציבורית ב-BigQuery.

שלב 2: מייבאים נתונים מ-BigQuery

צריך לבחור באפשרות 'בחירת טבלה או תצוגה מ-BigQuery' בתור שיטת הייבוא, ומעתיקים את הטקסט הבא לתיבה טבלה ב-BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. לאחר מכן בוחרים באפשרות המשך:

ייבוא של נתוני BQ

אחרי שמייבאים את מערך הנתונים, אמורים להופיע משהו כזה:

נתונים מיובאים

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

5. אימון מודל באמצעות AutoML

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

  • AutoML: אימון מודלים באיכות גבוהה עם מומחיות בלמידת מכונה ובמאמץ מינימלי.
  • הדרכה מותאמת אישית: אפשר להריץ אפליקציות אימון מותאמות אישית בענן באמצעות אחד מקונטיינרים מוכנים מראש של Google Cloud או להשתמש בקונטיינרים משלכם.

בשיעור ה-Lab הזה נשתמש ב-AutoML לאימון.

שלב 1: מתחילים את משימת האימון

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

שלב 1 באימון המודלים

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

לאחר מכן בוחרים באפשרות המשך:

שלב 2 באימון המודל

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

אפשרויות אימון מתקדמות

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

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

6. עיון במדדים של הערכת המודל

בשלב הזה נציג את הביצועים של המודל שלנו.

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

שלב 1: הבנת מטריצת הבלבול

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

חשוב לזכור שפחות מ-1% מהדוגמאות במערך הנתונים שלנו היו עסקאות שמקורן בתרמית, כך שאם רמת הדיוק של המודל שלנו היא 99%, יש סיכוי גבוה שהוא פשוט מנחש באופן אקראי ב-99% מהמקרים שהמודל לא מכיל פעולות הונאה. לכן, יותר טוב לבדוק את רמת הדיוק של המודל שלנו לגבי כל כיתה.

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

מטריצת בלבול

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

שלב 2: בדיקת החשיבות של התכונות

מתחת למטריצת הבלבול, אתם אמורים לראות תרשים חשיבות של תכונות שנראה כך:

חשיבות התכונה

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

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

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

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

7. פריסת המודל בנקודת קצה

עכשיו, אחרי שסיימנו לאמן את המודל, השלב הבא הוא ליצור נקודת קצה (endpoint) ב-Vertex. מודל של משאב ב-Vertex יכול להיות משויכות אליו כמה נקודות קצה, ואפשר לפצל את תעבורת הנתונים בין נקודות קצה.

שלב 1: יצירת נקודת קצה

בדף המודל, נכנסים לכרטיסייה פריסה ובדיקה ולוחצים על פריסה לנקודת קצה (endpoint):

פריסה ובדיקה

נותנים שם לנקודת הקצה, למשל fraud_v1, משאירים את הרשאת הגישה מוגדרת כרגילה ולוחצים על המשך.

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

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

נקודת קצה פרוסה

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

8. קבלת תחזיות על המודל שנפרס

יש כמה אפשרויות לקבל חיזויים של מודלים:

  • ממשק משתמש של Vertex AI
  • Vertex AI API

נציג כאן את שני הסוגים.

שלב 1: קבלת חיזויים של המודלים בממשק המשתמש

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

בדיקת המודל

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

בקטע תוצאת החיזוי בדף, אמור להופיע האחוז החזוי של המודל לכל כיתה. למשל, ציון הסמך 0.99 עבור הכיתה 0 מציין שהמודל שלך חושב ש-99% מהדוגמה הזו לא נחשבת לתרמית.

שלב 2: קבלת חיזויים של המודלים באמצעות Vertex AI API

ממשק המשתמש הוא דרך מצוינת לוודא שנקודת הקצה שפרסתם פועלת כצפוי, אבל סביר להניח שתרצו לקבל חיזויים באופן דינמי באמצעות קריאה ל-API ל-REST. כדי להראות לכם כאן איך לקבל חיזויים של מודלים, נשתמש במכונה של Vertex Workbench שיצרתם בתחילת שיעור ה-Lab הזה.

לאחר מכן, פותחים את מכונת ה-notebook שיצרתם ופותחים notebook של Python 3 ממרכז האפליקציות:

פתיחת מסמך notebook

ב-notebook, מריצים את הפקודה הבאה בתא כדי להתקין את Vertex SDK:

!pip3 install google-cloud-aiplatform --upgrade --user

לאחר מכן מוסיפים תא ב-notebook כדי לייבא את ה-SDK וליצור הפניה לנקודת הקצה שפרסתם:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

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

המזהה של נקודת הקצה מופיע בקטע endpoints במסוף כאן:

איתור המזהה של נקודת הקצה

בשלב האחרון, מבצעים חיזוי לנקודת הקצה (endpoint) על ידי העתקה והרצה של הקוד הבא בתא חדש:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

אמורה להופיע חיזוי לגבי .67 ברמה 0. המשמעות היא שהמודל חושב שיש סיכוי של 67% שהעסקה הזו לא מסולפת.

🎉 כל הכבוד! 🎉

למדתם איך להשתמש ב-Vertex AI כדי:

  • העלאת מערך נתונים מנוהל
  • לאמן ולהעריך מודל על סמך נתונים בטבלה באמצעות AutoML
  • פריסת המודל בנקודת קצה
  • קבלת חיזויים בנקודת קצה של מודל באמצעות SDK ל-Vertex

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

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

אם אתם רוצים להמשיך להשתמש ב-notebook שיצרתם בשיעור ה-Lab הזה, מומלץ להשבית אותו כשהוא לא בשימוש. בממשק המשתמש של Workbench במסוף Cloud, בוחרים את ה-notebook ואז לוחצים על Stop.

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

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

מחיקת נקודת הקצה

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

מחיקת האחסון