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 משלב את מוצרי ה-ML ב-Google Cloud לחוויית פיתוח חלקה. בעבר, היה אפשר לגשת למודלים שאומנו באמצעות AutoML ולמודלים בהתאמה אישית דרך שירותים נפרדים. המוצר החדש משלב את שניהם ב-API אחד, יחד עם מוצרים חדשים אחרים. אפשר גם להעביר פרויקטים קיימים אל Vertex AI. אם יש לך משוב, אפשר לעיין בדף התמיכה.

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

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

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

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

שלב 1: הפעלת Compute Engine API

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

שלב 2: הפעלת Vertex AI API

עוברים אל הקטע Vertex AI במסוף Cloud ולוחצים על הפעלת Vertex AI API.

מרכז הבקרה של Vertex

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

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

תפריט Vertex AI

משם, בקטע Notebooks בניהול המשתמשים, לוחצים על New Notebook:

יצירת Notebook חדש

לאחר מכן בוחרים את הגרסה האחרונה של סוג האינסטנס TensorFlow Enterprise (with LTS) without GPUs:

מופע TFE

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

שלב 5: פותחים את המחברת

אחרי שהמופע נוצר, בוחרים באפשרות 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: אימון מודלים באיכות גבוהה עם מאמץ מינימלי ומומחיות ב-ML.
  • אימון מותאם אישית: הפעלת אפליקציות אימון מותאמות אישית בענן באמצעות אחד מהקונטיינרים המובנים מראש של Google Cloud, או שימוש בקונטיינר משלכם.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

מטריצת בלבול

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

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

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

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

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

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

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

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

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

עכשיו, אחרי שיש לנו מודל מאומן, השלב הבא הוא ליצור נקודת קצה ב-Vertex. למשאב Model ב-Vertex יכולות להיות כמה נקודות קצה שמשויכות אליו, ואפשר לפצל את התנועה בין נקודות הקצה.

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

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

פריסה ובדיקה

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

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

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

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

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

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

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

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

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

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

בדף המודל שבו מוצגת נקודת הקצה (המקום שבו הפסקנו בשלב הקודם), גוללים למטה לקטע Test your model (בדיקת המודל):

מודל לבדיקה

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

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

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

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

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

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

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

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

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

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

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

מחיקת האחסון