איך Tokopedia מפחיתה את עלויות התפעול שלה על ידי שיפור אפליקציית האינטרנט של אתר המכירה באמצעות למידת מכונה

Dendi Sunardi
Dendi Sunardi
Geoffrey Prasetyo
Geoffrey Prasetyo
Swetha Gopalakrishnan
Swetha Gopalakrishnan

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

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

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

על ידי הוספה של יכולות למידת מכונה לתהליך הקריטי הזה של אימות זהות הלקוח (KYC) במסגרת לאפליקציית האינטרנט שלה, Mitra Tokopedia הצליחה להשיג חוויית משתמש טובה יותר ירידה של יותר מ-20% בכשלים באימות. הן גם הפכו לתפעוליות חיסכון בעלויות בזכות צמצום האישורים הידניים בכמעט 70%.

האתגר

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

פתרון

הצוות ב-Tokopedia החליט להשתמש בלמידת מכונה עם TensorFlow.js כדי לפתור את הבעיה הזו כבר בשלב הראשון של התהליך של אימות זהות הלקוח (KYC) – כשהמשתמש מעלה את התמונות. הם השתמשו ב-MediaPipe וב-TensorFlow ספריית זיהוי הפנים לזיהוי הפנים של המוכר בעזרת שש נקודות עיקריות כשהאתר מעלה את המזהה תמונות כרטיס ותמונות סלפי. הפלט של המודל משמש לבדיקה בהשוואה קריטריונים לקבלה. לאחר שהאימות יושלם, המידע יישלח אל את הקצה העורפי. אם האימות ייכשל, תוצג לאתר המכירה הודעת שגיאה ואפשרות לנסות שוב. השתמשנו בגישה היברידית שבה המודל מבצע להסיק מסקנות בצד המכשיר או בצד השרת, בהתאם מפרט. מכשיר פשוט יותר יבצע את ההסקה בשרת.

שימוש במודל למידת מכונה בשלב מוקדם של תהליך אימות זהות הלקוח (KYC) מאפשר להן:

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

למה כדאי להשתמש בלמידת מכונה ולא בפתרונות אחרים?

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

שיקולים לבחירת מודל

במהלך בחירת המודל של למידת מכונה, הביאו בחשבון את הגורמים הבאים.

עלות

הם העריכו את העלות הכוללת של השימוש במודל. מכיוון ש-TensorFlow.js הוא על חבילת קוד פתוח המתוחזקת היטב על ידי Google, אנחנו חוסכים ברישוי עלויות תחזוקה. שיקול נוסף הוא עלות ההסקה. להיות שיכול להפיק מסקנות בצד הלקוח, חוסך הרבה כסף לעבד אותו בצד השרת עם מעבדי GPU יקרים, במיוחד אם מסתבר כי הוא לא חוקי ולא ניתן לשימוש.

מדרגיות

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

ביצועים

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

שיקולים נוספים

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

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

הטכנולוגיה שנבחרה

הצוות TensorFlow.js ענה על הצרכים שלהם אחרי שהחליטו גורמים אלה. היא יכולה לפעול במכשיר באופן מלא באמצעות קצה ה-WebGL העורפי שלה להשתמש ב-GPU של המכשיר. הרצת מודל במכשיר מאפשרת משוב מהיר יותר למשתמש עקב זמן אחזור קצר של השרת והפחתת עלות המחשוב של השרת. נקראו מידע נוסף על למידת מכונה במכשיר מופיע במאמר היתרונות והמגבלות של למידת מכונה במכשיר.

"TensorFlow.js היא ספריית קוד פתוח ללמידת מכונה מבית Google, שמיועדת מפתחי JavaScript שיכולים להריץ צד הלקוח בדפדפן. כאן האפשרות המתאימה ביותר ל-Web AI עם שירותי WebGL מקיפים, WebAssembly ו-WebGPU עם תמיכה במפעיל קצה עורפי שניתן להשתמש בה בתוך הדפדפן באמצעות ".איך Adobe השתמשה בלמידת מכונה באינטרנט עם TensorFlow.js כדי לשפר את Photoshop לאינטרנט

הטמעה טכנית

Mitra Tokopedia השתמשה ב-MediaPipe וב-TensorFlow ספריית זיהוי הפנים, חבילה שמספקת מודלים להרצת זיהוי פנים בזמן אמת. באופן ספציפי, MediaPipeFaceDetector-TFJS שקיים בספרייה הזו, שמיישם את סביבת זמן הריצה tfjs ששימשה בפתרון הזה.

לפני שממשיכים אל ההטמעה, סכם בקצרה מהו MediaPipe. MediaPipe מאפשר ליצור ולפרוס פתרונות למידת מכונה במכשירים ניידים (Android, iOS), אינטרנט, מחשב, מכשירי קצה ו-IoT.

יש 14 פתרונות שונים שהוצע על ידי MediaPipe בזמן כתיבת הפוסט הזה. אפשר להשתמש בכל אחת מהאפשרויות זמן ריצה של mediapipe או tfjs. זמן הריצה של tfjs מבוסס על JavaScript ו מספקת חבילת JavaScript שניתנת להורדה חיצונית דרך האינטרנט תרגום מכונה. היא שונה מסביבת זמן ריצה של mediapipe, שמבוססת על C++ והועברו למודול WebAssembly. ההבדלים העיקריים הם ביצועים, יכולת ניפוי באגים וקיבוץ. ניתן לקבל את חבילת ה-JavaScript בחבילה עם הגרסה הקלאסית חבילות כמו webpack. לעומת זאת, מודול Wasm גדול ונפרד משאב בינארי (שניתן לצמצם באמצעות חוסר תלות בזמן טעינה) וגם דורש תהליך עבודה של ניפוי באגים ב-Wasm. אבל, לפעמים הוא פועל מהר יותר כדי לעזור לעמוד בדרישות הטכניות ובדרישות לגבי ביצועים.

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

בחזרה להטמעה של Tokopedia, השלב הראשון הוא לאתחל באופן הבא. כשמשתמש מעלה תמונה, נשלחת HTMLImageElement כקלט לגלאי.

// Create the detector.
const model = faceDetection.SupportedModels.MediaPipeFaceDetector;
const detectorConfig = {
  runtime: 'tfjs'
};

const detector = await faceDetection.createDetector(model, detectorConfig);

// Run inference to start detecting faces.
const estimationConfig = {flipHorizontal: false};
const faces = await detector.estimateFaces(image, estimationConfig);

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

[
  {
    box: {
      xMin: 304.6476503248806,
      xMax: 502.5079975897382,
      yMin: 102.16298762367356,
      yMax: 349.035215984403,
      width: 197.86034726485758,
      height: 246.87222836072945
    },
    keypoints: [
      {x: 446.544237446397, y: 256.8054528661723, name: "rightEye"},
      {x: 406.53152857172876, y: 255.8, "leftEye },
      ...
    ],
  }
]

הסמל box מייצג את התיבה התוחמת של הפנים בשטח הפיקסלים של התמונה, כאשר xMin, xMax מסמן את גבולות ה-x, yMin, yMax מציין את גבולות ה-y, וגם width, height הן המידות של התיבה התוחמת. עבור keypoints, x ו-y מייצגים את המיקום בפועל של נקודת המפתח בתמונה בפיקסלים. השדה name מספק תווית לנקודת המפתח, שהיא 'rightEye', 'leftEye'. 'noseTip', 'mouthCenter', 'rightEarTragion' ו-'leftEarTragion' בהתאמה. כפי שציינו בתחילת הפוסט הזה, בית העסק צריך להעלות את תעודת זהות ותמונת סלפי עם התעודה המזהה כדי להשלים את תהליך המכירה אימות. הפלט של המודל ישמש לבדיקה מול הקריטריונים לקבלה – חייב להיות התאמה בין שש נקודות המפתח שצוינו קודם לכן, שייחשבו כחוקיות תעודה מזהה ותמונת סלפי.

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

תרשים של דף Mitra KYC, מודל TensorFlow.js והשרת מבצעים אינטראקציה זה עם זה.
איך הדף של Mitra KYC, מודל TensorFlow.js והשרת מקיימים אינטראקציה אחד עם השני

שיקולי ביצועים למכשירים פשוטים

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

אם למכשיר יש יותר מ-4GB של זיכרון RAM, מדובר בחיבור לרשת שגדול מ-4G. ובמעבד עם יותר מ-6 ליבות, התמונות מועברות למודל ששמור במכשיר. לאימות פנים. אם לא עומדים בדרישות האלה, הקובץ המערכת מדלגת על המודל והתמונות נשלחות ישירות לשרת לצורך אימות בגישה היברידית לטיפול במכשירים הישנים האלה. עם הזמן, מכשירים יוכלו להוריד את עומס המחשוב מהשרת ככל שהחומרה תמשיך להתפתח.

השפעה

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

  • שיעור הדחיות ירד ביותר מ-20%.
  • מספר האישורים הידניים ירד בכמעט 70%.

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

סיכום

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

נסי את התכונה 'זיהוי פנים של MediaPipe' בעצמך באמצעות MediaPipe Studio ודוגמת הקוד עבור MediaPipe Face Detect לאינטרנט.

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