מידע על חלוקה דינמית של GKE

במאמר הזה מוסבר איך להשתמש בפריסה דינמית ב-Google Kubernetes Engine (GKE) ל-Cloud TPU. פריסה דינמית משפרת את היעילות והגמישות של ה-TPU על ידי הפרדה בין הקצאת ה-TPU לבין הצרכים של פרוסות ה-TPU בעומס העבודה. הפריסה הדינמית עוזרת לשפר את ניצול המשאבים של ה-TPU, כי היא מקצרת את זמן ההפעלה של עומס העבודה עד פי 5 ואת זמן השחזור עד פי 4.5.

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

לפני שתקראו את המאמר הזה, אתם צריכים להכיר את הנושאים הבאים:

מהי פריסה דינמית?

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

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

פריסה דינמית מאפשרת ל-GKE להגדיר פרוסות TPU בזמן הריצה, כשמתזמנים את עומסי העבודה. במקום ליצור ידנית מאגרי צמתים עם הטופולוגיה המדויקת של ה-TPU שנדרשת לכל עומס עבודה חדש, אתם מקצים מראש את כל הקיבולת של ה-TPU למאגרי צמתים מפורטים בגודל קבוע. ב-Ironwood (TPU7x), כל מאגר צמתים מורכב מטופולוגיה של 4x4x4, שנקראת גם בלוק משנה. בלוק משנה מייצג קבוצה של 16 צומתי TPU VM בלי טופולוגיית רשת פעילה של Inter-Chip Interconnect‏ (ICI). בזמן הריצה, כשמתזמנים את עומסי העבודה, הפריסה הדינמית של GKE מגדירה מחדש את החיבורים הפנימיים ברשת ה-TPU כדי לחבר כמה מאגרי צמתים לפרוסת TPU גדולה, או לחלק מאגרי צמתים לפרוסות TPU קטנות יותר. ההגדרה מחדש הזו יוצרת תוך שניות את הטופולוגיה הרב-ממדית המדויקת שנדרשת לעומס העבודה.

היתרונות של פריסה דינמית

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

  • שחזור מהיר יותר של עומסי עבודה: אם יש תקלה פיזית בחומרה, GKE מבודד את הבעיה למחיצה אחת. בקר הפרוסות של GKE משנה באופן אוטומטי את הפרוסה הפעילה ומגדיר מחדש את הרשת כדי להחליף את המחיצה הפגומה במחיצה תקינה. התהליך הזה משפר את העמידות או את הזמן הממוצע להתאוששות (MTTR) עד פי 4.5 בהשוואה ליצירה מחדש של מאגר צמתים שלם.
  • הפעלה מהירה יותר של משימות: אפשר ליצור פרוסות של עומסי עבודה באופן דינמי, וכך לשפר את זמן האחזור של הפעלת המשימות עד פי חמישה בהשוואה ליצירת מאגרי צמתים סטטיים.
  • בידוד תקלות: תקלות חומרה מבודדות למחיצה הספציפית שבה מתרחשת התקלה. הבידוד הזה עוזר להגן על משימות אחרות שפועלות במקביל באשכול מפני כשלים משורשרים.
  • ניצול אופטימלי של משאבים: פריסה דינמית עוזרת למנוע מצבים של קיבולת לא מנוצלת או לא מנוצלת מספיק. מכיוון שהפרוסות מוגדרות בהתאם לדרישות של עומס העבודה, פריסה דינמית עוזרת למקסם את ניצול המשאבים של הצי ולצמצם את החומרה שלא בשימוש.
  • תזמור הצהרתי: פריסה דינמית משתמשת בהערות ובמשאבים מותאמים אישית שמותאמים ל-Kubernetes, כמו JobSet ו-Kueue. הגישה הזו מנהלת באופן אוטומטי את תזמור הרשת והחומרה ברמה נמוכה.

הגדרות של פריסה דינמית

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

  • פריסה דינמית של פרוסות גדולות: שילוב של כמה מאגרי צומתי TPU נפרדים פיזית שהוקצו מראש, כדי ליצור פרוסה וירטואלית אחת בזמן התזמון של עומס העבודה. לדוגמה, אפשר לשלב שני מאגרי צמתים של 4x4x4 כדי ליצור טופולוגיה של 4x4x8. היכולת הזו מאפשרת ליצור פרוסות ששוות לטופולוגיה של 4x4x4 או גדולות ממנה. כדי להשתמש בהגדרה הזו, צריך גרסה 1.35.2-gke.1842000 ואילך. אתם יכולים להשתמש ב-dynamic super-slicing כדי לאמן מודלים גדולים של Foundation, שחורגים מהקיבולת של בלוק חומרה פיזי אחד.

    בקר הפרוסות מתזמר את ההגדרות הפיזיות מחדש בתוך מארג הרשת של מתג המעגלים האופטיים (OCS). באמצעות הגדרה דינמית מחדש של ה-OCS, ‏ GKE מרחיב את רשת ה-Inter-Chip Interconnect‏ (ICI) על פני ארונות חומרה נפרדים. מבחינת עומסי העבודה, בלוקי המשנה המשולבים פועלים כרשת טורואידית אחת. ברשת טורואידית, החיבורים מתעקלים. הצ'יפים בקצה הימני מתחברים ישירות לצ'יפים בקצה השמאלי, והצ'יפים בחלק העליון מתחברים לצ'יפים בחלק התחתון. אם תדמיינו את הסידור הזה, הוא ייראה כמו טורוס (צורה של טבעת).

  • חלוקה דינמית לפרוסות משנה: מחלקת מאגר יחיד של צומתי TPU שהוקצו מראש לכמה יחידות קטנות יותר, שפועלות באופן עצמאי ברמת עומס העבודה. פריסה דינמית של פרוסות משנה מאפשרת ליצור טופולוגיות קטנות יותר בתוך בלוק משנה יחיד, במיוחד 2x2x1,‏ 2x2x2,‏ 2x2x4 ו-2x4x4. לדוגמה, אפשר לחלק בלוק משנה של 4x4x4 לפרוסת משנה אחת של 2x2x4 ולשתי פרוסות משנה של 2x2x2. כדי להשתמש בהגדרה הזו, צריך להשתמש בגרסה 1.36.0-gke.3712000 ואילך בערוץ המהיר.

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

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

אלה המאפיינים של הגדרות פריסה דינמית:

  • הקצאה מצטברת של מאגרי צמתים: פריסה דינמית משתמשת בהקצאה מצטברת, שהיא מודל הקצאה של מאגרי צמתים עם עמידות בכשלים. המודל הזה ממיר את כל הקיבולת של ה-TPU למאגרי צמתים שמורכבים מקבוצות של 16 צמתים של מכונות וירטואליות מסוג Ironwood‏ (TPU7x), וכך מאפשר לכם להמשיך להקצות ולהשתמש גם בקובייות לא תקינות באופן חלקי.
  • בקר פרוסות: בקר משאבים בהתאמה אישית של Kubernetes שפועל במישור הבקרה של GKE ומנהל את הפריסה הדינמית. בקר הפרוסות מנהל את מחזור החיים של משאב מותאם אישית של פרוסה, שמייצג פרוסה דינמית (מטפל ביצירה, במעקב רציף ובמחיקה). הוא גם מעביר נתוני תקינות של התשתית (מארח, ICI, ‏ OCS) לתוויות של צמתים כדי לעזור בזיהוי צמתים תקינים שמתאימים לשימוש.
  • משאב מותאם אישית של פרוסה: מייצג את הפרוסה הלוגית ומתחיל את ההגדרה הדינמית של קישורים בין צמתים (ICI ו-OCS) כדי ליצור את הטופולוגיה המבוקשת של ה-TPU. בתהליך הזה, המערכת מחברת כמה בלוקי משנה (super-slicing) או מבודדת טופולוגיה קטנה יותר בתוך בלוק משנה אחד (sub-slicing). כדי לבדוק את ההתקדמות או התקינות של יצירת הפרוסה הדינמית, אפשר לבדוק את שדות הסטטוס של המשאב המותאם אישית של הפרוסה.

דרישות

כדי להשתמש בפריסה דינמית ב-GKE, צריך לעמוד בדרישות הבאות:

  • משתמשים באשכול רגיל בערוץ המהיר באחת מהגרסאות הבאות:
    • כדי להגדיר חלוקה דינמית לפרוסות גדולות (טופולוגיות שוות או גדולות מ-4x4x4), צריך להשתמש בגרסה 1.35.2-gke.1842000 ואילך.
    • כדי להגדיר חלוקה דינמית לפרוסות משנה (טופולוגיות קטנות מ-4x4x4), צריך להשתמש בגרסה 1.36.0-gke.3712000 ואילך.
  • שימוש בגרסת Ironwood‏ (TPU7x).
  • משתמשים בקובץ האימג' של מערכת ההפעלה שמותאמת לקונטיינרים בשביל הצמתים.
  • כדי להשתמש בהקצאה מצטברת, צריך להשתמש בהזמנות במצב All Capacity. מצב All Capacity הוא תכונה שמופעלת על ידי TPU Cluster Director.
  • כדי להשתמש בפריסה דינמית של פרוסות משנה, ודאו שיש לצמתים אירועי תחזוקה בהמתנה. מעקב אחרי אירועי תחזוקה בהמתנה במכונות. אם לאחד מהצמתים יש אירוע תחזוקה בהמתנה עם שעת סיום בין 18 בספטמבר 2026 ל-30 בספטמבר 2026, צריך להפעיל ידנית את אירוע התחזוקה של המארח בצמתים האלה לפני שאפשר יהיה להשתמש ב-sub-slicing.

שימוש במתזמנים לפריסה דינמית

כדי להשתמש בפריסה דינמית, אתם יכולים להשתמש בכל אחת מהאפשרויות הבאות:

המאמרים הבאים