יש שני סוגים של עומסי עבודה עם הדרכה:
- בפורמט מחשוב
- לא מחויב מחשוב
האימון מחושב מוגבל על ידי כמות הזמן שאתם יכולים להקדיש להדרכה, ולא על סמך נתוני האימון שלכם או גורמים אחרים. במילים אחרות, זמן האימון ה'אופטימלי' הוא תמיד "כל עוד אתם יכולים להרשות לעצמכם". אם תצליחו להתאמן במשך זמן רב או באופן יעיל יותר, אובדן האימון יירד. (עם כוונון נכון, אובדן האימות אמור לרדת גם).
האצת האימון המבוסס על מחשוב מקבילה לשיפור האימון. עם זאת, מכיוון שעומס עבודה מוגבל במחשוב, זה לא אומר שאימון ארוך או מהיר יותר הוא הדרך היחידה לשפר תוצאות.
אם ההכשרה לא מחייבת את המחשב, אתם יכולים להרשות לעצמכם להתאמן כמה שתרצו. עם זאת, אימון מודל ארוך יותר לא יעזור הרבה או אפילו יגרום להתאמה. כשהאימון אינו קשור למחשוב:
- אפשר להתאמן באובדן נמוך מאוד של אימון, עד כדי אימון נוסף שעלול להפחית משמעותית את הפגיעה באימון, אבל לא להפחית באופן משמעותי את הפגיעה באימות.
- תוכלו לכוונן אותם בקלות רבה יותר, במיוחד כשמתאימים את שיעורי הדעיכה לקצב הלמידה, מפני שיש להם אינטראקציה חזקה במיוחד עם תקציב האימון. לעומת זאת, במקרה של אובדן אימונים נמוך באימון מחשוב, יכול להיות שיהיה צורך בלוח זמנים של דעיכה בקצב למידה שתואם לשלמות.
בין אם עומס העבודה הנתון מוגבל על ידי מחשוב או לא, שיטות שמגדילות את השונות של ההדרגות (בקבוצות שונות) בדרך כלל מאטות את התקדמות האימון, ולכן הן עשויות להגדיל את מספר שלבי האימון שנדרשים כדי להגיע לאובדן אימות מסוים. כל אחד מהמצבים הבאים יכול לגרום להבדלים גבוהים בעיצוב הדרגתי:
- שימוש באצווה קטנה יותר.
- הוספת נתונים.
- הוספת סוגים מסוימים של סדירות (לדוגמה, נשירה מההגדרה).
כמה זמן צריך להתאמן כשהאימון לא מצריך מחשוב
המטרה: אימון מספיק זמן כדי שהמודל יגיע לתוצאה הטובה ביותר האפשרית, בלי לבזבז שלבי הדרכה.
המטרה העיקרית שלכם היא לוודא שהאימון יימשך מספיק זמן כדי שהמודל יגיע לתוצאה הטובה ביותר האפשרית, בלי לבזבז שלבי הדרכה מיותרים. אם יש לך ספק, עדיף לבחור טווח ארוך יותר. מדדי ההערכה (לדוגמה, דיוק, זכירה, 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: משך זמן קצר יותר פועל כדי למצוא היפר-פרמטרים טובים של מודל ושל כלי אופטימיזציה.
- סיבוב 2: מעט מאוד זמן מופעל בנקודות היפר-פרמטר טובות כדי לקבל את המודל הסופי.
השאלה הגדולה ביותר שעוברת מסבב 1 לסבב 2 היא:
איך משנים את לוחות הזמנים של דעיכת שיעור הלמידה?
אחת מהבעיות הנפוצות בהתאמת לוחות הזמנים לשיעורים השונים בין הסבבים היא שימוש בכל שלבי האימון עם שיעור למידה נמוך מדי.
סבב 1: הרבה הכשרות קצרות
לצערנו, אין ערובה לכך שהיפר-פרמטרים טובים שנמצאים בהכשרה קצרה ולא מלאה עדיין יהיו בחירות טובות כאשר תאריכו באופן משמעותי את משך האימון. עם זאת, עבור פרמטרים מסוימים של היפר-פרמטרים, לעתים קרובות יש התאמה בין הבחירות הטובות מספיק כדי שסבב 1 יהיה שימושי. אילו ערכים של היפר-פרמטרים שנמצאו בהפעלות קצרות יותר מועברים בהצלחה למסלולי אימון ארוכים יותר? אנחנו לא יודעים, אנחנו צריכים מחקר נוסף. אבל על סמך מה שהבנתי עד עכשיו, אנחנו חושדים שהסבירות להעברה תהיה נמוכה יותר:
- צפוי מאוד להעביר. ניתן לפתור את חוסר היציבות באימון המוקדם בשלב הכוונון הראשון בעזרת מספר קטן יותר של שלבי הדרכה.
ערכי ההיפר-פרמטרים הבאים הם בעלי הסבירות הגבוהה ביותר להעברה:
- משך החימום
- אתחול
- צפוי לעבור. ניצחון דרמטי בארכיטקטורת המודלים בדרך כלל מעביר, אבל סביר להניח שיש עוד דוגמאות רבות.
- ייתכן שההעברה תתבצע. יכול להיות שיוקצו הפרמטרים הבאים:
- האלגוריתם לאופטימיזציה וההיפר-פרמטרים יועברו "בהחלשה".
- הרחבת נתונים.
- סידור קבוע. אם אין אפשרות לבצע התאמה מושלמת לערכת האימון, יכול להיות שהמודל יהיה במערכת שבה סביר להניח שההשבתה לא תעזור הרבה.
- לא ניתן להעביר. סביר להניח שלתזמון שיעור הלמידה לא יהיה מעבר מושלם. באימון מודלים אופטיים של שפות מחשוב אופטיות נראה שגם העברות של לוחות זמנים דעיכה דעיכה, אבל אנחנו לא מאמינים שזה נכון באופן כללי. לדוגמה, כוונון דעיכה ב-sqt למספר קטן של שלבי הכשרה, ולאחר מכן להתרחב למספר גדול, גורם לרוב ההדרכות להתרחש בשלבים קטנים מדי. סביר להניח שתצליחו "להתמודד טוב" עם רוב לוחות הזמנים בהגבלת תקציב אימון קיצוני, אבל סביר להניח שתראו שיפורי ביצועים בולטים. הסבר על הטיה של הוריזון קצר ב-Meshashastic Optimizes, מתאר את הסכנות שבניסיון לבחירת שיעורי למידה באופן לוגי.
סיבוב 2: פחות הפעלות, אבל עם משך זמן ארוך יותר
מריצים את הגדרת ההיפר-פרמטר הטובה ביותר מסבב 1.
סיווג: 🤖 שימוש בשלבים הנוספים כדי להאריך את תקופת האימון בקצב למידה גבוה. לדוגמה, אם אתם משתמשים בלוח זמנים לינארי, אורך הדעיכה יהיה קבוע מסבב 1 והאריך את התקופה הקבועה של lr
בהתחלה. לדעיכה קוסינוסית, צריך לשמור את הבסיס lr
מסבב 1 ולהאריך את max_train_steps
כפי שמתואר באימון מודלים אופטיים של שפות מחשוב אופטיות.
סבבי הדרכה נוספים יכולים להתאים לצוותים עם:
- בניית מודלים מאוד בוגרים
- כוונון צינורות עיבוד נתונים
- הרצאות הדרכה ארוכות ויקרות מאוד
עם זאת, ריצות הדרכה נוספות הן לעיתים קרובות לא שימושיות.
כבר תיארנו איך עוברים מסבב 1 לסבב 2. אם לא באמת חשוב לכם זמן לניתוח, ואם אתם רוצים להשתמש בצורה יעילה במשאבי המחשוב שיש לכם בעיה, אנחנו ממליצים להגדיל משמעותית את משך ההדרכות (ולכן כדאי להשלים את הזמן מקצה לקצה כדי להשלים מחקר) עם הרבה סבבים שונים של כוונון:
- בכל סבב, עליכם לוודא באופן שיטתי שהבחירות שלכם ימשיכו להניב תוצאות טובות.
- מציבים רעיונות חדשים בצינור עיבוד נתונים שמערערים אותם בהדרגה על ניסויים שוטפים, שנעים בין שלב 1 ל-i+1.