בדל הימנעות מהסכנות הנסתרות: ניווט במלכודות לא ברורות ב-ML ב-iOS - Unite.AI
צור קשר

מנהיגי מחשבה

הימנעות מהסכנות הנסתרות: ניווט במלכודות לא ברורות ב-ML ב-iOS

mm

יצא לאור

 on

האם אתה צריך ML?

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

כאשר אתה מוכן לפתור כמה מהבעיות העסקיות שלך עם ML, עליך לשקול היכן יפעלו דגמי ה-ML שלך. עבור חלק, הגיוני להפעיל תשתית שרת. יש לזה היתרון של שמירה על פרטיות דגמי ה-ML שלך, כך שקשה יותר למתחרים להדביק את הפער. נוסף על כך, שרתים יכולים להריץ מגוון רחב יותר של דגמים. לדוגמה, דגמי GPT (התפרסמו עם ChatGPT) דורשים כיום GPUs מודרניים, כך שמכשירי צרכנים אינם באים בחשבון. מצד שני, תחזוקת התשתית שלך היא די יקרה, ואם מכשיר צרכני יכול להפעיל את הדגם שלך, למה לשלם יותר? בנוסף, ייתכנו גם חששות בפרטיות שבהם אינך יכול לשלוח נתוני משתמש לשרת מרוחק לצורך עיבוד.

עם זאת, נניח שזה הגיוני להשתמש במכשירי ה-iOS של הלקוחות שלך כדי להפעיל מודל ML. מה יכול להשתבש?

מגבלות פלטפורמה

מגבלות זיכרון

למכשירי iOS יש הרבה פחות זיכרון וידאו זמין מאשר למקביליהם לשולחן העבודה. לדוגמה, ל-Nvidia RTX 4080 Ti האחרון יש 20 GB של זיכרון זמין. למכשירי אייפון, לעומת זאת, יש זיכרון וידאו משותף עם שאר ה-RAM במה שהם מכנים "זיכרון מאוחד". לעיון, לאייפון 14 פרו יש 6 GB של זיכרון RAM. יתרה מכך, אם תקצה יותר ממחצית הזיכרון, סביר להניח ש-iOS תהרוג את האפליקציה כדי לוודא שמערכת ההפעלה תישאר מגיבה. זה אומר שאתה יכול לסמוך רק על 2-3 ג'יגה-בייט של זיכרון זמין להסקת רשת עצבית.

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

תמיכה בשכבות רשת (פעולות).

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

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

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

בסך הכל, העצה הטובה ביותר כאן היא לנסות להמיר את המודל שלך ל-CoreML מוקדם, עוד לפני אימון שלו. אם יש לך מודל שלא הומר מיד, אפשר לשנות את הגדרת הרשת העצבית ב-DL Framework או בקוד המקור של ממיר Core ML Tools כדי ליצור מודל CoreML חוקי ללא צורך בכתיבת שכבה מותאמת אישית להסקת CoreML.

בדיקת מערכות

באגים במנוע הסקה

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

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

אובדן דיוק

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

פרופילים

לדגמי אייפון שונים יש יכולות חומרה מגוונות. האחרונים שבהם שיפרו יחידות עיבוד מנוע עצבי שיכולות להעלות את הביצועים הכוללים באופן משמעותי. הם מותאמים לפעולות מסוימות, ו-CoreML מסוגל להפיץ עבודה בצורה חכמה בין CPU, GPU ו- Neural Engine. גם מעבדי ה-GPU של אפל השתפרו עם הזמן, כך שזה נורמלי לראות ביצועים משתנים בדגמי אייפון שונים. מומלץ לבדוק את הדגמים שלך במכשירים הנתמכים באופן מינימלי כדי להבטיח תאימות מקסימלית וביצועים מקובלים עבור מכשירים ישנים יותר.

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

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

סיכום

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

קונסטנטין סמיאנוב, הוא CTO של Neatsy.AI, האפליקציה הראשונה בעולם המזהה בעיות בריאות אורטופדיות ופודיאטריה, תוך שימוש בבינה מלאכותית ו-AR, עם מצלמת אייפון בלבד. לפני Neatsy.AI, הוא עבד כמהנדס מחקר ופיתוח במעבדות Prisma, יוצרי אפליקציית Lensa.