Mixture of Experts (MoE): איך זה עובד ומתי להשתמש בזה

אתם רוצים להתרחב ממודל של 7B למודל של 70B מבלי לקנות ארבע יחידות GPU נוספות.

מישהו מציע Mixture of Experts (MoE). הם טוענים שתקבלו ביצועים של 70B עם כוח חישוב (compute) של 7B בלבד.

זה נשמע כמו "ארוחה חינם". אבל יש כאן מלכוד.

איך זה עובד?

טרנספורמר דחוס (dense transformer) כמו Llama 3.2 משתמש ב-100 אחוז מהפרמטרים שלו עבור כל טוקן (token). אם תתרחבו מ-7B ל-70B, תכפילו פי 10 גם את הזיכרון וגם את כוח החישוב.

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

הפשרה (The Trade-off):

• Dense 7B: 7B פרמטרים בסך הכל | 7B פעילים | 7B חישוב | 14 GB זיכרון • Dense 70B: 70B פרמטרים בסך הכל | 70B פעילים | 70B חישוב | 140 GB זיכרון • MoE 45B: 45B פרמטרים בסך הכל | ~13B פעילים | ~14B חישוב | ~90 GB זיכרון

המלכוד: אתם עדיין משלמים את עלות הזיכרון של מודל גדול. אי אפשר להריץ Mixtral על GPU בודד של 24 GB. אתם זקוקים ל-VRAM מספיק כדי להכיל את כל ה"מומחים" (experts), גם את אלו שאינם בשימוש.

הארכיטקטורה:

ב-MoE דליל (sparse MoE), רשת ה-Feed-Forward (FFN) הסטנדרטית מוחלפת במספר רשתות FFN של "מומחים" ובנתב (router) שנלמד.

  1. הנתב מקבל טוקן.
  2. הוא מקצה ציון לכל מומחה.
  3. הוא בוחר את ה-top-k מומחים (עבור Mixtral, k=2).
  4. הוא מריץ את הטוקן דרך המומחים הללו בלבד.
  5. הוא משלב את התוצאות.

הנתב אינו מתזמן (scheduler) ידני. הוא שכבה שנלמדה. הוא לומד לשלוח טוקנים של מתמטיקה למומחה אחד וטוקנים של קוד למומחה אחר.

אתגר האימון:

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

מהנדסים משתמשים ב-auxiliary load-balancing loss כדי לתקן זאת. זה מעניש את המודל אם הוא אינו משתמש בכל המומחים באופן שווה.

מתי להימנע מ-MoE:

• אתם זקוקים לשיהוי (latency) עקבי: ל-MoE יש שונות (variance) גבוהה יותר בזמני התגובה. • יש לכם VRAM מוגבל: אם יש לכם רק GPU אחד מתחת ל-48 GB, היצמדו למודלים דחוסים (dense models). • אתם בונים מודלים קטנים מאוד: אם המודל שלכם הוא פחות מ-3B פרמטרים, ה-overhead גבוה מדי. • אתם זקוקים לתשתית פשוטה: MoE דורש expert parallelism מורכב ו-custom kernels.

MoE הוא הטוב ביותר כאשר אתם מכוונים לבסיס (baseline) דחוס שמעל 30B פרמטרים ויש לכם את הזיכרון לתמוך בכך.

מקור: https://dev.to/tech_nuggets/mixture-of-experts-moe-what-it-actually-does-under-the-hood-and-when-it-pays-off-alb

קהילת למידה אופציונלית: https://t.me/GyaanSetuAi