המדריך הזה מיועד למהנדסי למידת מכונה (ML), לאדמינים ולאופרטורים של פלטפורמות ולמומחים בתחום הנתונים וה-AI שרוצים להשתמש ביכולות של Kubernetes לניהול קונטיינרים כדי להריץ עומסי עבודה של אצווה. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן ב Google Cloud תוכן, זמין במאמר תפקידי משתמשים נפוצים ומשימות ב-GKE.
תמחור Flex-start
מומלץ להשתמש ב-Flex-start אם נפח העבודה שלכם דורש הקצאה דינמית של משאבים לפי הצורך, למשך עד שבעה ימים עם הזמנות לטווח קצר, בלי ניהול מורכב של מכסות ובגישה חסכונית. התכונה 'התחלה גמישה' מבוססת על Dynamic Workload Scheduler והחיוב מתבצע לפי התמחור של Dynamic Workload Scheduler:
- יכולים לקבל הנחה (עד 53%) על vCPU, GPU, TPU וכל דיסק SSD מקומי שמצורף.
- תשלום לפי שימוש (PAYG).
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- מוודאים שיש לכם אשכול Autopilot או אשכול Standard שפועלת בו גרסה 1.33.0-gke.1712000 ואילך.
- חשוב לוודא שאתם מכירים את המגבלות של התחלה גמישה (Flex-start).
- כשמשתמשים באשכול Standard, צריך לוודא שיש לפחות מאגר צמתים אחד בלי הפעלה של התחלה גמישה (Flex-start) כדי שהאשכול יפעל בצורה תקינה.
- מוודאים שיש לכם מכסת שימוש ב-TPU שאפשר להפסיק את השימוש בהם במיקומי הצמתים.
יצירת מאגר צמתים עם הפעלה גמישה (Standard בלבד)
אם אתם משתמשים באשכול Autopilot, אתם יכולים לדלג על הקטע הזה כי אתם לא צריכים ליצור מאגרי צמתים באופן ידני. כשמפעילים את המניפסט של Job או Pod בקטע Run a batch workload, GKE Autopilot מקצה באופן אוטומטי את מכונות ה-VM הנדרשות מסוג Flex-start על סמך nodeSelector.
כדי ליצור מאגר צמתים עם הפעלה גמישה שמופעלת באשכול קיים מסוג Standard, משתמשים ב-CLI של gcloud.
יצירת מאגר צמתים של פלח TPU במארח יחיד
אפשר ליצור מאגר צמתים של TPU slice עם מארח יחיד באמצעות התחלה גמישה (Flex-start):
יוצרים מאגר צמתים עם flex-start:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --node-locations=NODE_ZONES \ --machine-type=MACHINE_TYPE \ --enable-autoscaling \ --flex-start \ --num-nodes 0 \ --min-nodes=0 \ --max-nodes=1 \ --consolidation-delay=CONSOLIDATION_DELAYמחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם שבחרתם למאגר הצמתים. -
CLUSTER_NAME: שם האשכול. -
CONTROL_PLANE_LOCATION: האזור של שירותי Compute למישור הבקרה של האשכול. -
NODE_ZONES: רשימה מופרדת בפסיקים של אזור אחד או יותר שבהם GKE יוצר את מאגר הצמתים. -
CONSOLIDATION_DELAY: אופציונלי. משך הזמן שבו Cluster Autoscaler ממתין לפני שהוא יכול להקטין את מספר הצמתים שלא נעשה בהם שימוש מלא. אפשר להשתמש בהגדרה הזו כדי לדחות את הקטנת הקיבולת ולשמור את מאגר הצמתים לשימוש חוזר מאוחר יותר על ידי Pods אחרים. המספר שאתם מזינים חייב להסתיים ב-s. לדוגמה, כדי לציין שעה אחת, מזינים3600s. זמין ב-GKE מגרסה1.34.1-gke.2364000ואילך.
MACHINE_TYPE: סוג המכונה לשימוש בצמתים. מידע נוסף על סוגי מכונות שתואמים ל-TPU זמין בטבלה שבמאמר בחירת גרסת ה-TPU.לדוגמה, הפקודה ליצירת מאגר הצמתים יכולה לכלול את הפרמטרים הבאים:
... --machine-type=ct6e-standard-4t \ --tpu-topology=4x4 \ --enable-autoscaling \ --num-nodes=0 \ --max-nodes=4 \הפקודה הזו מגדירה את השדה
--max-nodesלערך4כי טופולוגיה של4x4מורכבת מ-16 שבבים, ולכל מכונתct6e-standard-4tVM יש 4 שבבים.התאמה אוטומטית לעומס באשכול מגדילה את מספר הצמתים בהתאם לדרישות של עומס העבודה. אחרי שעומס העבודה מסתיים, המידרוג האוטומטי מצמצם את האשכול לאפס צמתים.
-
יצירת מאגר צמתים של פרוסת TPU עם כמה מארחים
השלבים ליצירת מאגר צמתים של פרוסת TPU מרובת-מארחים שונים בהתאם לגרסת ה-TPU שבה אתם משתמשים – Ironwood (TPU7x) או גרסה קודמת של TPU.Ironwood (TPU7x)
אתם יכולים ליצור מאגר צמתים של פרוסת TPU עם כמה מארחים בגרסה Ironwood (TPU7x) באמצעות Google Cloud CLI או Terraform:
gcloud
כדי ליצור מאגר צמתים של פרוסת TPU עם כמה מארחים באמצעות Ironwood (TPU7x), צריך קודם ליצור מדיניות עומס עבודה.
יוצרים מדיניות של עומס עבודה:
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=HIGH_THROUGHPUT \ --accelerator-topology=TPU_TOPOLOGY \ --project=PROJECT_ID \ --region=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
WORKLOAD_POLICY_NAME: שם למדיניות של עומס העבודה. -
TPU_TOPOLOGY: טופולוגיית TPU Ironwood (TPU7x). לדוגמה,2x2x2. כדי לראות את כל הטופולוגיות הנתמכות של Ironwood (TPU7x), אפשר לעיין בקטע בנושא טופולוגיה. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
REGION: האזור של מדיניות עומס העבודה. מדיניות עומס עבודה היא משאב אזורי, ואפשר לעשות בה שימוש חוזר במאגרי צמתים שחולקים את אותה טופולוגיה.
-
יוצרים את מאגר הצמתים עם מדיניות עומס העבודה:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=us-central1 \ --node-locations=us-central1-c \ --machine-type=tpu7x-standard-4t \ --enable-autoscaling \ --num-nodes=0 --min-nodes=0 --max-nodes=MAX_NODES \ --flex-start \ --placement-policy=WORKLOAD_POLICY \ --consolidation-delay=CONSOLIDATION_DELAYמחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים החדש. -
WORKLOAD_POLICY: השם של מדיניות עומס העבודה שיצרתם. -
MAX_NODES: הגודל המקסימלי של מאגר הצמתים. חובה להשתמש בדגל--max-nodesאם מציינים את--enable-autoscaling, והוא צריך להיות שווה למכפלה של הערכים שמוגדרים ב-TPU_TOPOLOGY({A}x{B}x{C}) חלקי מספר השבבים בכל מכונה וירטואלית. לדוגמה, אם הערך שלTPU_TOPOLOGYהוא2x2x2, המוצר הוא 8. מכיוון שכל מכונה וירטואלית ב-tpu7x-standard-4tכוללת 4 שבבים, מספר הצמתים הוא 2. -
CONSOLIDATION_DELAY: אופציונלי. משך הזמן שבו Cluster Autoscaler ממתין לפני שהוא יכול להקטין את מספר הצמתים שלא נעשה בהם שימוש מלא. אפשר להשתמש בהגדרה הזו כדי לדחות את הקטנת הקיבולת ולשמור את מאגר הצמתים לשימוש חוזר מאוחר יותר על ידי Pods אחרים. המספר שאתם מזינים חייב להסתיים ב-s. לדוגמה, כדי לציין שעה אחת, מזינים3600s. זמין ב-GKE מגרסה1.34.1-gke.2364000ואילך.
הפקודה הזו יוצרת מאגר צמתים בשם NODE_POOL_NAME עם המאפיינים הבאים:
-
--machine-type=tpu7x-standard-4tמציין את סוג המכונה Ironwood (TPU7x). -
--flex-startמאפשרת התחלה גמישה.
-
Terraform
- ודאו שאתם משתמשים בגרסה 4.84.0 ואילך של ספק
google. יוצרים מדיניות של עומס עבודה:
resource "google_compute_resource_policy" { name = "WORKLOAD_POLICY_NAME" region = CLUSTER_LOCATION workload_policy { type = "HIGH_THROUGHPUT" accelerator_topology = "TPU_TOPOLOGY" } }מחליפים את מה שכתוב בשדות הבאים:
-
WORKLOAD_POLICY_NAME: שם למדיניות של עומס העבודה. -
CLUSTER_LOCATION: מיקום החישוב של האשכול. מומלץ להשתמש באשכול אזורי כדי לשפר את המהימנות של מישור הבקרה של Kubernetes. אפשר גם להשתמש באשכול אזורי. מידע נוסף זמין במאמר בחירת גרסה וטופולוגיה של TPU. -
TPU_TOPOLOGY: טופולוגיית TPU Ironwood (TPU7x). לדוגמה,2x2x2. כדי לראות את כל הטופולוגיות הנתמכות של Ironwood (TPU7x), אפשר לעיין במאמר בנושא תכנון של יחידות TPU.
מידע נוסף על ההפניה
google_compute_resource_policyזמין במאמר Terraform Provider.-
מוסיפים את הבלוק הבא להגדרות של Terraform:
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE flex_start = true } placement_policy { policy_name = WORKLOAD_POLICY_NAME } }מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_RESOURCE_NAME: השם של משאב מאגר הצמתים בתבנית Terraform. PROJECT_ID: מזהה הפרויקט.-
CLUSTER_NAME: השם של האשכול הקיים שאליו רוצים להוסיף את מאגר הצמתים. -
POOL_NAME: השם של מאגר הצמתים שרוצים ליצור. -
NODE_ZONES: רשימה מופרדת בפסיקים של אזור אחד או יותר שבהם GKE יוצר את מאגר הצמתים.אופציונלי: אפשר להשתמש באזור AI, כמו
us-central1-ai1a. אזורי AI הם מיקומים ייעודיים שעברו אופטימיזציה לעומסי עבודה של AI/ML בתוך Google Cloud אזורים. -
NUM_NODES: מספר הצמתים במאגר הצמתים. הערך צריך להיות אפס או מכפלה של מספר שבבי ה-TPU חלקי ארבע, כי בכל צומת של פרוסת TPU עם כמה מארחים יש ארבעה שבבים. לדוגמה, אםTPU_TOPOLOGYהוא4x8, יש 32 צ'יפים, ולכןNUM_NODESצריך להיות 8. מידע נוסף על טופולוגיות של TPU זמין בטבלה שבמאמר בחירת גרסת ה-TPU. -
TPU_TOPOLOGY: מציין את הטופולוגיה הפיזית שנבחרה עבור פרוסת ה-TPU. הפורמט של הטופולוגיה תלוי בגרסת ה-TPU שבה אתם משתמשים. מידע נוסף על טופולוגיות של TPU זמין בטבלה שבקטע בחירת טופולוגיה.
אפשר גם להשתמש במשתנים הבאים:
-
RESERVATION_NAME: אם משתמשים בהזמנת TPU, צריך לספק רשימה של תוויות משאבי הזמנה לשימוש כשיוצרים את מאגר הצמתים. מידע נוסף על אכלוס השדהRESERVATION_LABEL_VALUESב-reservation_affinityזמין במאמר בנושא Terraform Provider. -
autoscaling: יצירת מאגר צמתים עם הפעלה של שינוי גודל אוטומטי. כש-GKE מבצע שינוי גודל של מאגר צמתים של פרוסת TPU מרובת מארחים, הוא מבצע שינוי גודל של מאגר הצמתים מאפס לגודל המקסימלי באופן אטומי.-
MAX_NODES: הגודל המקסימלי של מאגר הצמתים. הערך צריך להיות שווה למכפלה של הערכים שמוגדרים ב-TPU_TOPOLOGY({A}x{B}x{C}) חלקי מספר השבבים בכל מכונה וירטואלית. לדוגמה, אם הערך שלTPU_TOPOLOGYהוא2x2x2, המוצר הוא 8. מכיוון שכל מכונה וירטואלית ב-tpu7x-standard-4tכוללת 4 שבבים, מספר הצמתים הוא 2.
-
-
spot: מאגר הצמתים שישתמש במכונות וירטואליות במודל Spot עבור צמתי חלוקת ה-TPU. אי אפשר לשנות את ההגדרה הזו אחרי שיוצרים את מאגר הצמתים. מידע נוסף זמין במאמר בנושא מכונות וירטואליות מסוג Spot. -
flex_start: מאגר הצמתים שישתמש באפשרות הצריכה flex-start. אי אפשר להגדיר את ההגדרה הזו לערךtrueאם ההגדרהspotמופעלת.
-
גרסאות אחרות של TPU
אפשר ליצור מאגר צמתים של פרוסת TPU עם כמה מארחים בגרסאות v3, v4, v5p, v5e ו-Trillium (v6e) באמצעות Google Cloud CLI, Terraform או Google Cloud המסוף.
gcloud
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--tpu-topology=TPU_TOPOLOGY \
--enable-autoscaling \
--num-nodes=0 --min-nodes=0 --max-nodes=MAX_NODES \
--flex-start \
--consolidation-delay=CONSOLIDATION_DELAY
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים החדש. -
CLUSTER_NAME: שם האשכול. -
CONTROL_PLANE_LOCATION: שם האזור בהתאם לגרסת ה-TPU שבה רוצים להשתמש. כדי לזהות מיקום זמין, אפשר לעיין במאמר זמינות של TPU ב-GKE. -
NODE_ZONES: רשימה מופרדת בפסיקים של אזור אחד או יותר שבהם GKE יוצר את מאגר הצמתים.אופציונלי: אפשר להשתמש באזור AI, כמו
us-central1-ai1a. אזורי AI הם מיקומים ייעודיים שעברו אופטימיזציה לעומסי עבודה של AI/ML בתוך Google Cloud אזורים. -
MACHINE_TYPE: סוג המכונה לשימוש בצמתים. מידע נוסף על סוגי מכונות שתואמים ל-TPU זמין בטבלה שבמאמר בחירת גרסת ה-TPU. -
TPU_TOPOLOGY: טופולוגיית ה-TPU. לדוגמה,2x2x2. כדי לראות את כל הטופולוגיות הנתמכות של TPU, אפשר לעיין בקטע בנושא טופולוגיה. -
MAX_NODES: הגודל המקסימלי של מאגר הצמתים. חובה להשתמש בדגל--max-nodesאם מציינים את--enable-autoscaling, והוא צריך להיות שווה למכפלה של הערכים שמוגדרים ב-TPU_TOPOLOGY({A}x{B}x{C}) חלקי מספר השבבים בכל מכונה וירטואלית.
CONSOLIDATION_DELAY: אופציונלי. משך הזמן שבו Cluster Autoscaler ממתין לפני שהוא יכול להקטין את מספר הצמתים שלא נעשה בהם שימוש מלא. אפשר להשתמש בהגדרה הזו כדי לדחות את הקטנת הקיבולת ולשמור את מאגר הצמתים לשימוש חוזר מאוחר יותר על ידי Pods אחרים. המספר שאתם מזינים חייב להסתיים ב-s. לדוגמה, כדי לציין שעה אחת, מזינים3600s. זמין ב-GKE מגרסה1.34.1-gke.2364000ואילך.הפקודה הזו יוצרת מאגר צמתים בשם NODE_POOL_NAME עם הפעלה גמישה.
Terraform
- ודאו שאתם משתמשים בגרסה 4.84.0 ואילך של ספק
google. מוסיפים את הבלוק הבא להגדרות של Terraform:
resource "google_container_node_pool" "NODE_POOL_RESOURCE_NAME" { provider = google project = PROJECT_ID cluster = CLUSTER_NAME name = POOL_NAME location = CLUSTER_LOCATION node_locations = [NODE_ZONES] initial_node_count = NUM_NODES autoscaling { max_node_count = MAX_NODES location_policy = "ANY" } node_config { machine_type = MACHINE_TYPE flex_start = true } placement_policy { type = "COMPACT" tpu_topology = TPU_TOPOLOGY } }מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_RESOURCE_NAME: השם של משאב מאגר הצמתים בתבנית Terraform. PROJECT_ID: מזהה הפרויקט.-
CLUSTER_NAME: השם של האשכול הקיים שאליו רוצים להוסיף את מאגר הצמתים. -
POOL_NAME: השם של מאגר הצמתים שרוצים ליצור. -
CLUSTER_LOCATION: מיקום החישוב של האשכול. מומלץ להשתמש באשכול אזורי כדי לשפר את המהימנות של מישור הבקרה של Kubernetes. אפשר גם להשתמש באשכול אזורי. מידע נוסף זמין במאמר בנושא בחירת גרסה וטופולוגיה של TPU. -
NODE_ZONES: רשימה מופרדת בפסיקים של אזור אחד או יותר שבהם GKE יוצר את מאגר הצמתים.אופציונלי: אפשר להשתמש באזור AI, כמו
us-central1-ai1a. אזורי AI הם מיקומים ייעודיים שעברו אופטימיזציה לעומסי עבודה של AI/ML בתוך Google Cloud אזורים. -
NUM_NODES: מספר הצמתים במאגר הצמתים. הערך צריך להיות אפס או מכפלה של מספר שבבי ה-TPU חלקי ארבע, כי בכל צומת של פרוסת TPU עם כמה מארחים יש 4 שבבים. לדוגמה, אםTPU_TOPOLOGYהוא4x8, יש 32 צ'יפים, ולכןNUM_NODESצריך להיות 8. מידע נוסף על טופולוגיות של TPU זמין בטבלה שבמאמר בחירת גרסת ה-TPU. -
TPU_TOPOLOGY: מציין את הטופולוגיה הפיזית של חלוקת ה-TPU. הפורמט של הטופולוגיה תלוי בגרסת ה-TPU שבה אתם משתמשים. מידע נוסף על טופולוגיות של TPU זמין בטבלה שבקטע בחירת טופולוגיה.
אפשר גם להשתמש במשתנים הבאים:
-
RESERVATION_NAME: אם משתמשים בהזמנת TPU, זוהי רשימת התוויות של משאבי ההזמנה שבהן צריך להשתמש כשיוצרים את מאגר הצמתים. מידע נוסף על אכלוס השדהRESERVATION_LABEL_VALUESב-reservation_affinityזמין במאמר בנושא Terraform Provider. -
autoscaling: יצירת מאגר צמתים עם הפעלה של שינוי גודל אוטומטי. כש-GKE מבצע שינוי גודל של מאגר צמתים של פרוסת TPU מרובת מארחים, הוא מבצע שינוי גודל של מאגר הצמתים מאפס לגודל המקסימלי באופן אטומי.-
MAX_NODES: הגודל המקסימלי של מאגר הצמתים. הערך הזה צריך להיות שווה למכפלה של הערכים שמוגדרים ב-TPU_TOPOLOGY({A}x{B}x{C}) חלקי מספר הצ'יפים בכל מכונה וירטואלית).
-
-
spot: מאפשר למאגר הצמתים להשתמש במכונות וירטואליות במודל Spot עבור צמתי פרוסת ה-TPU. אי אפשר לשנות את ההגדרה הזו אחרי שיוצרים את מאגר הצמתים. מידע נוסף זמין במאמר בנושא מכונות וירטואליות מסוג Spot. -
flex_start: מגדיר את מאגר הצמתים לשימוש באפשרות הצריכה flex-start. אי אפשר להגדיר את הערךtrueאם האפשרותspotמופעלת.
-
המסוף
כדי ליצור מאגר צמתים עם מעבדי TPU:
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
לוחצים על הכרטיסייה Nodes (צמתים).
לוחצים על add_box Create user-managed node pool (יצירת מאגר צמתים בניהול המשתמש).
בקטע פרטי מאגר צמתים, מסמנים את התיבה ציון מיקומי צמתים.
בוחרים את שם האזור בהתאם לגרסת ה-TPU שרוצים להשתמש בה. כדי לזהות מיקום זמין, אפשר לעיין במאמר זמינות של TPU ב-GKE.
בחלונית הניווט, לוחצים על צמתים.
בקטע Machine Configuration (הגדרת המכונה), בוחרים באפשרות TPUs.
בתפריט הנפתח סדרה, בוחרים באחת מהאפשרויות הבאות:
- CT3: TPU v3, מכשיר עם מארח יחיד
- CT3P: TPU v3, multi-host pod slice
- CT4P: TPU v4
- CT5LP: TPU v5e
- CT5P: TPU v5p
- CT6E: TPU Trillium (v6e)
בתפריט הנפתח Machine type (סוג המכונה), בוחרים את שם המכונה שבה רוצים להשתמש לצמתים. כדי להגדיר את סוג המכונה ואת טופולוגיית ה-TPU שיוצרים מאגר צמתים של פרוסת TPU מרובת מארחים, אפשר להיעזר בטבלה בחירת גרסת ה-TPU.
בתפריט הנפתח TPU Topology, בוחרים את הטופולוגיה הפיזית של פרוסת ה-TPU.
בתיבת הדו-שיח נדרשים שינויים, לוחצים על ביצוע שינויים.
מוודאים שסוג דיסק האתחול הוא דיסק מתמיד סטנדרטי או דיסק מתמיד שמבוסס על SSD.
אופציונלי: מסמנים את תיבת הסימון Enable nodes on spot VMs כדי להשתמש במכונות וירטואליות מסוג Spot עבור הצמתים במאגר הצמתים.
לוחצים על יצירה.
אימות הסטטוס של התחלה גמישה במאגר הצמתים
מריצים את הפקודה הבאה:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--format="get(config.flexStart)"
אם האפשרות flex-start מופעלת במאגר הצמתים, השדה flexStart מוגדר ל-True.
הרצת עומס עבודה של קבוצת פעולות
בקטע הזה יוצרים Job שמזמן צומת TPU עם מכונות וירטואליות של Flex-start. ב-Kubernetes, בקר משימות יוצר פוד אחד או יותר ועוזר לוודא שהם מבצעים בהצלחה משימה ספציפית.בGoogle Cloud מסוף, לוחצים על
Activate Cloud Shell כדי להפעיל סשן של Cloud Shell. סשן ייפתח בחלונית התחתונה של המסוף Google Cloud .
יוצרים קובץ בשם
dws-flex-start.yaml:מארח יחיד
משתמשים במניפסט הבא לקובץ
dws-flex-start.yaml:apiVersion: batch/v1 kind: Job metadata: name: job-1 spec: template: spec: nodeSelector: cloud.google.com/gke-flex-start: "true" cloud.google.com/gke-tpu-accelerator: ACCELERATOR_TYPE cloud.google.com/gke-tpu-topology: TPU_TOPOLOGY containers: - name: container-1 image: gcr.io/k8s-staging-perf-tests/sleep:latest args: ["3600s"] # Sleep for 1 hour resources: requests: google.com/tpu: NUM_CHIPS limits: google.com/tpu: NUM_CHIPS restartPolicy: OnFailureכמה מארחים
משתמשים במניפסט הבא לקובץ
dws-flex-start.yaml:apiVersion: v1 kind: Service metadata: name: headless-svc spec: clusterIP: None selector: job-name: job-1 --- apiVersion: batch/v1 kind: Job metadata: name: job-1 spec: backoffLimit: 0 completions: 2 parallelism: 2 completionMode: Indexed template: spec: subdomain: headless-svc restartPolicy: Never nodeSelector: cloud.google.com/gke-flex-start: "true" cloud.google.com/gke-tpu-accelerator: ACCELERATOR_TYPE cloud.google.com/gke-tpu-topology: TPU_TOPOLOGY containers: - name: tpu-job image: us-docker.pkg.dev/cloud-tpu-images/jax-ai-image/tpu:latest ports: - containerPort: 8471 # Default port using which TPU VMs communicate - containerPort: 8431 # Port to export TPU runtime metrics, if supported. securityContext: privileged: true command: - bash - -c - | python -c 'import jax; print("TPU cores:", jax.device_count())' resources: requests: google.com/tpu: NUM_CHIPS limits: google.com/tpu: NUM_CHIPSמחליפים את מה שכתוב בשדות הבאים:
-
ACCELERATOR_TYPE: הסוג של האצת TPU שבה השתמשתם כשבניתם את מאגרי הצמתים. לדוגמה,tpu-v4-podsliceאוtpu-v5-lite-podslice. -
TPU_TOPOLOGY: הטופולוגיה הפיזית של חלוקת ה-TPU. לדוגמה, הערך יכול להיות4x4x4או2x2, בהתאם לגרסת ה-TPU. -
NUM_CHIPS: מספר שבבי ה-TPU בכל מכונה וירטואלית הוא אחד, ארבע או שמונה. מידע נוסף זמין במאמר בנושא גרסאות TPU.
-
החלת מניפסט
dws-flex-start.yaml:kubectl apply -f dws-flex-start.yamlמוודאים שהעבודות פועלות באותו הצומת:
kubectl get podsהפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES job-1 0/1 Completed 0 19m 10.(...) gke-flex-zonal-a2 <none> <none>
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, אתם יכולים למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת המשאב הספציפי
מחיקת המשימות:
kubectl delete job -l "job-name in (job-1,job-2)"מוחקים את מאגר הצמתים:
gcloud container node-pools delete NODE_POOL_NAME \ --location CONTROL_PLANE_LOCATIONמחיקת האשכול:
gcloud container clusters delete CLUSTER_NAME
המאמרים הבאים
- מידע נוסף על TPU ב-GKE
- מידע נוסף על הקצאת משאבים אוטומטית של צמתים
- איך מקצים Managed Lustre ב-GKE באמצעות Cluster Toolkit
- מידע נוסף על שיטות מומלצות להרצה של עומסי עבודה באצווה ב-GKE