מדריך להתחלת פרויקט חדש

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

  • את ארכיטקטורת המודל
  • האופטימיזציה
  • גודל הקבוצה
  • את ההגדרה הראשונית

הנחות

העצות בקטע הזה מבוססות על ההנחה הבאה:

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

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

בחירת הארכיטקטורה של המודל

נתחיל עם ההגדרות הבאות:

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

בחירה בארכיטקטורת המודל פירושה בחירה של ארכיטקטורת מודלים (אחד לכל הגדרה של ההיפר-פרמטרים במודל).

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

בחירת כלי האופטימיזציה

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

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

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

  1. בתחילת הפרויקט, יש לבחור מומחה אופטימיזציה שאין בו הרבה תרגומים היפר-פרמטרים. הנה שתי דוגמאות:
    • SGD עם תנע קבוע.
    • Adam עם Epsilon, Beta1 ו-Beta2 קבועים.
  2. בשלבים מאוחרים יותר של הפרויקט, לעבור לכלי אופטימיזציה כללי יותר מכווננת יותר היפר-פרמטרים במקום לתקן אותם לערכי ברירת המחדל.

בחירת גודל הקבוצה

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

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

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

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

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

  • כל ההיפר-פרמטרים של כלי האופטימיזציה מכווננים היטב.
  • הסדרת נתונים מספיקה ומכווננת היטב.
  • מספר שלבי האימון מספיק מספיק.

יש להשיג את אותם הביצועים הסופיים בכל גודל של קבוצה (ראו Shallue et al. 2018 וגם למה אין לכוונן את גודל קבוצת הקבצים כדי לשפר באופן ישיר לביצועים של קבוצת האימות?)

מצאו את הגדלים האפשריים של האצווה והערכה של תפוקת האימון.

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

תפוקת האימון = מספר הדוגמאות שעברו עיבוד בשנייה

או לחלופין, בכל שלב:

זמן לכל שלב = גודל הקבוצה / תפוקת אימון

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

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

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

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

כדאי לבחור את גודל הקבוצה כדי לקצר את זמן האימון

זאת ההגדרה שלנו לזמן אימון:

  • זמן האימון = (זמן לכל שלב) x (מספר הצעדים הכולל)

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

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

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

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

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

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

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

לבחור את גודל האצווה כדי לצמצם את צריכת המשאבים

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

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

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

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

צריכת משאבים = צריכת משאבים לכל שלב x מספר השלבים הכולל

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

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

שינוי הגודל של קבוצת הקבצים דורש כוונון מחדש של רוב ההיפר-פרמטרים

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

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

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

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

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

בחירת ההגדרה הראשונית

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

  • את תצורת המודל (למשל, מספר השכבות)
  • ההיפר-פרמטרים של כלי האופטימיזציה (למשל, קצב הלמידה)
  • מספר שלבי האימון

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

העיקרון המנחה שלנו הוא:

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

איפה:

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

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

בחירת מספר שלבי האימון כוללת איזון של המתח הבא:

  • הדרכה על שלבים נוספים יכולה לשפר את הביצועים ולפשט את ההיפר-פרמטרים של כוונון עדין. (פרטים נוספים זמינים במאמר Shallue et al. 2018).
  • לעומת זאת, אימון למספר קטן יותר של צעדים פירושו שכל הרצת אימון מהיר יותר ומנצל פחות משאבים, וכך משפר את יעילות הכוונון על ידי הפחתת את פרק הזמן בין מחזורים ומאפשרים לכם להריץ יותר ניסויים במקביל. בנוסף, אם בחרת תקציב שלבים גדול שלא לצורך בתחילת ייתכן שיהיה קשה לשנות זאת בשלב מאוחר יותר במהלך הפרויקט. לדוגמה, אחרי שהתאמתם את לוח הזמנים של קצב הלמידה למספר השלבים הזה.