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

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

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

מה תלמדו

תלמדו איך:

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

העלות הכוללת להרצת הסדנה הזו ב-Google Cloud היא כ-22$.

2. מבוא ל-Vertex AI

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

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

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

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

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

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

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

שלב 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

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

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

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

פתיחת ה-notebook

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

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

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

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

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

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

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

בדף Data sets (מערכי נתונים), נותנים שם למערך הנתונים ובוחרים באפשרויות Tabular (טבלאי) ו-Regression/classification (רגרסיה/סיווג). בשלב הבא, יוצרים את מערך הנתונים:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

שלב 1: הפעלת משימה של אימון

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

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

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

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

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

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

אפשרויות הדרכה מתקדמות

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

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

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

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

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

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

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

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

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

מטריצת בלבול

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

שלב 2: בדיקת החשיבות של המאפיינים

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

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

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

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

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

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

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

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

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

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

פריסה ובדיקה

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

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

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

נקודת קצה (endpoint) שנפרסה

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

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

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

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

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

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

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

בדיקת המודל

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

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

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

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

בשלב הבא, פותחים את מכונה של כתב העת שיצרתם ופותחים כתב עת של Python 3 מ-Launcher:

פתיחת מסמך notebook

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

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

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

from google.cloud import aiplatform

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

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

מזהה נקודת הקצה מופיע בקטע 'נקודות קצה' במסוף:

איך מוצאים את מזהה נקודת הקצה

לבסוף, כדי לבצע חיזוי לנקודת הקצה, מעתיקים את הקוד הבא ומריצים אותו בתא חדש:

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. הסרת המשאבים

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

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

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

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

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

מחיקת אחסון