אחרי שיוצרים אשכול Google Kubernetes Engine (GKE) שעבר אופטימיזציה ל-AI, אפשר להפעיל חיזוי של תקינות הצמתים. אם אתם מתכננים לתזמן עומסי עבודה באמצעות Topology Aware Scheduling (TAS) ו-Kueue, הפעלת התכונה 'חיזוי תקינות הצומת' מאפשרת לתזמן של האשכול לבצע את הפעולות הבאות:
לזהות צמתים שסביר שיחול בהם שיפור בחמש השעות הבאות.
מומלץ להימנע מתזמון של עומסי עבודה חדשים בצמתים האלה.
הגישה הזו עוזרת לצמצם את ההפרעות בעומסי עבודה קריטיים ובעומסי עבודה שרגישים להפרעות, כמו עומסי עבודה של אימונים בקנה מידה גדול.
במאמר הזה מוסבר איך להפעיל חיזוי של תקינות הצמתים באשכול GKE שמשתמש בצמתים מסוג A4X Max, A4X, A4 או A3 Ultra. אם אתם רוצים לדעת איך להשתמש במדד של תחזית תקינות הצומת בלוח בקרה של Cloud Monitoring, למשל כדי לפתור בעיות בביצועים של אשכול Slurm, כדאי לעיין במאמר מעקב אחרי מופעי Compute Engine ואשכולי Slurm.
מגבלות
לפני שמפעילים את התכונה 'חיזוי תקינות הצומת' באשכול GKE, כדאי לקרוא את המגבלות הבאות:
בצומת צריך להשתמש בסוגי מכונות A4X Max, A4X, A4 או A3 Ultra.
הצומת צריך להשתמש במודל הקצאת משאבים שמוגבל להזמנה.
הסבר על חיזוי תקינות הצמתים
כשמפעילים חיזוי של תקינות הצמתים באשכול GKE, CronJob מחיל את התווית gke.google.com/recommended-to-run-large-training-workload על כל צומת באשכול. ה-CronJob מגדיר את ערכי התוויות לפי הסבירות שהמצב של ה-GPU בצומת יתדרדר, ומעדכן את הערכים האלה כל 10 דקות. אם ערך התווית הוא true, הצומת תקין. אחרת, אם ערך התווית הוא false, סביר שהביצועים של הצומת ירדו במהלך חמש השעות הבאות. ערך התווית יכול להשתנות לאורך זמן בהתאם למצב ה-GPU של הצומת.
אם אתם רואים שסביר להניח שביצועי הצומת ירדו, אתם יכולים לבצע אחת או יותר מהפעולות הבאות:
הימנעות מתזמון עומסי עבודה בצומת. אפשר להגדיר את Kueue כך שלא יתזמן עומסי עבודה בצמתים שמוצג בהם הערך
false, כמו שמתואר במסמך הזה.דיווח על הצומת כפגום אם יש בעיות בצומת, כמו טמפרטורת GPU גבוהה או ביצועים איטיים, אפשר לדווח על הצומת כפגום. הפעולה הזו מפעילה אירוע תחזוקה של המארח עבור הצומת, כך שהצומת יהיה זמין שוב להרצת עומסי עבודה אחרי שהתחזוקה תסתיים. הוראות מפורטות זמינות במאמר דיווח על מארחים פגומים דרך GKE.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
כדי להתחבר לאשכול, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER_NAMEמחליפים את
CLUSTER_NAMEבשם האשכול.
הפעלת חיזוי של תקינות הצמתים
אחרי שמתכוננים לתזמן עומסי עבודה באשכול GKE באמצעות TAS, אפשר להפעיל את התכונה 'חיזוי תקינות הצמתים' באופן הבא:
פריסת תיוג אוטומטי של צמתים
כדי לפרוס תיוג אוטומטי של צמתים לחיזוי תקינות הצמתים באשכול GKE, מבצעים את השלבים הבאים:
משכפלים את מאיצי החומרה במאגר GKE git:
git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.gitעוברים לספרייה
topology-scheduler:cd container-engine-accelerators/gpudirect-tcpxo/topology-schedulerיוצרים את ה-ConfigMap של Kubernetes שמכיל את סקריפטים של Python,
schedule-daemon.pyו-label-nodes-daemon.py, שמבצעים שאילתות לגבי ציוני הבריאות:kubectl create configmap predictor-scheduler-scripts \ --namespace=kube-system \ --from-file=schedule-daemon.py=schedule-daemon.py \ --from-file=label-nodes-daemon.py=label-nodes-daemon.pyמחילים את ההגדרה של חשבון השירות כדי לתת ל-CronJob את ההרשאות הנדרשות (קריאת מדדים של Monitoring ועדכון של אובייקטים של Node):
kubectl apply -f service-account.yamlפורסים את DaemonSet שמתזמן את משימת התיוג של הצומת:
kubectl apply -f label-nodes-daemon.yaml
עדכון ההגדרה של המשימה
כדי להפעיל חיזוי של תקינות הצומת כשמשתמשים ב-Kueue, צריך לעדכן את הגדרות ה-Job כדי לבדוק את ערכי החיזוי של התקינות, ואם נתמכים, את דרישות הטופולוגיה לפני שמתחילים בעומס עבודה.
כדי לעדכן את הגדרות המשימה ולהפעיל את התכונה 'חיזוי תקינות הצומת', מוסיפים את השדות הבאים לשדה spec:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gke.google.com/recommended-to-run-large-training-workload
operator: NotIn
values:
- "False"
...
אימות התיוג של הצמתים
אחרי שה-CronJob פועל בפעם הראשונה, בערך 10 דקות אחרי הפריסה, בודקים אם התווית gke.google.com/recommended-to-run-large-training-workload הוחלה על הצמתים.
כדי לראות רשימה של צמתים שחלה עליהם התווית gke.google.com/recommended-to-run-large-training-workload:
kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload
ערך התווית יכול להיות אחד מהערכים הבאים:
true: הצומת צפוי להיות תקין בחמש השעות הקרובות.
false: סביר שהביצועים של הצומת יתדרד במהלך חמש השעות הבאות. אם הגדרתם את הגדרת העבודה כמו שמתואר במסמך הזה, Kueue לא יתזמן עומסי עבודה חדשים בצומת.
המאמרים הבאים
במאמר ניהול אשכולות GKE שעברו אופטימיזציה ל-AI מוסבר איך לנהל אירועים נפוצים שרלוונטיים לאשכולות GKE ולעומסי עבודה של AI.
מידע נוסף על תזמון משימות ב-GKE באמצעות Kueue זמין במאמר פריסת מערכת אצווה באמצעות Kueue.