יש שני סוגים של עומסי עבודה של אימון:
- מוגבלת על ידי המחשוב
- לא מוגבל על ידי חישובים
אימון מוגבל-חישוב מוגבל על ידי הזמן שאתם יכולים להקדיש לאימון, ולא על ידי כמות נתוני האימון או גורם אחר. במילים אחרות, זמן האימון ה "אופטימלי" הוא תמיד "כמה זמן שמתאים לתקציב שלכם". אם איכשהו אפשר להתאמן למשך זמן ארוך יותר או בצורה יעילה יותר, הפסד האימון אמור לרדת. (אם מכוונים את המודל בצורה נכונה, גם ערך השגיאה של האימות אמור לרדת).
האצת האימון שמוגבל על ידי מחשוב שווה לשיפור האימון. עם זאת, רק בגלל שעומס עבודה מוגבל על ידי חישוב, לא אומר שאימון ארוך יותר או מהיר יותר הוא הדרך היחידה לשפר את התוצאות.
אם האימון לא מוגבל על ידי משאבי מחשוב, אפשר להרשות לעצמכם לאמן את המודל כל עוד תרצו. עם זאת, אימון מודל למשך זמן ארוך יותר לא בהכרח יעזור, ואפילו עלול לגרום להתאמת יתר. אם האימון לא מוגבל על ידי משאבי מחשוב:
- אפשר לאמן את המודל עד להפסד אימון נמוך מאוד, עד לנקודה שבה אימון נוסף עשוי להפחית מעט את הפסד האימון, אבל לא להפחית באופן משמעותי את הפסד האימות.
- קל יותר לבצע אופטימיזציה, במיוחד כשמבצעים אופטימיזציה של לוחות זמנים של ירידה בשיעור הלמידה, כי יש להם אינטראקציה חזקה במיוחד עם תקציב האימון. לעומת זאת, כדי לקבל הפסד אימון נמוך באימון מוגבל-משאבים, יכול להיות שיהיה צורך בשינוי קצב הלמידה בצורה מדויקת.
לא משנה אם עומס עבודה נתון מוגבל על ידי חישוב או לא, שיטות שמגדילות את השונות של הגרדיאנטים (באצווה) בדרך כלל מאטות את התקדמות האימון, ולכן עשויות להגדיל את מספר שלבי האימון שנדרשים כדי להגיע להפסד אימות מסוים. כל אחד מהגורמים הבאים עלול לגרום לשונות גבוהה בשיפוע:
- שימוש בגודל קבוצה קטן יותר.
- הוספת הגדלת נתונים.
- הוספת סוגים מסוימים של רגולריזציה (לדוגמה, רגולריזציה של dropout).
החלטה לגבי משך האימון כשאימון לא מוגבל על ידי משאבי מחשוב
המטרה: לאמן את המודל מספיק זמן כדי להגיע לתוצאה הכי טובה שאפשר, בלי לבזבז שלבי אימון.
המטרה העיקרית היא לוודא שהאימון יימשך מספיק זמן כדי שהמודל יגיע לתוצאה הכי טובה שאפשר, בלי לבזבז שלבי אימון מיותרים. אם יש ספק, עדיף להתאמן יותר זמן. מדדי ההערכה (לדוגמה, דיוק, היזכרות, AUC או F1) לא אמורים אף פעם להידרדר כשהאימון נמשך זמן רב יותר, בהנחה שמשתמשים בצורה נכונה בבחירת נקודות ביקורת רטרוספקטיביות ושנקודות הביקורת נבחרות בתדירות גבוהה מספיק.
אל תשנו את המספר max_train_steps
במחקר. במקום זאת, בוחרים ערך ומשתמשים בו לכל תקופות הניסיון. מתוך הניסויים האלה, יוצרים תרשים של שלב האימון שבו נמצאת הבחירה של נקודת הביקורת הרטרוספקטיבית, כדי לשפר את הבחירה של max_train_steps
.
לדוגמה, אם הצעד הכי טוב תמיד מתרחש במהלך 10% הראשונים של האימון, אז המספר המקסימלי של הצעדים גבוה מדי.
לחלופין, אם השלב הכי טוב נמצא באופן עקבי ב-25% האחרונים של האימון,
כדאי להאריך את האימון ולשנות את לוח הזמנים של ההפחתה.
המספר האידיאלי של שלבי האימון יכול להשתנות כשהארכיטקטורה או הנתונים משתנים (לדוגמה, כשמוסיפים הגדלת נתונים).
בקטע הבא מוסבר איך לבחור ערך מועמד ראשוני ל-max_train_steps
על סמך מספר השלבים שנדרשים כדי להתאים באופן מושלם את קבוצת האימון באמצעות קצב למידה קבוע.
יכול להיות שאפשר להקטין את max_train_steps
אם תהליך האימון ישתפר בצורה כלשהי, למשל באמצעות אופטימיזציה מכווננת יותר או באמצעות לוח זמנים מכוונן יותר של קצב הלמידה.
אלגוריתם לבחירת מועמד ראשוני לערך max_train_steps באמצעות סריקה של שיעור הלמידה
אפשר לבחור מועמד ראשוני ל-max_train_steps
באמצעות אלגוריתם של סריקת שיעורי למידה. האלגוריתם הבא מניח שאפשר לא רק להתאים את מערך האימון בצורה מושלמת, אלא גם לעשות זאת באמצעות תוכנית קבועה של שיעורי למידה.
- אם אפשר להתאים באופן מושלם את כל מערך האימונים, אז חייבת להיות הגדרה (עם ערך מסוים של
max_train_steps
) שמתאימה באופן מושלם למערך האימונים. מחפשים הגדרה כזו ומשתמשים בערך שלהmax_train_steps
כנקודת התחלהN
. - מריצים סריקה של קצב למידה קבוע (כלומר, חיפוש רשת של קצב הלמידה) בלי הגדלת נתונים ובלי רגולריזציה, כאשר כל ניסיון אימון נמשך
N
שלבים. מספר השלבים שנדרשים כדי להגיע לביצועי אימון מושלמים במהלך חיפוש קצב הלמידה צריך להיות הניחוש הראשוני שלכם לגביmax_train_steps
.
הערה: מרחבי חיפוש לא טובים עלולים להוביל להונאה עצמית.
לדוגמה, אם כל שיעורי הלמידה במחקר קטנים מדי, יכול להיות שתסיקו בטעות שנדרש ערך גדול מאוד של max_train_steps
.
לפחות, צריך לוודא ששיעור הלמידה האופטימלי במחקר לא נמצא בגבול של מרחב החיפוש.
החלטה לגבי משך האימון כשמגבלת האימון היא מחשוב
במקרים מסוימים, הפסדי ההדרכה ממשיכים להשתפר ללא הגבלה, ולכן הסבלנות שלכם ומשאבי המחשוב שלכם הופכים לגורמים המגבילים. אבל האם כדאי להתאמן כמה שיותר זמן? לא בהכרח. כמה נקודות שכדאי לזכור:
- יכול להיות שתוכלו לבצע כוונון יעיל יותר על ידי הפעלת מספר גדול יותר של ניסויים קצרים יותר, ולהשאיר את הניסויים הארוכים ביותר (במשך 'זמן הייצור') למודלים שאתם רוצים להשיק.
- ככל שמתקרבים למגבלת הזמן של תקופת הניסיון, ניסויים של התאמת מודלים הופכים רלוונטיים יותר למועמדים פוטנציאליים להשקה, אבל אפשר להשלים פחות ניסויים.
- ברוב המקרים, אפשר לענות על הרבה שאלות אחרי אימון של כ-10% מאורך הסרטון. עם זאת, המסקנות שלכם לגבי מגבלת הזמן הזו לא בהכרח רלוונטיות לניסויים שמתבצעים ב-20% מאורך ההפקה, ובוודאי שלא ב-100%.
גישה הגיונית היא לבצע אופטימיזציה במהלך כמה סבבים עם הגדלה של מגבלות שלבי האימון לכל ניסיון. אפשר להריץ כמה סבבים שרוצים, אבל בדרך כלל הכי פרקטי להריץ סבב אחד עד שלושה. בעצם, כדאי לנסות להבין את הבעיה כמה שיותר טוב באמצעות ניסויים עם זמן תגובה מהיר מאוד, תוך התפשרות על הדברים הבאים:
- היקף הכוונון.
- רלוונטיות לריצות הסופיות הארוכות ביותר.
אחרי שמתקבלות תובנות שימושיות ממגבלת זמן מסוימת לכל ניסיון, מגדילים את זמן האימון וממשיכים לכוונן, ובודקים שוב את המסקנות מהריצות הקצרות יותר לפי הצורך. כנקודת התחלה, מומלץ לבצע שני סבבים של התאמה:
- סבב 1: הרצות קצרות יותר כדי למצוא היפרפרמטרים טובים של מודל ואופטימיזציה.
- סיבוב שני: מעט מאוד הרצות ארוכות על נקודות היפרפרמטרים טובות כדי לקבל את המודל הסופי.
השאלה הכי חשובה שעולה מהסיבוב הראשון לסיבוב השני היא:
איך משנים את לוחות הזמנים של ירידה בקצב הלמידה.
אחת הטעויות הנפוצות כשמשנים את לוחות הזמנים של קצב הלמידה בין סבבים היא שימוש בכל שלבי האימון הנוספים עם קצב למידה קטן מדי.
סיבוב ראשון: הרבה אימונים קצרים
לצערנו, אין ערובה לכך שפרמטרים היפר-פרמטרים טובים שנמצאו באימון קצר ולא מלא עדיין יהיו בחירות טובות כשמגדילים באופן משמעותי את משך האימון. עם זאת, לגבי חלק מההיפר-פרמטרים, הבחירות הטובות לרוב קשורות מספיק כדי שהסיבוב הראשון יהיה שימושי. אילו ערכים של היפרפרמטרים שנמצאו בהרצות קצרות מועברים בהצלחה להרצות ארוכות יותר של אימון? אנחנו לא יודעים, אנחנו צריכים לבצע מחקר נוסף. אבל על סמך מה שידוע לנו עד עכשיו, אלה החשדות שלנו בסדר יורד של הסתברות להעברה:
- סביר מאוד שההעברה תתבצע. אפשר לפתור חוסר יציבות באימון מוקדם בסיבוב הראשון של ההתאמה באמצעות מספר קטן יותר של שלבי אימון.
ההיפר-פרמטרים הבאים הם אלה שהכי סביר שיועברו:
- משך החימום
- אתחול
- יש סיכוי גבוה להעברה. שיפור משמעותי בארכיטקטורת המודל בדרך כלל עובר, אבל יש סיכוי גבוה להרבה דוגמאות נגדיות.
- יכול להיות שההעברה תתבצע. יכול להיות שההיפרפרמטרים הבאים יועברו:
- אלגוריתם האופטימיזציה וההיפר-פרמטרים יועברו באופן חלקי.
- הגדלת מערך הנתונים.
- רגולריזציה. אם אי אפשר להתאים את מערך האימון בצורה מושלמת, יכול להיות שהמודל נמצא במצב שבו סביר להניח שהרגולריזציה לא תעזור יותר מדי.
- סביר להניח שההעברה לא תתבצע. סביר להניח שלוח הזמנים של קצב הלמידה לא יועבר בצורה מושלמת. במאמר Training Compute-Optimal Large Language Models מוצע להשתמש גם בהעברות של תוכניות דעיכה, אבל אנחנו לא חושבים שזה נכון באופן כללי. לדוגמה, אם מכוונים את הפונקציה sqrt decay למספר קטן של שלבי אימון ואז מרחיבים אותה למספר גדול, רוב האימון מתבצע בשלבים קטנים מדי. סביר להניח שתוכלו להשיג תוצאות טובות עם רוב התזמונים במסגרת תקציב אימון קיצוני, אבל סביר להניח שתראו שיפורים משמעותיים בביצועים אם תבצעו אופטימיזציה. במאמר Understanding Short-Horizon Bias in Stochastic Meta-Optimization מוסבר על הסכנות בניסיון לבחור שיעורי למידה בצורה קצרת-רואי.
סיבוב שני: פחות ריצות, אבל משך זמן ארוך יותר
מריצים את ההגדרה הכי טובה של היפרפרמטרים מסיבוב 1.
ספקולציה: 🤖 השתמש בשלבים הנוספים כדי להאריך את תקופת האימון בקצב למידה גבוה. לדוגמה, אם משתמשים בתזמון ליניארי, צריך להשאיר את אורך הדעיכה קבוע מסיבוב 1 ולהאריך את התקופה של lr
קבוע בהתחלה. במקרה של דעיכה קוסינוסית, משאירים את הבסיס lr
מסיבוב 1 ומרחיבים את max_train_steps
כמו שמתואר במאמר Training Compute-Optimal Large Language Models (אימון מודלים גדולים של שפה עם אופטימיזציה של משאבי מחשוב).
יכול להיות שיהיה כדאי לבצע סבבי אימון נוספים לצוותים שמתקיימים בהם כל התנאים הבאים:
- מודלים בוגרים מאוד
- התאמה של צינורות עיבוד נתונים
- הרצות אימון ארוכות ויקרות מאוד
עם זאת, בדרך כלל אין טעם להריץ עוד אימונים.
כבר הסברנו איך עוברים מסבב 1 לסבב 2. אם לא חשוב לכם זמן הניתוח, והדאגה העיקרית שלכם היא שימוש יעיל במשאבי מחשוב, מומלץ להגדיל באופן אקספוננציאלי את משך ההרצה של האימון (וכך גם את הזמן הכולל להשלמת המחקר) במהלך סבבים רבים של כוונון:
- בכל סבב, חשוב לוודא באופן שיטתי שהבחירות שלכם ממשיכות לספק תוצאות טובות.
- כדאי להעביר רעיונות חדשים דרך צינור שבו הסיכון שלהם יורד בהדרגה באמצעות ניסויים ארוכים יותר ויותר, משלב i לשלב i+1.