איך להתמודד עם האתגרים בפיתוח מוצר ב-Deep Learning?

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

 Hero Images/ Getty Images Israel

צלם/תמונה: Hero Images/ Getty Images Israel

מאת ירון וקסמן , Deep Learning Expert ב-Cloudinary

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

אתגרים של חוסר תיאום ציפיות

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

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

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

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

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

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

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

– משאבי כוח אדם: האתגרים הללו דורשים מגוון משימות שונות המשויכות לאנשי DevOps, למפתחי Backend ול-Data Scientists. גיוס שלושת התפקידים לחברה, או תהליך ההכשרה של כוח האדם הנוכחי בחברה, הם אתגרים בפני עצמם.

אירוע גיקטיים 2018

התמודדות עם זמני הריצה ומשאבי הזיכרון

ישנן כמה גישות פופולריות להתמודדות עם הבעיה, אתאר שתיים מהן:

– שימוש בארכיטקטורת רשת יעילה: רשתות יעילות לרוב יכילו מספר פרמטרים מועט, תוך ניצול יעיל יותר. יש כמה וריאציות של רשתות שכדאי להכיר: MobileNet/MobileNet v2 של גוגל, SqueezeNet של חברת DeepScale ו-ShuffleNet של Megvii. ניתן למצוא מגוון וריאציות של רשתות לטובת פתרון של בעיות שונות: Image Classification, Object Detection ועוד.

– ״קיצוץ״ רשתות (Pruning): יש מגוון שיטות שונות המאפשרות לזהות פרמטרים מיותרים ברשת ולמחוק אותן. ניסויים אקדמיים שונים הראו מקרים שבהם ניתן לקצץ משמעותית (עד לאחוזים בודדים) את רוב הפרמטרים ברשת, תוך שמירה על רמת דיוק גבוהה. טוויטר למשל הציגה לאחרונה מאמר ובלוג המציג שימוש שלה בכיווץ רשתות, על מנת לאפשר הרצה של רשת על גבי CPU במקום GPU.

התמודדות עם בעיות נתונים

במקרים בהם קיים מאגר נתונים גדול אך לא מתויג, ניתן להשתמש בשירות כמו Mechanical turk של Amazon. על מנת לבצע משימות מורכבות באיכות גבוהה, ניתן להשתמש בשירותי התיווך השונים שקיימים בשוק, כגון: Figure 8, Clay sciences. חברות אלו מספקות כלי תיוג וניהול מידע מתקדמים המאפשרים דיוק גבוה והבטחת איכות.

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

– aws.amazon.com/sagemaker: פלטפורמת ה-Machine Learning של Amazon בענן מציעה מגוון אוטומציות לתהליכי ה-DevOps הדרושים לתהליך אימון הרשת ותהליך הפרישה של המוצר ל-Production.
– שימוש ב Keras: יש מגוון ספריות שונות המאפשרות מימוש ושימוש ברשתות נוירונים. Keras מהווה High Level API למגוון ספריות שונות, המאפשר כתיבה מהירה של אבטיפוס ולמעשה מקצר את הזמן משמעותית משלב המחקר לשלב המימוש.

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

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

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

כתב אורח

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

הגב

4 תגובות על "איך להתמודד עם האתגרים בפיתוח מוצר ב-Deep Learning?"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
קורס לאילוף רשתות
Guest
קורס לאילוף רשתות

שמעתי שיש גם רשתות בינאריות דוגמת XNOR-Net אשמח לחוות דעת(רץ על cpu?)
באופן כללי אני מציע לבדוק קודם כל אם אפשר להשיג את היעד גם בלי רשתות
לפעמים ההבדל בתוצאה פשוט לא שווה את המאמץ והמגבלות שכרוכים באימון ושימוש ברשתות
לצערי יש עוד איזה שנתיים עד שהרשתות ירדו מהענן לcommodity PC
אז אם LiniarSolver עושה לי 90% דיוק על CPU חלש בREALTIME זה עדיף מבחינתי ומבחינת המשתמשים

רועי
Guest

לזרוק לאוויר 90% דיוק זה להטעות את מי שקורה את התגובה. רמת הדיוק משתנה ממשימה למשימה ובכל מקרה להגיד דיוק זה חסר משמעות (יש מדדים מתאימים גם כן ממשימה למשימה). בכל מקרה ישנן משימות ML כמו זיהוי תמונה שמוזכר בכתבה שבהן רשתות נוירונים מביסות את הפתרונות האחרים בפער משמעותי.

titan-v לכל פועל
Guest

כתבתי “באופן כללי” “מציע לבדוק” “לפעמים” ו”אם…” בדיוק בשביל להדגיש שזו לא המלצה גורפת- אלא תלויית מקרה
90% זה סתם מספר שזרקתי- כמו שאנשי הרשתות אוהבים לזרוק את המספר 96% בכל הזדמנות- התכוונתי ל”טוב אבל לא מושלם”
כמובן שיש בעיות רבות בהן רשת טובה תתן פתרון שפשוט אי אפשר להשיג אחרת אבל לפעמים כן אפשר …just saying…

titan-v לכל פועל
Guest

סליחה תיקון: התכוונתי ל90% מהתוצאה שאפשר להשיג עם רשתות
כמובן שלפעמים ה”הבדל הקטן” הזה זה מה שמשנה את התמונה לגמרי( כדוגמה:זיהוי פנים )
במקרה זה אין מוצא וצריך לשנס מותניים ולאלף איזו רשת
אבל בכללי אני נגד שימוש ברשתות כפתרון גורף לכל בעיה- לפעמים זה כמו לחסל יתוש עם פטיש 5 קילו

wpDiscuz

תגיות לכתבה: