במאמר הזה מוסבר על חלוקה דינמית ב-Google Kubernetes Engine (GKE) ל-Cloud TPU. החלוקה הדינמית משפרת את היעילות והגמישות של TPU על ידי הפרדה בין הקצאת TPU לבין הצרכים של חלוקת TPU בעומס העבודה. החלוקה הדינמית עוזרת לשפר את ניצול משאבי ה-TPU על ידי קיצור זמן ההפעלה של עומס העבודה עד פי חמישה, וקיצור זמן השחזור עד פי 4.5.
התכונה 'חלוקה דינמית' מיועדת למהנדסי למידת מכונה (ML) ולמהנדסי פלטפורמות שרוצים לבצע אופטימיזציה של השימוש ב-TPU, לקצר את זמן ההקצאה ולשפר את עמידות התקלות בעומסי עבודה של אימון והסקת מסקנות בקנה מידה גדול.
לפני שקוראים את המסמך הזה, חשוב להכיר את הנושאים הבאים:
- TPU ב-GKE.
- סקירה כללית על מצב 'כל הקיבולת' ב-TPU. תכונות של חלוקה דינמית זמינות באופן בלעדי ב-TPU שמשתמשים במצב 'כל הקיבולת'.
מהי חיתוך דינמי?
חיתוך דינמי הוא תכונת אופטימיזציה של GKE TPU שמפרידה בין הקצאת חומרה פיזית וסטטית של TPU לבין הקצאת פרוסות TPU בזמן ריצה, כשהמערכת מתזמנת עומסי עבודה.
כשמשתמשים בטופולוגיות סטטיות של TPU, מאגרי הצמתים של GKE קשורים לטופולוגיה הספציפית שהגדרתם במהלך היצירה. בגלל המגבלה הזו, אם צומת כלשהו במאגר סטטי נכשל, כל מאגר הצמתים מושפע. כדי שעומס העבודה יתוזמן, הטופולוגיה שלו צריכה להיות זהה לטופולוגיה של ה-TPU במאגר הצמתים. לכן, יכול להיות שיהיה צורך להקצות מחדש את תשתית ה-TPU לעיתים קרובות עבור עומסי עבודה שונים.
פילוח דינמי מאפשר ל-GKE להגדיר פילוח של TPU בזמן הריצה, כשהמערכת מתזמנת עומסי עבודה. במקום ליצור מאגרי צמתים באופן ידני עם טופולוגיית TPU מדויקת שנדרשת לכל עומס עבודה חדש, אתם מקצים מראש את כל קיבולת ה-TPU למאגרי צמתים גרנולריים בגודל קבוע. ב-Ironwood (TPU7x), כל מאגר צמתים מורכב מטופולוגיה של 4x4x4, שנקראת גם תת-בלוק. בלוק משנה מייצג קבוצה של 16 מכונות וירטואליות של TPU ללא רשת טופולוגיה פעילה של 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 ואילך. אפשר להשתמש בטכניקת חיתוך דינמי כדי לאמן מודלים גדולים של מודלים בסיסיים שחורגים מהקיבולת של בלוק חומרה פיזי יחיד.בקר הפרוסות מתזמן שינויים פיזיים בתוך רשת ה-Optical Circuit Switch (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 ומנהל פילוח דינמי. בקר הפלחים מנהל את מחזור החיים של משאב מותאם אישית של Slice, שמייצג פלח דינמי (הטיפול ביצירה, במעקב רציף ובמחיקה). הוא גם מעביר נתונים על תקינות התשתית (מארח, ICI, OCS) לתוויות של הצמתים כדי לעזור לזהות צמתים תקינים שמתאימים להפעלה.
- משאב מותאם אישית של פרוסה: מייצג את הפרוסה הלוגית ומתחיל את ההגדרה הדינמית של קישורים בין צמתים (ICI ו-OCS) כדי ליצור את טופולוגיית ה-TPU המבוקשת. התהליך הזה כולל איחוד של כמה בלוקים משניים (super-slicing) או בידוד של טופולוגיה קטנה יותר בתוך בלוק משני יחיד (sub-slicing). כדי לבדוק את ההתקדמות או את התקינות של יצירת פרוסות דינמיות, אפשר לבדוק את שדות הסטטוס של משאב ה-Slice המותאם אישית.
דרישות
כדי להשתמש בפילוח דינמי ב-GKE, אתם צריכים לעמוד בדרישות הבאות:
- משתמשים באשכול Standard בערוץ מהיר באחת מהגרסאות הבאות:
- כדי להגדיר חלוקה דינמית של סופר-סלייס (טופולוגיות ששווה ל-
4x4x4או גדולות ממנו), צריך להשתמש בגרסה 1.35.2-gke.1842000 ואילך. - כדי להגדיר חלוקה דינמית למקטעי משנה (טופולוגיות קטנות מ-
4x4x4), צריך להשתמש בגרסה 1.36.0-gke.3712000 ואילך.
- כדי להגדיר חלוקה דינמית של סופר-סלייס (טופולוגיות ששווה ל-
- שימוש בגרסת Ironwood (TPU7x).
- משתמשים בקובץ אימג' של מערכת הפעלה שמותאמת לקונטיינרים עבור הצמתים.
- כדי להשתמש בהקצאת משאבים מצטברת, צריך להשתמש בהזמנות במצב 'כל הקיבולת'. כל מצב הקיבולת הוא תכונה שמופעלת על ידי TPU Cluster Director.
- כדי להשתמש בחלוקת משנה דינמית, צריך לוודא שיש בצמתים אירועי תחזוקה בהמתנה. מעקב אחר אירועי תחזוקה בהמתנה במכונות שלכם. אם יש לכם צמתים עם אירוע תחזוקה בהמתנה שזמן הסיום שלו הוא בין 18 בספטמבר 2026 ל-30 בספטמבר 2026, תצטרכו להפעיל ידנית את אירוע התחזוקה של המארח בצמתים האלה כדי שתוכלו להשתמש בחלוקת משנה.
שימוש בכלי תזמון לפילוח דינמי
כדי להשתמש בפילוח דינמי, אפשר להשתמש באחת מהאפשרויות הבאות:
- שימוש בכלי לתזמון משלכם כדי לנהל משאבים מותאמים אישית של Slice. האפשרות הזו שימושית אם יש לכם דרישות תזמון מורכבות או אם אתם רוצים לשלב חלוקה דינמית עם תשתית התזמון הקיימת שלכם. כדי להתחיל, אפשר לעיין במאמר שימוש בחלוקה דינמית עם מתזמן מותאם אישית.
- אפשר להשתמש בכלי לתזמון כדי ליצור באופן אוטומטי משאב מותאם אישית של Slice. אפשר להגדיר את Kueue ואת Topology Aware Scheduling (TAS) כדי ליצור באופן אוטומטי משאב מותאם אישית מסוג Slice. כדי להתחיל, אפשר לעיין במאמר בנושא תזמון פלחים דינמיים באמצעות Kueue ו-TAS.
המאמרים הבאים
- בקשה לקיבולת TPU במצב All Capacity.
- תזמון פלחים דינמיים באמצעות Kueue ו-TAS.
- שימוש בפילוח דינמי עם מתזמן מותאם אישית.