במדריך הזה מוסבר איך לבצע אופטימיזציה של הקצאת Tensor Processing Unit (TPU) באמצעות מקום שמור לעתיד במצב יומן. שריון מקום שמור לעתיד במצב יומן הוא כלי מובנה ביומן שמשמש כיועץ ושירות המלצות. הוא יכול לעזור לכם לאתר קיבולת של TPU ולתכנן מראש. אתם יכולים לבקש קיבולת לזמן התחלה ומשך מוגדרים, בין יום אחד ל-90 ימים, ושירות המלצות יספק הצעות לתאריכים.
המדריך הזה מיועד למהנדסי למידת מכונה (ML), לאדמינים ולאופרטורים של פלטפורמות ולמומחים בתחום הנתונים וה-AI שרוצים להשתמש ביכולות של Kubernetes לניהול קונטיינרים כדי להריץ עומסי עבודה של אצווה. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן ב Google Cloud תוכן, זמין במאמר תפקידי משתמשים נפוצים ומשימות ב-GKE.
מידע נוסף מופיע במאמר מידע על מקום שמור לעתיד במצב יומן.
תרחישים לדוגמה
מקום שמור לעתיד במצב יומן מתאים במיוחד לעומסי עבודה עם בקשות מתוזמנות, קצרות טווח ועם ביקוש גבוה, כמו אימון, או למודלים של הסקת מסקנות באצווה שדורשים זמינות גבוהה בזמן ההתחלה המבוקש.
אם העומס שלכם דורש הקצאה דינמית של משאבים לפי הצורך, למשך עד 7 ימים ללא הזמנות לטווח ארוך או ניהול מורכב של מכסות, כדאי להשתמש באפשרות הצריכה flex-start. מידע נוסף זמין במאמר מידע על הקצאת GPU ו-TPU עם flex-start.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- ודאו שיש לכם את אחד מהפריטים הבאים:
- אשכול סטנדרטי קיים שפועל בגרסה 1.28.3-gke.1098000 ואילך.
- אשכול Autopilot קיים שפועל בגרסה 1.30.3-gke.1451000 ואילך.
שליחת בקשה לשריון מקום שמור לעתיד ל-TPU במצב יומן
כדי לבקש יחידות TPU עם מקום שמור לעתיד במצב יומן, צריך לבצע את השלבים הבאים:
- חשוב לוודא שיש לכם מספיק מכסה למשאבים שלא נכללים בהזמנה כשיוצרים מכונות וירטואליות, כמו דיסקים או כתובות IP. לא נדרשת מכסת Compute Engine לבקשות עתידיות לשמירת מקום במצב יומן.
- מבצעים את השלבים שמפורטים במאמר בנושא יצירת בקשה במצב יומן. השלבים האלה כוללים את הפעולות הבאות:
- לראות את הזמינות העתידית של TPU.
- איך יוצרים ושולחים בקשה לשריון מקום שמור לעתיד במצב יומן ל-TPU.
- מחכים ש Google Cloud יאשר את הבקשה.
- יוצרים מאגר של צמתים ב-TPU שמשתמשים בהזמנה שלכם.
יצירת מאגר צמתים
הסעיף הזה רלוונטי רק לאשכולות רגילים, כי במצב אוטומטי הצמתים נוצרים אוטומטית על סמך עומסי העבודה.
אפשר להשתמש בהזמנה כשיוצרים מאגרי צמתים של פרוסות TPU עם מארח יחיד או עם כמה מארחים.
יצירת מאגר צמתים של פלח TPU במארח יחיד
אפשר ליצור מאגר צמתים של פרוסת TPU במארח יחיד באמצעות Google Cloud CLI.
gcloud container node-pools create NODE_POOL_NAME \
--location=CONTROL_PLANE_LOCATION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_ZONES \
--machine-type=MACHINE_TYPE \
--reservation-affinity=specific \ This is required
--reservation=RESERVATION
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים החדש. -
CONTROL_PLANE_LOCATION: שם האזור בהתאם לגרסת ה-TPU שבה רוצים להשתמש. כדי לזהות מיקום זמין, אפשר לעיין במאמר זמינות של TPU ב-GKE. -
CLUSTER_NAME: שם האשכול. -
NODE_ZONES: רשימה מופרדת בפסיקים של אזור אחד או יותר שבהם GKE יוצר את מאגר הצמתים. -
MACHINE_TYPE: סוג המכונה לשימוש בצמתים. מידע נוסף על סוגי מכונות שתואמים ל-TPU זמין בטבלה שבמאמר בחירת גרסת ה-TPU. -
RESERVATION: השם של ההזמנה ביומן שרוצים להשתמש בה.
רשימה מלאה של כל הדגלים שאפשר לציין מופיעה במאמר העזר בנושא gcloud container clusters create.
אחרי שיוצרים מאגר צמתים עם הזמנה ביומן, אפשר לפרוס את עומס העבודה כמו כל מאגר צמתים אחר של TPU. השימוש במקום שמור לעתיד במצב לוח שנה מתבצע באותו אופן כמו בכל סוג אחר של מקום שמור. מידע נוסף מופיע במאמר שימוש במשאבים שמורים באזור.
יצירת מאגר צמתים של פרוסת 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 \ --reservation-affinity=specific \ --reservation=FUTURE_RESERVATION_NAME \ --placement-policy=WORKLOAD_POLICY \ --consolidation-delay=CONSOLIDATION_DELAYמחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים החדש. -
WORKLOAD_POLICY: השם של מדיניות עומס העבודה שיצרתם. -
FUTURE_RESERVATION_NAME: השם של ההזמנה העתידית.
הפקודה הזו יוצרת מאגר צמתים בשם NODE_POOL_NAME עם המאפיינים הבאים:
-
--machine-type=tpu7x-standard-4tמציין את סוג המכונה Ironwood (TPU7x).
-
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 reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } 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 \
--reservation-affinity=specific \
--reservation=FUTURE_RESERVATION_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
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, אפשר לעיין בקטע בנושא טופולוגיה. -
FUTURE_RESERVATION_NAME: השם של ההזמנה העתידית.
CONSOLIDATION_DELAY: אופציונלי. משך הזמן שבו Cluster Autoscaler ממתין לפני שהוא יכול להקטין את מספר הצמתים שלא נעשה בהם שימוש מלא. אפשר להשתמש בהגדרה הזו כדי לדחות את הקטנת הקיבולת ולשמור את מאגר הצמתים לשימוש חוזר מאוחר יותר על ידי Pods אחרים. המספר שאתם מזינים חייב להסתיים ב-s. לדוגמה, כדי לציין שעה אחת, מזינים3600s. זמין ב-GKE מגרסה1.34.1-gke.2364000ואילך.
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 reservation_affinity { consume_reservation_type = "SPECIFIC_RESERVATION" key = "compute.googleapis.com/reservation-name" values = [RESERVATION_LABEL_VALUES] } flex_start = false } 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 עבור הצמתים במאגר הצמתים.
לוחצים על יצירה.
אחרי שיוצרים מאגר צמתים עם הזמנה ביומן, אפשר לפרוס את עומס העבודה כמו כל מאגר צמתים אחר של TPU. השימוש במקום שמור לעתיד במצב יומן פועל באותו אופן כמו כל סוג אחר של מקום שמור. מידע נוסף מופיע במאמר שימוש במשאבים שמורים באזור.
המאמרים הבאים
כדאי לנסות דוגמאות לפריסת מודלים של AI גנרטיבי ב-GKE שמשתמשים במשאבי TPU שהזמנתם:
- להכניס לשימוש בסביבת הייצור מודל שפה גדול (LLM) באמצעות TPU Trillium ב-GKE עם vLLM
- הצגת מודל שפה גדול (LLM) באמצעות מעבדי TPU ב-GKE עם KubeRay
- הצגת מודל שפה גדול (LLM) באמצעות TPU ב-GKE עם JetStream ו-PyTorch
- הפעלת Gemma באמצעות TPU ב-GKE עם JetStream
- הצגת Stable Diffusion XL (SDXL) באמצעות TPU ב-GKE עם MaxDiffusion
- הצגת מודלים בקוד פתוח באמצעות TPU ב-GKE עם Optimum TPU
ב-GKE AI Labs תוכלו לעיין בדוגמאות ניסיוניות לשימוש ב-GKE כדי לקדם את היוזמות שלכם בתחום ה-AI ולמידת המכונה.